diff --git a/live-editing/configs/GridCRMConfigGenerator.ts b/live-editing/configs/GridCRMConfigGenerator.ts index f922e92a41..595b286b2b 100644 --- a/live-editing/configs/GridCRMConfigGenerator.ts +++ b/live-editing/configs/GridCRMConfigGenerator.ts @@ -15,6 +15,8 @@ import { BrowserModule, HammerModule } from '@angular/platform-browser'; import { RouterModule } from '@angular/router'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { FormsModule } from '@angular/forms'; +import { IgxPreventDocumentScrollModule } from '../../src/app/directives/prevent-scroll.directive'; +import { GridsCrmModule } from '../../projects/app-crm/src/app/grid-crm/grid-crm.module'; export class GridCRMConfigGenerator implements IConfigGenerator { public generateConfigs(): Config[] { @@ -22,14 +24,24 @@ export class GridCRMConfigGenerator implements IConfigGenerator { configs.push(new Config({ component: 'GridCRMComponent', - additionalFiles: ['/src/app/directives/prevent-scroll.directive.ts', - '/projects/app-crm/src/_app-layout.scss', '/projects/app-crm/src/_variables.scss'], + additionalFiles: [ + '/src/app/directives/prevent-scroll.directive.ts', + '/projects/app-crm/src/_app-layout.scss', + '/projects/app-crm/src/_variables.scss', + '/projects/app-crm/src/app/grid-crm/data.ts' + ], additionalDependencies: [], appModuleConfig: new AppModuleConfig({ - imports: ['BrowserModule', 'RouterModule', 'BrowserAnimationsModule', 'FormsModule', 'HammerModule'], - ngDeclarations: ['GridCRMComponent'], - ngImports: ['IgxAutocompleteModule', 'IgxRippleModule', 'IgxGridModule', 'IgxIconModule', 'IgxLayoutModule', - 'IgxAvatarModule', 'IgxInputGroupModule', 'IgxButtonModule', 'IgxPreventDocumentScrollModule'] + imports: [ + 'RouterModule', 'HammerModule', 'IgxAutocompleteModule', 'IgxRippleModule', + 'IgxGridModule', 'IgxIconModule', 'IgxLayoutModule', + 'IgxAvatarModule', 'IgxInputGroupModule', 'IgxButtonModule', + 'IgxPreventDocumentScrollModule', 'GridsCrmModule' + ], + ngDeclarations: [], + ngImports: ['IgxPreventDocumentScrollModule', 'IgxRippleModule', + 'IgxGridModule', 'IgxIconModule', 'IgxLayoutModule', + 'IgxAvatarModule', 'IgxInputGroupModule', 'IgxButtonModule', 'GridsCrmModule'] }) })); diff --git a/projects/app-crm/src/app/app.module.ts b/projects/app-crm/src/app/app.module.ts index 3de809216b..8e85ebbb66 100644 --- a/projects/app-crm/src/app/app.module.ts +++ b/projects/app-crm/src/app/app.module.ts @@ -1,14 +1,12 @@ import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; import { BrowserModule, HammerModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { - IgxAutocompleteModule, IgxButtonModule, IgxIconModule, IgxInputGroupModule, IgxLayoutModule, - IgxRippleModule, IgxGridModule, IgxAvatarModule + IgxAutocompleteModule, IgxLayoutModule } from 'igniteui-angular'; -import { IgxPreventDocumentScrollModule } from '../../../../src/app/directives/prevent-scroll.directive'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app.routing.module'; +import { GridsCrmModule } from './grid-crm/grid-crm.module'; @NgModule({ bootstrap: [AppComponent], @@ -17,20 +15,14 @@ import { AppRoutingModule } from './app.routing.module'; ], imports: [ IgxAutocompleteModule, - IgxRippleModule, - IgxGridModule, - IgxIconModule, IgxLayoutModule, - IgxAvatarModule, - IgxInputGroupModule, BrowserModule, AppRoutingModule, BrowserAnimationsModule, - IgxButtonModule, - FormsModule, - IgxPreventDocumentScrollModule, - HammerModule - ] + HammerModule, + GridsCrmModule + ], + providers: [] }) export class AppModule { } diff --git a/projects/app-crm/src/assets/samples/grid-crm.json b/projects/app-crm/src/assets/samples/grid-crm.json index 3afdae132b..146f6332ca 100644 --- a/projects/app-crm/src/assets/samples/grid-crm.json +++ b/projects/app-crm/src/assets/samples/grid-crm.json @@ -1 +1 @@ -{"addTsConfig":false,"sampleFiles":[{"hasRelativeAssetsUrls":false,"path":"src/app/grid-crm/grid-crm.component.ts","content":"/* eslint-disable no-underscore-dangle */\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n OnInit,\r\n QueryList,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n CloseScrollStrategy,\r\n ConnectedPositioningStrategy,\r\n HorizontalAlignment,\r\n IColumnExportingEventArgs,\r\n IgxColumnComponent,\r\n IgxCsvExporterService,\r\n IgxDateSummaryOperand,\r\n IgxExcelExporterService,\r\n IgxGridComponent,\r\n IgxNumberSummaryOperand,\r\n IgxSummaryResult,\r\n IgxToggleDirective,\r\n OverlaySettings,\r\n PositionSettings,\r\n VerticalAlignment,\r\n CellType,\r\n GridSelectionMode\r\n} from 'igniteui-angular';\r\nimport { data, Employee } from './data';\r\n\r\nfunction formatDate(val: Date) {\r\n return new Intl.DateTimeFormat('en-US').format(val);\r\n}\r\n\r\nclass DealsSummary extends IgxNumberSummaryOperand {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public operate(summaries?: any[]): IgxSummaryResult[] {\r\n const result = super.operate(summaries).filter((obj) => {\r\n if (obj.key === 'average' || obj.key === 'sum') {\r\n const summaryResult = obj.summaryResult;\r\n // apply formatting to float numbers\r\n if (Number(summaryResult) === summaryResult) {\r\n obj.summaryResult = summaryResult.toLocaleString('en-us', { maximumFractionDigits: 2 });\r\n }\r\n return obj;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n\r\nclass EarliestSummary extends IgxDateSummaryOperand {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public operate(summaries?: any[]): IgxSummaryResult[] {\r\n const result = super.operate(summaries).filter((obj) => {\r\n if (obj.key === 'earliest') {\r\n obj.summaryResult = formatDate(obj.summaryResult);\r\n return obj;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n\r\nclass SoonSummary extends IgxDateSummaryOperand {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public operate(summaries?: any[]): IgxSummaryResult[] {\r\n const result = super.operate(summaries).filter((obj) => {\r\n if (obj.key === 'latest') {\r\n obj.label = 'Soon';\r\n obj.summaryResult = formatDate(obj.summaryResult);\r\n return obj;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-grid',\r\n styleUrls: ['./grid-crm.component.scss'],\r\n templateUrl: './grid-crm.component.html'\r\n})\r\nexport class GridCRMComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild('grid1', { read: IgxGridComponent, static: true })\r\n public grid1!: IgxGridComponent;\r\n\r\n @ViewChild('toggleRefHiding') public toggleRefHiding!: IgxToggleDirective;\r\n @ViewChild('toggleRefPinning') public toggleRefPinning!: IgxToggleDirective;\r\n\r\n @ViewChild('hidingButton') public hidingButton!: ElementRef;\r\n @ViewChild('pinningButton') public pinningButton!: ElementRef;\r\n\r\n public localData: Employee[] = [];\r\n public dealsSummary = DealsSummary;\r\n public earliestSummary = EarliestSummary;\r\n public soonSummary = SoonSummary;\r\n\r\n public cols!: QueryList;\r\n public hiddenColsLength: number;\r\n public pinnedColsLength: number;\r\n\r\n public dark = false;\r\n\r\n public searchText = '';\r\n public caseSensitive = false;\r\n public selectionMode: GridSelectionMode = 'multiple';\r\n\r\n public _positionSettings: PositionSettings = {\r\n horizontalDirection: HorizontalAlignment.Left,\r\n horizontalStartPoint: HorizontalAlignment.Right,\r\n verticalStartPoint: VerticalAlignment.Bottom\r\n };\r\n\r\n public _overlaySettings: OverlaySettings = {\r\n closeOnOutsideClick: true,\r\n modal: false,\r\n // eslint-disable-next-line no-underscore-dangle\r\n positionStrategy: new ConnectedPositioningStrategy(this._positionSettings),\r\n scrollStrategy: new CloseScrollStrategy()\r\n };\r\n\r\n constructor(\r\n private csvExporter: IgxCsvExporterService,\r\n private excelExporter: IgxExcelExporterService,\r\n private activatedRoute: ActivatedRoute) {\r\n\r\n const exporterCb = (args: IColumnExportingEventArgs) => {\r\n if (args.field === 'Deals') { args.cancel = true; }\r\n };\r\n\r\n this.excelExporter.columnExporting.subscribe(exporterCb);\r\n this.csvExporter.columnExporting.subscribe(exporterCb);\r\n }\r\n\r\n public ngOnInit() {\r\n const employees: Employee[] = data;\r\n for (const employee of employees) {\r\n this.getDeals(employee);\r\n }\r\n this.localData = employees;\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this.dark = !!params.dark;\r\n });\r\n }\r\n\r\n public toggleHiding() {\r\n this._overlaySettings.target = this.hidingButton.nativeElement;\r\n this.toggleRefHiding.toggle(this._overlaySettings);\r\n }\r\n\r\n public getPhoto(cell: CellType) {\r\n return cell.row.data.avatar;\r\n }\r\n\r\n public togglePinning() {\r\n this._overlaySettings.target = this.pinningButton.nativeElement;\r\n this.toggleRefPinning.toggle(this._overlaySettings);\r\n }\r\n\r\n public ngAfterViewInit() {\r\n this.cols = this.grid1.columnList;\r\n this.hiddenColsLength = this.cols.filter((col) => col.hidden).length;\r\n this.pinnedColsLength = this.cols.filter((col) => col.pinned).length;\r\n }\r\n\r\n public toggleVisibility(col: IgxColumnComponent) {\r\n if (col.hidden) {\r\n this.hiddenColsLength--;\r\n } else {\r\n this.hiddenColsLength++;\r\n }\r\n col.hidden = !col.hidden;\r\n }\r\n\r\n public togglePin(col: IgxColumnComponent, evt: any) {\r\n if (col.pinned) {\r\n this.grid1.unpinColumn(col.field);\r\n this.pinnedColsLength--;\r\n } else {\r\n if (this.grid1.pinColumn(col.field)) {\r\n this.pinnedColsLength++;\r\n } else {\r\n // if pinning fails uncheck the checkbox\r\n evt.checkbox.checked = false;\r\n }\r\n }\r\n }\r\n\r\n public formatDate(val: Date) {\r\n return new Intl.DateTimeFormat('en-US').format(val);\r\n }\r\n\r\n public searchKeyDown(ev: KeyboardEvent) {\r\n if (ev.key === 'Enter' || ev.key === 'ArrowDown' || ev.key === 'ArrowRight') {\r\n ev.preventDefault();\r\n this.grid1.findNext(this.searchText, this.caseSensitive);\r\n } else if (ev.key === 'ArrowUp' || ev.key === 'ArrowLeft') {\r\n ev.preventDefault();\r\n this.grid1.findPrev(this.searchText, this.caseSensitive);\r\n }\r\n }\r\n\r\n public updateSearch() {\r\n this.caseSensitive = !this.caseSensitive;\r\n this.grid1.findNext(this.searchText, this.caseSensitive);\r\n }\r\n\r\n public clearSearch() {\r\n this.searchText = '';\r\n this.grid1.clearSearch();\r\n }\r\n\r\n public formatValue(val: any): string {\r\n return val.toLocaleString('en-us', { maximumFractionDigits: 2 });\r\n }\r\n\r\n public getDeals(employee: Employee): any {\r\n employee.deals = this.getDealsData();\r\n }\r\n\r\n public getDealsData(months?: number): any[] {\r\n if (months === undefined) {\r\n months = 12;\r\n }\r\n const deals: any[] = [];\r\n for (let m = 0; m < months; m++) {\r\n const value = this.getRandomNumber(-20, 30);\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n deals.push({ Deals: value, Month: m });\r\n }\r\n return deals;\r\n }\r\n\r\n public getRandomNumber(min: number, max: number): number {\r\n return Math.round(min + Math.random() * (max - min));\r\n }\r\n}\r\n","isMain":true,"fileExtension":"ts","fileHeader":"ts"},{"hasRelativeAssetsUrls":true,"path":"src/app/grid-crm/grid-crm.component.html","content":"
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Business Propeller\r\n
\r\n
\r\n \r\n \r\n search\r\n 0\" (click)=\"clearSearch()\">clear\r\n \r\n \r\n\r\n \r\n\r\n 0\">\r\n
\r\n 0\">\r\n {{ grid1.lastSearchInfo.activeMatchIndex + 1 }} of {{\r\n grid1.lastSearchInfo.matchInfoCache.length }} results\r\n \r\n \r\n No results\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n {{ formatValue(val) }}\r\n \r\n \r\n\r\n \r\n \r\n {{ formatValue(val) }}\r\n \r\n \r\n
\r\n
\r\n","isMain":true,"fileExtension":"html","fileHeader":"html"},{"hasRelativeAssetsUrls":false,"path":"src/app/grid-crm/grid-crm.component.scss","content":"@use '../../variables' as *;\r\n@import url('https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fontawesome.css');\r\n@import url('https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-regular.css');\r\n@import url('https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-solid.css');\r\n\r\n:host ::ng-deep {\r\n\t$light-palette: palette(\r\n $primary: #09f,\r\n $secondary: #ffbf00,\r\n $surface: #fff\r\n );\r\n\r\n\t@include palette($light-palette);\r\n\r\n\t$checkbox-theme: checkbox-theme(\r\n $fill-color: color($color: 'secondary', $variant: 500),\r\n $tick-color: contrast-color($color: 'secondary', $variant: 500)\r\n );\r\n\r\n\t$summary-theme: grid-summary-theme(\r\n $background-color: #f0f8fe,\r\n $result-color: color($color: 'primary', $variant: 500)\r\n );\r\n\r\n\t$crm-grid-theme: grid-theme(\r\n $header-background: #f0f8fe,\r\n $header-border-color: #dde5eb\r\n );\r\n\r\n\t$crm-grid-toolbar: grid-toolbar-theme(\r\n $background-color: color($color: 'primary', $variant: 500),\r\n $title-text-color: contrast-color($color: 'primary', $variant: 500)\r\n );\r\n\r\n\t$crm-grid-toolbar-button: button-theme(\r\n $background: color($light-palette, 'primary', 800),\r\n $hover-background: color($light-palette, 'primary', 900),\r\n $active-foreground: contrast-color($light-palette, 'primary', 900),\r\n $focus-foreground: contrast-color($light-palette, 'primary', 900)\r\n );\r\n\r\n\t$crm-grid-search-button: button-theme(\r\n $background: transparent,\r\n $focus-background: color($light-palette, 'gray', 200),\r\n $hover-background: color($light-palette, 'gray', 200)\r\n );\r\n\r\n\t$crm-input-drop-down: input-group-theme(\r\n $placeholder-color: color($light-palette, 'gray', 500),\r\n $idle-text-color: color($light-palette, 'gray', 900)\r\n );\r\n\r\n\t.grid__wrapper {\r\n\t\twidth: inherit;\r\n\t\tposition: relative;\r\n\t\theight: 100%;\r\n\t\tbackground: transparent;\r\n\t}\r\n\r\n\t.avatar-cell {\r\n\t\twidth: 100%;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t}\r\n\r\n\t// grid caption styling\r\n\t.crm-toolbar-template {\r\n\t\tjustify-content: space-between;\r\n\t\tdisplay: flex;\r\n\t\tflex: 1 0 0%;\r\n\t\talign-items: center;\r\n\t\tpadding-right: rem(24px);\r\n\t\tborder-radius: 2px;\r\n\r\n\t\t& span {\r\n\t\t\tmargin-right: auto;\r\n\t\t}\r\n\r\n\t\t.igx-button--flat {\r\n\t\t\tflex-wrap: nowrap;\r\n\t\t\twhite-space: nowrap;\r\n\t\t}\r\n\r\n\t\t.igx-button--icon {\r\n\t\t\tborder-radius: 0;\r\n\t\t}\r\n\r\n\t\t.logo-propeller {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tjustify-content: center;\r\n\t\t\tmargin-right: 10px;\r\n\t\t}\r\n\t}\r\n\r\n\t.sample-flex-container {\r\n\t\tdisplay: flex;\r\n\t\talign-self: center;\r\n\t\tjustify-content: flex-end;\r\n\t\tmax-width: 500px;\r\n\t\twidth: 70%\r\n\t}\r\n\r\n\t@include css-vars($crm-grid-toolbar);\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t.igx-button--outlined {\r\n\t\t\tborder: none;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__title {\r\n\t\tmax-width: 68ch;\r\n\t}\r\n\r\n\t.igx-grid-toolbar__button-space {\r\n\t\t.igx-icon {\r\n\t\t\tfont-size: 1rem;\r\n\t\t\tdisplay: flex;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__custom-content {\r\n\t\tflex: 1 0 0%;\r\n\t}\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t.igx-button--outlined {\r\n\t\t\tmargin-left: 0.5rem;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t.igx-button--outlined {\r\n\t\t\tborder: none;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t@include css-vars($crm-grid-toolbar-button);\r\n\t}\r\n\r\n\t.crm-sample-toolbar__title {\r\n\t\tmargin-right: rem(16px);\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-self: flex-start;\r\n\t\twidth: 30%;\r\n\t}\r\n\r\n\t.crm-sample-toolbar__ellipsis {\r\n\t\t@include ellipsis();\r\n\t\topacity: 0;\r\n\t\tanimation: slide-fade 1.25s .25s ease-out forwards;\r\n\t}\r\n\r\n\t.igx-input-group--search {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle {\r\n\t\theight: rem(36px);\r\n\t\twidth: 100%;\r\n\t\toverflow: hidden;\r\n\r\n\t\t.igx-input-group__bundle-main {\r\n\t\t\tpadding-top: 0.6rem;\r\n\t\t\theight: 36px;\r\n\t\t}\r\n\t}\r\n\r\n\t.sample-flex-container {\r\n\t\t.igx-input-group,\r\n\t\t.igx-input-group--focused {\r\n\t\t\tfont-size: 13px;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\tigx-icon {\r\n\t\t\t\tfont-size: 1rem;\r\n\t\t\t\twidth: 1rem;\r\n\t\t\t\theight: 1rem;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-input-group__input {\r\n\t\t\t&::placeholder {\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.caseSensitiveButton {\r\n\t\tmargin-left: 8px;\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle .igx-button--icon {\r\n\t\tborder-radius: 0;\r\n\t}\r\n\r\n\t.caseSensitiveIcon {\r\n\t\twidth: 1.25rem;\r\n\t\theight: 1.25rem;\r\n\t\tfont-size: 1.25rem;\r\n\t}\r\n\r\n\t.searchButtons {\r\n\t\tmargin-left: 4px;\r\n\t}\r\n\r\n\t.case-sensitive--active {\r\n\t\tbackground: color($color: 'primary', $variant: 200);\r\n\t}\r\n\r\n\t.igx-grid__th-resize-line {\r\n\t\tbackground: color($color: 'secondary', $variant: 500);\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle,\r\n\t.igx-input-group--search .igx-input-group__bundle:hover {\r\n\t\tbox-shadow: none;\r\n\t}\r\n\r\n\r\n @include css-vars($crm-input-drop-down);\r\n\r\n\r\n\t.sample-flex-container {\r\n\t\t.igx-input-group,\r\n\t\t.igx-input-group--focused {\r\n\t\t\t.igx-input-group__bundle {\r\n\t\t\t\ttransition: all 250ms ease-in-out;\r\n\t\t\t}\r\n\r\n\t\t\tigx-icon {\r\n\t\t\t\tcolor: color($color: 'primary', $variant: 200);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-input-group__textarea,\r\n\t\t.igx-input-group__input {\r\n\t\t\tcolor: color($color: 'primary', $variant: 100);\r\n\t\t}\r\n\r\n\t\t.igx-input-group {\r\n\t\t\tigx-icon {\r\n\t\t\t\tcolor: contrast-color($color: 'gray', $variant: 900);\r\n\t\t\t}\r\n\r\n\t\t\t&:hover,\r\n\t\t\t&:focus,\r\n\t\t\t&.igx-input-group--focused {\r\n\t\t\t\tigx-icon {\r\n\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-input-group__bundle {\r\n\t\t\t\t\tbackground: contrast-color($color: 'gray', $variant: 900);\r\n\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-input-group__input {\r\n\t\t\t\t\t&::placeholder {\r\n\t\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t\t\topacity: 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-input-group__textarea,\r\n\t\t\t\t.igx-input-group__input {\r\n\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-button--icon {\r\n\t\t\t\t\t&:focus,\r\n\t\t\t\t\t&:active {\r\n\t\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-button--icon {\r\n\t\t\t&:focus,\r\n\t\t\t&:active {\r\n\t\t\t\tcolor: color($color: 'primary', $variant: 100);\r\n\t\t\t\tbackground: transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-input-group__input {\r\n\t\t\t&::placeholder {\r\n\t\t\t\tcolor: contrast-color($color: 'gray', $variant: 900);\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle {\r\n\t\tbackground-color: color($color: 'primary', $variant: 800);\r\n\r\n\t\t@include css-vars($crm-grid-search-button);\r\n\t}\r\n\r\n\t.grid__wrapper:not(.dark_grid) {\r\n\t\t@include css-vars($crm-grid-theme);\r\n\t\t@include css-vars($summary-theme);\r\n\t\t@include css-vars($checkbox-theme);\r\n\t}\r\n\r\n\r\n // DARK THEME\r\n $dark-palette: palette(\r\n $primary: #09f,\r\n $secondary: #fff,\r\n $surface: #222,\r\n );\r\n\r\n $checkbox-dark-theme: checkbox-theme(\r\n $fill-color: color($color: 'gray', $variant: 900),\r\n $tick-color: contrast-color($color: 'gray', $variant: 900)\r\n );\r\n\r\n $crm-dark-grid-theme: grid-theme(\r\n $row-selected-background: color($color: 'gray', $variant: 100),\r\n $row-selected-text-color: contrast-color($color: 'gray', $variant: 100),\r\n $row-hover-background: color($color: 'gray', $variant: 200),\r\n $row-hover-text-color: contrast-color($color: 'gray', $variant: 200),\r\n $row-selected-hover-background: color($color: 'gray', $variant: 200),\r\n $row-selected-hover-text-color: contrast-color($color: 'gray', $variant: 200),\r\n $cell-selected-background: color($color: 'gray', $variant: 900),\r\n $cell-selected-text-color: contrast-color($color: 'gray', $variant: 900),\r\n $cell-active-border-color: color($color: 'gray', $variant: 900),\r\n );\r\n\r\n $crm-grid-dark-button: button-theme(\r\n $foreground: color($color: 'primary', $variant: 500),\r\n $hover-foreground: color($color: 'primary', $variant: 500),\r\n $focus-foreground: color($color: 'primary', $variant: 500),\r\n );\r\n\r\n $crm-grid-dark-progress: progress-linear-theme(\r\n $track-color: color($color: 'gray', $variant: 500)\r\n );\r\n\r\n\t.dark_grid {\r\n @include palette($dark-palette);\r\n\t\t@include css-vars($checkbox-dark-theme);\r\n\t\t@include css-vars($crm-dark-grid-theme);\r\n\t\t@include css-vars($crm-grid-dark-button);\r\n\t\t@include css-vars($crm-grid-dark-progress);\r\n\r\n\t\t.igx-grid-toolbar__actions {\r\n\t\t\t@include css-vars($crm-grid-toolbar-button);\r\n\t\t}\r\n\r\n .sample-flex-container {\r\n .igx-input-group,\r\n .igx-input-group--focused {\r\n igx-icon {\r\n color: color($color: 'primary', $variant: 200);\r\n }\r\n }\r\n\r\n .igx-input-group__textarea,\r\n .igx-input-group__input {\r\n color: color($color: 'primary', $variant: 100);\r\n }\r\n\r\n .igx-input-group {\r\n igx-icon {\r\n color: contrast-color($color: 'gray', $variant: 50);\r\n }\r\n\r\n &:hover,\r\n &:focus,\r\n &.igx-input-group--focused {\r\n igx-icon {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n\r\n .igx-input-group__bundle {\r\n background: contrast-color($color: 'gray', $variant: 50);\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n\r\n .igx-input-group__input {\r\n &::placeholder {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n }\r\n\r\n .igx-input-group__textarea,\r\n .igx-input-group__input {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n\r\n .igx-button--icon {\r\n &:focus,\r\n &:active {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .igx-input-group__input {\r\n &::placeholder {\r\n color: contrast-color($color: 'gray', $variant: 50);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.animated-fan {\r\n\tanimation: spin-fade 1.5s cubic-bezier(0.21, 1.07, 0.99, 1) forwards;\r\n}\r\n\r\n@keyframes spin-fade {\r\n\t0% {\r\n\t\topacity: 0;\r\n\t\ttransform: rotate(0);\r\n\t}\r\n\t100% {\r\n\t\topacity: 1;\r\n\t\ttransform: rotate(270deg);\r\n\t}\r\n}\r\n\r\n@keyframes slide-fade {\r\n\t0% {\r\n\t\ttransform: translateX(-5%);\r\n\t}\r\n\t100% {\r\n\t\topacity: 1;\r\n\t\ttransform: translateX(0);\r\n\t}\r\n}\r\n","isMain":true,"fileExtension":"scss","fileHeader":"scss"},{"hasRelativeAssetsUrls":false,"path":"src/app/directives/prevent-scroll.directive.ts","content":"import { AfterViewInit, Directive, Host, Input, NgModule, Optional, OnDestroy, Inject } from '@angular/core';\r\nimport { IgxGridBaseDirective, IgxGridComponent, IGX_GRID_BASE } from 'igniteui-angular';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[igxPreventDocumentScroll]'\r\n})\r\nexport class IgxPreventDocumentScrollDirective implements AfterViewInit, OnDestroy {\r\n private _preventScroll = true;\r\n private gridBody: HTMLElement;\r\n\r\n /**\r\n * A boolean indicating if page scroll should be prevented while mouse wheeling over the grid,\r\n * when grid scroll has reached top or bottom. Defaults to true.\r\n * ```html\r\n * \r\n * \r\n * ```\r\n */\r\n @Input('igxPreventDocumentScroll')\r\n public set preventScroll(val: boolean) {\r\n if (val === false) { this._preventScroll = false; }\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n constructor(@Host() @Optional() @Inject(IGX_GRID_BASE) private grid: IgxGridBaseDirective) {\r\n }\r\n\r\n public ngAfterViewInit() {\r\n this.gridBody = this.getGridTBody();\r\n if (this._preventScroll) {\r\n this.gridBody.addEventListener('wheel', this.preventDocumentScroll, { passive: false });\r\n }\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.gridBody.removeEventListener('wheel', this.preventDocumentScroll);\r\n }\r\n\r\n /**\r\n * Prevents scrolling the page, when mouse wheel over the grid body.\r\n */\r\n private preventDocumentScroll(event) {\r\n event.preventDefault();\r\n }\r\n\r\n private getGridTBody(): HTMLElement {\r\n return this.grid.tbody.nativeElement;\r\n }\r\n}\r\n\r\n/**\r\n * @hidden\r\n */\r\n@NgModule({\r\n declarations: [IgxPreventDocumentScrollDirective],\r\n exports: [IgxPreventDocumentScrollDirective]\r\n})\r\n\r\nexport class IgxPreventDocumentScrollModule { }\r\n"},{"hasRelativeAssetsUrls":false,"path":"src/_app-layout.scss","content":".sample-wrapper {\r\n width: inherit;\r\n position: relative;\r\n height: 100%;\r\n margin: 0 auto;\r\n background: transparent;\r\n}\r\n\r\n.sample-content {\r\n display: flex;\r\n flex-grow: 1;\r\n flex-flow: row wrap;\r\n justify-content: flex-start;\r\n padding: 0;\r\n -webkit-animation: fade-in .3s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\r\n -moz-animation: fade-in .3s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\r\n animation: fade-in .3s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\r\n}\r\n\r\n.sample-column {\r\n display: flex;\r\n flex-flow: column nowrap;\r\n flex: 1 0 25%;\r\n align-content: flex-start;\r\n margin: 16px;\r\n min-width: 280px;\r\n}\r\n\r\n.sample-title {\r\n color: #0375be;\r\n margin-bottom: 12px;\r\n margin-top: 12px;\r\n}\r\n\r\n.sample-title .light {\r\n font-weight: 400;\r\n}\r\n\r\n.sample-description {\r\n font-size: 14px;\r\n font-weight: normal;\r\n color: #717171;\r\n}\r\n\r\n@-webkit-keyframes color-change-2x {\r\n 0% {\r\n background: #fdf8f0;\r\n }\r\n 100% {\r\n background: #f6e7ec;\r\n }\r\n}\r\n\r\n@keyframes color-change-2x {\r\n 0% {\r\n background: #fdf8f0;\r\n }\r\n 100% {\r\n background: #f6e7ec;\r\n }\r\n}\r\n\r\n@-webkit-keyframes fade-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fade-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.headerAlignSyle {\r\n text-align: right !important;\r\n}\r\n\r\n"},{"hasRelativeAssetsUrls":false,"path":"src/_variables.scss","content":"@use 'igniteui-angular/theming' as *;\r\n@forward 'igniteui-angular/theming';\r\n\r\n$palette: $light-material-palette;\r\n$schema: $light-material-schema;\r\n\r\n$green-palette: palette(\r\n $primary: #09f,\r\n $secondary: #72da67,\r\n $gray: #fff,\r\n $surface: #333,\r\n $info: color($palette, 'info'),\r\n $success: color($palette, 'success'),\r\n $warn: color($palette, 'warn'),\r\n $error: color($palette, 'error'),\r\n);\r\n\r\n$gray-btn-color: color($green-palette, 'gray', 800);\r\n"},{"hasRelativeAssetsUrls":false,"path":"src/app/app.module.ts","content":"import { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { AppComponent } from \"./app.component\";\r\nimport { \r\n\tBrowserModule,\r\n\tHammerModule\r\n } from \"@angular/platform-browser\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { FormsModule } from \"@angular/forms\";\n\n\n\n@NgModule({\n bootstrap: [AppComponent],\n declarations: [\r\n\tAppComponent,\r\n\tGridCRMComponent\r\n],\n imports: [\r\n\tBrowserModule,\r\n\tBrowserAnimationsModule,\r\n\tFormsModule,\r\n\tIgxAutocompleteModule,\r\n\tIgxRippleModule,\r\n\tIgxGridModule,\r\n\tIgxIconModule,\r\n\tIgxLayoutModule,\r\n\tIgxAvatarModule,\r\n\tIgxInputGroupModule,\r\n\tIgxButtonModule,\r\n\tIgxPreventDocumentScrollModule\r\n],\n providers: [],\n entryComponents: [],\n schemas: []\n})\nexport class AppModule {}\n","isMain":true,"fileExtension":"ts","fileHeader":"modules"},{"hasRelativeAssetsUrls":false,"path":"src/app/app.component.html","content":""},{"hasRelativeAssetsUrls":false,"path":"package.json","content":"{\n \"name\": \"example-app\",\n \"version\": \"0.0.0\",\n \"scripts\": {\n \"ng\": \"ng\",\n \"start\": \"ng serve\",\n \"build\": \"ng build\",\n \"watch\": \"ng build --watch --configuration development\",\n \"test\": \"ng test\"\n },\n \"private\": true,\n \"dependencies\": {\n \"@angular/animations\": \"^15.0.0\",\n \"@angular/cdk\": \"^15.0.0\",\n \"@angular/common\": \"^15.0.0\",\n \"@angular/compiler\": \"^15.0.0\",\n \"@angular/core\": \"^15.0.0\",\n \"@angular/forms\": \"^15.0.0\",\n \"@angular/platform-browser\": \"^15.0.0\",\n \"@angular/platform-browser-dynamic\": \"^15.0.0\",\n \"@angular/router\": \"^15.0.0\", \"@types/hammerjs\": \"^2.0.39\", \"core-js\": \"2.6.2\",\n \"hammerjs\": \"^2.0.8\",\n \"igniteui-angular\": \"^15.0.0\",\n \"igniteui-theming\": \"^1.1.4\", \"immediate\": \"^3.2.3\",\n \"intl\": \"^1.2.5\",\n \"rxjs\": \"^6.6.7\",\n \"tslib\": \"^2.3.1\",\n \"zone.js\": \"~0.11.4\"\n },\n \"devDependencies\": {\n \"@angular-devkit/build-angular\": \"^15.0.0\",\n \"@angular/cli\": \"^15.0.0\",\n \"@angular/compiler-cli\": \"^15.0.0\",\n \"@types/jasmine\": \"~3.10.0\",\n \"@types/node\": \"^12.11.1\",\n \"jasmine-core\": \"~3.10.0\",\n \"karma\": \"^6.3.11\",\n \"karma-chrome-launcher\": \"~3.1.0\",\n \"karma-coverage\": \"~2.0.3\",\n \"karma-jasmine\": \"~4.0.0\",\n \"karma-jasmine-html-reporter\": \"~1.7.0\",\n \"typescript\": \"~4.8.4\"\n }\n}\n"}],"sampleDependencies":"{\"@angular/animations\":\"^15.0.0\",\"@angular/common\":\"^15.0.0\",\"@angular/compiler\":\"^15.0.0\",\"@angular/core\":\"^15.0.0\",\"@angular/forms\":\"^15.0.0\",\"@angular/platform-browser\":\"^15.0.0\",\"@angular/platform-browser-dynamic\":\"^15.0.0\",\"@angular/router\":\"^15.0.0\",\"@types/hammerjs\":\"^2.0.39\",\"core-js\":\"2.6.2\",\"hammerjs\":\"^2.0.8\",\"igniteui-angular\":\"15.0.0\",\"immediate\":\"^3.2.3\",\"intl\":\"^1.2.5\",\"rxjs\":\"^6.6.7\",\"tslib\":\"^2.3.1\",\"zone.js\":\"~0.11.4\"}"} \ No newline at end of file +{"addTsConfig":false,"sampleFiles":[{"hasRelativeAssetsUrls":false,"path":"src/app/grid-crm/grid-crm.component.ts","content":"/* eslint-disable no-underscore-dangle */\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n OnInit,\r\n QueryList,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n CloseScrollStrategy,\r\n ConnectedPositioningStrategy,\r\n HorizontalAlignment,\r\n IColumnExportingEventArgs,\r\n IgxColumnComponent,\r\n IgxCsvExporterService,\r\n IgxDateSummaryOperand,\r\n IgxExcelExporterService,\r\n IgxGridComponent,\r\n IgxNumberSummaryOperand,\r\n IgxSummaryResult,\r\n IgxToggleDirective,\r\n OverlaySettings,\r\n PositionSettings,\r\n VerticalAlignment,\r\n CellType,\r\n GridSelectionMode\r\n} from 'igniteui-angular';\r\nimport { data, Employee } from './data';\r\n\r\nfunction formatDate(val: Date) {\r\n return new Intl.DateTimeFormat('en-US').format(val);\r\n}\r\n\r\nclass DealsSummary extends IgxNumberSummaryOperand {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public operate(summaries?: any[]): IgxSummaryResult[] {\r\n const result = super.operate(summaries).filter((obj) => {\r\n if (obj.key === 'average' || obj.key === 'sum') {\r\n const summaryResult = obj.summaryResult;\r\n // apply formatting to float numbers\r\n if (Number(summaryResult) === summaryResult) {\r\n obj.summaryResult = summaryResult.toLocaleString('en-us', { maximumFractionDigits: 2 });\r\n }\r\n return obj;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n\r\nclass EarliestSummary extends IgxDateSummaryOperand {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public operate(summaries?: any[]): IgxSummaryResult[] {\r\n const result = super.operate(summaries).filter((obj) => {\r\n if (obj.key === 'earliest') {\r\n obj.summaryResult = formatDate(obj.summaryResult);\r\n return obj;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n\r\nclass SoonSummary extends IgxDateSummaryOperand {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public operate(summaries?: any[]): IgxSummaryResult[] {\r\n const result = super.operate(summaries).filter((obj) => {\r\n if (obj.key === 'latest') {\r\n obj.label = 'Soon';\r\n obj.summaryResult = formatDate(obj.summaryResult);\r\n return obj;\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-grid',\r\n styleUrls: ['./grid-crm.component.scss'],\r\n templateUrl: './grid-crm.component.html'\r\n})\r\nexport class GridCRMComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild('grid1', { read: IgxGridComponent, static: true })\r\n public grid1!: IgxGridComponent;\r\n\r\n @ViewChild('toggleRefHiding') public toggleRefHiding!: IgxToggleDirective;\r\n @ViewChild('toggleRefPinning') public toggleRefPinning!: IgxToggleDirective;\r\n\r\n @ViewChild('hidingButton') public hidingButton!: ElementRef;\r\n @ViewChild('pinningButton') public pinningButton!: ElementRef;\r\n\r\n public localData: Employee[] = [];\r\n public dealsSummary = DealsSummary;\r\n public earliestSummary = EarliestSummary;\r\n public soonSummary = SoonSummary;\r\n\r\n public cols!: QueryList;\r\n public hiddenColsLength: number;\r\n public pinnedColsLength: number;\r\n\r\n public dark = false;\r\n\r\n public searchText = '';\r\n public caseSensitive = false;\r\n public selectionMode: GridSelectionMode = 'multiple';\r\n\r\n public _positionSettings: PositionSettings = {\r\n horizontalDirection: HorizontalAlignment.Left,\r\n horizontalStartPoint: HorizontalAlignment.Right,\r\n verticalStartPoint: VerticalAlignment.Bottom\r\n };\r\n\r\n public _overlaySettings: OverlaySettings = {\r\n closeOnOutsideClick: true,\r\n modal: false,\r\n // eslint-disable-next-line no-underscore-dangle\r\n positionStrategy: new ConnectedPositioningStrategy(this._positionSettings),\r\n scrollStrategy: new CloseScrollStrategy()\r\n };\r\n\r\n constructor(\r\n private csvExporter: IgxCsvExporterService,\r\n private excelExporter: IgxExcelExporterService,\r\n private activatedRoute: ActivatedRoute) {\r\n\r\n const exporterCb = (args: IColumnExportingEventArgs) => {\r\n if (args.field === 'Deals') { args.cancel = true; }\r\n };\r\n\r\n this.excelExporter.columnExporting.subscribe(exporterCb);\r\n this.csvExporter.columnExporting.subscribe(exporterCb);\r\n }\r\n\r\n public ngOnInit() {\r\n const employees: Employee[] = data;\r\n for (const employee of employees) {\r\n this.getDeals(employee);\r\n }\r\n this.localData = employees;\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this.dark = !!params.dark;\r\n });\r\n }\r\n\r\n public toggleHiding() {\r\n this._overlaySettings.target = this.hidingButton.nativeElement;\r\n this.toggleRefHiding.toggle(this._overlaySettings);\r\n }\r\n\r\n public getPhoto(cell: CellType) {\r\n return cell.row.data.avatar;\r\n }\r\n\r\n public togglePinning() {\r\n this._overlaySettings.target = this.pinningButton.nativeElement;\r\n this.toggleRefPinning.toggle(this._overlaySettings);\r\n }\r\n\r\n public ngAfterViewInit() {\r\n this.cols = this.grid1.columnList;\r\n this.hiddenColsLength = this.cols.filter((col) => col.hidden).length;\r\n this.pinnedColsLength = this.cols.filter((col) => col.pinned).length;\r\n }\r\n\r\n public toggleVisibility(col: IgxColumnComponent) {\r\n if (col.hidden) {\r\n this.hiddenColsLength--;\r\n } else {\r\n this.hiddenColsLength++;\r\n }\r\n col.hidden = !col.hidden;\r\n }\r\n\r\n public togglePin(col: IgxColumnComponent, evt: any) {\r\n if (col.pinned) {\r\n this.grid1.unpinColumn(col.field);\r\n this.pinnedColsLength--;\r\n } else {\r\n if (this.grid1.pinColumn(col.field)) {\r\n this.pinnedColsLength++;\r\n } else {\r\n // if pinning fails uncheck the checkbox\r\n evt.checkbox.checked = false;\r\n }\r\n }\r\n }\r\n\r\n public formatDate(val: Date) {\r\n return new Intl.DateTimeFormat('en-US').format(val);\r\n }\r\n\r\n public searchKeyDown(ev: KeyboardEvent) {\r\n if (ev.key === 'Enter' || ev.key === 'ArrowDown' || ev.key === 'ArrowRight') {\r\n ev.preventDefault();\r\n this.grid1.findNext(this.searchText, this.caseSensitive);\r\n } else if (ev.key === 'ArrowUp' || ev.key === 'ArrowLeft') {\r\n ev.preventDefault();\r\n this.grid1.findPrev(this.searchText, this.caseSensitive);\r\n }\r\n }\r\n\r\n public updateSearch() {\r\n this.caseSensitive = !this.caseSensitive;\r\n this.grid1.findNext(this.searchText, this.caseSensitive);\r\n }\r\n\r\n public clearSearch() {\r\n this.searchText = '';\r\n this.grid1.clearSearch();\r\n }\r\n\r\n public formatValue(val: any): string {\r\n return val.toLocaleString('en-us', { maximumFractionDigits: 2 });\r\n }\r\n\r\n public getDeals(employee: Employee): any {\r\n employee.deals = this.getDealsData();\r\n }\r\n\r\n public getDealsData(months?: number): any[] {\r\n if (months === undefined) {\r\n months = 12;\r\n }\r\n const deals: any[] = [];\r\n for (let m = 0; m < months; m++) {\r\n const value = this.getRandomNumber(-20, 30);\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n deals.push({ Deals: value, Month: m });\r\n }\r\n return deals;\r\n }\r\n\r\n public getRandomNumber(min: number, max: number): number {\r\n return Math.round(min + Math.random() * (max - min));\r\n }\r\n}\r\n","isMain":true,"fileExtension":"ts","fileHeader":"ts"},{"hasRelativeAssetsUrls":true,"path":"src/app/grid-crm/grid-crm.component.html","content":"
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Business Propeller\r\n
\r\n
\r\n \r\n \r\n search\r\n 0\" (click)=\"clearSearch()\">clear\r\n \r\n \r\n\r\n \r\n\r\n 0\">\r\n
\r\n 0\">\r\n {{ grid1.lastSearchInfo.activeMatchIndex + 1 }} of {{\r\n grid1.lastSearchInfo.matchInfoCache.length }} results\r\n \r\n \r\n No results\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n {{ formatValue(val) }}\r\n \r\n \r\n\r\n \r\n \r\n {{ formatValue(val) }}\r\n \r\n \r\n
\r\n
\r\n","isMain":true,"fileExtension":"html","fileHeader":"html"},{"hasRelativeAssetsUrls":false,"path":"src/app/grid-crm/grid-crm.component.scss","content":"@use '../../variables' as *;\r\n@import url('https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fontawesome.css');\r\n@import url('https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-regular.css');\r\n@import url('https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-solid.css');\r\n\r\n:host ::ng-deep {\r\n\t$light-palette: palette(\r\n $primary: #09f,\r\n $secondary: #ffbf00,\r\n $surface: #fff\r\n );\r\n\r\n\t@include palette($light-palette);\r\n\r\n\t$checkbox-theme: checkbox-theme(\r\n $fill-color: color($color: 'secondary', $variant: 500),\r\n $tick-color: contrast-color($color: 'secondary', $variant: 500)\r\n );\r\n\r\n\t$summary-theme: grid-summary-theme(\r\n $background-color: #f0f8fe,\r\n $result-color: color($color: 'primary', $variant: 500)\r\n );\r\n\r\n\t$crm-grid-theme: grid-theme(\r\n $header-background: #f0f8fe,\r\n $header-border-color: #dde5eb\r\n );\r\n\r\n\t$crm-grid-toolbar: grid-toolbar-theme(\r\n $background-color: color($color: 'primary', $variant: 500),\r\n $title-text-color: contrast-color($color: 'primary', $variant: 500)\r\n );\r\n\r\n\t$crm-grid-toolbar-button: button-theme(\r\n $background: color($light-palette, 'primary', 800),\r\n $hover-background: color($light-palette, 'primary', 900),\r\n $active-foreground: contrast-color($light-palette, 'primary', 900),\r\n $focus-foreground: contrast-color($light-palette, 'primary', 900)\r\n );\r\n\r\n\t$crm-grid-search-button: button-theme(\r\n $background: transparent,\r\n $focus-background: color($light-palette, 'gray', 200),\r\n $hover-background: color($light-palette, 'gray', 200)\r\n );\r\n\r\n\t$crm-input-drop-down: input-group-theme(\r\n $placeholder-color: color($light-palette, 'gray', 500),\r\n $idle-text-color: color($light-palette, 'gray', 900)\r\n );\r\n\r\n\t.grid__wrapper {\r\n\t\twidth: inherit;\r\n\t\tposition: relative;\r\n\t\theight: 100%;\r\n\t\tbackground: transparent;\r\n\t}\r\n\r\n\t.avatar-cell {\r\n\t\twidth: 100%;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t}\r\n\r\n\t// grid caption styling\r\n\t.crm-toolbar-template {\r\n\t\tjustify-content: space-between;\r\n\t\tdisplay: flex;\r\n\t\tflex: 1 0 0%;\r\n\t\talign-items: center;\r\n\t\tpadding-right: rem(24px);\r\n\t\tborder-radius: 2px;\r\n\r\n\t\t& span {\r\n\t\t\tmargin-right: auto;\r\n\t\t}\r\n\r\n\t\t.igx-button--flat {\r\n\t\t\tflex-wrap: nowrap;\r\n\t\t\twhite-space: nowrap;\r\n\t\t}\r\n\r\n\t\t.igx-button--icon {\r\n\t\t\tborder-radius: 0;\r\n\t\t}\r\n\r\n\t\t.logo-propeller {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tjustify-content: center;\r\n\t\t\tmargin-right: 10px;\r\n\t\t}\r\n\t}\r\n\r\n\t.sample-flex-container {\r\n\t\tdisplay: flex;\r\n\t\talign-self: center;\r\n\t\tjustify-content: flex-end;\r\n\t\tmax-width: 500px;\r\n\t\twidth: 70%\r\n\t}\r\n\r\n\t@include css-vars($crm-grid-toolbar);\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t.igx-button--outlined {\r\n\t\t\tborder: none;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__title {\r\n\t\tmax-width: 68ch;\r\n\t}\r\n\r\n\t.igx-grid-toolbar__button-space {\r\n\t\t.igx-icon {\r\n\t\t\tfont-size: 1rem;\r\n\t\t\tdisplay: flex;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__custom-content {\r\n\t\tflex: 1 0 0%;\r\n\t}\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t.igx-button--outlined {\r\n\t\t\tmargin-left: 0.5rem;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t.igx-button--outlined {\r\n\t\t\tborder: none;\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-grid-toolbar__actions {\r\n\t\t@include css-vars($crm-grid-toolbar-button);\r\n\t}\r\n\r\n\t.crm-sample-toolbar__title {\r\n\t\tmargin-right: rem(16px);\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-self: flex-start;\r\n\t\twidth: 30%;\r\n\t}\r\n\r\n\t.crm-sample-toolbar__ellipsis {\r\n\t\t@include ellipsis();\r\n\t\topacity: 0;\r\n\t\tanimation: slide-fade 1.25s .25s ease-out forwards;\r\n\t}\r\n\r\n\t.igx-input-group--search {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle {\r\n\t\theight: rem(36px);\r\n\t\twidth: 100%;\r\n\t\toverflow: hidden;\r\n\r\n\t\t.igx-input-group__bundle-main {\r\n\t\t\tpadding-top: 0.6rem;\r\n\t\t\theight: 36px;\r\n\t\t}\r\n\t}\r\n\r\n\t.sample-flex-container {\r\n\t\t.igx-input-group,\r\n\t\t.igx-input-group--focused {\r\n\t\t\tfont-size: 13px;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\tigx-icon {\r\n\t\t\t\tfont-size: 1rem;\r\n\t\t\t\twidth: 1rem;\r\n\t\t\t\theight: 1rem;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-input-group__input {\r\n\t\t\t&::placeholder {\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.caseSensitiveButton {\r\n\t\tmargin-left: 8px;\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle .igx-button--icon {\r\n\t\tborder-radius: 0;\r\n\t}\r\n\r\n\t.caseSensitiveIcon {\r\n\t\twidth: 1.25rem;\r\n\t\theight: 1.25rem;\r\n\t\tfont-size: 1.25rem;\r\n\t}\r\n\r\n\t.searchButtons {\r\n\t\tmargin-left: 4px;\r\n\t}\r\n\r\n\t.case-sensitive--active {\r\n\t\tbackground: color($color: 'primary', $variant: 200);\r\n\t}\r\n\r\n\t.igx-grid__th-resize-line {\r\n\t\tbackground: color($color: 'secondary', $variant: 500);\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle,\r\n\t.igx-input-group--search .igx-input-group__bundle:hover {\r\n\t\tbox-shadow: none;\r\n\t}\r\n\r\n\r\n @include css-vars($crm-input-drop-down);\r\n\r\n\r\n\t.sample-flex-container {\r\n\t\t.igx-input-group,\r\n\t\t.igx-input-group--focused {\r\n\t\t\t.igx-input-group__bundle {\r\n\t\t\t\ttransition: all 250ms ease-in-out;\r\n\t\t\t}\r\n\r\n\t\t\tigx-icon {\r\n\t\t\t\tcolor: color($color: 'primary', $variant: 200);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-input-group__textarea,\r\n\t\t.igx-input-group__input {\r\n\t\t\tcolor: color($color: 'primary', $variant: 100);\r\n\t\t}\r\n\r\n\t\t.igx-input-group {\r\n\t\t\tigx-icon {\r\n\t\t\t\tcolor: contrast-color($color: 'gray', $variant: 900);\r\n\t\t\t}\r\n\r\n\t\t\t&:hover,\r\n\t\t\t&:focus,\r\n\t\t\t&.igx-input-group--focused {\r\n\t\t\t\tigx-icon {\r\n\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-input-group__bundle {\r\n\t\t\t\t\tbackground: contrast-color($color: 'gray', $variant: 900);\r\n\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-input-group__input {\r\n\t\t\t\t\t&::placeholder {\r\n\t\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t\t\topacity: 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-input-group__textarea,\r\n\t\t\t\t.igx-input-group__input {\r\n\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.igx-button--icon {\r\n\t\t\t\t\t&:focus,\r\n\t\t\t\t\t&:active {\r\n\t\t\t\t\t\tcolor: color($color: 'gray', $variant: 600);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-button--icon {\r\n\t\t\t&:focus,\r\n\t\t\t&:active {\r\n\t\t\t\tcolor: color($color: 'primary', $variant: 100);\r\n\t\t\t\tbackground: transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.igx-input-group__input {\r\n\t\t\t&::placeholder {\r\n\t\t\t\tcolor: contrast-color($color: 'gray', $variant: 900);\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.igx-input-group--search .igx-input-group__bundle {\r\n\t\tbackground-color: color($color: 'primary', $variant: 800);\r\n\r\n\t\t@include css-vars($crm-grid-search-button);\r\n\t}\r\n\r\n\t.grid__wrapper:not(.dark_grid) {\r\n\t\t@include css-vars($crm-grid-theme);\r\n\t\t@include css-vars($summary-theme);\r\n\t\t@include css-vars($checkbox-theme);\r\n\t}\r\n\r\n\r\n // DARK THEME\r\n $dark-palette: palette(\r\n $primary: #09f,\r\n $secondary: #fff,\r\n $surface: #222,\r\n );\r\n\r\n $checkbox-dark-theme: checkbox-theme(\r\n $fill-color: color($color: 'gray', $variant: 900),\r\n $tick-color: contrast-color($color: 'gray', $variant: 900)\r\n );\r\n\r\n $crm-dark-grid-theme: grid-theme(\r\n $row-selected-background: color($color: 'gray', $variant: 100),\r\n $row-selected-text-color: contrast-color($color: 'gray', $variant: 100),\r\n $row-hover-background: color($color: 'gray', $variant: 200),\r\n $row-hover-text-color: contrast-color($color: 'gray', $variant: 200),\r\n $row-selected-hover-background: color($color: 'gray', $variant: 200),\r\n $row-selected-hover-text-color: contrast-color($color: 'gray', $variant: 200),\r\n $cell-selected-background: color($color: 'gray', $variant: 900),\r\n $cell-selected-text-color: contrast-color($color: 'gray', $variant: 900),\r\n $cell-active-border-color: color($color: 'gray', $variant: 900),\r\n );\r\n\r\n $crm-grid-dark-button: button-theme(\r\n $foreground: color($color: 'primary', $variant: 500),\r\n $hover-foreground: color($color: 'primary', $variant: 500),\r\n $focus-foreground: color($color: 'primary', $variant: 500),\r\n );\r\n\r\n $crm-grid-dark-progress: progress-linear-theme(\r\n $track-color: color($color: 'gray', $variant: 500)\r\n );\r\n\r\n\t.dark_grid {\r\n @include palette($dark-palette);\r\n\t\t@include css-vars($checkbox-dark-theme);\r\n\t\t@include css-vars($crm-dark-grid-theme);\r\n\t\t@include css-vars($crm-grid-dark-button);\r\n\t\t@include css-vars($crm-grid-dark-progress);\r\n\r\n\t\t.igx-grid-toolbar__actions {\r\n\t\t\t@include css-vars($crm-grid-toolbar-button);\r\n\t\t}\r\n\r\n .sample-flex-container {\r\n .igx-input-group,\r\n .igx-input-group--focused {\r\n igx-icon {\r\n color: color($color: 'primary', $variant: 200);\r\n }\r\n }\r\n\r\n .igx-input-group__textarea,\r\n .igx-input-group__input {\r\n color: color($color: 'primary', $variant: 100);\r\n }\r\n\r\n .igx-input-group {\r\n igx-icon {\r\n color: contrast-color($color: 'gray', $variant: 50);\r\n }\r\n\r\n &:hover,\r\n &:focus,\r\n &.igx-input-group--focused {\r\n igx-icon {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n\r\n .igx-input-group__bundle {\r\n background: contrast-color($color: 'gray', $variant: 50);\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n\r\n .igx-input-group__input {\r\n &::placeholder {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n }\r\n\r\n .igx-input-group__textarea,\r\n .igx-input-group__input {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n\r\n .igx-button--icon {\r\n &:focus,\r\n &:active {\r\n color: color($color: 'gray', $variant: 400);\r\n }\r\n }\r\n }\r\n }\r\n\r\n .igx-input-group__input {\r\n &::placeholder {\r\n color: contrast-color($color: 'gray', $variant: 50);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.animated-fan {\r\n\tanimation: spin-fade 1.5s cubic-bezier(0.21, 1.07, 0.99, 1) forwards;\r\n}\r\n\r\n@keyframes spin-fade {\r\n\t0% {\r\n\t\topacity: 0;\r\n\t\ttransform: rotate(0);\r\n\t}\r\n\t100% {\r\n\t\topacity: 1;\r\n\t\ttransform: rotate(270deg);\r\n\t}\r\n}\r\n\r\n@keyframes slide-fade {\r\n\t0% {\r\n\t\ttransform: translateX(-5%);\r\n\t}\r\n\t100% {\r\n\t\topacity: 1;\r\n\t\ttransform: translateX(0);\r\n\t}\r\n}\r\n","isMain":true,"fileExtension":"scss","fileHeader":"scss"},{"hasRelativeAssetsUrls":false,"path":"src/app/directives/prevent-scroll.directive.ts","content":"import { AfterViewInit, Directive, Host, Input, NgModule, Optional, OnDestroy, Inject } from '@angular/core';\r\nimport { IgxGridBaseDirective, IgxGridComponent, IGX_GRID_BASE } from 'igniteui-angular';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[igxPreventDocumentScroll]'\r\n})\r\nexport class IgxPreventDocumentScrollDirective implements AfterViewInit, OnDestroy {\r\n private _preventScroll = true;\r\n private gridBody: HTMLElement;\r\n\r\n /**\r\n * A boolean indicating if page scroll should be prevented while mouse wheeling over the grid,\r\n * when grid scroll has reached top or bottom. Defaults to true.\r\n * ```html\r\n * \r\n * \r\n * ```\r\n */\r\n @Input('igxPreventDocumentScroll')\r\n public set preventScroll(val: boolean) {\r\n if (val === false) { this._preventScroll = false; }\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n constructor(@Host() @Optional() @Inject(IGX_GRID_BASE) private grid: IgxGridBaseDirective) {\r\n }\r\n\r\n public ngAfterViewInit() {\r\n this.gridBody = this.getGridTBody();\r\n if (this._preventScroll) {\r\n this.gridBody.addEventListener('wheel', this.preventDocumentScroll, { passive: false });\r\n }\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.gridBody.removeEventListener('wheel', this.preventDocumentScroll);\r\n }\r\n\r\n /**\r\n * Prevents scrolling the page, when mouse wheel over the grid body.\r\n */\r\n private preventDocumentScroll(event) {\r\n event.preventDefault();\r\n }\r\n\r\n private getGridTBody(): HTMLElement {\r\n return this.grid.tbody.nativeElement;\r\n }\r\n}\r\n\r\n/**\r\n * @hidden\r\n */\r\n@NgModule({\r\n declarations: [IgxPreventDocumentScrollDirective],\r\n exports: [IgxPreventDocumentScrollDirective]\r\n})\r\n\r\nexport class IgxPreventDocumentScrollModule { }\r\n"},{"hasRelativeAssetsUrls":false,"path":"src/_app-layout.scss","content":".sample-wrapper {\r\n width: inherit;\r\n position: relative;\r\n height: 100%;\r\n margin: 0 auto;\r\n background: transparent;\r\n}\r\n\r\n.sample-content {\r\n display: flex;\r\n flex-grow: 1;\r\n flex-flow: row wrap;\r\n justify-content: flex-start;\r\n padding: 0;\r\n -webkit-animation: fade-in .3s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\r\n -moz-animation: fade-in .3s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\r\n animation: fade-in .3s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\r\n}\r\n\r\n.sample-column {\r\n display: flex;\r\n flex-flow: column nowrap;\r\n flex: 1 0 25%;\r\n align-content: flex-start;\r\n margin: 16px;\r\n min-width: 280px;\r\n}\r\n\r\n.sample-title {\r\n color: #0375be;\r\n margin-bottom: 12px;\r\n margin-top: 12px;\r\n}\r\n\r\n.sample-title .light {\r\n font-weight: 400;\r\n}\r\n\r\n.sample-description {\r\n font-size: 14px;\r\n font-weight: normal;\r\n color: #717171;\r\n}\r\n\r\n@-webkit-keyframes color-change-2x {\r\n 0% {\r\n background: #fdf8f0;\r\n }\r\n 100% {\r\n background: #f6e7ec;\r\n }\r\n}\r\n\r\n@keyframes color-change-2x {\r\n 0% {\r\n background: #fdf8f0;\r\n }\r\n 100% {\r\n background: #f6e7ec;\r\n }\r\n}\r\n\r\n@-webkit-keyframes fade-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fade-in {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.headerAlignSyle {\r\n text-align: right !important;\r\n}\r\n\r\n"},{"hasRelativeAssetsUrls":false,"path":"src/_variables.scss","content":"@use 'igniteui-angular/theming' as *;\r\n@forward 'igniteui-angular/theming';\r\n\r\n$palette: $light-material-palette;\r\n$schema: $light-material-schema;\r\n\r\n$green-palette: palette(\r\n $primary: #09f,\r\n $secondary: #72da67,\r\n $gray: #fff,\r\n $surface: #333,\r\n $info: color($palette, 'info'),\r\n $success: color($palette, 'success'),\r\n $warn: color($palette, 'warn'),\r\n $error: color($palette, 'error'),\r\n);\r\n\r\n$gray-btn-color: color($green-palette, 'gray', 800);\r\n"},{"hasRelativeAssetsUrls":true,"path":"src/app/grid-crm/data.ts","content":"/* eslint-disable */\r\nexport interface Employee {\r\n id: number;\r\n avatar: string;\r\n name: string;\r\n email: string;\r\n company: string;\r\n position: string;\r\n work_phone: string;\r\n mobile_phone: string;\r\n fax: string;\r\n street: string;\r\n city: string;\r\n post_code: number;\r\n state: string;\r\n country: string;\r\n referred_by: string;\r\n created_on: Date;\r\n birthday: Date;\r\n last_activity: Date;\r\n next_activity: Date;\r\n deals?: { Deals: number, Month: number }[];\r\n deals_won: number;\r\n deals_lost: number;\r\n deals_pending: number;\r\n deals_total: number;\r\n ratio: number;\r\n estimated_sales: number;\r\n actual_sales: number;\r\n tags: string;\r\n}\r\n\r\nexport const data: any[] = [{\"id\":256286239,\"avatar\":\"assets/images/men/43.jpg\",\"name\":\"Gawain Beadnall\",\"email\":\"gbeadnall0@etsy.com\",\"company\":\"Divanoodle\",\"position\":\"Statistician I\",\"work_phone\":\"+1-317-866-4381\",\"mobile_phone\":\"+1-203-937-3567\",\"fax\":\"+1-212-115-1790\",\"street\":\"47 Garrison Park\",\"city\":\"Indianapolis\",\"post_code\":46207,\"state\":\"IN\",\"country\":\"United States\",\"referred_by\":\"Vyky Corwin\",\"created_on\":new Date(\"12/8/2017\"),\"birthday\":new Date(\"2/10/2002\"),\"last_activity\":new Date(\"12/16/2017\"),\"next_activity\":new Date(\"4/16/2019\"),\"deals_won\":5,\"deals_lost\":13,\"deals_pending\":7,\"deals_total\":25,\"ratio\":28,\"estimated_sales\":686210,\"actual_sales\":421105,\"tags\":\"warm, engineering\"},{\"id\":863241310,\"avatar\":\"assets/images/women/40.jpg\",\"name\":\"Ivy Simkovich\",\"email\":\"isimkovich1@clickbank.net\",\"company\":\"Linktype\",\"position\":\"Research Nurse\",\"work_phone\":\"+1-770-283-2050\",\"mobile_phone\":\"+1-509-995-2578\",\"fax\":\"+1-907-491-2187\",\"street\":\"3 Aberg Street\",\"city\":\"Marietta\",\"post_code\":30061,\"state\":\"GA\",\"country\":\"United States\",\"referred_by\":\"Hew Chung\",\"created_on\":new Date(\"6/24/2017\"),\"birthday\":new Date(\"1/1/1997\"),\"last_activity\":new Date(\"7/15/2017\"),\"next_activity\":new Date(\"6/15/2019\"),\"deals_won\":2,\"deals_lost\":4,\"deals_pending\":29,\"deals_total\":35,\"ratio\":33,\"estimated_sales\":2008801,\"actual_sales\":186592,\"tags\":\"demo, medical\"},{\"id\":905500122,\"avatar\":\"assets/images/men/15.jpg\",\"name\":\"Rowen Titchen\",\"email\":\"rtitchen2@netscape.com\",\"company\":\"Meembee\",\"position\":\"Staff Scientist\",\"work_phone\":\"+1-804-667-0331\",\"mobile_phone\":\"+1-608-608-6837\",\"fax\":\"+1-775-602-1752\",\"street\":\"6105 Thompson Road\",\"city\":\"Richmond\",\"post_code\":23228,\"state\":\"VA\",\"country\":\"United States\",\"referred_by\":\"Web Ondrak\",\"created_on\":new Date(\"9/12/2017\"),\"birthday\":new Date(\"3/14/1997\"),\"last_activity\":new Date(\"10/8/2017\"),\"next_activity\":new Date(\"8/8/2018\"),\"deals_won\":18,\"deals_lost\":19,\"deals_pending\":7,\"deals_total\":44,\"ratio\":49,\"estimated_sales\":950873,\"actual_sales\":3395844,\"tags\":\"demo, retail\"},{\"id\":507049693,\"avatar\":\"assets/images/women/66.jpg\",\"name\":\"Merle Affron\",\"email\":\"maffron3@cbc.ca\",\"company\":new Date(\"\"),\"position\":\"Director of Sales\",\"work_phone\":\"+1-248-958-1645\",\"mobile_phone\":\"+1-480-880-6216\",\"fax\":\"+1-304-696-5315\",\"street\":\"0 Hanover Street\",\"city\":\"Troy\",\"post_code\":48098,\"state\":\"MI\",\"country\":\"United States\",\"referred_by\":\"Seana Yegorshin\",\"created_on\":new Date(\"5/31/2017\"),\"birthday\":new Date(\"5/5/1988\"),\"last_activity\":new Date(\"6/4/2017\"),\"next_activity\":new Date(\"9/4/2018\"),\"deals_won\":23,\"deals_lost\":22,\"deals_pending\":2,\"deals_total\":47,\"ratio\":51,\"estimated_sales\":170852,\"actual_sales\":3020337,\"tags\":\"cold, construction\"},{\"id\":379956513,\"avatar\":\"assets/images/women/81.jpg\",\"name\":\"Mallory Timmons\",\"email\":\"mtimmons4@xing.com\",\"company\":\"Plambee\",\"position\":\"Automation Specialist IV\",\"work_phone\":\"+1-205-678-8101\",\"mobile_phone\":\"+1-208-724-3386\",\"fax\":\"+1-402-239-2201\",\"street\":\"245 Roxbury Place\",\"city\":\"Birmingham\",\"post_code\":35215,\"state\":\"AL\",\"country\":\"United States\",\"referred_by\":\"Costa Saveall\",\"created_on\":new Date(\"11/9/2017\"),\"birthday\":new Date(\"10/25/1983\"),\"last_activity\":new Date(\"11/22/2017\"),\"next_activity\":new Date(\"3/22/2019\"),\"deals_won\":6,\"deals_lost\":28,\"deals_pending\":11,\"deals_total\":45,\"ratio\":18,\"estimated_sales\":1734161,\"actual_sales\":1006212,\"tags\":\"demo, engineering\"},{\"id\":291588694,\"avatar\":\"assets/images/men/92.jpg\",\"name\":\"Kalil Bonavia\",\"email\":\"kbonavia5@example.com\",\"company\":\"Flashpoint\",\"position\":\"Accountant I\",\"work_phone\":\"+1-404-429-3024\",\"mobile_phone\":\"+1-302-868-1246\",\"fax\":\"+1-516-102-5599\",\"street\":\"424 Troy Point\",\"city\":\"Atlanta\",\"post_code\":30328,\"state\":\"GA\",\"country\":\"United States\",\"referred_by\":\"Morie Ralph\",\"created_on\":new Date(\"1/11/2018\"),\"birthday\":new Date(\"7/4/1999\"),\"last_activity\":new Date(\"2/7/2018\"),\"next_activity\":new Date(\"7/7/2018\"),\"deals_won\":7,\"deals_lost\":9,\"deals_pending\":6,\"deals_total\":22,\"ratio\":44,\"estimated_sales\":459672,\"actual_sales\":1387575,\"tags\":\"pro, pharmaceutical\"},{\"id\":204849533,\"avatar\":\"assets/images/men/13.jpg\",\"name\":\"Hasheem Dowzell\",\"email\":\"hdowzell6@cnn.com\",\"company\":\"Tazzy\",\"position\":\"Software Engineer II\",\"work_phone\":\"+1-503-326-8537\",\"mobile_phone\":\"+1-601-981-8625\",\"fax\":\"+1-415-335-9927\",\"street\":\"7 Chive Way\",\"city\":\"Beaverton\",\"post_code\":97075,\"state\":\"OR\",\"country\":\"United States\",\"referred_by\":\"Saleem Grayling\",\"created_on\":new Date(\"11/30/2017\"),\"birthday\":new Date(\"8/15/1987\"),\"last_activity\":new Date(\"12/3/2017\"),\"next_activity\":new Date(\"8/3/2019\"),\"deals_won\":27,\"deals_lost\":23,\"deals_pending\":8,\"deals_total\":58,\"ratio\":54,\"estimated_sales\":557944,\"actual_sales\":4693923,\"tags\":\"retail\"},{\"id\":783203189,\"avatar\":\"assets/images/men/40.jpg\",\"name\":\"Gonzales Bogart\",\"email\":\"gbogarte@elpais.com\",\"company\":\"Digitube\",\"position\":\"Graphic Designer\",\"work_phone\":\"+1-850-613-0419\",\"mobile_phone\":\"+1-202-820-1151\",\"fax\":\"+1-312-563-1537\",\"street\":\"84 Washington Park\",\"city\":\"Pensacola\",\"post_code\":32575,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Noelyn Chong\",\"created_on\":new Date(\"7/5/2017\"),\"birthday\":new Date(\"10/5/1971\"),\"last_activity\":new Date(\"7/22/2017\"),\"next_activity\":new Date(\"6/22/2019\"),\"deals_won\":28,\"deals_lost\":30,\"deals_pending\":30,\"deals_total\":88,\"ratio\":48,\"estimated_sales\":3292440,\"actual_sales\":2691388,\"tags\":\"subscriber, construction\"},{\"id\":277837180,\"avatar\":\"assets/images/women/98.jpg\",\"name\":\"Lorette Pendrich\",\"email\":\"lpendrichf@discuz.net\",\"company\":\"Realbuzz\",\"position\":\"Programmer I\",\"work_phone\":\"+1-202-234-5835\",\"mobile_phone\":\"+1-803-863-6616\",\"fax\":\"+1-315-545-6583\",\"street\":\"8688 Corben Crossing\",\"city\":\"Washington\",\"post_code\":56944,\"state\":\"DC\",\"country\":\"United States\",\"referred_by\":\"Clea Spinetti\",\"created_on\":new Date(\"3/30/2017\"),\"birthday\":new Date(\"4/13/1999\"),\"last_activity\":new Date(\"4/25/2017\"),\"next_activity\":new Date(\"12/25/2017\"),\"deals_won\":29,\"deals_lost\":7,\"deals_pending\":25,\"deals_total\":61,\"ratio\":81,\"estimated_sales\":4851650,\"actual_sales\":3161029,\"tags\":\"cool, pharmaceutical\"},{\"id\":516140284,\"avatar\":\"assets/images/women/55.jpg\",\"name\":\"Morna Melville\",\"email\":\"mmelvilleg@weebly.com\",\"company\":\"Thoughtbridge\",\"position\":\"Electrical Engineer\",\"work_phone\":\"+1-414-266-7543\",\"mobile_phone\":\"+1-713-893-5054\",\"fax\":\"+1-213-254-2161\",\"street\":\"0927 Shasta Terrace\",\"city\":\"Milwaukee\",\"post_code\":53225,\"state\":\"WI\",\"country\":\"United States\",\"referred_by\":\"Charlotta Sebborn\",\"created_on\":new Date(\"5/10/2017\"),\"birthday\":new Date(\"9/12/1984\"),\"last_activity\":new Date(\"5/12/2017\"),\"next_activity\":new Date(\"7/12/2017\"),\"deals_won\":29,\"deals_lost\":27,\"deals_pending\":30,\"deals_total\":86,\"ratio\":52,\"estimated_sales\":2864850,\"actual_sales\":3328011,\"tags\":new Date(\"\")},{\"id\":791301636,\"avatar\":\"assets/images/women/17.jpg\",\"name\":\"Karol Emett\",\"email\":\"kemetth@ocn.ne.jp\",\"company\":\"Twinte\",\"position\":new Date(\"\"),\"work_phone\":\"+1-215-959-2505\",\"mobile_phone\":\"+1-202-233-8921\",\"fax\":\"+1-941-745-3008\",\"street\":\"81 Riverside Place\",\"city\":\"Philadelphia\",\"post_code\":19196,\"state\":\"PA\",\"country\":\"United States\",\"referred_by\":\"Roseann Cauthra\",\"created_on\":new Date(\"5/1/2017\"),\"birthday\":new Date(\"5/16/1992\"),\"last_activity\":new Date(\"5/20/2017\"),\"next_activity\":new Date(\"11/20/2017\"),\"deals_won\":6,\"deals_lost\":10,\"deals_pending\":7,\"deals_total\":23,\"ratio\":38,\"estimated_sales\":794122,\"actual_sales\":923508,\"tags\":\"subscriber, pharmaceutical\"},{\"id\":118347444,\"avatar\":\"assets/images/women/39.jpg\",\"name\":\"Leisha Demkowicz\",\"email\":\"ldemkowiczi@livejournal.com\",\"company\":\"Eabox\",\"position\":\"Technical Writer\",\"work_phone\":\"+1-503-778-2852\",\"mobile_phone\":\"+1-713-788-1766\",\"fax\":\"+1-954-731-9032\",\"street\":\"17 Mandrake Junction\",\"city\":\"Portland\",\"post_code\":97216,\"state\":\"OR\",\"country\":\"United States\",\"referred_by\":\"Alla Bridgnell\",\"created_on\":new Date(\"8/22/2017\"),\"birthday\":new Date(\"1/12/1978\"),\"last_activity\":new Date(\"9/1/2017\"),\"next_activity\":new Date(\"5/1/2019\"),\"deals_won\":29,\"deals_lost\":25,\"deals_pending\":0,\"deals_total\":54,\"ratio\":54,\"estimated_sales\":0,\"actual_sales\":4943021,\"tags\":\"cold, medical\"},{\"id\":131949787,\"avatar\":\"assets/images/men/30.jpg\",\"name\":\"Doy Stonman\",\"email\":\"dstonmanj@smugmug.com\",\"company\":\"Rhycero\",\"position\":\"Marketing Assistant\",\"work_phone\":\"+1-814-375-3219\",\"mobile_phone\":\"+1-713-491-0043\",\"fax\":\"+1-727-380-5997\",\"street\":\"63 Russell Road\",\"city\":\"Erie\",\"post_code\":16505,\"state\":\"PA\",\"country\":\"United States\",\"referred_by\":\"Timofei Jeves\",\"created_on\":new Date(\"2/12/2018\"),\"birthday\":new Date(\"11/12/1976\"),\"last_activity\":new Date(\"2/15/2018\"),\"next_activity\":new Date(\"3/15/2019\"),\"deals_won\":7,\"deals_lost\":25,\"deals_pending\":20,\"deals_total\":52,\"ratio\":22,\"estimated_sales\":3827040,\"actual_sales\":883463,\"tags\":\"pro, engineering\"},{\"id\":658168789,\"avatar\":\"assets/images/men/23.jpg\",\"name\":\"Earlie Limbrick\",\"email\":\"elimbrickk@bloglovin.com\",\"company\":\"Pixope\",\"position\":\"VP Accounting\",\"work_phone\":\"+1-202-816-6480\",\"mobile_phone\":\"+1-352-363-5733\",\"fax\":\"+1-682-825-7884\",\"street\":\"008 Cherokee Street\",\"city\":\"Washington\",\"post_code\":20392,\"state\":\"DC\",\"country\":\"United States\",\"referred_by\":\"Nisse Cullity\",\"created_on\":new Date(\"1/4/2017\"),\"birthday\":new Date(\"11/15/1980\"),\"last_activity\":new Date(\"1/27/2017\"),\"next_activity\":new Date(\"6/27/2018\"),\"deals_won\":0,\"deals_lost\":3,\"deals_pending\":22,\"deals_total\":25,\"ratio\":0,\"estimated_sales\":2125904,\"actual_sales\":0,\"tags\":\"pro, retail\"},{\"id\":584436787,\"avatar\":\"assets/images/women/11.jpg\",\"name\":\"Norah Van Vuuren\",\"email\":\"nvanl@addtoany.com\",\"company\":\"Twinte\",\"position\":\"Information Systems Manager\",\"work_phone\":\"+1-253-501-5798\",\"mobile_phone\":\"+1-256-342-6639\",\"fax\":\"+1-602-316-2980\",\"street\":\"3 Susan Terrace\",\"city\":\"Tacoma\",\"post_code\":98417,\"state\":\"WA\",\"country\":\"United States\",\"referred_by\":\"Chrysa Bernakiewicz\",\"created_on\":new Date(\"3/1/2018\"),\"birthday\":new Date(\"6/7/1970\"),\"last_activity\":new Date(\"3/27/2018\"),\"next_activity\":new Date(\"10/27/2019\"),\"deals_won\":27,\"deals_lost\":10,\"deals_pending\":5,\"deals_total\":42,\"ratio\":73,\"estimated_sales\":447200,\"actual_sales\":3497445,\"tags\":\"pro, construction\"},{\"id\":868982214,\"avatar\":\"assets/images/men/7.jpg\",\"name\":\"Griffy Franz-Schoninger\",\"email\":\"gfranzschoningerm@twitpic.com\",\"company\":\"Rhynyx\",\"position\":\"Assistant Media Planner\",\"work_phone\":\"+1-205-199-0409\",\"mobile_phone\":\"+1-850-844-0989\",\"fax\":\"+1-615-121-7041\",\"street\":\"67082 Mariners Cove Point\",\"city\":\"Tuscaloosa\",\"post_code\":35405,\"state\":\"AL\",\"country\":\"United States\",\"referred_by\":\"Blondie Brownsell\",\"created_on\":new Date(\"11/25/2017\"),\"birthday\":new Date(\"6/18/1987\"),\"last_activity\":new Date(\"12/11/2017\"),\"next_activity\":new Date(\"7/11/2019\"),\"deals_won\":21,\"deals_lost\":2,\"deals_pending\":11,\"deals_total\":34,\"ratio\":91,\"estimated_sales\":1374648,\"actual_sales\":3622626,\"tags\":\"pro, construction\"},{\"id\":443932207,\"avatar\":\"assets/images/women/66.jpg\",\"name\":\"Renate Daymond\",\"email\":\"rdaymondn@microsoft.com\",\"company\":\"Demivee\",\"position\":\"Administrative Officer\",\"work_phone\":\"+1-253-250-0773\",\"mobile_phone\":\"+1-469-784-8216\",\"fax\":\"+1-518-342-4173\",\"street\":\"0 Eliot Way\",\"city\":\"Tacoma\",\"post_code\":98417,\"state\":\"WA\",\"country\":\"United States\",\"referred_by\":\"Willard Worters\",\"created_on\":new Date(\"3/8/2018\"),\"birthday\":new Date(\"2/22/1996\"),\"last_activity\":new Date(\"3/29/2018\"),\"next_activity\":new Date(\"8/29/2018\"),\"deals_won\":28,\"deals_lost\":5,\"deals_pending\":13,\"deals_total\":46,\"ratio\":85,\"estimated_sales\":939731,\"actual_sales\":4735052,\"tags\":\"subscriber, financial\"},{\"id\":865960075,\"avatar\":\"assets/images/men/93.jpg\",\"name\":\"Reg Heed\",\"email\":\"rheedo@washingtonpost.com\",\"company\":\"Dynabox\",\"position\":\"Compensation Analyst\",\"work_phone\":\"+1-718-629-6316\",\"mobile_phone\":\"+1-504-259-7697\",\"fax\":\"+1-915-517-0236\",\"street\":\"481 Eastwood Trail\",\"city\":\"Bronx\",\"post_code\":10459,\"state\":\"NY\",\"country\":\"United States\",\"referred_by\":\"Gloria Pleace\",\"created_on\":new Date(\"4/22/2017\"),\"birthday\":new Date(\"9/11/2002\"),\"last_activity\":new Date(\"5/3/2017\"),\"next_activity\":new Date(\"5/3/2018\"),\"deals_won\":16,\"deals_lost\":5,\"deals_pending\":21,\"deals_total\":42,\"ratio\":76,\"estimated_sales\":1771476,\"actual_sales\":1283424,\"tags\":\"hot, engineering\"},{\"id\":359209632,\"avatar\":\"assets/images/men/38.jpg\",\"name\":\"Porter Roget\",\"email\":\"progetp@dot.gov\",\"company\":\"Livepath\",\"position\":\"Nuclear Power Engineer\",\"work_phone\":\"+1-702-139-7230\",\"mobile_phone\":\"+1-925-533-5399\",\"fax\":\"+1-202-487-0697\",\"street\":\"2994 Center Park\",\"city\":\"Las Vegas\",\"post_code\":89125,\"state\":\"NV\",\"country\":\"United States\",\"referred_by\":\"Rebekah Eldin\",\"created_on\":new Date(\"4/22/2017\"),\"birthday\":new Date(\"10/18/1974\"),\"last_activity\":new Date(\"4/29/2017\"),\"next_activity\":new Date(\"2/28/2018\"),\"deals_won\":16,\"deals_lost\":3,\"deals_pending\":11,\"deals_total\":30,\"ratio\":84,\"estimated_sales\":1282578,\"actual_sales\":1273872,\"tags\":\"warm, financial\"},{\"id\":274966895,\"avatar\":\"assets/images/women/49.jpg\",\"name\":\"Heidi Fisby\",\"email\":\"hfisbyq@bloomberg.com\",\"company\":\"Rhynyx\",\"position\":\"Staff Scientist\",\"work_phone\":\"+1-501-338-5259\",\"mobile_phone\":\"+1-405-564-2876\",\"fax\":\"+1-612-202-0590\",\"street\":\"694 Sunbrook Avenue\",\"city\":\"North Little Rock\",\"post_code\":72199,\"state\":\"AR\",\"country\":\"United States\",\"referred_by\":\"Catha Landy\",\"created_on\":new Date(\"2/4/2018\"),\"birthday\":new Date(\"2/12/2000\"),\"last_activity\":new Date(\"2/25/2018\"),\"next_activity\":new Date(\"4/25/2019\"),\"deals_won\":11,\"deals_lost\":19,\"deals_pending\":5,\"deals_total\":35,\"ratio\":37,\"estimated_sales\":870600,\"actual_sales\":2156231,\"tags\":\"pro, retail\"},{\"id\":213491893,\"avatar\":\"assets/images/women/46.jpg\",\"name\":\"Lanie Rennock\",\"email\":\"lrennockr@github.com\",\"company\":\"Zoonoodle\",\"position\":\"Analog Circuit Design manager\",\"work_phone\":\"+1-617-203-3526\",\"mobile_phone\":\"+1-206-498-0654\",\"fax\":\"+1-512-636-2267\",\"street\":\"67 Sundown Avenue\",\"city\":\"Boston\",\"post_code\":2298,\"state\":\"MA\",\"country\":\"United States\",\"referred_by\":\"Rudie Roser\",\"created_on\":new Date(\"8/1/2017\"),\"birthday\":new Date(\"12/16/1988\"),\"last_activity\":new Date(\"8/16/2017\"),\"next_activity\":new Date(\"11/16/2017\"),\"deals_won\":1,\"deals_lost\":7,\"deals_pending\":26,\"deals_total\":34,\"ratio\":13,\"estimated_sales\":4697628,\"actual_sales\":147204,\"tags\":\"demo, engineering\"},{\"id\":320452212,\"avatar\":\"assets/images/men/50.jpg\",\"name\":\"Ariel O'Scanlon\",\"email\":\"aoscanlons@flavors.me\",\"company\":\"Voolith\",\"position\":\"Junior Executive\",\"work_phone\":\"+1-304-424-5432\",\"mobile_phone\":\"+1-718-491-5502\",\"fax\":\"+1-505-237-7051\",\"street\":\"968 Browning Court\",\"city\":\"Morgantown\",\"post_code\":26505,\"state\":\"WV\",\"country\":\"United States\",\"referred_by\":\"Blaire Mullinder\",\"created_on\":new Date(\"2/16/2017\"),\"birthday\":new Date(\"5/27/2001\"),\"last_activity\":new Date(\"2/19/2017\"),\"next_activity\":new Date(\"3/19/2017\"),\"deals_won\":13,\"deals_lost\":16,\"deals_pending\":5,\"deals_total\":34,\"ratio\":45,\"estimated_sales\":551540,\"actual_sales\":997100,\"tags\":\"demo, retail\"},{\"id\":51663196,\"avatar\":\"assets/images/women/62.jpg\",\"name\":\"Kaitlin Foro\",\"email\":\"kforot@digg.com\",\"company\":\"Feedspan\",\"position\":\"Director of Sales\",\"work_phone\":\"+1-816-772-9231\",\"mobile_phone\":\"+1-559-919-8970\",\"fax\":\"+1-419-673-7069\",\"street\":\"842 Amoth Center\",\"city\":\"Kansas City\",\"post_code\":64187,\"state\":\"MO\",\"country\":\"United States\",\"referred_by\":\"Wilma Dow\",\"created_on\":new Date(\"4/2/2018\"),\"birthday\":new Date(\"1/6/1997\"),\"last_activity\":new Date(\"4/28/2018\"),\"next_activity\":new Date(\"8/28/2019\"),\"deals_won\":19,\"deals_lost\":18,\"deals_pending\":21,\"deals_total\":58,\"ratio\":51,\"estimated_sales\":3628422,\"actual_sales\":1417267,\"tags\":\"demo, pharmaceutical\"},{\"id\":751762440,\"avatar\":\"assets/images/women/76.jpg\",\"name\":\"Krissy Jowett\",\"email\":\"kjowettu@reddit.com\",\"company\":\"Roombo\",\"position\":\"Quality Control Specialist\",\"work_phone\":\"+1-702-975-7252\",\"mobile_phone\":\"+1-216-205-9579\",\"fax\":\"+1-312-279-6531\",\"street\":\"055 Hagan Center\",\"city\":\"Las Vegas\",\"post_code\":89105,\"state\":\"NV\",\"country\":\"United States\",\"referred_by\":\"Stevana Lucia\",\"created_on\":new Date(\"3/1/2018\"),\"birthday\":new Date(\"5/3/1984\"),\"last_activity\":new Date(\"3/10/2018\"),\"next_activity\":new Date(\"2/10/2019\"),\"deals_won\":4,\"deals_lost\":8,\"deals_pending\":17,\"deals_total\":29,\"ratio\":33,\"estimated_sales\":2458761,\"actual_sales\":354696,\"tags\":\"demo, financial\"},{\"id\":378738789,\"avatar\":\"assets/images/women/70.jpg\",\"name\":\"Cammie Hulks\",\"email\":\"chulksv@twitpic.com\",\"company\":\"Oodoo\",\"position\":\"Budget/Accounting Analyst II\",\"work_phone\":\"+1-310-984-6577\",\"mobile_phone\":\"+1-225-885-4117\",\"fax\":\"+1-954-374-4766\",\"street\":\"201 Sundown Avenue\",\"city\":\"Los Angeles\",\"post_code\":90005,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Hewett Starmont\",\"created_on\":new Date(\"3/7/2017\"),\"birthday\":new Date(\"6/9/1994\"),\"last_activity\":new Date(\"3/30/2017\"),\"next_activity\":new Date(\"5/30/2017\"),\"deals_won\":1,\"deals_lost\":28,\"deals_pending\":29,\"deals_total\":58,\"ratio\":3,\"estimated_sales\":4977386,\"actual_sales\":163577,\"tags\":\"subscriber, construction\"},{\"id\":259368814,\"avatar\":\"assets/images/men/40.jpg\",\"name\":\"Etan Oscroft\",\"email\":\"eoscroftw@bbb.org\",\"company\":\"Vinte\",\"position\":\"Developer III\",\"work_phone\":\"+1-812-782-8424\",\"mobile_phone\":\"+1-570-406-7766\",\"fax\":\"+1-719-462-9451\",\"street\":\"767 Rockefeller Parkway\",\"city\":\"Jeffersonville\",\"post_code\":47134,\"state\":\"IN\",\"country\":\"United States\",\"referred_by\":\"Raquel Goulbourne\",\"created_on\":new Date(\"8/21/2017\"),\"birthday\":new Date(\"12/23/1982\"),\"last_activity\":new Date(\"8/22/2017\"),\"next_activity\":new Date(\"4/22/2018\"),\"deals_won\":6,\"deals_lost\":19,\"deals_pending\":18,\"deals_total\":43,\"ratio\":24,\"estimated_sales\":1431054,\"actual_sales\":504924,\"tags\":\"subscriber, pharmaceutical\"},{\"id\":669889487,\"avatar\":\"assets/images/women/17.jpg\",\"name\":\"Michaella Gormally\",\"email\":\"mgormallyx@umn.edu\",\"company\":\"Yodo\",\"position\":\"Sales Associate\",\"work_phone\":\"+1-651-252-6398\",\"mobile_phone\":\"+1-916-454-2604\",\"fax\":\"+1-919-341-9062\",\"street\":\"256 David Point\",\"city\":\"Saint Paul\",\"post_code\":55188,\"state\":\"MN\",\"country\":\"United States\",\"referred_by\":\"Bethany Chesney\",\"created_on\":new Date(\"3/26/2018\"),\"birthday\":new Date(\"3/3/1995\"),\"last_activity\":new Date(\"4/13/2018\"),\"next_activity\":new Date(\"12/13/2018\"),\"deals_won\":8,\"deals_lost\":21,\"deals_pending\":30,\"deals_total\":59,\"ratio\":28,\"estimated_sales\":2192640,\"actual_sales\":1561904,\"tags\":\"cool, medical\"},{\"id\":996195134,\"avatar\":\"assets/images/women/42.jpg\",\"name\":\"Rivy Brearley\",\"email\":\"rbrearleyy@e-recht24.de\",\"company\":\"Eabox\",\"position\":\"Nuclear Power Engineer\",\"work_phone\":\"+1-423-813-8094\",\"mobile_phone\":\"+1-610-442-8261\",\"fax\":\"+1-405-676-7147\",\"street\":\"56769 Bellgrove Parkway\",\"city\":\"Kingsport\",\"post_code\":37665,\"state\":\"TN\",\"country\":\"United States\",\"referred_by\":\"Tommy Phythien\",\"created_on\":new Date(\"4/6/2018\"),\"birthday\":new Date(\"1/28/1971\"),\"last_activity\":new Date(\"4/24/2018\"),\"next_activity\":new Date(\"12/24/2018\"),\"deals_won\":0,\"deals_lost\":18,\"deals_pending\":11,\"deals_total\":29,\"ratio\":0,\"estimated_sales\":1596804,\"actual_sales\":0,\"tags\":\"cold, retail\"},{\"id\":203483816,\"avatar\":\"assets/images/men/63.jpg\",\"name\":\"Georges Piperley\",\"email\":\"gpiperleyz@github.com\",\"company\":\"Chatterpoint\",\"position\":\"Pharmacist\",\"work_phone\":\"+1-702-587-9964\",\"mobile_phone\":\"+1-864-809-6121\",\"fax\":\"+1-812-550-4209\",\"street\":\"37 Lake View Lane\",\"city\":\"Las Vegas\",\"post_code\":89130,\"state\":\"NV\",\"country\":\"United States\",\"referred_by\":\"Leontine Warmisham\",\"created_on\":new Date(\"3/10/2017\"),\"birthday\":new Date(\"4/7/1976\"),\"last_activity\":new Date(\"4/2/2017\"),\"next_activity\":new Date(\"8/2/2017\"),\"deals_won\":6,\"deals_lost\":10,\"deals_pending\":17,\"deals_total\":33,\"ratio\":38,\"estimated_sales\":2460886,\"actual_sales\":976764,\"tags\":\"cool, pharmaceutical\"},{\"id\":652718947,\"avatar\":\"assets/images/men/35.jpg\",\"name\":\"Corbett Loughlin\",\"email\":\"cloughlin10@cdbaby.com\",\"company\":\"Miboo\",\"position\":\"Chemical Engineer\",\"work_phone\":\"+1-352-682-0722\",\"mobile_phone\":\"+1-806-834-6352\",\"fax\":\"+1-843-292-5815\",\"street\":\"0 Anhalt Park\",\"city\":\"Ocala\",\"post_code\":34474,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Marigold Kearsley\",\"created_on\":new Date(\"1/19/2018\"),\"birthday\":new Date(\"10/25/1978\"),\"last_activity\":new Date(\"2/3/2018\"),\"next_activity\":new Date(\"9/3/2018\"),\"deals_won\":10,\"deals_lost\":6,\"deals_pending\":5,\"deals_total\":21,\"ratio\":63,\"estimated_sales\":851975,\"actual_sales\":579500,\"tags\":new Date(\"\")},{\"id\":141237612,\"avatar\":\"assets/images/men/10.jpg\",\"name\":\"Don Jirieck\",\"email\":\"djirieck11@google.co.jp\",\"company\":\"Skidoo\",\"position\":\"Marketing Manager\",\"work_phone\":\"+1-212-710-1454\",\"mobile_phone\":\"+1-713-927-1005\",\"fax\":\"+1-331-215-8282\",\"street\":\"70 New Castle Way\",\"city\":\"New York City\",\"post_code\":10105,\"state\":\"NY\",\"country\":\"United States\",\"referred_by\":\"Audra Barnfield\",\"created_on\":new Date(\"5/14/2017\"),\"birthday\":new Date(\"7/3/1996\"),\"last_activity\":new Date(\"6/7/2017\"),\"next_activity\":new Date(\"10/7/2018\"),\"deals_won\":16,\"deals_lost\":19,\"deals_pending\":20,\"deals_total\":55,\"ratio\":46,\"estimated_sales\":1737780,\"actual_sales\":1710384,\"tags\":\"pro, financial\"},{\"id\":65129205,\"avatar\":\"assets/images/men/3.jpg\",\"name\":\"Alvin Assender\",\"email\":\"aassender12@nsw.gov.au\",\"company\":\"Twitterwire\",\"position\":\"Executive Secretary\",\"work_phone\":\"+1-404-948-0848\",\"mobile_phone\":\"+1-757-737-5002\",\"fax\":\"+1-682-139-3112\",\"street\":\"38925 Morrow Way\",\"city\":\"Atlanta\",\"post_code\":30336,\"state\":\"GA\",\"country\":\"United States\",\"referred_by\":\"Benedick Dockwra\",\"created_on\":new Date(\"5/6/2017\"),\"birthday\":new Date(\"1/1/1991\"),\"last_activity\":new Date(\"6/5/2017\"),\"next_activity\":new Date(\"3/5/2018\"),\"deals_won\":4,\"deals_lost\":5,\"deals_pending\":7,\"deals_total\":16,\"ratio\":44,\"estimated_sales\":356503,\"actual_sales\":609956,\"tags\":\"subscriber, medical\"},{\"id\":317962954,\"avatar\":\"assets/images/women/95.jpg\",\"name\":\"Phyllis Treadgear\",\"email\":\"ptreadgear13@yolasite.com\",\"company\":\"Brainsphere\",\"position\":\"Biostatistician II\",\"work_phone\":\"+1-901-762-8621\",\"mobile_phone\":\"+1-202-652-1656\",\"fax\":\"+1-202-228-4954\",\"street\":\"7756 Commercial Place\",\"city\":\"Memphis\",\"post_code\":38136,\"state\":\"TN\",\"country\":\"United States\",\"referred_by\":\"Talya Livezley\",\"created_on\":new Date(\"11/9/2017\"),\"birthday\":new Date(\"12/17/1987\"),\"last_activity\":new Date(\"11/28/2017\"),\"next_activity\":new Date(\"10/28/2018\"),\"deals_won\":30,\"deals_lost\":16,\"deals_pending\":16,\"deals_total\":62,\"ratio\":65,\"estimated_sales\":3134544,\"actual_sales\":3120450,\"tags\":\"warm, pharmaceutical\"},{\"id\":754512920,\"avatar\":\"assets/images/women/57.jpg\",\"name\":\"Clementine McLellan\",\"email\":\"cmclellan14@prlog.org\",\"company\":\"Rhyzio\",\"position\":\"VP Marketing\",\"work_phone\":\"+1-802-350-5146\",\"mobile_phone\":\"+1-407-589-4737\",\"fax\":\"+1-609-145-5299\",\"street\":\"92 Buena Vista Avenue\",\"city\":\"Montpelier\",\"post_code\":5609,\"state\":\"VT\",\"country\":\"United States\",\"referred_by\":\"Vera Heathcote\",\"created_on\":new Date(\"6/3/2017\"),\"birthday\":new Date(\"6/6/1992\"),\"last_activity\":new Date(\"6/17/2017\"),\"next_activity\":new Date(\"4/17/2018\"),\"deals_won\":30,\"deals_lost\":2,\"deals_pending\":14,\"deals_total\":46,\"ratio\":94,\"estimated_sales\":2692368,\"actual_sales\":5775570,\"tags\":\"warm, financial\"},{\"id\":487658833,\"avatar\":\"assets/images/men/88.jpg\",\"name\":\"Mendel Saby\",\"email\":\"msaby15@seattletimes.com\",\"company\":\"Twimm\",\"position\":\"Payment Adjustment Coordinator\",\"work_phone\":\"+1-414-978-0163\",\"mobile_phone\":\"+1-813-784-5869\",\"fax\":\"+1-215-268-6809\",\"street\":\"81548 Rieder Center\",\"city\":\"Milwaukee\",\"post_code\":53225,\"state\":\"WI\",\"country\":\"United States\",\"referred_by\":\"Veriee Ruffler\",\"created_on\":new Date(\"11/3/2017\"),\"birthday\":new Date(\"9/18/1974\"),\"last_activity\":new Date(\"11/24/2017\"),\"next_activity\":new Date(\"12/24/2017\"),\"deals_won\":21,\"deals_lost\":14,\"deals_pending\":1,\"deals_total\":36,\"ratio\":6,\"estimated_sales\":65359,\"actual_sales\":2337804,\"tags\":\"cool, engineering\"},{\"id\":297796630,\"avatar\":\"assets/images/women/85.jpg\",\"name\":\"Wilma Bulford\",\"email\":\"wbulford16@squidoo.com\",\"company\":\"Youspan\",\"position\":\"Paralegal\",\"work_phone\":\"+1-610-214-1806\",\"mobile_phone\":\"+1-510-734-9029\",\"fax\":\"+1-816-925-1316\",\"street\":\"67041 Ludington Parkway\",\"city\":\"Bethlehem\",\"post_code\":18018,\"state\":\"PA\",\"country\":\"United States\",\"referred_by\":\"Ame Sheara\",\"created_on\":new Date(\"2/26/2017\"),\"birthday\":new Date(\"11/24/1974\"),\"last_activity\":new Date(\"3/11/2017\"),\"next_activity\":new Date(\"8/11/2018\"),\"deals_won\":11,\"deals_lost\":10,\"deals_pending\":8,\"deals_total\":29,\"ratio\":52,\"estimated_sales\":1081936,\"actual_sales\":2128148,\"tags\":new Date(\"\")},{\"id\":298047164,\"avatar\":\"assets/images/men/76.jpg\",\"name\":\"Simon O'Mannion\",\"email\":\"somannion17@constantcontact.com\",\"company\":\"Latz\",\"position\":\"Software Consultant\",\"work_phone\":\"+1-815-580-5623\",\"mobile_phone\":\"+1-214-396-7418\",\"fax\":\"+1-626-550-8987\",\"street\":\"2411 Eggendart Crossing\",\"city\":\"Rockford\",\"post_code\":61110,\"state\":\"IL\",\"country\":\"United States\",\"referred_by\":\"Curtis Orrom\",\"created_on\":new Date(\"9/1/2017\"),\"birthday\":new Date(\"8/25/1988\"),\"last_activity\":new Date(\"9/18/2017\"),\"next_activity\":new Date(\"10/18/2017\"),\"deals_won\":11,\"deals_lost\":9,\"deals_pending\":8,\"deals_total\":28,\"ratio\":55,\"estimated_sales\":1515576,\"actual_sales\":1515635,\"tags\":\"cool, pharmaceutical\"},{\"id\":766132212,\"avatar\":\"assets/images/men/19.jpg\",\"name\":\"Godfree Rylands\",\"email\":\"grylands18@tripod.com\",\"company\":\"Twitternation\",\"position\":\"Software Test Engineer IV\",\"work_phone\":\"+1-520-300-0116\",\"mobile_phone\":\"+1-302-247-0581\",\"fax\":\"+1-561-874-4801\",\"street\":\"011 Melrose Place\",\"city\":\"Tucson\",\"post_code\":85732,\"state\":\"AZ\",\"country\":\"United States\",\"referred_by\":\"Theressa Nerney\",\"created_on\":new Date(\"11/12/2017\"),\"birthday\":new Date(\"4/20/1993\"),\"last_activity\":new Date(\"12/11/2017\"),\"next_activity\":new Date(\"8/11/2019\"),\"deals_won\":3,\"deals_lost\":1,\"deals_pending\":2,\"deals_total\":6,\"ratio\":75,\"estimated_sales\":284054,\"actual_sales\":464196,\"tags\":\"cool, financial\"},{\"id\":794881867,\"avatar\":\"assets/images/women/52.jpg\",\"name\":\"Natasha d' Eye\",\"email\":\"nd19@engadget.com\",\"company\":\"Tagfeed\",\"position\":\"Quality Control Specialist\",\"work_phone\":\"+1-904-299-7647\",\"mobile_phone\":\"+1-720-846-0210\",\"fax\":\"+1-209-746-3973\",\"street\":\"37 Gerald Place\",\"city\":\"Jacksonville\",\"post_code\":32259,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Sanford Guitonneau\",\"created_on\":new Date(\"1/20/2018\"),\"birthday\":new Date(\"3/25/1983\"),\"last_activity\":new Date(\"1/23/2018\"),\"next_activity\":new Date(\"9/23/2018\"),\"deals_won\":26,\"deals_lost\":27,\"deals_pending\":26,\"deals_total\":79,\"ratio\":49,\"estimated_sales\":1441180,\"actual_sales\":3417960,\"tags\":\"cool, retail\"},{\"id\":442665449,\"avatar\":\"assets/images/women/14.jpg\",\"name\":\"Lyda Rylett\",\"email\":\"lrylett1a@bravesites.com\",\"company\":\"Bubblemix\",\"position\":\"Civil Engineer\",\"work_phone\":\"+1-260-911-8241\",\"mobile_phone\":\"+1-202-918-6602\",\"fax\":\"+1-203-932-8088\",\"street\":\"54398 Prairie Rose Hill\",\"city\":\"Fort Wayne\",\"post_code\":46862,\"state\":\"IN\",\"country\":\"United States\",\"referred_by\":\"Helli Dumphy\",\"created_on\":new Date(\"12/7/2017\"),\"birthday\":new Date(\"7/5/1973\"),\"last_activity\":new Date(\"12/28/2017\"),\"next_activity\":new Date(\"6/28/2019\"),\"deals_won\":27,\"deals_lost\":19,\"deals_pending\":10,\"deals_total\":56,\"ratio\":59,\"estimated_sales\":990030,\"actual_sales\":4172931,\"tags\":\"hot, construction\"},{\"id\":148724233,\"avatar\":\"assets/images/women/80.jpg\",\"name\":\"Amalia Pentercost\",\"email\":\"apentercost1b@redcross.org\",\"company\":\"Tambee\",\"position\":\"Office Assistant I\",\"work_phone\":\"+1-561-194-3284\",\"mobile_phone\":\"+1-217-333-7543\",\"fax\":\"+1-626-298-8211\",\"street\":\"602 Stoughton Lane\",\"city\":\"Boca Raton\",\"post_code\":33499,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Rudie Olifard\",\"created_on\":new Date(\"11/17/2017\"),\"birthday\":new Date(\"4/13/1979\"),\"last_activity\":new Date(\"11/19/2017\"),\"next_activity\":new Date(\"3/19/2019\"),\"deals_won\":25,\"deals_lost\":17,\"deals_pending\":2,\"deals_total\":44,\"ratio\":6,\"estimated_sales\":388396,\"actual_sales\":4518825,\"tags\":\"demo, engineering\"},{\"id\":476172606,\"avatar\":\"assets/images/women/30.jpg\",\"name\":\"Madelle Ettels\",\"email\":\"mettels1c@ucsd.edu\",\"company\":\"Tanoodle\",\"position\":\"Structural Engineer\",\"work_phone\":\"+1-562-279-0663\",\"mobile_phone\":\"+1-216-340-4937\",\"fax\":\"+1-512-720-8731\",\"street\":\"684 Dorton Terrace\",\"city\":\"Huntington Beach\",\"post_code\":92648,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Clotilda Androsik\",\"created_on\":new Date(\"5/4/2017\"),\"birthday\":new Date(\"6/8/1974\"),\"last_activity\":new Date(\"5/25/2017\"),\"next_activity\":new Date(\"6/25/2018\"),\"deals_won\":29,\"deals_lost\":9,\"deals_pending\":13,\"deals_total\":51,\"ratio\":76,\"estimated_sales\":1501760,\"actual_sales\":2678701,\"tags\":\"engineering\"},{\"id\":672186492,\"avatar\":\"assets/images/men/93.jpg\",\"name\":\"Denis Guly\",\"email\":\"dguly1d@lulu.com\",\"company\":\"Roombo\",\"position\":\"Recruiter\",\"work_phone\":\"+1-707-461-1987\",\"mobile_phone\":\"+1-917-800-6080\",\"fax\":\"+1-202-531-0317\",\"street\":\"55703 Arizona Crossing\",\"city\":\"Petaluma\",\"post_code\":94975,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Wilma Stannislawski\",\"created_on\":new Date(\"10/29/2017\"),\"birthday\":new Date(\"7/14/1993\"),\"last_activity\":new Date(\"11/9/2017\"),\"next_activity\":new Date(\"6/9/2018\"),\"deals_won\":22,\"deals_lost\":26,\"deals_pending\":9,\"deals_total\":57,\"ratio\":46,\"estimated_sales\":1054476,\"actual_sales\":1898666,\"tags\":\"demo, retail\"},{\"id\":751652610,\"avatar\":\"assets/images/men/39.jpg\",\"name\":\"Saxe Trythall\",\"email\":\"strythall1e@flavors.me\",\"company\":\"Trudeo\",\"position\":\"Electrical Engineer\",\"work_phone\":\"+1-561-829-0731\",\"mobile_phone\":\"+1-816-223-4700\",\"fax\":\"+1-406-724-0788\",\"street\":\"5 Grim Terrace\",\"city\":\"West Palm Beach\",\"post_code\":33421,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Morgun Kubicka\",\"created_on\":new Date(\"3/1/2017\"),\"birthday\":new Date(\"5/18/1983\"),\"last_activity\":new Date(\"3/22/2017\"),\"next_activity\":new Date(\"1/22/2018\"),\"deals_won\":17,\"deals_lost\":11,\"deals_pending\":5,\"deals_total\":33,\"ratio\":61,\"estimated_sales\":355155,\"actual_sales\":2360110,\"tags\":new Date(\"\")},{\"id\":260931205,\"avatar\":\"assets/images/women/88.jpg\",\"name\":\"Erina Isaaksohn\",\"email\":\"eisaaksohn1f@zdnet.com\",\"company\":\"Zoomlounge\",\"position\":\"VP Accounting\",\"work_phone\":\"+1-972-696-4121\",\"mobile_phone\":\"+1-865-834-1229\",\"fax\":\"+1-717-633-3832\",\"street\":\"20698 Reinke Terrace\",\"city\":\"Dallas\",\"post_code\":75216,\"state\":\"TX\",\"country\":\"United States\",\"referred_by\":\"Alden Winfred\",\"created_on\":new Date(\"12/22/2017\"),\"birthday\":new Date(\"9/19/1975\"),\"last_activity\":new Date(\"1/15/2018\"),\"next_activity\":new Date(\"10/15/2018\"),\"deals_won\":1,\"deals_lost\":1,\"deals_pending\":28,\"deals_total\":30,\"ratio\":5,\"estimated_sales\":4174828,\"actual_sales\":187960,\"tags\":\"hot, pharmaceutical\"},{\"id\":530445829,\"avatar\":\"assets/images/men/63.jpg\",\"name\":\"Torrance Harrington\",\"email\":\"tharrington1g@alibaba.com\",\"company\":\"Vinder\",\"position\":\"Biostatistician III\",\"work_phone\":\"+1-502-409-4283\",\"mobile_phone\":\"+1-510-936-7027\",\"fax\":\"+1-517-723-6778\",\"street\":\"750 Westend Road\",\"city\":\"Louisville\",\"post_code\":40215,\"state\":\"KY\",\"country\":\"United States\",\"referred_by\":\"Bethany Gipp\",\"created_on\":new Date(\"2/17/2017\"),\"birthday\":new Date(\"3/27/1986\"),\"last_activity\":new Date(\"2/20/2017\"),\"next_activity\":new Date(\"8/20/2017\"),\"deals_won\":29,\"deals_lost\":14,\"deals_pending\":6,\"deals_total\":49,\"ratio\":67,\"estimated_sales\":894474,\"actual_sales\":4664418,\"tags\":\"subscriber, engineering\"},{\"id\":425656541,\"avatar\":\"assets/images/men/57.jpg\",\"name\":\"Reinhard Godrich\",\"email\":\"rgodrich1h@blinklist.com\",\"company\":\"Mita\",\"position\":\"Accountant II\",\"work_phone\":\"+1-609-255-9161\",\"mobile_phone\":\"+1-904-735-8887\",\"fax\":\"+1-301-578-9833\",\"street\":\"3 Vera Alley\",\"city\":\"Trenton\",\"post_code\":8695,\"state\":\"NJ\",\"country\":\"United States\",\"referred_by\":\"Shell Hanmore\",\"created_on\":new Date(\"12/26/2017\"),\"birthday\":new Date(\"12/13/1994\"),\"last_activity\":new Date(\"1/16/2018\"),\"next_activity\":new Date(\"6/16/2018\"),\"deals_won\":23,\"deals_lost\":26,\"deals_pending\":19,\"deals_total\":68,\"ratio\":47,\"estimated_sales\":3179669,\"actual_sales\":1938279,\"tags\":\"subscriber, financial\"},{\"id\":915429938,\"avatar\":\"assets/images/women/89.jpg\",\"name\":\"Christiana Louder\",\"email\":\"clouder1i@buzzfeed.com\",\"company\":\"Meembee\",\"position\":\"Financial Advisor\",\"work_phone\":\"+1-331-773-4799\",\"mobile_phone\":\"+1-713-853-8164\",\"fax\":\"+1-412-872-4138\",\"street\":\"8065 Mandrake Plaza\",\"city\":\"Aurora\",\"post_code\":60505,\"state\":\"IL\",\"country\":\"United States\",\"referred_by\":\"Fernande Berrick\",\"created_on\":new Date(\"4/14/2017\"),\"birthday\":new Date(\"7/6/1997\"),\"last_activity\":new Date(\"4/24/2017\"),\"next_activity\":new Date(\"5/24/2017\"),\"deals_won\":4,\"deals_lost\":24,\"deals_pending\":3,\"deals_total\":31,\"ratio\":14,\"estimated_sales\":150252,\"actual_sales\":670580,\"tags\":\"demo, pharmaceutical\"},{\"id\":653923840,\"avatar\":\"assets/images/men/35.jpg\",\"name\":\"Tod Farnes\",\"email\":\"tfarnes1j@hao123.com\",\"company\":\"Kazio\",\"position\":\"Environmental Specialist\",\"work_phone\":\"+1-304-641-7053\",\"mobile_phone\":\"+1-952-317-6848\",\"fax\":\"+1-203-922-7681\",\"street\":\"3 Scott Crossing\",\"city\":\"Huntington\",\"post_code\":25775,\"state\":\"WV\",\"country\":\"United States\",\"referred_by\":\"Vance Dadd\",\"created_on\":new Date(\"8/9/2017\"),\"birthday\":new Date(\"11/13/1975\"),\"last_activity\":new Date(\"8/29/2017\"),\"next_activity\":new Date(\"1/29/2019\"),\"deals_won\":20,\"deals_lost\":8,\"deals_pending\":10,\"deals_total\":38,\"ratio\":71,\"estimated_sales\":1898010,\"actual_sales\":2612840,\"tags\":\"cold, retail\"},{\"id\":185035041,\"avatar\":\"assets/images/men/86.jpg\",\"name\":\"Kaspar Beaman\",\"email\":\"kbeaman1k@fc2.com\",\"company\":\"Fivechat\",\"position\":\"Occupational Therapist\",\"work_phone\":\"+1-912-427-7887\",\"mobile_phone\":\"+1-202-276-7703\",\"fax\":\"+1-602-761-8918\",\"street\":\"0 Lien Alley\",\"city\":\"Savannah\",\"post_code\":31416,\"state\":\"GA\",\"country\":\"United States\",\"referred_by\":\"Maggi Aspling\",\"created_on\":new Date(\"4/4/2017\"),\"birthday\":new Date(\"9/4/1997\"),\"last_activity\":new Date(\"4/9/2017\"),\"next_activity\":new Date(\"12/9/2018\"),\"deals_won\":0,\"deals_lost\":2,\"deals_pending\":8,\"deals_total\":10,\"ratio\":0,\"estimated_sales\":1289280,\"actual_sales\":0,\"tags\":\"warm, construction\"},{\"id\":109623,\"avatar\":\"assets/images/women/14.jpg\",\"name\":\"Shandra Cassels\",\"email\":\"scassels1l@cocolog-nifty.com\",\"company\":\"Podcat\",\"position\":\"Social Worker\",\"work_phone\":\"+1-507-261-6559\",\"mobile_phone\":\"+1-816-215-0675\",\"fax\":\"+1-801-664-8102\",\"street\":\"63830 High Crossing Park\",\"city\":\"Rochester\",\"post_code\":55905,\"state\":\"MN\",\"country\":\"United States\",\"referred_by\":\"Axel Giacomasso\",\"created_on\":new Date(\"1/19/2018\"),\"birthday\":new Date(\"7/19/1974\"),\"last_activity\":new Date(\"2/5/2018\"),\"next_activity\":new Date(\"6/5/2019\"),\"deals_won\":2,\"deals_lost\":20,\"deals_pending\":18,\"deals_total\":40,\"ratio\":9,\"estimated_sales\":3420072,\"actual_sales\":313548,\"tags\":\"subscriber, retail\"},{\"id\":356968052,\"avatar\":\"assets/images/women/73.jpg\",\"name\":\"Liuka Waterstone\",\"email\":\"lwaterstone1m@google.de\",\"company\":\"Rhynyx\",\"position\":\"Senior Financial Analyst\",\"work_phone\":\"+1-734-129-3969\",\"mobile_phone\":\"+1-949-324-5747\",\"fax\":\"+1-410-643-1340\",\"street\":\"67 Hooker Place\",\"city\":\"Detroit\",\"post_code\":48242,\"state\":\"MI\",\"country\":\"United States\",\"referred_by\":\"Perice Labell\",\"created_on\":new Date(\"4/16/2017\"),\"birthday\":new Date(\"1/28/1992\"),\"last_activity\":new Date(\"5/16/2017\"),\"next_activity\":new Date(\"2/16/2018\"),\"deals_won\":22,\"deals_lost\":10,\"deals_pending\":22,\"deals_total\":54,\"ratio\":69,\"estimated_sales\":3677278,\"actual_sales\":1747108,\"tags\":\"demo, retail\"},{\"id\":929773684,\"avatar\":\"assets/images/men/49.jpg\",\"name\":\"Buddy Bletso\",\"email\":\"bbletso1n@apache.org\",\"company\":\"Bubblebox\",\"position\":\"Budget/Accounting Analyst IV\",\"work_phone\":\"+1-650-832-8650\",\"mobile_phone\":\"+1-540-496-9590\",\"fax\":\"+1-210-261-1402\",\"street\":\"16 Arizona Hill\",\"city\":\"Sunnyvale\",\"post_code\":94089,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Piggy Kaveney\",\"created_on\":new Date(\"11/8/2017\"),\"birthday\":new Date(\"6/18/1970\"),\"last_activity\":new Date(\"11/17/2017\"),\"next_activity\":new Date(\"11/17/2018\"),\"deals_won\":20,\"deals_lost\":20,\"deals_pending\":15,\"deals_total\":55,\"ratio\":5,\"estimated_sales\":2490840,\"actual_sales\":3033900,\"tags\":\"medical\"},{\"id\":709072297,\"avatar\":\"assets/images/women/69.jpg\",\"name\":\"Kristal Tuckey\",\"email\":\"ktuckey1o@craigslist.org\",\"company\":\"Buzzbean\",\"position\":\"Quality Engineer\",\"work_phone\":\"+1-202-866-2533\",\"mobile_phone\":\"+1-704-393-3956\",\"fax\":\"+1-512-548-3198\",\"street\":\"320 Dakota Park\",\"city\":\"Washington\",\"post_code\":20067,\"state\":\"DC\",\"country\":\"United States\",\"referred_by\":\"Junia Casazza\",\"created_on\":new Date(\"10/13/2017\"),\"birthday\":new Date(\"11/26/1973\"),\"last_activity\":new Date(\"11/8/2017\"),\"next_activity\":new Date(\"9/8/2019\"),\"deals_won\":16,\"deals_lost\":16,\"deals_pending\":27,\"deals_total\":59,\"ratio\":5,\"estimated_sales\":3547287,\"actual_sales\":1301440,\"tags\":\"demo, financial\"},{\"id\":628030366,\"avatar\":\"assets/images/women/81.jpg\",\"name\":\"Selestina Frany\",\"email\":\"sfrany1p@devhub.com\",\"company\":\"Rooxo\",\"position\":\"Dental Hygienist\",\"work_phone\":\"+1-520-658-1497\",\"mobile_phone\":\"+1-316-166-4112\",\"fax\":\"+1-540-110-0444\",\"street\":\"589 Village Lane\",\"city\":\"Tucson\",\"post_code\":85715,\"state\":\"AZ\",\"country\":\"United States\",\"referred_by\":\"Xenos Krook\",\"created_on\":new Date(\"6/19/2017\"),\"birthday\":new Date(\"11/20/1977\"),\"last_activity\":new Date(\"6/30/2017\"),\"next_activity\":new Date(\"11/30/2017\"),\"deals_won\":27,\"deals_lost\":2,\"deals_pending\":28,\"deals_total\":57,\"ratio\":93,\"estimated_sales\":3626196,\"actual_sales\":2823849,\"tags\":\"warm, medical\"},{\"id\":115434000,\"avatar\":\"assets/images/men/66.jpg\",\"name\":\"Damian Wapples\",\"email\":\"dwapples1q@aboutads.info\",\"company\":\"Thoughtworks\",\"position\":\"Clinical Specialist\",\"work_phone\":\"+1-757-752-6615\",\"mobile_phone\":\"+1-330-679-7630\",\"fax\":\"+1-386-559-8233\",\"street\":\"99317 Manufacturers Way\",\"city\":\"Newport News\",\"post_code\":23612,\"state\":\"VA\",\"country\":\"United States\",\"referred_by\":\"Kanya Lafayette\",\"created_on\":new Date(\"4/4/2018\"),\"birthday\":new Date(\"6/14/1976\"),\"last_activity\":new Date(\"4/7/2018\"),\"next_activity\":new Date(\"2/7/2019\"),\"deals_won\":24,\"deals_lost\":4,\"deals_pending\":26,\"deals_total\":54,\"ratio\":86,\"estimated_sales\":2852928,\"actual_sales\":4581096,\"tags\":\"demo, medical\"},{\"id\":781474958,\"avatar\":\"assets/images/men/37.jpg\",\"name\":\"Wilfred Sibbit\",\"email\":\"wsibbit1r@guardian.co.uk\",\"company\":\"Skinix\",\"position\":\"Analog Circuit Design manager\",\"work_phone\":\"+1-609-454-3582\",\"mobile_phone\":\"+1-267-898-4817\",\"fax\":\"+1-915-672-0287\",\"street\":\"9773 Elgar Trail\",\"city\":\"Trenton\",\"post_code\":8638,\"state\":\"NJ\",\"country\":\"United States\",\"referred_by\":\"Temp Smallcombe\",\"created_on\":new Date(\"11/30/2017\"),\"birthday\":new Date(\"8/5/1972\"),\"last_activity\":new Date(\"12/13/2017\"),\"next_activity\":new Date(\"11/13/2018\"),\"deals_won\":11,\"deals_lost\":30,\"deals_pending\":14,\"deals_total\":55,\"ratio\":27,\"estimated_sales\":1884918,\"actual_sales\":1082730,\"tags\":\"hot, construction\"},{\"id\":716652088,\"avatar\":\"assets/images/women/65.jpg\",\"name\":\"Jackqueline Knell\",\"email\":\"jknell1s@studiopress.com\",\"company\":\"Aimbo\",\"position\":\"Senior Financial Analyst\",\"work_phone\":\"+1-206-461-0587\",\"mobile_phone\":\"+1-615-755-0624\",\"fax\":\"+1-518-359-1627\",\"street\":\"07 Nelson Crossing\",\"city\":\"Seattle\",\"post_code\":98127,\"state\":\"WA\",\"country\":\"United States\",\"referred_by\":\"Arturo Comben\",\"created_on\":new Date(\"2/22/2018\"),\"birthday\":new Date(\"4/17/1976\"),\"last_activity\":new Date(\"3/24/2018\"),\"next_activity\":new Date(\"4/24/2019\"),\"deals_won\":12,\"deals_lost\":6,\"deals_pending\":30,\"deals_total\":48,\"ratio\":67,\"estimated_sales\":2401050,\"actual_sales\":2235468,\"tags\":\"hot, financial\"},{\"id\":926110582,\"avatar\":\"assets/images/men/77.jpg\",\"name\":\"Sargent Brownsill\",\"email\":\"sbrownsill1t@tiny.cc\",\"company\":\"Leexo\",\"position\":\"Director of Sales\",\"work_phone\":\"+1-540-211-9674\",\"mobile_phone\":\"+1-513-450-2194\",\"fax\":\"+1-251-180-6430\",\"street\":\"7 Crest Line Point\",\"city\":\"Roanoke\",\"post_code\":24014,\"state\":\"VA\",\"country\":\"United States\",\"referred_by\":\"Addy Rides\",\"created_on\":new Date(\"5/29/2017\"),\"birthday\":new Date(\"9/3/2002\"),\"last_activity\":new Date(\"6/6/2017\"),\"next_activity\":new Date(\"9/6/2017\"),\"deals_won\":23,\"deals_lost\":10,\"deals_pending\":0,\"deals_total\":33,\"ratio\":7,\"estimated_sales\":0,\"actual_sales\":3207787,\"tags\":\"warm, pharmaceutical\"},{\"id\":382757519,\"avatar\":\"assets/images/men/33.jpg\",\"name\":\"Harley Wasselin\",\"email\":\"hwasselin1u@discovery.com\",\"company\":\"Brainsphere\",\"position\":\"Marketing Assistant\",\"work_phone\":\"+1-405-554-3182\",\"mobile_phone\":\"+1-801-649-5535\",\"fax\":\"+1-314-299-9579\",\"street\":\"13508 Sundown Circle\",\"city\":\"Oklahoma City\",\"post_code\":73147,\"state\":\"OK\",\"country\":\"United States\",\"referred_by\":\"Silvester Segges\",\"created_on\":new Date(\"8/16/2017\"),\"birthday\":new Date(\"5/30/1999\"),\"last_activity\":new Date(\"9/9/2017\"),\"next_activity\":new Date(\"12/9/2017\"),\"deals_won\":2,\"deals_lost\":13,\"deals_pending\":20,\"deals_total\":35,\"ratio\":13,\"estimated_sales\":1572000,\"actual_sales\":209878,\"tags\":\"pro, retail\"},{\"id\":563374905,\"avatar\":\"assets/images/women/91.jpg\",\"name\":\"Melisent Arlett\",\"email\":\"marlett1v@ebay.co.uk\",\"company\":\"Bubbletube\",\"position\":\"VP Sales\",\"work_phone\":\"+1-408-346-0228\",\"mobile_phone\":\"+1-202-830-4135\",\"fax\":\"+1-312-873-3929\",\"street\":\"52 Texas Park\",\"city\":\"San Jose\",\"post_code\":95160,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Lou Ruffle\",\"created_on\":new Date(\"5/22/2017\"),\"birthday\":new Date(\"9/8/1973\"),\"last_activity\":new Date(\"6/4/2017\"),\"next_activity\":new Date(\"11/4/2018\"),\"deals_won\":1,\"deals_lost\":22,\"deals_pending\":27,\"deals_total\":50,\"ratio\":4,\"estimated_sales\":1400166,\"actual_sales\":61337,\"tags\":\"subscriber, retail\"},{\"id\":787253389,\"avatar\":\"assets/images/women/31.jpg\",\"name\":\"Gilda Fazackerley\",\"email\":\"gfazackerley1w@exblog.jp\",\"company\":\"Flashpoint\",\"position\":\"Help Desk Technician\",\"work_phone\":\"+1-315-585-2018\",\"mobile_phone\":\"+1-253-384-7619\",\"fax\":\"+1-305-581-7413\",\"street\":\"99 Loftsgordon Parkway\",\"city\":\"Syracuse\",\"post_code\":13251,\"state\":\"NY\",\"country\":\"United States\",\"referred_by\":\"Constantino Yatman\",\"created_on\":new Date(\"9/4/2017\"),\"birthday\":new Date(\"6/26/2000\"),\"last_activity\":new Date(\"9/14/2017\"),\"next_activity\":new Date(\"3/14/2018\"),\"deals_won\":11,\"deals_lost\":27,\"deals_pending\":29,\"deals_total\":67,\"ratio\":29,\"estimated_sales\":2749374,\"actual_sales\":714571,\"tags\":\"demo, engineering\"},{\"id\":470959772,\"avatar\":\"assets/images/women/34.jpg\",\"name\":\"Yoshiko Trinke\",\"email\":\"ytrinke1x@symantec.com\",\"company\":\"Buzzdog\",\"position\":\"Research Associate\",\"work_phone\":\"+1-615-409-3097\",\"mobile_phone\":\"+1-316-395-0385\",\"fax\":\"+1-516-931-2494\",\"street\":\"21969 Oak Lane\",\"city\":\"Nashville\",\"post_code\":37250,\"state\":\"TN\",\"country\":\"United States\",\"referred_by\":\"Augustine Glasser\",\"created_on\":new Date(\"6/18/2017\"),\"birthday\":new Date(\"3/10/1979\"),\"last_activity\":new Date(\"6/20/2017\"),\"next_activity\":new Date(\"10/20/2018\"),\"deals_won\":25,\"deals_lost\":10,\"deals_pending\":25,\"deals_total\":60,\"ratio\":71,\"estimated_sales\":4323875,\"actual_sales\":2746800,\"tags\":\"demo, medical\"},{\"id\":304897422,\"avatar\":\"assets/images/women/47.jpg\",\"name\":\"Doralyn Fransinelli\",\"email\":\"dfransinelli1y@ucsd.edu\",\"company\":\"Edgetag\",\"position\":\"Structural Analysis Engineer\",\"work_phone\":\"+1-915-495-9682\",\"mobile_phone\":\"+1-206-825-5739\",\"fax\":\"+1-813-586-6619\",\"street\":\"0 Helena Alley\",\"city\":\"El Paso\",\"post_code\":79945,\"state\":\"TX\",\"country\":\"United States\",\"referred_by\":\"Ramsay Ugolini\",\"created_on\":new Date(\"12/30/2017\"),\"birthday\":new Date(\"12/17/1985\"),\"last_activity\":new Date(\"1/24/2018\"),\"next_activity\":new Date(\"9/24/2018\"),\"deals_won\":9,\"deals_lost\":3,\"deals_pending\":0,\"deals_total\":12,\"ratio\":75,\"estimated_sales\":0,\"actual_sales\":1598400,\"tags\":\"pro, retail\"},{\"id\":113000277,\"avatar\":\"assets/images/men/34.jpg\",\"name\":\"Bard Shivlin\",\"email\":\"bshivlin1z@ebay.co.uk\",\"company\":\"Twinder\",\"position\":\"Associate Professor\",\"work_phone\":\"+1-850-435-5596\",\"mobile_phone\":\"+1-414-492-8462\",\"fax\":\"+1-612-701-4098\",\"street\":\"5154 Hovde Street\",\"city\":\"Pensacola\",\"post_code\":32511,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Jaynell Innis\",\"created_on\":new Date(\"7/10/2017\"),\"birthday\":new Date(\"8/26/1970\"),\"last_activity\":new Date(\"7/27/2017\"),\"next_activity\":new Date(\"1/27/2018\"),\"deals_won\":3,\"deals_lost\":27,\"deals_pending\":2,\"deals_total\":32,\"ratio\":1,\"estimated_sales\":115192,\"actual_sales\":451728,\"tags\":\"cold, construction\"},{\"id\":115567478,\"avatar\":\"assets/images/men/96.jpg\",\"name\":\"Jermain Capron\",\"email\":\"jcapron20@so-net.ne.jp\",\"company\":\"Podcat\",\"position\":\"Analog Circuit Design manager\",\"work_phone\":\"+1-323-118-4740\",\"mobile_phone\":\"+1-864-471-4588\",\"fax\":\"+1-857-430-0588\",\"street\":\"3492 Graedel Circle\",\"city\":\"Inglewood\",\"post_code\":90305,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Wynn Chamberlin\",\"created_on\":new Date(\"3/13/2018\"),\"birthday\":new Date(\"4/5/1994\"),\"last_activity\":new Date(\"3/21/2018\"),\"next_activity\":new Date(\"3/21/2019\"),\"deals_won\":9,\"deals_lost\":11,\"deals_pending\":21,\"deals_total\":41,\"ratio\":45,\"estimated_sales\":2045631,\"actual_sales\":1248336,\"tags\":\"cool, engineering\"},{\"id\":327823716,\"avatar\":\"assets/images/men/51.jpg\",\"name\":\"Greg Lifsey\",\"email\":\"glifsey21@nytimes.com\",\"company\":\"Tagcat\",\"position\":\"Human Resources Manager\",\"work_phone\":\"+1-615-402-5193\",\"mobile_phone\":\"+1-404-496-8008\",\"fax\":\"+1-817-294-8693\",\"street\":\"2 Crowley Circle\",\"city\":\"Murfreesboro\",\"post_code\":37131,\"state\":\"TN\",\"country\":\"United States\",\"referred_by\":\"Kendal Lenin\",\"created_on\":new Date(\"2/12/2017\"),\"birthday\":new Date(\"7/9/1975\"),\"last_activity\":new Date(\"2/14/2017\"),\"next_activity\":new Date(\"5/14/2018\"),\"deals_won\":15,\"deals_lost\":22,\"deals_pending\":16,\"deals_total\":53,\"ratio\":41,\"estimated_sales\":1574176,\"actual_sales\":1160025,\"tags\":\"warm, construction\"},{\"id\":622175884,\"avatar\":\"assets/images/women/13.jpg\",\"name\":\"Nonna Brailsford\",\"email\":\"nbrailsford22@exblog.jp\",\"company\":\"Thoughtbridge\",\"position\":\"Staff Scientist\",\"work_phone\":\"+1-407-261-5214\",\"mobile_phone\":\"+1-971-802-7754\",\"fax\":\"+1-602-286-3546\",\"street\":\"7 Ilene Circle\",\"city\":\"Orlando\",\"post_code\":32891,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Westleigh Grimsdell\",\"created_on\":new Date(\"2/15/2017\"),\"birthday\":new Date(\"11/19/1981\"),\"last_activity\":new Date(\"3/4/2017\"),\"next_activity\":new Date(\"9/4/2017\"),\"deals_won\":10,\"deals_lost\":23,\"deals_pending\":9,\"deals_total\":42,\"ratio\":3,\"estimated_sales\":538875,\"actual_sales\":1733590,\"tags\":new Date(\"\")},{\"id\":712619219,\"avatar\":\"assets/images/women/7.jpg\",\"name\":\"Gabbey Lillee\",\"email\":\"glillee23@tiny.cc\",\"company\":\"Brightbean\",\"position\":\"VP Sales\",\"work_phone\":\"+1-503-450-6669\",\"mobile_phone\":\"+1-775-407-8541\",\"fax\":\"+1-915-499-3761\",\"street\":\"79112 Little Fleur Crossing\",\"city\":\"Beaverton\",\"post_code\":97075,\"state\":\"OR\",\"country\":\"United States\",\"referred_by\":\"Caldwell Village\",\"created_on\":new Date(\"11/17/2017\"),\"birthday\":new Date(\"8/22/1999\"),\"last_activity\":new Date(\"12/9/2017\"),\"next_activity\":new Date(\"7/9/2018\"),\"deals_won\":6,\"deals_lost\":10,\"deals_pending\":12,\"deals_total\":28,\"ratio\":38,\"estimated_sales\":1643220,\"actual_sales\":951342,\"tags\":\"cool, engineering\"},{\"id\":409767062,\"avatar\":\"assets/images/women/97.jpg\",\"name\":\"Cookie Leale\",\"email\":\"cleale24@salon.com\",\"company\":\"Kaymbo\",\"position\":\"Speech Pathologist\",\"work_phone\":\"+1-202-748-0506\",\"mobile_phone\":\"+1-262-911-6263\",\"fax\":\"+1-303-664-4963\",\"street\":\"864 Twin Pines Circle\",\"city\":\"Washington\",\"post_code\":20414,\"state\":\"DC\",\"country\":\"United States\",\"referred_by\":\"Ammamaria Wahner\",\"created_on\":new Date(\"10/18/2017\"),\"birthday\":new Date(\"7/13/1995\"),\"last_activity\":new Date(\"10/31/2017\"),\"next_activity\":new Date(\"6/30/2018\"),\"deals_won\":12,\"deals_lost\":5,\"deals_pending\":15,\"deals_total\":32,\"ratio\":71,\"estimated_sales\":1222830,\"actual_sales\":1138104,\"tags\":\"cool, medical\"},{\"id\":226394719,\"avatar\":\"assets/images/men/77.jpg\",\"name\":\"Hugues Ferrier\",\"email\":\"hferrier25@msn.com\",\"company\":\"Topicblab\",\"position\":\"Senior Cost Accountant\",\"work_phone\":\"+1-501-665-6272\",\"mobile_phone\":\"+1-234-452-0778\",\"fax\":\"+1-712-998-9730\",\"street\":\"65 Kings Center\",\"city\":\"Little Rock\",\"post_code\":72222,\"state\":\"AR\",\"country\":\"United States\",\"referred_by\":\"Saleem Grocock\",\"created_on\":new Date(\"6/7/2017\"),\"birthday\":new Date(\"5/26/1978\"),\"last_activity\":new Date(\"7/5/2017\"),\"next_activity\":new Date(\"6/5/2018\"),\"deals_won\":19,\"deals_lost\":7,\"deals_pending\":8,\"deals_total\":34,\"ratio\":73,\"estimated_sales\":950984,\"actual_sales\":2280513,\"tags\":\"subscriber, construction\"},{\"id\":950707960,\"avatar\":\"assets/images/men/38.jpg\",\"name\":\"Newton Collerd\",\"email\":\"ncollerd26@issuu.com\",\"company\":\"Yodel\",\"position\":\"Account Representative I\",\"work_phone\":\"+1-225-794-2492\",\"mobile_phone\":\"+1-360-707-4543\",\"fax\":\"+1-505-575-8418\",\"street\":\"7722 Westend Pass\",\"city\":\"Baton Rouge\",\"post_code\":70836,\"state\":\"LA\",\"country\":\"United States\",\"referred_by\":\"Charmian Ajsik\",\"created_on\":new Date(\"12/18/2017\"),\"birthday\":new Date(\"2/24/1982\"),\"last_activity\":new Date(\"1/15/2018\"),\"next_activity\":new Date(\"10/15/2019\"),\"deals_won\":3,\"deals_lost\":1,\"deals_pending\":26,\"deals_total\":30,\"ratio\":75,\"estimated_sales\":3642366,\"actual_sales\":195156,\"tags\":\"subscriber, pharmaceutical\"},{\"id\":900932268,\"avatar\":\"assets/images/women/10.jpg\",\"name\":\"Laural Bogart\",\"email\":\"lbogart27@feedburner.com\",\"company\":\"Feedfish\",\"position\":\"Marketing Manager\",\"work_phone\":\"+1-215-924-8996\",\"mobile_phone\":\"+1-412-641-6320\",\"fax\":\"+1-804-150-3782\",\"street\":\"9 Meadow Ridge Circle\",\"city\":\"Philadelphia\",\"post_code\":19093,\"state\":\"PA\",\"country\":\"United States\",\"referred_by\":\"Joey Harce\",\"created_on\":new Date(\"7/18/2017\"),\"birthday\":new Date(\"2/22/1981\"),\"last_activity\":new Date(\"8/6/2017\"),\"next_activity\":new Date(\"4/6/2018\"),\"deals_won\":16,\"deals_lost\":8,\"deals_pending\":24,\"deals_total\":48,\"ratio\":67,\"estimated_sales\":1986888,\"actual_sales\":2213760,\"tags\":\"pro, pharmaceutical\"},{\"id\":614294465,\"avatar\":\"assets/images/women/27.jpg\",\"name\":\"Elvina Weall\",\"email\":\"eweall28@usda.gov\",\"company\":\"Eamia\",\"position\":\"Analyst Programmer\",\"work_phone\":\"+1-512-582-5067\",\"mobile_phone\":\"+1-203-733-0335\",\"fax\":\"+1--614-4601\",\"street\":\"010 Lindbergh Hill\",\"city\":\"Austin\",\"post_code\":78737,\"state\":\"TX\",\"country\":\"United States\",\"referred_by\":\"Monte Norcott\",\"created_on\":new Date(\"2/12/2018\"),\"birthday\":new Date(\"7/6/1978\"),\"last_activity\":new Date(\"3/12/2018\"),\"next_activity\":new Date(\"10/12/2018\"),\"deals_won\":14,\"deals_lost\":13,\"deals_pending\":22,\"deals_total\":49,\"ratio\":52,\"estimated_sales\":4032248,\"actual_sales\":794038,\"tags\":new Date(\"\")},{\"id\":377106801,\"avatar\":\"assets/images/women/89.jpg\",\"name\":\"Juieta Mendez\",\"email\":\"jmendez29@bing.com\",\"company\":\"Babbleblab\",\"position\":\"Account Representative IV\",\"work_phone\":\"+1-410-373-5750\",\"mobile_phone\":\"+1-512-166-8473\",\"fax\":\"+1-801-164-8887\",\"street\":\"24 5th Alley\",\"city\":\"Baltimore\",\"post_code\":21265,\"state\":\"MD\",\"country\":\"United States\",\"referred_by\":\"Ivett Olechnowicz\",\"created_on\":new Date(\"2/23/2017\"),\"birthday\":new Date(\"6/3/1986\"),\"last_activity\":new Date(\"3/2/2017\"),\"next_activity\":new Date(\"12/2/2017\"),\"deals_won\":8,\"deals_lost\":26,\"deals_pending\":12,\"deals_total\":46,\"ratio\":24,\"estimated_sales\":1882284,\"actual_sales\":433880,\"tags\":\"demo, engineering\"},{\"id\":262450597,\"avatar\":\"assets/images/men/25.jpg\",\"name\":\"Emlen Castell\",\"email\":\"ecastell2a@ucsd.edu\",\"company\":\"Fivebridge\",\"position\":\"Paralegal\",\"work_phone\":\"+1-585-817-1379\",\"mobile_phone\":\"+1-214-403-1468\",\"fax\":\"+1-336-307-1139\",\"street\":\"4 Merry Way\",\"city\":\"Rochester\",\"post_code\":14639,\"state\":\"NY\",\"country\":\"United States\",\"referred_by\":\"Cristionna Madine\",\"created_on\":new Date(\"2/6/2018\"),\"birthday\":new Date(\"1/19/1975\"),\"last_activity\":new Date(\"3/4/2018\"),\"next_activity\":new Date(\"9/4/2019\"),\"deals_won\":25,\"deals_lost\":6,\"deals_pending\":26,\"deals_total\":57,\"ratio\":81,\"estimated_sales\":3368196,\"actual_sales\":2038825,\"tags\":\"retail\"},{\"id\":235852051,\"avatar\":\"assets/images/men/40.jpg\",\"name\":\"Justis Isles\",\"email\":\"jisles2b@ifeng.com\",\"company\":\"Skilith\",\"position\":\"Mechanical Systems Engineer\",\"work_phone\":\"+1-305-857-8429\",\"mobile_phone\":\"+1-941-709-9660\",\"fax\":\"+1-213-500-2975\",\"street\":\"549 Dawn Drive\",\"city\":\"Hialeah\",\"post_code\":33018,\"state\":\"FL\",\"country\":\"United States\",\"referred_by\":\"Noellyn Pass\",\"created_on\":new Date(\"11/24/2017\"),\"birthday\":new Date(\"7/20/2001\"),\"last_activity\":new Date(\"12/21/2017\"),\"next_activity\":new Date(\"6/21/2018\"),\"deals_won\":28,\"deals_lost\":29,\"deals_pending\":8,\"deals_total\":65,\"ratio\":49,\"estimated_sales\":1213264,\"actual_sales\":3278968,\"tags\":\"medical\"},{\"id\":664568769,\"avatar\":\"assets/images/women/26.jpg\",\"name\":\"Janeva Burnsall\",\"email\":\"jburnsall2c@flickr.com\",\"company\":\"Dazzlesphere\",\"position\":\"VP Quality Control\",\"work_phone\":\"+1-513-252-4337\",\"mobile_phone\":\"+1-502-228-4513\",\"fax\":\"+1-704-229-9925\",\"street\":\"80588 Anthes Court\",\"city\":\"Cincinnati\",\"post_code\":45999,\"state\":\"OH\",\"country\":\"United States\",\"referred_by\":\"Trula Jozsika\",\"created_on\":new Date(\"12/12/2017\"),\"birthday\":new Date(\"9/30/1989\"),\"last_activity\":new Date(\"12/28/2017\"),\"next_activity\":new Date(\"5/28/2019\"),\"deals_won\":11,\"deals_lost\":3,\"deals_pending\":12,\"deals_total\":26,\"ratio\":79,\"estimated_sales\":1948260,\"actual_sales\":1611643,\"tags\":\"pharmaceutical\"},{\"id\":752959468,\"avatar\":\"assets/images/women/68.jpg\",\"name\":\"Kelcie Folley\",\"email\":\"kfolley2d@livejournal.com\",\"company\":\"Abatz\",\"position\":\"Systems Administrator II\",\"work_phone\":\"+1-336-131-5394\",\"mobile_phone\":\"+1-843-966-3156\",\"fax\":\"+1-407-424-2202\",\"street\":\"3 American Ash Center\",\"city\":\"Greensboro\",\"post_code\":27425,\"state\":\"NC\",\"country\":\"United States\",\"referred_by\":\"Chet Lydall\",\"created_on\":new Date(\"12/10/2017\"),\"birthday\":new Date(\"5/12/1977\"),\"last_activity\":new Date(\"12/17/2017\"),\"next_activity\":new Date(\"12/17/2018\"),\"deals_won\":5,\"deals_lost\":15,\"deals_pending\":22,\"deals_total\":42,\"ratio\":25,\"estimated_sales\":1296262,\"actual_sales\":301030,\"tags\":\"cold, medical\"},{\"id\":786276070,\"avatar\":\"assets/images/women/22.jpg\",\"name\":\"Claudina Davey\",\"email\":\"cdavey2e@businessweek.com\",\"company\":\"Oyoloo\",\"position\":\"VP Quality Control\",\"work_phone\":\"+1-818-505-3284\",\"mobile_phone\":\"+1-713-179-5326\",\"fax\":\"+1-540-574-0485\",\"street\":\"4875 Surrey Drive\",\"city\":\"Los Angeles\",\"post_code\":90065,\"state\":\"CA\",\"country\":\"United States\",\"referred_by\":\"Corabella Netherwood\",\"created_on\":new Date(\"3/29/2017\"),\"birthday\":new Date(\"8/30/1975\"),\"last_activity\":new Date(\"4/28/2017\"),\"next_activity\":new Date(\"8/28/2017\"),\"deals_won\":26,\"deals_lost\":19,\"deals_pending\":1,\"deals_total\":46,\"ratio\":58,\"estimated_sales\":168833,\"actual_sales\":3745014,\"tags\":\"medical\"},{\"id\":520466635,\"avatar\":\"assets/images/women/42.jpg\",\"name\":\"Shanna Mowling\",\"email\":\"smowling2f@apache.org\",\"company\":new Date(\"\"),\"position\":\"Dental Hygienist\",\"work_phone\":\"+1-423-201-3489\",\"mobile_phone\":\"+1-615-539-3025\",\"fax\":\"+1-813-114-9544\",\"street\":\"3 Crescent Oaks Court\",\"city\":\"Chattanooga\",\"post_code\":37416,\"state\":\"TN\",\"country\":\"United States\",\"referred_by\":\"Elayne Barg\",\"created_on\":new Date(\"2/5/2018\"),\"birthday\":new Date(\"1/19/1972\"),\"last_activity\":new Date(\"2/28/2018\"),\"next_activity\":new Date(\"12/28/2018\"),\"deals_won\":25,\"deals_lost\":7,\"deals_pending\":27,\"deals_total\":59,\"ratio\":78,\"estimated_sales\":4789557,\"actual_sales\":2129000,\"tags\":\"subscriber, construction\"},{\"id\":638218995,\"avatar\":\"assets/images/women/79.jpg\",\"name\":\"Ardyth Arcase\",\"email\":\"aarcase2g@techcrunch.com\",\"company\":\"Mydeo\",\"position\":\"Senior Cost Accountant\",\"work_phone\":\"+1-202-329-2722\",\"mobile_phone\":\"+1-936-520-8614\",\"fax\":\"+1-775-735-4912\",\"street\":\"16773 Everett Plaza\",\"city\":\"Washington\",\"post_code\":20535,\"state\":\"DC\",\"country\":\"United States\",\"referred_by\":\"Sheffy Jenoure\",\"created_on\":new Date(\"3/28/2017\"),\"birthday\":new Date(\"4/20/1976\"),\"last_activity\":new Date(\"4/5/2017\"),\"next_activity\":new Date(\"2/5/2019\"),\"deals_won\":12,\"deals_lost\":26,\"deals_pending\":6,\"deals_total\":44,\"ratio\":32,\"estimated_sales\":881670,\"actual_sales\":1350960,\"tags\":\"subscriber, retail\"}]\r\n/* eslint-enable */\r\n"},{"hasRelativeAssetsUrls":false,"path":"src/app/app.module.ts","content":"import { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { AppComponent } from \"./app.component\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { HammerModule } from \"@angular/platform-browser\";\r\nimport { \r\n\tIgxAutocompleteModule,\r\n\tIgxRippleModule,\r\n\tIgxGridModule,\r\n\tIgxIconModule,\r\n\tIgxLayoutModule,\r\n\tIgxAvatarModule,\r\n\tIgxInputGroupModule,\r\n\tIgxButtonModule\r\n } from \"igniteui-angular\";\r\nimport { IgxPreventDocumentScrollModule } from \"./directives/prevent-scroll.directive\";\r\nimport { GridsCrmModule } from \"./grid-crm/grid-crm.module\";\n\n\n\n@NgModule({\n bootstrap: [AppComponent],\n declarations: [\r\n\tAppComponent],\n imports: [\r\n\tBrowserModule,\r\n\tBrowserAnimationsModule,\r\n\tFormsModule,\r\n\tIgxPreventDocumentScrollModule,\r\n\tIgxRippleModule,\r\n\tIgxGridModule,\r\n\tIgxIconModule,\r\n\tIgxLayoutModule,\r\n\tIgxAvatarModule,\r\n\tIgxInputGroupModule,\r\n\tIgxButtonModule,\r\n\tGridsCrmModule\r\n],\n providers: [],\n entryComponents: [],\n schemas: []\n})\nexport class AppModule {}\n","isMain":true,"fileExtension":"ts","fileHeader":"modules"},{"hasRelativeAssetsUrls":false,"path":"src/app/app.component.html","content":""},{"hasRelativeAssetsUrls":false,"path":"package.json","content":"{\n \"name\": \"example-app\",\n \"version\": \"0.0.0\",\n \"scripts\": {\n \"ng\": \"ng\",\n \"start\": \"ng serve\",\n \"build\": \"ng build\",\n \"watch\": \"ng build --watch --configuration development\",\n \"test\": \"ng test\"\n },\n \"private\": true,\n \"dependencies\": {\n \"@angular/animations\": \"^15.0.0\",\n \"@angular/cdk\": \"^15.0.0\",\n \"@angular/common\": \"^15.0.0\",\n \"@angular/compiler\": \"^15.0.0\",\n \"@angular/core\": \"^15.0.0\",\n \"@angular/forms\": \"^15.0.0\",\n \"@angular/platform-browser\": \"^15.0.0\",\n \"@angular/platform-browser-dynamic\": \"^15.0.0\",\n \"@angular/router\": \"^15.0.0\", \"@types/hammerjs\": \"^2.0.39\", \"core-js\": \"2.6.2\",\n \"hammerjs\": \"^2.0.8\",\n \"igniteui-angular\": \"^15.0.0\",\n \"igniteui-theming\": \"^1.1.4\", \"immediate\": \"^3.2.3\",\n \"intl\": \"^1.2.5\",\n \"rxjs\": \"^6.6.7\",\n \"tslib\": \"^2.3.1\",\n \"zone.js\": \"~0.11.4\"\n },\n \"devDependencies\": {\n \"@angular-devkit/build-angular\": \"^15.0.0\",\n \"@angular/cli\": \"^15.0.0\",\n \"@angular/compiler-cli\": \"^15.0.0\",\n \"@types/jasmine\": \"~3.10.0\",\n \"@types/node\": \"^12.11.1\",\n \"jasmine-core\": \"~3.10.0\",\n \"karma\": \"^6.3.11\",\n \"karma-chrome-launcher\": \"~3.1.0\",\n \"karma-coverage\": \"~2.0.3\",\n \"karma-jasmine\": \"~4.0.0\",\n \"karma-jasmine-html-reporter\": \"~1.7.0\",\n \"typescript\": \"~4.8.4\"\n }\n}\n"}],"sampleDependencies":"{\"@angular/animations\":\"^15.0.0\",\"@angular/common\":\"^15.0.0\",\"@angular/compiler\":\"^15.0.0\",\"@angular/core\":\"^15.0.0\",\"@angular/forms\":\"^15.0.0\",\"@angular/platform-browser\":\"^15.0.0\",\"@angular/platform-browser-dynamic\":\"^15.0.0\",\"@angular/router\":\"^15.0.0\",\"@types/hammerjs\":\"^2.0.39\",\"core-js\":\"2.6.2\",\"hammerjs\":\"^2.0.8\",\"igniteui-angular\":\"15.0.0\",\"immediate\":\"^3.2.3\",\"intl\":\"^1.2.5\",\"rxjs\":\"^6.6.7\",\"tslib\":\"^2.3.1\",\"zone.js\":\"~0.11.4\"}"} \ No newline at end of file diff --git a/projects/app-crm/src/assets/samples/meta.json b/projects/app-crm/src/assets/samples/meta.json index 369a58a060..c5a33edf74 100644 --- a/projects/app-crm/src/assets/samples/meta.json +++ b/projects/app-crm/src/assets/samples/meta.json @@ -1 +1 @@ -{"generationTimeStamp":1670355045503} \ No newline at end of file +{"generationTimeStamp":1670397625889} \ No newline at end of file