basesite-shared-grid-lib 15.10.261 → 15.10.262
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
@@ -1062,7 +1062,7 @@ class FillCellRendererComponent {
|
|
|
1062
1062
|
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === 'dacStatus'" [ngStyle]="{'background': rowData.dacIndicator? rowData.dacIndicator : '#fff'}" >
|
|
1063
1063
|
{{ params.value }}
|
|
1064
1064
|
</span>
|
|
1065
|
-
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === '
|
|
1065
|
+
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === 'completionStatus'" [ngStyle]="{'background': rowData.pocIndicator? rowData.pocIndicator:'#fff'}" >
|
|
1066
1066
|
{{ params.value }}
|
|
1067
1067
|
</span>
|
|
1068
1068
|
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === 'funding'" [ngStyle]="{'background': rowData.fundingIndicator? rowData.fundingIndicator:'#fff'}" >
|
|
@@ -1088,7 +1088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
1088
1088
|
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === 'dacStatus'" [ngStyle]="{'background': rowData.dacIndicator? rowData.dacIndicator : '#fff'}" >
|
|
1089
1089
|
{{ params.value }}
|
|
1090
1090
|
</span>
|
|
1091
|
-
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === '
|
|
1091
|
+
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === 'completionStatus'" [ngStyle]="{'background': rowData.pocIndicator? rowData.pocIndicator:'#fff'}" >
|
|
1092
1092
|
{{ params.value }}
|
|
1093
1093
|
</span>
|
|
1094
1094
|
<span class="status-fill-cell text-white" *ngIf="params.value && params.field === 'funding'" [ngStyle]="{'background': rowData.fundingIndicator? rowData.fundingIndicator:'#fff'}" >
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basesite-shared-grid-lib.mjs","sources":["../../../projects/basesite-shared-grid-lib/src/lib/token-sharing.service.ts","../../../projects/basesite-shared-grid-lib/src/lib/grid-library.service.ts","../../../projects/basesite-shared-grid-lib/src/lib/helpers/utils.ts","../../../projects/basesite-shared-grid-lib/src/lib/helpers/oDataProvider.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/button-renderer/button-renderer.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/tooltip-renderer/custom-tooltip-renderer.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/dropdown-renderer/drop-down-renderer.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/cell-renderer/cell-renderer.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/fill-cell-renderer/fill-cell-renderer.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/formatters/column-value-formatter.ts","../../../projects/basesite-shared-grid-lib/src/lib/grid-library.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/date-header/date-header.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/header/header.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/grid-library.module.ts","../../../projects/basesite-shared-grid-lib/src/public-api.ts","../../../projects/basesite-shared-grid-lib/src/basesite-shared-grid-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenSharingService {\r\n\r\n constructor() { }\r\n\r\n private tokenSubject = new BehaviorSubject<string>(\"\");\r\n token$ = this.tokenSubject.asObservable();\r\n updateToken(newToken:string){\r\n this.tokenSubject.next(newToken);\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { TokenSharingService } from './token-sharing.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridLibraryService {\r\n private baseUrl: any = 'https://localhost:7237/api';\r\n accessToken!: string;\r\n constructor(private httpClient: HttpClient,private _tokenSharingService:TokenSharingService) {\r\n this._tokenSharingService.token$.subscribe(res =>{\r\n if(res && res != \"\"){\r\n this.accessToken = res;\r\n }\r\n });\r\n this.setBaseUrl();\r\n } \r\n\r\n setBaseUrl(environment: any=\"\") {\r\n if (window.location.origin.includes('fcelspx')) {\r\n this.baseUrl = window.location.origin + '/designhub/api';\r\n }\r\n else if(environment=='uat'){\r\n this.baseUrl ='https://fcemsuat.intel.com/designhub/api'\r\n }\r\n else if(environment=='production'){\r\n this.baseUrl ='https://fcems.intel.com/designhub/api'\r\n }\r\n else {\r\n this.baseUrl = 'https://fcemstest.intel.com/designhub/api'\r\n }\r\n }\r\n\r\n getColDef(gridId: any): Observable<any> { \r\n return this.httpClient.get<any>(\r\n `${this.baseUrl}/GridConfiguration/${gridId}`, { headers: this.getRequestHeader()}\r\n );\r\n }\r\n\r\n saveColumnConfig(columnConfig:any){\r\n return this.httpClient.post<any>(\r\n `${this.baseUrl}/GridConfiguration/saveUIUserGridConfiguration`, columnConfig, { headers: this.getRequestHeader()}\r\n );\r\n }\r\n\r\n getGridState(gridId: number, loggedInUserId: number, siteId: number) {\r\n return this.httpClient.get<any>(\r\n `${this.baseUrl}/GridConfiguration?gridId=${gridId}&userId=${loggedInUserId}&siteId=${siteId}`, { headers: this.getRequestHeader() }\r\n );\r\n }\r\n\r\n getRequestHeader() {\r\n let reqHeader: any;\r\n\r\n if (this.accessToken) {\r\n reqHeader = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + this.accessToken\r\n });\r\n }\r\n else {\r\n reqHeader = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n });\r\n }\r\n \r\n return reqHeader;\r\n }\r\n\r\n getDataForExport(serverUrl: any): Observable<any> {\r\n return this.httpClient.get<any>(\r\n `${serverUrl}`, { headers: this.getRequestHeader() }\r\n );\r\n }\r\n}\r\n","export function escapeRegExp(string:any) {\r\n return string.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\r\n }\r\n \r\n export function replaceAll(str: string, search: string, replacement: string): string {\r\n return str.replace(new RegExp(escapeRegExp(search), \"g\"), replacement);\r\n }","import {\r\n IGetRowsParams,\r\n ColDef,\r\n ColGroupDef,\r\n ColumnVO,\r\n IServerSideGetRowsRequest,\r\n IServerSideGetRowsParams,\r\n} from 'ag-grid-community';\r\n\r\nimport {\r\n OdataQueryExtendFull,\r\n OdataQueryExtendOptions,\r\n OdataQueryOptions,\r\n PivotResultDat,\r\n} from './types';\r\n\r\nimport { replaceAll } from './utils';\r\nexport declare class OdataProviderOptions {\r\n /**\r\n * Function for call odata api\r\n */\r\n callApi: (query: string) => Promise<any>;\r\n /**\r\n * Name of field contain count of record results in grouping odata query\r\n * @default childCount\r\n */\r\n groupCountFieldName?: string;\r\n /**\r\n * Use in odata build query\r\n * @default false\r\n */\r\n isCaseSensitiveStringFilter?: boolean;\r\n /**\r\n * Callback for extend odata query options for implement user logic\r\n */\r\n beforeRequest?: (\r\n options: OdataQueryOptions,\r\n provider: OdataProvider,\r\n request: IGetRowsParams | IServerSideGetRowsRequest\r\n ) => void;\r\n /**\r\n * Callback for pivot or group for aplly column ag-grid settings\r\n * @example\r\n * <pre><code>\r\n * beforeSetSecondaryColumns = secondaryColumns => {\r\n for (let i = 0; i < secondaryColumns.length; i++) {\r\n const col = secondaryColumns[i]\r\n if (col.children) {\r\n beforeSetSecondaryColumns(col.children)\r\n } else {\r\n //Aplly new setting for group dyncamic created column\r\n // col.cellClassRules = \r\n // col.valueFormatter = \r\n }\r\n }\r\n }\r\n * </pre></code>\r\n */\r\n beforeSetSecondaryColumns?: (\r\n secondaryColDefs: (ColDef | ColGroupDef)[]\r\n ) => void;\r\n /**\r\n * Callback invoked after load data\r\n * @param options odata provider options\r\n * @param rowData data for ag-grid\r\n * @param totalCount total count records\r\n * \r\n * @example\r\n * <pre><code>\r\n afterLoadData = (options, rowData, totalCount) => {\r\n if (options.skip === 0 && rowData.length > 0) {\r\n gridApi.columnController.autoSizeAllColumns()\r\n }\r\n }\r\n * </code></pre>\r\n */\r\n afterLoadData?: (\r\n options: OdataQueryExtendOptions,\r\n rowData: any[],\r\n totalCount: number\r\n ) => void;\r\n /**\r\n * Callback for catch error\r\n */\r\n setError?: (\r\n error: any,\r\n params: IGetRowsParams | IServerSideGetRowsParams\r\n ) => void;\r\n /**\r\n * List of columns by id/field are case sensitive for build odata query\r\n */\r\n caseSensitiveColumns?: string[];\r\n /**\r\n * Use for specified column custom filter implementation\r\n * <pre><code>\r\n customFilters: {\r\n \"customer\": (colName,col,isCaseSensitiveStringFilter,provider) =>{\r\n return provider.odataOperator.in(\r\n colName,\r\n col.values\r\n )\r\n }\r\n }\r\n */\r\n customFilters?: {\r\n [index: string]: (\r\n colName: string,\r\n col: any,\r\n isCaseSensitiveStringFilter: boolean,\r\n provider: OdataProvider\r\n ) => string;\r\n };\r\n}\r\n\r\ndeclare interface CancelablePromise {\r\n promise: Promise<any>;\r\n cancel: () => void;\r\n}\r\nexport class OdataProvider implements OdataProviderOptions {\r\n /**\r\n * Function for call odata api\r\n */\r\n callApi!: (query: string) => Promise<any>;\r\n /**\r\n * Name of field contain count of record results in grouping odata query\r\n * @default childCount\r\n */\r\n groupCountFieldName: string = 'childCount';\r\n /**\r\n * Use in odata build query\r\n * @default false\r\n */\r\n isCaseSensitiveStringFilter: boolean = false;\r\n /**\r\n * Callback for extend odata query options for implement user logic\r\n */\r\n beforeRequest:\r\n | ((\r\n options: OdataQueryOptions,\r\n provider: OdataProvider,\r\n request: IGetRowsParams | IServerSideGetRowsRequest\r\n ) => void)\r\n | undefined;\r\n /**\r\n * Callback for pivot or group for aplly column ag-grid settings\r\n * @example\r\n * <pre><code>\r\n * beforeSetSecondaryColumns = secondaryColumns => {\r\n for (let i = 0; i < secondaryColumns.length; i++) {\r\n const col = secondaryColumns[i]\r\n if (col.children) {\r\n beforeSetSecondaryColumns(col.children)\r\n } else {\r\n //Aplly new setting for group dyncamic created column\r\n // col.cellClassRules = \r\n // col.valueFormatter = \r\n }\r\n }\r\n }\r\n * </pre></code>\r\n */\r\n beforeSetSecondaryColumns:\r\n | ((secondaryColDefs: (ColDef | ColGroupDef)[]) => void)\r\n | undefined;\r\n /**\r\n * Callback invoked after load data\r\n * @param options odata provider options\r\n * @param rowData data for ag-grid\r\n * @param totalCount total count records\r\n * \r\n * @example\r\n * <pre><code>\r\n afterLoadData = (options, rowData, totalCount) => {\r\n if (options.skip === 0 && rowData.length > 0) {\r\n gridApi.columnController.autoSizeAllColumns()\r\n }\r\n }\r\n * </code></pre>\r\n */\r\n afterLoadData:\r\n | ((\r\n options: OdataQueryExtendOptions,\r\n rowData: any[],\r\n totalCount: number\r\n ) => void)\r\n | undefined;\r\n /**\r\n * Callback for catch error\r\n */\r\n setError:\r\n | ((error: any, params: IGetRowsParams | IServerSideGetRowsParams) => void)\r\n | undefined;\r\n /**\r\n * List of columns by id/field are case sensitive for build odata query\r\n */\r\n caseSensitiveColumns?: string[];\r\n /**\r\n * Use for specified column custom filter implementation\r\n * <pre><code>\r\n customFilters: {\r\n \"customer\": (colName,col,isCaseSensitiveStringFilter,provider) =>{\r\n return provider.odataOperator.in(\r\n colName,\r\n col.values\r\n )\r\n }\r\n }\r\n */\r\n customFilters?: {\r\n [index: string]: (\r\n colName: string,\r\n col: any,\r\n isCaseSensitiveStringFilter: boolean,\r\n provider: OdataProvider\r\n ) => string;\r\n };\r\n cancelPromice: CancelablePromise;\r\n constructor(options: OdataProviderOptions) {\r\n Object.assign(this, options);\r\n if (this.callApi == null) {\r\n throw new Error('callApi must be specified');\r\n }\r\n if (typeof this.callApi !== 'function') {\r\n throw new Error('callApi must be a function');\r\n }\r\n if (\r\n this.beforeRequest != null &&\r\n typeof this.beforeRequest !== 'function'\r\n ) {\r\n throw new Error('beforeRequest must be a function');\r\n }\r\n if (\r\n this.afterLoadData != null &&\r\n typeof this.afterLoadData !== 'function'\r\n ) {\r\n throw new Error('afterLoadData must be a function');\r\n }\r\n if (this.setError != null && typeof this.setError !== 'function') {\r\n throw new Error('setError must be a function');\r\n }\r\n this.cancelPromice = this.createCancelablePromise();\r\n }\r\n\r\n /**Creator a cancelable Promise */\r\n createCancelablePromise = (): CancelablePromise => {\r\n let cancel: any;\r\n const pr = new Promise((_, reject) => {\r\n cancel = reject;\r\n }).catch(() => {});\r\n return {\r\n promise: pr,\r\n cancel,\r\n };\r\n };\r\n /**Odata query operations */\r\n odataOperator: any = {\r\n // Logical\r\n equals: (col: string, value1: string): string => `${col} eq ${value1}`,\r\n blank: (col: string, value1: string): string => `(${col} eq ${value1} or ${col} eq null)`,\r\n notBlank: (col: string, value1: string): string => `(${col} ne ${value1} and ${col} ne null)`,\r\n blankDate: (col: string, value1: string): string => `${col} eq null`,\r\n notBlankDate: (col: string, value1: string): string => `${col} ne null`,\r\n notEqual: (col: string, value1: string): string => `${col} ne ${value1}`,\r\n lessThan: (col: string, value1: string): string => `${col} lt ${value1}`,\r\n lessThanOrEqual: (col: string, value1: string): string =>\r\n `${col} le ${value1}`,\r\n greaterThan: (col: string, value1: string): string => `${col} gt ${value1}`,\r\n greaterThanOrEqual: (col: string, value1: string): string =>\r\n `${col} ge ${value1}`,\r\n inRange: (col: string, value1: string, value2: any): string =>\r\n `(${col} ge ${value1} and ${col} le ${value2})`,\r\n // String\r\n equalsStr: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )} eq ${this.ifTolower(value1, isCaseSensitiveStringFilter)}`,\r\n notEqualStr: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )} ne ${this.ifTolower(value1, isCaseSensitiveStringFilter)}`,\r\n contains: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `contains(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)})`,\r\n notContains: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `contains(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)}) eq false`,\r\n startsWith: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `startswith(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)}) eq true`,\r\n endsWith: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `endswith(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)}) eq true`,\r\n inStr: (\r\n col: string,\r\n values: string[],\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `${this.ifTolowerCol(col, isCaseSensitiveStringFilter)} in (${values\r\n .map(\r\n (x) =>\r\n `'${this.ifTolower(this.encode(x), isCaseSensitiveStringFilter)}'`\r\n )\r\n .join()})`,\r\n in: (col: string, values: string[]) =>\r\n `${col} in (${values.map((x) => `${this.encode(x)}`).join()})`,\r\n notIn: (col: string, values: string[]) =>\r\n `not (${col} in (${values.map((x) => `${x}`).join()}))`,\r\n // Date\r\n trunc: (col: string): string => `date(${col})`,\r\n };\r\n\r\n /**\r\n * Apply tolower for column in odata syntax\r\n * @param col column name\r\n * @param isCaseSensitiveStringFilter need apply tolower\r\n */\r\n ifTolowerCol = (col: string, isCaseSensitiveStringFilter: boolean): string =>\r\n isCaseSensitiveStringFilter ? col : `tolower(${col})`;\r\n\r\n /**\r\n *\r\n * @param value string value\r\n * @param isCaseSensitiveStringFilter need apply tolower\r\n */\r\n ifTolower = (value: string, isCaseSensitiveStringFilter: boolean): string =>\r\n isCaseSensitiveStringFilter ? value : value ? value.toLowerCase() : value;\r\n /**\r\n * Odata aggregation operations\r\n */\r\n odataAggregation: any = {\r\n // Logical\r\n sum: (col: string, asField?: any): string =>\r\n `${col} with sum as ${col || asField}`,\r\n min: (col: string, asField?: any): string =>\r\n `${col} with min as ${col || asField}`,\r\n max: (col: string, asField?: any): string =>\r\n `${col} with max as ${col || asField}`,\r\n avg: (col: string, asField?: any): string =>\r\n `${col} with average as ${col || asField}`,\r\n count: (col: string, asField?: any): string =>\r\n `$count as ${col || asField}`,\r\n };\r\n /**\r\n * Odata query builder\r\n * @param options parameter for odata query\r\n */\r\n toQuery = (options: OdataQueryExtendFull): string => {\r\n let path: string[] = [];\r\n if (options) {\r\n path.push('$count=true');\r\n }\r\n if (options.skip) {\r\n path.push(`$skip=${options.skip}`);\r\n }\r\n if (options.top) {\r\n path.push(`$top=${options.top}`);\r\n }\r\n if (options.sort && options.sort.length > 0) {\r\n path.push('$orderby=' + options.sort.join(','));\r\n }\r\n if (options.filter && options.filter.length > 0) {\r\n path.push('$filter=' + options.filter.join(' and '));\r\n }\r\n if (options.apply && options.apply.length > 0) {\r\n path.push('$apply=' + options.apply.join('/'));\r\n }\r\n if (options.expand && options.expand.length > 0) {\r\n path.push('$expand=' + options.expand.join(','));\r\n }\r\n if (options.select && options.select.length > 0) {\r\n path.push('$select=' + options.select.join(','));\r\n }\r\n let query: string = '';\r\n if (path.length > 0) {\r\n var defaultFilters = path.filter((x: any) => {\r\n if (\r\n x.indexOf('$count') >= 0 ||\r\n x.indexOf('$top') >= 0 ||\r\n x.indexOf('$orderby') >= 0 ||\r\n x.indexOf('$apply') >= 0 ||\r\n x.indexOf('$expand') >= 0 ||\r\n x.indexOf('$select') >= 0\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (defaultFilters && defaultFilters.length > 0) {\r\n query = '?' + defaultFilters.join('&');\r\n }\r\n var customFilters = path.filter(function (obj) {\r\n return defaultFilters.indexOf(obj) == -1;\r\n });\r\n if (customFilters && customFilters.length > 0) {\r\n if (customFilters.length == 1) query = query + '&' + customFilters;\r\n else query = query + '&' + customFilters.join('and');\r\n }\r\n }\r\n query = query.replace('and$filter=', '&filter=');\r\n return query;\r\n };\r\n /**\r\n * Add quotes for string value\r\n * @param value string value\r\n */\r\n encode = (value: string): string =>\r\n this.isStrVal(value) ? replaceAll(value, \"'\", \"''\") : value;\r\n /**\r\n * Conctat to date a time for create datetime format for odata query\r\n * @param value date string\r\n */\r\n toDateTime = (value: string): string | null => {\r\n const dt = new Date(value);\r\n if (isNaN(dt.getTime())) return null;\r\n const dt1 = new Date(\r\n Date.UTC(dt.getFullYear(), dt.getMonth(), dt.getDate())\r\n );\r\n return dt1.toISOString().split('T')[0]; //dt1.toISOString();\r\n };\r\n /**\r\n *\r\n * @param colName columnName\r\n * @returns is CaseSensitive for column\r\n */\r\n private getIsNeedCaseSensitive = (colName: string) => {\r\n if (\r\n !this.isCaseSensitiveStringFilter &&\r\n this.caseSensitiveColumns &&\r\n this.caseSensitiveColumns.length > 0\r\n ) {\r\n return this.caseSensitiveColumns.indexOf(colName) >= 0;\r\n }\r\n return this.isCaseSensitiveStringFilter;\r\n };\r\n /**\r\n * Convert ag-grid column filter to odata query\r\n * @param colName columnName\r\n * @param col ag-grid column\r\n */\r\n private getFilterOdata = (colName: string, col: any): string => {\r\n const me = this;\r\n const isCaseSensitiveStringFilter = me.getIsNeedCaseSensitive(colName);\r\n const customFilter = me.customFilters && me.customFilters[colName];\r\n colName = replaceAll(colName, '.', '/');\r\n colName = me.getWrapColumnName(colName);\r\n if (customFilter) {\r\n return customFilter(colName, col, isCaseSensitiveStringFilter, me);\r\n } else {\r\n switch (col.filterType) {\r\n case 'number':\r\n return me.odataOperator[col.type](colName, col.filter, col.filterTo);\r\n case 'text': {\r\n let operatorName = col.type;\r\n const filter = me.encode(col.filter) || '';\r\n // let filterTo = me.encode(col.filterTo);\r\n if (\r\n (operatorName === 'equals' || operatorName === 'notEqual') &&\r\n !isCaseSensitiveStringFilter\r\n ) {\r\n operatorName += 'Str';\r\n }\r\n return me.odataOperator[operatorName](\r\n colName,\r\n `'${filter}'`,\r\n isCaseSensitiveStringFilter\r\n );\r\n }\r\n case 'date':\r\n if(col.type == \"blank\"){\r\n return me.odataOperator[\"blankDate\"](colName, col.filter, col.filterTo);\r\n }\r\n else if(col.type == \"notBlank\"){\r\n return me.odataOperator[\"notBlankDate\"](colName, col.filter, col.filterTo);\r\n }\r\n else if (\r\n col.dateFrom != null &&\r\n me.toDateTime(col.dateFrom) != null &&\r\n (col.dateTo == null ||\r\n (col.dateTo != null && me.toDateTime(col.dateTo) != null))\r\n ) {\r\n return me.odataOperator[col.type](\r\n colName,\r\n `${me.toDateTime(col.dateFrom)}`,\r\n `${me.toDateTime(col.dateTo)}`\r\n );\r\n }\r\n break;\r\n case 'set':\r\n return col.values.length > 0\r\n ? me.odataOperator.inStr(\r\n colName,\r\n col.values,\r\n isCaseSensitiveStringFilter\r\n )\r\n : '';\r\n default:\r\n break;\r\n }\r\n }\r\n return '';\r\n };\r\n\r\n /**\r\n * Extract value from record by path to field\r\n * @param field path to column value\r\n * @param obj record\r\n */\r\n private getValue(field: string, obj: any): any {\r\n const paths = field.split('.');\r\n if (paths.length === 1) {\r\n return obj[field];\r\n } else {\r\n return paths.reduce((object, path) => {\r\n return (object || {})[path]; // Oliver Steele's pattern\r\n }, obj);\r\n }\r\n }\r\n\r\n /**\r\n * Caclulate pivot data for ag-grid from odata\r\n * @param pivotCols pivot columns\r\n * @param rowGroupCols row group columns\r\n * @param valueCols value columns\r\n * @param data odata result\r\n * @param countField count field name\r\n */\r\n private getPivot = (\r\n pivotCols: ColumnVO[],\r\n rowGroupCols: ColumnVO[],\r\n valueCols: ColumnVO[],\r\n data: any[],\r\n countField: string\r\n ): PivotResultDat => {\r\n // assume 1 pivot col and 1 value col for this example\r\n const me = this;\r\n const pivotData: any[] = [];\r\n const aggColsList: any[] = [];\r\n\r\n const colKeyExistsMap: any = {};\r\n\r\n const secondaryColDefs: any[] = [];\r\n const secondaryColDefsMap: any = {};\r\n\r\n data.forEach(function (item) {\r\n var pivotValues: string[] = [];\r\n pivotCols.forEach(function (pivotCol) {\r\n var pivotField = pivotCol.id;\r\n var pivotValue = me.getValue(pivotField, item);\r\n if (\r\n pivotValue !== null &&\r\n pivotValue !== undefined &&\r\n pivotValue.toString\r\n ) {\r\n pivotValues.push(pivotValue.toString());\r\n } else {\r\n pivotValues.push('-');\r\n }\r\n });\r\n\r\n // var pivotValue = item[pivotField].toString();\r\n var pivotItem: any = {};\r\n\r\n valueCols.forEach(function (valueCol) {\r\n var valField = valueCol.id;\r\n var colKey = createColKey(pivotValues, valField);\r\n\r\n var value = me.getValue(valField, item);\r\n pivotItem[colKey] = value;\r\n\r\n if (!colKeyExistsMap[colKey]) {\r\n addNewAggCol(colKey, valueCol);\r\n addNewSecondaryColDef(colKey, pivotValues, valueCol);\r\n colKeyExistsMap[colKey] = true;\r\n }\r\n });\r\n if (countField) {\r\n pivotItem[countField] = me.getValue(countField, item);\r\n }\r\n\r\n rowGroupCols.forEach(function (rowGroupCol) {\r\n var rowGroupField = rowGroupCol.id.split('.')[0];\r\n pivotItem[rowGroupField] = item[rowGroupField];\r\n });\r\n\r\n pivotData.push(pivotItem);\r\n });\r\n\r\n function addNewAggCol(colKey: string, valueCol: ColumnVO): void {\r\n var newCol = {\r\n id: colKey,\r\n field: colKey,\r\n aggFunc: valueCol.aggFunc,\r\n };\r\n aggColsList.push(newCol);\r\n }\r\n\r\n function addNewSecondaryColDef(\r\n colKey: any,\r\n pivotValues: any,\r\n valueCol: any\r\n ) {\r\n var parentGroup: any = null;\r\n\r\n var keyParts: any = [];\r\n\r\n pivotValues.forEach(function (pivotValue: any) {\r\n keyParts.push(pivotValue);\r\n var colKey = createColKey(keyParts);\r\n var groupColDef: any = secondaryColDefsMap[colKey];\r\n if (!groupColDef) {\r\n groupColDef = {\r\n groupId: colKey,\r\n headerName: pivotValue,\r\n children: [],\r\n };\r\n secondaryColDefsMap[colKey] = groupColDef;\r\n if (parentGroup) {\r\n parentGroup.children.push(groupColDef);\r\n } else {\r\n secondaryColDefs.push(groupColDef);\r\n }\r\n }\r\n parentGroup = groupColDef;\r\n });\r\n\r\n parentGroup.children.push({\r\n colId: colKey,\r\n headerName: valueCol.aggFunc + '(' + valueCol.displayName + ')',\r\n field: colKey,\r\n suppressMenu: true,\r\n sortable: false,\r\n });\r\n }\r\n\r\n function createColKey(pivotValues: string[], valueField?: string): string {\r\n var result = pivotValues.join('|');\r\n if (valueField !== undefined) {\r\n result += '|' + valueField;\r\n }\r\n result = replaceAll(result, '.', '*');\r\n return result;\r\n }\r\n\r\n return {\r\n data: pivotData,\r\n aggCols: aggColsList,\r\n secondaryColDefs: secondaryColDefs,\r\n };\r\n };\r\n\r\n /**\r\n *\r\n * @param rowData array odata result\r\n * @param rowGroupCols row group columns\r\n * @param groupKeys what groups the user is viewing\r\n * @param countField count field name\r\n */\r\n private buildGroupsFromData = (\r\n rowData: any[],\r\n rowGroupCols: ColumnVO[],\r\n groupKeys: string[],\r\n countField: string\r\n ): any[] => {\r\n const me = this;\r\n let rowGroupCol = rowGroupCols[groupKeys.length];\r\n let field = rowGroupCol.id;\r\n let mappedRowData = me.groupBy(rowData, field);\r\n let groups: any = [];\r\n\r\n me.iterateObject(mappedRowData, function (key, rowData) {\r\n var groupItem = me.aggregateList(rowData, countField);\r\n groupItem[field] = key;\r\n groups.push(groupItem);\r\n });\r\n return groups;\r\n };\r\n\r\n /**\r\n * Internal function for execute callback function for each property of object\r\n * @param object object contained odata grouped result\r\n * @param callback function do somthing\r\n */\r\n private iterateObject = (\r\n object: any,\r\n callback: (key: string, rowData: any[]) => void\r\n ): void => {\r\n if (!object) {\r\n return;\r\n }\r\n const keys = Object.keys(object);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n const value = object[key];\r\n callback(key, value);\r\n }\r\n };\r\n\r\n /**\r\n * Prepeare grouped data\r\n * @param rowData array odata result\r\n * @param field grouping field\r\n */\r\n private groupBy = (rowData: any[], field: string): any => {\r\n var result: any = {};\r\n const me = this;\r\n rowData.forEach(function (item) {\r\n var key = me.getValue(field, item);\r\n var listForThisKey = result[key];\r\n if (!listForThisKey) {\r\n listForThisKey = [];\r\n result[key] = listForThisKey;\r\n }\r\n listForThisKey.push(item);\r\n });\r\n return result;\r\n };\r\n\r\n /**\r\n * Calculate total count records in group\r\n * @param rowData array odata result data\r\n * @param countField field contained count of all records\r\n */\r\n private aggregateList = (rowData: any[], countField: string): any => {\r\n var result: any = {};\r\n rowData.forEach((row) => {\r\n if (countField && row[countField] != null) {\r\n const totalCount = (result[countField] || 0) + (row[countField] || 0);\r\n delete row[countField];\r\n result[countField] = totalCount;\r\n }\r\n result = Object.assign(result, row);\r\n });\r\n return result;\r\n };\r\n\r\n /**\r\n * Calculate distinct values for input field from Odata api\r\n * @param field The field of the row to get the cells data from \r\n * @param callback The function for return distinct values for input field\r\n * @param beforeRequest The function for customize request\r\n * @example \r\n * <pre><code>\r\n * const setFilterValuesFuncParams = params => {\r\n * const me = this\r\n * const col = params.colDef.field\r\n * const storeName = me.getStoreName(col)\r\n * const callback = data => {\r\n * if (data) {\r\n * me.setState({ [storeName]: data })\r\n * params.success(data)\r\n * }\r\n * }\r\n * odataProviderInstance.getFilterValuesParams(params.colDef.field, callback)\r\n * }\r\n * \r\n * ///....\r\n * <AgGridColumn\r\n field=\"product\"\r\n headerName={'PRODUCT'}\r\n filter=\"agSetColumnFilter\"\r\n // rowGroup\r\n // enablePivot\r\n enableRowGroup\r\n filterParams={{\r\n values: setFilterValuesFuncParams,\r\n newRowsAction: 'keep'\r\n }}\r\n // filterParams={{caseSensitive: true}}\r\n />\r\n * </code></pre>\r\n */\r\n getFilterValuesParams = (\r\n field: string,\r\n callback: (data: any[]) => void,\r\n beforeRequest: (options: OdataQueryExtendFull) => void | undefined\r\n ): void => {\r\n const me = this;\r\n const options: OdataQueryExtendFull = {\r\n apply: [`groupby((${me.getWrapColumnName(field)}))`],\r\n };\r\n if (beforeRequest) {\r\n beforeRequest(options);\r\n }\r\n me.callApi(me.toQuery(options)).then((x) => {\r\n if (x) {\r\n let values = me.getOdataResult(x);\r\n callback(values.map((y: any) => y[field]));\r\n }\r\n });\r\n };\r\n /**\r\n * Detect is string value\r\n * @param value\r\n */\r\n isStrVal = (value: any): boolean => typeof value === 'string';\r\n /**\r\n * Extartc values from odata response\r\n * @param response\r\n */\r\n private getOdataResult = (response: any): any =>\r\n Array.isArray(response) ? response : response.value;\r\n /**\r\n * Endocing column name to odata notation\r\n * @param colName column name\r\n */\r\n private getWrapColumnName = (colName: string | undefined): string =>\r\n colName ? replaceAll(colName, '.', '/') : '';\r\n /**\r\n * grid calls this to get rows for IServerSideDatasource\r\n * @param params ag-grid details for the request\r\n */\r\n /**\r\n * grid calls this to get rows implement\r\n * @param params ag-grid details for the request\r\n */\r\n public getRows(params: IGetRowsParams | IServerSideGetRowsParams): void {\r\n const me = this;\r\n const childCount = me.groupCountFieldName;\r\n const isServerMode = 'request' in params;\r\n const request = isServerMode\r\n ? (params as IServerSideGetRowsParams).request\r\n : (params as IGetRowsParams);\r\n const requestSrv = request as IServerSideGetRowsRequest;\r\n\r\n const pivotActive = !isServerMode\r\n ? false\r\n : requestSrv.pivotMode &&\r\n requestSrv.pivotCols.length > 0 &&\r\n requestSrv.valueCols.length > 0;\r\n\r\n if (!pivotActive) {\r\n let fn = (params as any).columnApi.setPivotResultColumns;\r\n if (fn != null) {\r\n // if ((params as any).columnApi.isPivotMode()) {\r\n (params as any).columnApi.setPivotResultColumns([]);\r\n // }\r\n } else {\r\n (params as any).columnApi.setSecondaryColumns([]);\r\n }\r\n }\r\n const options = me.getOdataOptions(params);\r\n const query = me.toQuery(options);\r\n if (\r\n options.skip === 0 &&\r\n (!isServerMode ||\r\n (isServerMode &&\r\n (params as IServerSideGetRowsParams).parentNode.level === -1))\r\n ) {\r\n me.cancelPromice.cancel();\r\n me.cancelPromice = me.createCancelablePromise();\r\n }\r\n Promise.race([me.cancelPromice.promise, me.callApi(query)]).then(\r\n async (x) => {\r\n if (!x) {\r\n // params.failCallback();\r\n return;\r\n } else {\r\n const values = me.getOdataResult(x);\r\n if (!pivotActive) {\r\n if (!options.apply) {\r\n me.setResult(\r\n params,\r\n isServerMode,\r\n values,\r\n x['@odata.count'] || x[0]?.totalCount\r\n );\r\n if (this.afterLoadData) {\r\n this.afterLoadData(\r\n options,\r\n values,\r\n x['@odata.count'] || x[0]?.totalCount\r\n );\r\n }\r\n } else {\r\n let count = values.length;\r\n if (count === options.top && options.skip === 0) {\r\n // If received grouped count of value large than requested then request total count of values\r\n me.callApi(query + '/aggregate($count as count)').then((y) => {\r\n count = me.getOdataResult(y)[0].count;\r\n me.setResult(params, isServerMode, values, count);\r\n });\r\n } else {\r\n if (options.skip != null && options.skip > 0) {\r\n count = null;\r\n }\r\n me.setResult(params, isServerMode, values, count);\r\n if (this.afterLoadData) {\r\n this.afterLoadData(options, values, count);\r\n }\r\n }\r\n }\r\n } else {\r\n let rowData = me.getOdataResult(x);\r\n // Check count\r\n if (\r\n rowData.length === options.top &&\r\n options.skip === 0 &&\r\n requestSrv.groupKeys.length === 0\r\n ) {\r\n let eof = false;\r\n while (!eof) {\r\n options.skip += options.top || 0;\r\n const subQuery = me.toQuery(options);\r\n const newRowData = await me.callApi(subQuery);\r\n if (!newRowData) {\r\n //params.failCallback();\r\n return;\r\n }\r\n eof = newRowData.length !== options.top;\r\n rowData = rowData.concat(newRowData);\r\n }\r\n }\r\n const pivotResult = me.getPivot(\r\n requestSrv.pivotCols,\r\n requestSrv.rowGroupCols,\r\n requestSrv.valueCols,\r\n rowData,\r\n childCount\r\n );\r\n rowData = pivotResult.data;\r\n const secondaryColDefs = pivotResult.secondaryColDefs;\r\n rowData = me.buildGroupsFromData(\r\n rowData,\r\n requestSrv.rowGroupCols,\r\n requestSrv.groupKeys,\r\n childCount\r\n );\r\n const totalCount =\r\n requestSrv.groupKeys.length === 0\r\n ? rowData.length\r\n : rowData.length === options.top\r\n ? null\r\n : rowData.length;\r\n // if (totalCount > (options.top || 0)) {\r\n // const serverSideBlock = (params as any).parentNode.rowModel\r\n // .rowNodeBlockLoader.blocks[0];\r\n // serverSideBlock.rowNodeCacheParams.blockSize = totalCount;\r\n // serverSideBlock.endRow = serverSideBlock.startRow + totalCount;\r\n // serverSideBlock.createRowNodes();\r\n // }\r\n me.setResult(params, isServerMode, rowData, totalCount);\r\n if (this.afterLoadData) {\r\n this.afterLoadData(options, rowData, totalCount);\r\n }\r\n if (requestSrv.groupKeys.length === 0) {\r\n if (this.beforeSetSecondaryColumns) {\r\n this.beforeSetSecondaryColumns(secondaryColDefs);\r\n }\r\n let fn = (params as any).columnApi.setPivotResultColumns;\r\n if (fn) {\r\n (params as any).columnApi.setPivotResultColumns(\r\n secondaryColDefs\r\n );\r\n } else {\r\n (params as any).columnApi.setSecondaryColumns(secondaryColDefs);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n (err) => {\r\n me.setResult(params, isServerMode, [], 0);\r\n if (this.setError) {\r\n this.setError(err, params);\r\n }\r\n }\r\n );\r\n }\r\n /**\r\n * Set result\r\n * @param params ag-grid details for the request\r\n * @param isServerMode detect type of params\r\n * @param rowsThisBlock data of the request\r\n * @param rowCount count of total result\r\n */\r\n private setResult = (\r\n params: IGetRowsParams | IServerSideGetRowsParams,\r\n isServerMode: boolean,\r\n rowsThisBlock: any[],\r\n rowCount?: number\r\n ): void => {\r\n if (isServerMode) {\r\n (params as IServerSideGetRowsParams).success({\r\n rowData: rowsThisBlock,\r\n rowCount: rowCount,\r\n });\r\n } else {\r\n (params as IGetRowsParams).successCallback(rowsThisBlock, rowCount);\r\n }\r\n };\r\n /**\r\n * Generate odata options for build query from ag-grid request\r\n * @param params ag-grid details for the request\r\n */\r\n getOdataOptions = (\r\n params: IGetRowsParams | IServerSideGetRowsParams\r\n ): OdataQueryExtendFull => {\r\n const me = this;\r\n const options: OdataQueryExtendFull = {};\r\n const isServerMode = 'request' in params;\r\n const request = isServerMode\r\n ? (params as IServerSideGetRowsParams).request\r\n : (params as IGetRowsParams);\r\n const childCount = me.groupCountFieldName;\r\n if (this.beforeRequest) {\r\n this.beforeRequest(options, this, request);\r\n }\r\n if (request.sortModel.length > 0) {\r\n const sort = options.sort || [];\r\n for (let i = 0; i < request.sortModel.length; i++) {\r\n const col = request.sortModel[i];\r\n let colName = me.getWrapColumnName(col.colId);\r\n if (col.sort !== 'asc') {\r\n colName += ' desc';\r\n }\r\n sort.push(colName);\r\n }\r\n options.sort = sort;\r\n }\r\n\r\n const filter = options.filter || [];\r\n for (const colName in request.filterModel) {\r\n if (request.filterModel.hasOwnProperty(colName)) {\r\n const col = request.filterModel[colName];\r\n let colFilter = '';\r\n if (!col.operator) {\r\n colFilter = me.getFilterOdata(colName, col);\r\n if (colFilter) {\r\n filter.push(colFilter);\r\n }\r\n } else {\r\n const condition1 = me.getFilterOdata(colName, col.condition1);\r\n const condition2 = me.getFilterOdata(colName, col.condition2);\r\n if (condition1 && condition2) {\r\n colFilter = `(${condition1} ${col.operator.toLowerCase()} ${condition2})`;\r\n filter.push(colFilter);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let pivotActive = false;\r\n\r\n const apply = options.apply || [];\r\n if (isServerMode) {\r\n const requestSrv = request as IServerSideGetRowsRequest;\r\n pivotActive =\r\n requestSrv.pivotMode &&\r\n requestSrv.pivotCols.length > 0 &&\r\n requestSrv.valueCols.length > 0;\r\n if (requestSrv.rowGroupCols.length > 0) {\r\n const filterGroupBy: string[] = [];\r\n if (requestSrv.groupKeys.length < requestSrv.rowGroupCols.length) {\r\n // If request only groups\r\n for (let idx = 0; idx < requestSrv.groupKeys.length; idx++) {\r\n const colValue = requestSrv.groupKeys[idx];\r\n const condition = `${me.getWrapColumnName(\r\n requestSrv.rowGroupCols[idx].field\r\n )} eq ${\r\n (me.isStrVal(colValue) ? \"'\" : '') +\r\n me.encode(colValue) +\r\n (me.isStrVal(colValue) ? \"'\" : '')\r\n }`;\r\n filterGroupBy.push(condition);\r\n }\r\n if (filterGroupBy.length > 0 || filter.length > 0) {\r\n // Filters must by first\r\n apply.push(`filter(${filterGroupBy.concat(filter).join(' and ')})`);\r\n }\r\n\r\n const aggregate: string[] = [];\r\n if (childCount) {\r\n aggregate.push(me.odataAggregation.count(childCount));\r\n }\r\n if (requestSrv.valueCols.length > 0) {\r\n for (let idx = 0; idx < requestSrv.valueCols.length; idx++) {\r\n const colValue = requestSrv.valueCols[idx];\r\n colValue.aggFunc &&\r\n aggregate.push(\r\n me.odataAggregation[colValue.aggFunc](\r\n me.getWrapColumnName(colValue.field)\r\n )\r\n );\r\n }\r\n }\r\n let groups = [\r\n me.getWrapColumnName(\r\n requestSrv.rowGroupCols[requestSrv.groupKeys.length].field\r\n ),\r\n ];\r\n const sort = options.sort || [];\r\n const sortColOnly = sort.map((x) => x.split(' ')[0]);\r\n if (pivotActive) {\r\n groups = groups.concat(\r\n requestSrv.pivotCols.map((x) => me.getWrapColumnName(x.field))\r\n );\r\n groups.forEach((x) => {\r\n if (sortColOnly.indexOf(x) < 0) {\r\n sort.push(x);\r\n }\r\n });\r\n }\r\n options.sort = sort;\r\n apply.push(\r\n `groupby((${groups.join(',')})${\r\n aggregate.length > 0 ? `,aggregate(${aggregate.join(',')})` : ''\r\n })`\r\n );\r\n\r\n options.apply = apply;\r\n if (options.sort && options.sort.length > 0) {\r\n options.sort = options.sort.filter(\r\n (x) => groups.indexOf(x.split(' ')[0]) >= 0\r\n );\r\n }\r\n // delete options.sort;\r\n } else {\r\n // If request rowData by group filter\r\n for (let idx = 0; idx < requestSrv.groupKeys.length; idx++) {\r\n const colValue = requestSrv.groupKeys[idx];\r\n const condition = `${me.getWrapColumnName(\r\n requestSrv.rowGroupCols[idx].field\r\n )} eq ${\r\n (me.isStrVal(colValue) ? \"'\" : '') +\r\n me.encode(colValue) +\r\n (me.isStrVal(colValue) ? \"'\" : '')\r\n }`;\r\n filter.push(condition);\r\n }\r\n }\r\n }\r\n }\r\n if (filter.length > 0) {\r\n options.filter = filter;\r\n }\r\n if (apply.length > 0) {\r\n options.apply = apply;\r\n delete options.filter;\r\n delete options.expand;\r\n delete options.select;\r\n // options.sort = null;\r\n }\r\n options.skip = request.startRow;\r\n options.top = (request.endRow || 0) - (request.startRow || 0);\r\n\r\n if (!options.apply && options.skip === 0) {\r\n options.count = true;\r\n }\r\n return options;\r\n };\r\n /**\r\n * Generate odata query from ag-grid request\r\n * @param params ag-grid details for the request\r\n */\r\n getOdataQuery = (params: IGetRowsParams | IServerSideGetRowsParams): string =>\r\n this.toQuery(this.getOdataOptions(params));\r\n}\r\n\r\nexport class OdataProviderClient extends OdataProvider {\r\n public override getRows(params: IServerSideGetRowsParams) {\r\n super.getRows(params);\r\n }\r\n}\r\nexport class OdataServerSideProvider extends OdataProvider {\r\n public override getRows(params: IServerSideGetRowsParams): void {\r\n super.getRows(params);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'lib-button-renderer',\r\n template: `\r\n <button class=\"btn-actions\" type=\"button\" (click)=\"onClick($event)\" [attr.data-title]=\"params.tooltip\">\r\n <span *ngIf=\"icon && !label\"> <i class=\"{{ icon }}\"></i> </span>\r\n <span *ngIf=\"!icon && label\">{{ label }}</span>\r\n <span *ngIf=\"icon && label\"><i class=\"{{ icon }}\"></i> {{ label }}</span>\r\n </button>\r\n `,\r\n standalone: false\r\n})\r\nexport class ButtonRendererComponent implements ICellRendererAngularComp {\r\n params: any;\r\n label: any;\r\n icon: any;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.label = this.params.label || null;\r\n this.icon = this.params.icon;\r\n }\r\n\r\n refresh(params?: any): boolean {\r\n return false;\r\n }\r\n\r\n onClick($event: any) {\r\n if (this.params.onClick instanceof Function) {\r\n // put anything into params u want pass into parents component\r\n const params = {\r\n event: $event,\r\n rowData: Object.assign({}, this.params.node.data, {\r\n buttonName: this.params.buttonName,\r\n buttonText: this.params.label,\r\n buttonIcon: this.params.icon,\r\n }),\r\n };\r\n this.params.onClick(params);\r\n }\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { ITooltipAngularComp } from 'ag-grid-angular';\r\nimport { ITooltipParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'tooltip-component',\r\n template: ` <div class=\"custom-tooltip\">\r\n <p>\r\n <span>{{ params.value }}</span>\r\n </p>\r\n </div>`,\r\n standalone: false\r\n})\r\nexport class CustomTooltip implements ITooltipAngularComp {\r\n constructor(private datePipe: DatePipe) {}\r\n public params!: { color: string } & ITooltipParams;\r\n agInit(params: { color: string } & ITooltipParams): void {\r\n this.params = params;\r\n params.value = params.valueFormatted;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'lib-dropdown-renderer',\r\n template: `\r\n <div class=\"dropdown\">\r\n <button type=\"button\" class=\"btn btn-white\" data-toggle=\"dropdown\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\">\r\n <span *ngFor='let data of dropDownData' class=\"dropdown-item\" (click)=\"onClick($event)\" [innerHTML]=\"data\"></span>\r\n </div>\r\n</div>\r\n `,\r\n standalone: false\r\n})\r\nexport class DropdownRenderer implements ICellRendererAngularComp {\r\n params: any;\r\n dropDownData:any;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.dropDownData=this.params.dropDownData?this.params.dropDownData.split(','):[]\r\n }\r\n\r\n refresh(params?: any): boolean {\r\n return false;\r\n }\r\n\r\n onClick($event: any) {\r\n if (this.params.onClick instanceof Function) {\r\n const params = {\r\n event: $event,\r\n rowData: Object.assign({}, this.params.node.data, {\r\n buttonName: $event.target.innerText,\r\n }),\r\n };\r\n console.log('Hit', params);\r\n this.params.onClick(params);\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'app-cell-data',\n template: `\n<span>\n {{ params.value }}\n</span>\n `,\n standalone: false\n})\nexport class CellRendererComponent implements ICellRendererAngularComp {\n params: any;\n agInit(params: any): void {\n this.params = params;\n }\n refresh(params?: any): boolean {\n return false;\n }\n}\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'app-fill-cell-data',\n template: `\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'dacStatus'\" [ngStyle]=\"{'background': rowData.dacIndicator? rowData.dacIndicator : '#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'poc'\" [ngStyle]=\"{'background': rowData.pocIndicator? rowData.pocIndicator:'#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'funding'\" [ngStyle]=\"{'background': rowData.fundingIndicator? rowData.fundingIndicator:'#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'layout'\" [ngStyle]=\"{'background': rowData.layoutIndicator? rowData.layoutIndicator:'#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"info-fill-cell text-white\" *ngIf=\"params.value && params.field === 'facilityName'\" [ngStyle]=\"{'background': 'var(--primary)'}\" >\n {{ params.value }}\n</span>\n<span class=\"info-fill-cell text-black\" *ngIf=\"params.value && params.field === 'aefirm'\" [ngStyle]=\"{'background': 'var(--gray-6)'}\" >\n {{ params.value }}\n</span>\n<span *ngIf=\"!params.value\">{{params.value}}</span>\n `,\n standalone: false\n})\nexport class FillCellRendererComponent implements ICellRendererAngularComp {\n params: any;\n rowData: any;\n agInit(params: any): void {\n this.params = params;\n this.rowData = params.data;\n }\n refresh(params?: any): boolean {\n return false;\n }\n}\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ValueFormatterParams } from 'ag-grid-community';\r\n\r\n@Injectable()\r\nexport class ColumnValueFormatter {\r\n constructor(private datePipe: DatePipe) {}\r\n public colValueFormatter(params: ValueFormatterParams, colType: string) {\r\n if (isNaN(+params.value)) {\r\n var dateWrapper = new Date(params.value);\r\n let isValidDate = !isNaN(dateWrapper.getDate());\r\n if (isValidDate && colType == 'date') {\r\n return this.datePipe.transform(params.value, 'MM-dd-yyyy');\r\n } else {\r\n return params.value;\r\n }\r\n }\r\n return params.value;\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n input,\r\n reflectComponentType,\r\n} from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport {\r\n ColDef,\r\n FirstDataRenderedEvent,\r\n GetContextMenuItemsParams,\r\n GetRowIdFunc,\r\n GetRowIdParams,\r\n GridApi,\r\n GridReadyEvent,\r\n MenuItemDef,\r\n PaginationChangedEvent,\r\n PaginationNumberFormatterParams,\r\n RowModelType,\r\n RowNode,\r\n ValueFormatterParams,\r\n} from 'ag-grid-community';\r\nimport { GridLibraryService } from './grid-library.service';\r\nimport { OdataServerSideProvider } from './helpers';\r\nimport { ButtonRendererComponent } from './renderer/button-renderer/button-renderer.component';\r\nimport { CustomTooltip } from './renderer/tooltip-renderer/custom-tooltip-renderer';\r\nimport { DropdownRenderer } from './renderer/dropdown-renderer/drop-down-renderer';\r\nimport { ColumnValueFormatter } from './formatters/column-value-formatter';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TokenSharingService } from './token-sharing.service';\r\nimport { DateHeaderComponent } from './renderer/date-header/date-header.component';\r\nimport { HeaderComponent } from 'ag-grid-community/dist/types/core/components/framework/componentTypes';\r\nimport { CellRendererComponent } from './renderer/cell-renderer/cell-renderer.component';\r\nimport { FillCellRendererComponent } from './renderer/fill-cell-renderer/fill-cell-renderer.component';\r\n\r\n@Component({\r\n selector: 'lib-basesite-shared-grid-lib',\r\n template: `\r\n <ag-grid-angular\r\n #agGrid\r\n style=\"width: 100%;height:98.2vh\"\r\n class=\"ag-theme-balham shared-grid-lib\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"rowData\"\r\n [rowSelection]=\"rowSelection\"\r\n [animateRows]=\"true\"\r\n (gridReady)=\"onGridReady($event)\"\r\n [pagination]=\"true\"\r\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\r\n [suppressPaginationPanel]=\"true\"\r\n [tooltipShowDelay]=\"tooltipShowDelay\"\r\n [tooltipHideDelay]=\"tooltipHideDelay\"\r\n [rowModelType]=\"rowModelType\"\r\n [cacheBlockSize]=\"cacheBlockSize\"\r\n [maxConcurrentDatasourceRequests]=\"1\"\r\n [blockLoadDebounceMillis]=\"100\"\r\n (columnVisible)=\"saveGridState($event)\"\r\n (columnPinned)=\"saveGridState($event)\"\r\n (columnResized)=\"saveGridState($event)\"\r\n (columnMoved)=\"saveGridState($event)\"\r\n (sortChanged)=\"onSortChangedEvent($event)\"\r\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\r\n [getContextMenuItems]=\"getContextMenuItems\"\r\n (selectionChanged)=\"onSelectionChanged($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\r\n [rowHeight]=\"rowHeight\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n >\r\n </ag-grid-angular>\r\n <!-- Custom pagination -->\r\n <div class=\"custom-pagination\">\r\n <div class=\"pagination-nav\">\r\n <button class=\"nav-btn\" (click)=\"onPreviousPage()\" [disabled]=\"isFirstPage\">\r\n <span class=\"nav-btn-prev\"></span>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of pageNumbers\">\r\n <span\r\n *ngIf=\"page !== '...'\"\r\n class=\"page-number\"\r\n [ngClass]=\"{'page-number--increased': typeof page === 'number' && +page > 99}\"\r\n [class.active]=\"page === currentPage\"\r\n (click)=\"goToPage(page)\"\r\n >\r\n {{ page }}\r\n </span>\r\n <span *ngIf=\"page === '...'\" class=\"ellipsis\">...</span>\r\n </ng-container>\r\n\r\n <button class=\"nav-btn\" (click)=\"onNextPage()\" [disabled]=\"isLastPage\">\r\n <span class=\"nav-btn-next\"></span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"pagination-info\">\r\n <span>{{ startRow }}-{{ endRow }} of {{ totalRows }} items</span>\r\n </div>\r\n </div>\r\n <ag-grid-angular\r\n #agGridHidden\r\n style=\"height:100vh; width:100%;display:none\"\r\n class=\"ag-theme-balham\"\r\n [rowData]=\"rowDataHidden\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [animateRows]=\"false\"\r\n [rowSelection]=\"'multiple'\"\r\n (gridReady)=\"onGridReadyExcel($event)\"\r\n [suppressScrollOnNewData]=\"true\"\r\n [cacheQuickFilter]=\"false\"\r\n >\r\n </ag-grid-angular>\r\n `,\r\n styles: [],\r\n standalone: false\r\n})\r\nexport class GridLibraryComponent implements OnInit, OnChanges, OnDestroy {\r\n //input params\r\n @Input() overrideColumnDefs: any;\r\n @Input() columnDefs: any;\r\n @Input() rowData: any;\r\n //@Input() pageSize: number = 20;\r\n @Input() paginationAutoPageSize = true;\r\n @Input() rowSelection: any = 'multiple';\r\n @Input() gridId: any;\r\n @Input() loggedInUser: any;\r\n @Input() siteId: any;\r\n @Input() enableServerSidePaging: boolean = false;\r\n @Input() serverDataUrl!: string;\r\n @Input() environment!: string;\r\n @Input() cacheBlockSize: number = 0;\r\n @Input() rowMultiSelectWithClick: boolean = false;\r\n @Input() floatingFilter: boolean = false;\r\n @Input() token!: string;\r\n @Input() userRoles: any[] = [];\r\n @Input() overlayNoRowsTemplate: any;\r\n @Input() rowHeight: number = 44;\r\n //event emitters\r\n @Output() btnClickHandler = new EventEmitter<any>();\r\n @Output() firstDataRendered = new EventEmitter<any>();\r\n @Output() filterChanged = new EventEmitter<any>();\r\n @Output() selectionChanged = new EventEmitter<any>();\r\n\r\n //viewChilds\r\n //@ViewChild('agGrid') agGrid!: AgGridAngular;\r\n //paramters\r\n initialColumnDef: any = [];\r\n rowDataHidden: any = [];\r\n gridColumnState: any;\r\n exportColumnsList: any = [];\r\n gridColumns: any[] = [];\r\n public tooltipShowDelay = 0;\r\n public tooltipHideDelay = 2000;\r\n public rowModelType: RowModelType = 'clientSide';\r\n //public gridPageSize: number = 0;\r\n private excelAPI!: GridApi;\r\n private gridAPI!: GridApi;\r\n private readonly _Design_Manager = 'Design Manager';\r\n private readonly _Integration_Lead = 'Integration Lead';\r\n private readonly _Tool_Owner = 'Tool Owner';\r\n private readonly _Area_Coordinator = 'Area Coordinator';\r\n private readonly _TiPm = 'TI PM'\r\n //unsubscribe subject\r\n private unsubscribe$ = new Subject<void>();\r\n\r\n //custom pagination properties\r\n private pageNumber: number=0;\r\n currentPage: number = 1;\r\n totalPages: number = 0;\r\n pageNumbers: (number | string)[] = [];\r\n isFirstPage: boolean = true;\r\n isLastPage: boolean = false;\r\n pageSize: number = 12;\r\n startRow: number = 0;\r\n endRow: number = 0;\r\n totalRows: number = 0;\r\n dataLoaded: boolean = false;;\r\n //custom pagination properties ends...\r\n\r\n constructor(\r\n private gridService: GridLibraryService,\r\n private formatterService: ColumnValueFormatter,\r\n private _tokenSharingService: TokenSharingService\r\n ) {\r\n this.gridStateLoaded$.subscribe(val => {\r\n if (val) {\r\n this.configureDataState();\r\n }\r\n })\r\n }\r\n\r\n onSortChangedEvent(e: any) {\r\n this.gridColumnState = this.gridAPI.getState();\r\n this.saveGridState(e);\r\n }\r\n\r\n saveGridState(e: any) {\r\n if (!this.overrideColumnDefs) {\r\n setTimeout(() => { this.onSaveGridColumnState(e); }, 2000)\r\n }\r\n }\r\n\r\n public defaultColDef: ColDef = {\r\n sortable: true,\r\n filter: true,\r\n tooltipComponent: CustomTooltip,\r\n };\r\n isInit: boolean = false;\r\n ngOnInit() {\r\n this.isInit = true;\r\n this._tokenSharingService.updateToken(this.token);\r\n\r\n if (this.enableServerSidePaging == true) {\r\n this.rowModelType = 'serverSide';\r\n this.rowData = '';\r\n } else {\r\n this.rowModelType = 'clientSide';\r\n }\r\n\r\n // this.gridPageSize = this.pageSize;\r\n this.cacheBlockSize = this.cacheBlockSize = 0 ? 100 : this.cacheBlockSize;\r\n this.gridService.setBaseUrl(this.environment);\r\n \r\n //this.getGridState();\r\n \r\n /*this.getColDef();*/\r\n \r\n }\r\n\r\n get isOverride() {\r\n return (!!this.overrideColumnDefs);\r\n }\r\n\r\n configureDataState() {\r\n if (this.isOverride) { \r\n this.overrideGridState(this.overrideColumnDefs);\r\n } else {\r\n this.gridAPI.resetColumnState();\r\n this.getGridState();\r\n //setTimeout(() => { this.setGridState(); }, 2000);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n this.gridStateLoaded = false;\r\n if (changes['userRoles']?.currentValue) {\r\n if (this.initialColumnDef?.length > 0 && this.userRoles?.length > 0) {\r\n this.columnDefs = this._mapColumnDef(this.initialColumnDef, this.userRoles);\r\n }\r\n }\r\n if (!this.isInit) {\r\n this._tokenSharingService.updateToken(this.token);\r\n }\r\n \r\n if (!this.colDefInit && (this.overrideColumnDefs == null || typeof this.overrideColumnDefs == \"string\")) { \r\n this.getColDef();\r\n\r\n } else if (this.overrideColumnDefs == null || typeof this.overrideColumnDefs == \"string\") {\r\n this.configureDataState();\r\n }\r\n }\r\n\r\n public paginationNumberFormatter: (\r\n params: PaginationNumberFormatterParams\r\n ) => string = (params: PaginationNumberFormatterParams) => {\r\n return '[' + params.value.toLocaleString() + ']';\r\n };\r\n colDefInit: boolean = false;\r\n getColDef() {\r\n if (this.gridId && this.loggedInUser) {\r\n this.gridService\r\n .getColDef(this.gridId)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any) => {\r\n if (response.status == 1) {\r\n this.initialColumnDef = response.result;\r\n let coldef: ColDef[] = this._mapColumnDef(response.result, this.userRoles).filter((column: any) => column);\r\n this.exportColumnsList = response.result;\r\n\r\n this.colDefInit = true;\r\n\r\n this.columnDefs = coldef;\r\n this.gridColumns = coldef;\r\n this.getGridState();\r\n \r\n // this.agGrid.gridOptions?.api?.setColumnDefs(coldef);\r\n \r\n } else {\r\n console.log('ColDef Read Error=>', response.message);\r\n }\r\n });\r\n } else {\r\n console.log('Please pass valid GridId and loggedIn user Id');\r\n }\r\n }\r\n\r\n private _getColumnVisiblityStatus(column: any, userRoles: any) {\r\n let isDacHidden;\r\n if (column.isButton === false) {\r\n isDacHidden = this.canViewDacStatus(userRoles, column.field);\r\n } else {\r\n isDacHidden = this.canCreateDac(userRoles, column.field);\r\n }\r\n\r\n const columnState: any = this.gridAPI?.getColumnDefs()?.find((col: any) => col.field == column.field);\r\n if (columnState && columnState.hide) {\r\n return columnState.hide || isDacHidden;\r\n }\r\n else {\r\n if(column.field === \"createDac\"){\r\n return !isDacHidden;\r\n }\r\n return !column.visible || isDacHidden;\r\n }\r\n }\r\n private _mapColumnDef(columns: any, userRoles: any) {\r\n return columns?.map((res: any) => {\r\n if (res.isButton === false) {\r\n if (res.columnType === 'checkbox') {\r\n return {\r\n field: res.field,\r\n headerName: res.title,\r\n sortable: false,\r\n tooltipField: res.field,\r\n resizable: true,\r\n headerCheckboxSelection: false,\r\n filterable: false,\r\n checkboxSelection: true,\r\n showDisabledCheckboxes: true,\r\n suppressFilter: true,\r\n suppressSorting: true,\r\n suppressMenu: true,\r\n width: 55,\r\n };\r\n } else if (res.columnType === 'dropdown') {\r\n return {\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n sortable: false,\r\n suppressFilter: true,\r\n suppressSorting: true,\r\n suppressMenu: true,\r\n tooltipField: res.field,\r\n cellRenderer: DropdownRenderer,\r\n cellRendererParams: {\r\n onClick: this.onBtnClick.bind(this),\r\n tooltip: res.tooltip,\r\n dropDownData: res.dropDownData,\r\n },\r\n onCellClicked: (e: any) => {\r\n e.node.setSelected(false);\r\n },\r\n width: 40,\r\n pinned: res.pinPosition,\r\n lockPinned: true,\r\n };\r\n } else if (res.columnType === 'date') {\r\n return {\r\n pinned: res.pinPosition,\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n sortable: true,\r\n tooltipField: res.field,\r\n floatingFilter: this.floatingFilter,\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n this.formatterService.colValueFormatter(\r\n params,\r\n res.columnType\r\n ),\r\n filterable: res.filterable,\r\n filter: 'agDateColumnFilter',\r\n //headerComponent: DateHeaderComponent, \r\n filterParams: {\r\n comparator: (\r\n filterLocalDateAtMidnight: any,\r\n cellValue: any\r\n ) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n const cellDate = new Date(dateAsString);\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }, buttons: ['reset'],\r\n },\r\n };\r\n\r\n } else if (res.columnType === 'fill') {\r\n return {\r\n pinned: res.pinPosition,\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n sortable: true,\r\n tooltipField: res.field,\r\n floatingFilter: this.floatingFilter,\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n this.formatterService.colValueFormatter(\r\n params,\r\n res.columnType\r\n ),\r\n cellRenderer: FillCellRendererComponent,\r\n cellRendererParams: {\r\n field: res.field,\r\n },\r\n filterable: res.filterable,\r\n filter: 'agTextColumnFilter',\r\n filterParams: {\r\n comparator: (\r\n filterLocalDateAtMidnight: any,\r\n cellValue: any\r\n ) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n if (res.columnType == 'date') {\r\n const cellDate = new Date(dateAsString);\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n },\r\n buttons: ['reset'],\r\n },\r\n };\r\n } else {\r\n // if (!hideDacStatus) {\r\n return {\r\n pinned: res.pinPosition,\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n sortable: true,\r\n tooltipField: res.field,\r\n floatingFilter: this.floatingFilter,\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n this.formatterService.colValueFormatter(\r\n params,\r\n res.columnType\r\n ),\r\n cellRenderer: CellRendererComponent,\r\n cellRendererParams: {\r\n field: res.field,\r\n },\r\n filterable: res.filterable,\r\n filter:\r\n res.columnType == 'date'\r\n ? 'agDateColumnFilter'\r\n : res.columnType == 'number'\r\n ? 'agNumberColumnFilter'\r\n : 'agTextColumnFilter',\r\n filterParams: {\r\n comparator: (\r\n filterLocalDateAtMidnight: any,\r\n cellValue: any\r\n ) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n if (res.columnType == 'date') {\r\n const cellDate = new Date(dateAsString);\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n },\r\n buttons: ['reset'],\r\n },\r\n };\r\n // } \r\n // else {\r\n // return;\r\n // }\r\n }\r\n } else {\r\n // if (!hideBtn) {\r\n return {\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n sortable: false,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n suppressFilter: true,\r\n suppressSorting: true,\r\n suppressMenu: true,\r\n tooltipField: res.field,\r\n cellRenderer: ButtonRendererComponent,\r\n cellRendererParams: {\r\n onClick: this.onBtnClick.bind(this),\r\n label: res.label,\r\n icon: res.icon,\r\n buttonName: res.buttonName,\r\n tooltip: res.tooltip,\r\n },\r\n valueGetter: (params: any) => {\r\n return res.tooltip || res.title;\r\n },\r\n minWidth: 20,\r\n cellClass: 'action-button',\r\n pinned: res.pinPosition,\r\n lockPinned: true,\r\n width: res.label ? 100 : 40,\r\n };\r\n // } else {\r\n // return;\r\n // }\r\n }\r\n });\r\n }\r\n\r\n canCreateDac(roles: any[], field: string): boolean {\r\n if (roles?.length > 0 && field === 'createDac') {\r\n const isAEGroup = this.userRoles.some((role) => role?.toLowerCase().includes('ae'));\r\n const isDesignManager = this.userRoles.includes(this._Design_Manager);\r\n return isAEGroup || isDesignManager ? true : false;\r\n //return !(isAEGroup || isDesignManager);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n canViewDacStatus(roles: any[], field: string): boolean {\r\n if (roles?.length > 0 && field === 'dacStatus') {\r\n const isAEGroup = this.userRoles.some((role) => role?.toLowerCase().includes('ae'));\r\n const isIntegrationTeamGroup = this.userRoles.some((role) => role?.toLowerCase().includes('integration team'));\r\n const isIntegrationLead = this.userRoles.includes(this._Integration_Lead);\r\n const isToolOwner = this.userRoles.includes(this._Tool_Owner);\r\n const isAreaCoordinator = this.userRoles.includes(this._Area_Coordinator);\r\n const isDesignManager = this.userRoles.includes(this._Design_Manager);\r\n const isTiPm = this.userRoles.includes(this._TiPm);\r\n return !(isAEGroup || isIntegrationTeamGroup || isIntegrationLead || isToolOwner || isAreaCoordinator || isDesignManager || isTiPm);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setExternalFilters(options: any) {\r\n var serverUrl = '';\r\n if (\r\n this.serverDataUrl.indexOf('filter') >= 0 &&\r\n options.indexOf('filter') >= 0\r\n ) {\r\n let slug = this.serverDataUrl.split('?$filter=');\r\n if (slug && slug.length > 0) {\r\n options = options + ' and ' + slug[1];\r\n serverUrl = slug[0];\r\n }\r\n } else if (this.serverDataUrl.indexOf('?') >= 0) {\r\n serverUrl = this.serverDataUrl;\r\n options = options.replace('?', '&');\r\n }\r\n return `${serverUrl}${options}`;\r\n }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n //this.gridPageSize = this.pageSize;\r\n \r\n this.gridAPI = params.api;\r\n \r\n if (this.enableServerSidePaging == true) {\r\n // Show loading overlay immediately when server-side paging is enabled\r\n this.gridAPI.showLoadingOverlay();\r\n \r\n //call api\r\n let reqHeaders = {\r\n 'Content-type': 'application/json',\r\n Accept: 'application/json',\r\n Authorization: 'Bearer ' + this.token,\r\n };\r\n \r\n // Add timeout to prevent infinite loading\r\n const API_TIMEOUT = 30000; // 30 seconds\r\n \r\n params.api.setServerSideDatasource(\r\n new OdataServerSideProvider({\r\n isCaseSensitiveStringFilter: false,\r\n callApi: (options) => {\r\n const url = this.setExternalFilters(options);\r\n console.log('Server-side API call:', url);\r\n \r\n // Create a timeout promise\r\n const timeoutPromise = new Promise((_, reject) => {\r\n setTimeout(() => reject(new Error('API request timeout')), API_TIMEOUT);\r\n });\r\n \r\n // Create the fetch promise\r\n const fetchPromise = fetch(url, {\r\n headers: reqHeaders,\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n return response.json();\r\n });\r\n \r\n // Race between fetch and timeout\r\n return Promise.race([fetchPromise, timeoutPromise])\r\n .catch((error) => {\r\n console.error('Server-side API error:', error);\r\n this.gridAPI.hideOverlay();\r\n // Show error overlay or handle error appropriately\r\n this.gridAPI.showNoRowsOverlay();\r\n throw error;\r\n });\r\n },\r\n afterLoadData: (options, rowData, totalCount) => {\r\n \r\n // Ensure overlay is hidden after data loads\r\n setTimeout(() => {\r\n if (!rowData || rowData.length <= 0) {\r\n this.gridAPI.showNoRowsOverlay();\r\n } else {\r\n this.gridAPI.hideOverlay();\r\n }\r\n }, 100);\r\n },\r\n setError: (error, params) => {\r\n console.error('OdataProvider error:', error);\r\n this.gridAPI.hideOverlay();\r\n this.gridAPI.showNoRowsOverlay();\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n setGridState() {\r\n if (this.gridColumns && this.gridColumns.length > 0) {\r\n var arrIndex = this.gridColumns.findIndex((x: any) => x.field == \"createDac\");\r\n\r\n if (this.gridId == 1 && !this.canCreateDac(this.userRoles, \"createDac\")) {\r\n if (arrIndex > -1)\r\n this.gridColumns.splice(arrIndex, 1);\r\n\r\n var dacStatusIndex = this.gridColumns.findIndex((x: any) => x.field == \"dacStatus\");\r\n if (dacStatusIndex > -1)\r\n this.gridColumns.splice(dacStatusIndex, 1);\r\n this.columnDefs = this.gridColumns;\r\n }\r\n if (this.gridId == 1 && this.canCreateDac(this.userRoles, \"createDac\")) {\r\n this.gridColumns[arrIndex].hide = false;\r\n }\r\n this.columnDefs = this.gridColumns;\r\n }\r\n if (this.gridColumnState) {\r\n this.gridAPI?.applyColumnState({ state: this.gridColumnState.columnSizing?.columnSizingModel, applyOrder: true });\r\n if (this.gridColumnState.sort) {\r\n this.gridAPI?.applyColumnState({ state: this.gridColumnState.sort.sortModel })\r\n }\r\n if (this.gridColumnState.filter) {\r\n var filterModel: any = this.gridColumnState.filter.filterModel;\r\n this.gridAPI?.setFilterModel(filterModel);\r\n }\r\n if (this.gridColumnState.columnVisibility) {\r\n var hiddenColumns: any = this.gridColumnState.columnVisibility.hiddenColIds;\r\n this.gridAPI?.setColumnsVisible(hiddenColumns, false);\r\n }\r\n } else {\r\n var columns = this.gridAPI.getColumns();\r\n if (columns && columns.length > 0) {\r\n if (columns.length > 15) {\r\n const allColumnIds: string[] = [];\r\n this.gridAPI!.getColumns()!.forEach((column: any) => {\r\n allColumnIds.push(column.getId());\r\n });\r\n this.gridAPI.autoSizeColumns(allColumnIds, false);\r\n } else {\r\n this.gridAPI.sizeColumnsToFit();\r\n }\r\n }\r\n }\r\n }\r\n\r\n overrideGridState(overrideStateData: any) { \r\n this.gridAPI.showLoadingOverlay();\r\n this.gridAPI.resetColumnState();\r\n this.gridColumnState = JSON.parse(overrideStateData);\r\n this.setGridState();\r\n this.gridAPI.autoSizeAllColumns();\r\n setTimeout(() => { this.gridAPI.autoSizeAllColumns(); }, 2000);\r\n setTimeout(() => { this.gridAPI.hideOverlay(); }, 500);\r\n \r\n }\r\n defaultGridState: any;\r\n gridStateLoaded: boolean = false;\r\n gridStateLoaded$ = new Subject<boolean>();\r\n getGridState() {\r\n \r\n this.gridStateLoaded = false;\r\n if (this.gridId && this.loggedInUser) {\r\n this.gridService\r\n .getGridState(this.gridId, this.loggedInUser, this.siteId)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any) => {\r\n if (\r\n response.status == 1 &&\r\n response.result &&\r\n response.result.gridConfig\r\n ) { \r\n \r\n this.defaultGridState = JSON.parse(response.result.gridConfig);\r\n \r\n this.gridAPI.showLoadingOverlay();\r\n this.gridColumnState = JSON.parse(response.result.gridConfig); \r\n this.setGridState();\r\n setTimeout(() => { this.gridStateLoaded = true; this.gridAPI.hideOverlay(); }, 1000);\r\n \r\n //let manualEvent = { type: 'columnResized' };\r\n //this.onSaveGridColumnState(manualEvent);\r\n \r\n } else {\r\n //this.setGridState();\r\n console.log('no grid state found.');\r\n }\r\n\r\n if (this.overrideColumnDefs != null && this.overrideColumnDefs != undefined) {\r\n this.gridStateLoaded$.next(true);\r\n }\r\n \r\n });\r\n }\r\n }\r\n\r\n onBtnClick(e: any) {\r\n this.btnClickHandler.emit(e.rowData);\r\n }\r\n\r\n private __debounceGridSaveHit: any = null;\r\n onSaveGridColumnState(event: any) {\r\n \r\n if (this.isOverride || !this.gridStateLoaded) { return; }\r\n if (this.__debounceGridSaveHit) {\r\n clearTimeout(this.__debounceGridSaveHit);\r\n }\r\n \r\n this.__debounceGridSaveHit = setTimeout(() => {\r\n let columnState = this.gridAPI?.getState();\r\n let columnData = {\r\n gridConfig: JSON.stringify(columnState),\r\n uiGridId: this.gridId,\r\n userId: this.loggedInUser,\r\n siteId: this.siteId\r\n };\r\n if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved' || event.type === 'columnVisible') {\r\n this.gridColumnState = columnState;\r\n this.gridService.saveColumnConfig(columnData)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res: any) => {\r\n //this.setGridState();\r\n if (res.status == 0) {\r\n console.log('Error while saving column configuration:', res.message);\r\n }\r\n });\r\n }\r\n this.__debounceGridSaveHit = null;\r\n }, 1000);\r\n }\r\n\r\n\r\n getRowById: GetRowIdFunc = (params: GetRowIdParams) => {\r\n var data = params.data;\r\n return data.id ?? 0;\r\n };\r\n\r\n // Custom right click Context Menu to support custom excel exports\r\n public getContextMenuItems = (\r\n params: GetContextMenuItemsParams\r\n ): (string | MenuItemDef)[] => {\r\n let res: (string | MenuItemDef)[] = [\r\n 'cut',\r\n 'copy',\r\n 'copyWithHeaders',\r\n 'copyWithGroupHeaders',\r\n 'paste',\r\n {\r\n name: 'Export',\r\n subMenu: [\r\n {\r\n name: 'CSV Export',\r\n action: () => {\r\n this.exportFile('csv');\r\n },\r\n },\r\n {\r\n name: 'Excel Export',\r\n action: () => {\r\n this.exportFile('xlsx');\r\n },\r\n },\r\n ],\r\n },\r\n ];\r\n return res;\r\n };\r\n\r\n //custom export method\r\n public exportFile(type: string = 'xlsx') {\r\n this.getDataForExcelExport(type);\r\n }\r\n //Generate only those columns for export which are visible and are not of other types that are not required for export\r\n generateColumnsForExcel(): string[] {\r\n let columnsToBeDisplayedForExcel: any = [];\r\n this.exportColumnsList.forEach((column: any) => {\r\n if (\r\n column.visible == true &&\r\n column.columnType != 'checkbox' &&\r\n column.columnType != 'dropdown' &&\r\n column.columnType != ''\r\n ) {\r\n columnsToBeDisplayedForExcel.push(column.field);\r\n }\r\n });\r\n return columnsToBeDisplayedForExcel;\r\n }\r\n\r\n //Get data from server without paging so that whole data can be exported to excel\r\n // and also check for server side and client side rendering of data for export.\r\n getDataForExcelExport(type: string) {\r\n this.gridAPI.showLoadingOverlay();\r\n if (this.enableServerSidePaging) {\r\n this.gridService\r\n .getDataForExport(this.serverDataUrl)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any) => {\r\n this.gridAPI.hideOverlay();\r\n if (response && response.value.length > 0) {\r\n this.excelAPI.setRowData(response.value);\r\n this.excelAPI.sizeColumnsToFit();\r\n if (type == 'csv') {\r\n this.excelAPI.exportDataAsCsv({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n } else {\r\n this.excelAPI.exportDataAsExcel({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n }\r\n } else {\r\n console.log('Error while fetching data for excel/csv export');\r\n }\r\n });\r\n } else {\r\n this.gridAPI.hideOverlay();\r\n if (type == 'csv') {\r\n this.gridAPI.exportDataAsCsv({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n } else {\r\n this.gridAPI.exportDataAsExcel({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n onSelectionChanged(e: any) {\r\n this.selectionChanged.emit(e);\r\n }\r\n\r\n onFilterChanged(e: any) {\r\n this.saveGridState(e);\r\n this.filterChanged.emit(e);\r\n }\r\n\r\n onFirstDataRendered(e: any) {\r\n const storedPageNumber = localStorage.getItem('pageNumber');\r\n this.pageNumber = storedPageNumber ? parseInt(storedPageNumber) : 0;\r\n if (this.pageNumber >= 1) {\r\n this.gridAPI.paginationGoToPage(this.pageNumber);\r\n }\r\n this.dataLoaded = true;\r\n\r\n setTimeout(() => this.updatePaginationInfo(), 0);\r\n this.firstDataRendered.emit(e);\r\n }\r\n\r\n onGridReadyExcel(params: any) {\r\n this.excelAPI = params.api;\r\n }\r\n //Custom Pagination starts here ================############################================================\r\n\r\n onPaginationChanged = (params: PaginationChangedEvent) => {\r\n if (this.gridAPI && this.dataLoaded) {\r\n this.gridAPI!.deselectAll();\r\n const currentPage = this.gridAPI.paginationGetCurrentPage();\r\n localStorage.setItem('pageNumber', currentPage.toString());\r\n\r\n setTimeout(() => this.updatePaginationInfo(), 0);\r\n }\r\n };\r\n\r\n private updatePaginationInfo() {\r\n if (!this.gridAPI) return;\r\n\r\n // Get all pagination info at once to minimize grid API calls\r\n const currentPage = this.gridAPI.paginationGetCurrentPage() + 1;\r\n const totalPages = this.gridAPI.paginationGetTotalPages();\r\n const totalRows = this.gridAPI.paginationGetRowCount();\r\n const pageSize = this.gridAPI.paginationGetPageSize();\r\n\r\n // Update component state\r\n this.currentPage = currentPage;\r\n this.totalPages = totalPages;\r\n this.totalRows = totalRows;\r\n this.pageSize = pageSize;\r\n\r\n // Calculate derived values\r\n this.startRow = (this.currentPage - 1) * this.pageSize + 1;\r\n this.endRow = Math.min(this.currentPage * this.pageSize, this.totalRows);\r\n this.isFirstPage = this.currentPage === 1;\r\n this.isLastPage = this.currentPage === this.totalPages;\r\n\r\n // Update page numbers array\r\n this.updatePageNumbers();\r\n }\r\n\r\n private updatePageNumbers() {\r\n this.pageNumbers = [];\r\n\r\n if (this.totalPages <= 7) {\r\n // Show all pages if 7 or fewer\r\n for (let i = 1; i <= this.totalPages; i++) {\r\n this.pageNumbers.push(i);\r\n }\r\n } else {\r\n // Always show first page\r\n this.pageNumbers.push(1);\r\n\r\n // Show ellipsis if not near the beginning\r\n if (this.currentPage > 3) {\r\n this.pageNumbers.push('...');\r\n }\r\n\r\n // Calculate range of pages to show around current page\r\n let startPage = Math.max(2, this.currentPage - 1);\r\n let endPage = Math.min(this.totalPages - 1, this.currentPage + 1);\r\n\r\n // Adjust range to show at least 3 pages when possible\r\n if (startPage === 2) endPage = Math.min(4, this.totalPages - 1);\r\n if (endPage === this.totalPages - 1) startPage = Math.max(2, this.totalPages - 3);\r\n\r\n // Add the range of pages\r\n for (let i = startPage; i <= endPage; i++) {\r\n this.pageNumbers.push(i);\r\n }\r\n\r\n // Show ellipsis if not near the end\r\n if (this.currentPage < this.totalPages - 2) {\r\n this.pageNumbers.push('...');\r\n }\r\n\r\n // Always show last page\r\n this.pageNumbers.push(this.totalPages);\r\n }\r\n }\r\n\r\n goToPage(page: number | string) {\r\n if (typeof page === 'number' && this.gridAPI) {\r\n this.gridAPI.paginationGoToPage(page - 1);\r\n }\r\n }\r\n\r\n onPreviousPage() {\r\n if (!this.isFirstPage && this.gridAPI) {\r\n this.gridAPI.paginationGoToPreviousPage();\r\n }\r\n }\r\n\r\n onNextPage() {\r\n if (!this.isLastPage && this.gridAPI) {\r\n this.gridAPI.paginationGoToNextPage();\r\n }\r\n }\r\n\r\n //custom pagination ends...\r\n //destroy all associated subscriptions on component destroy\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { IHeaderParams, SortDirection } from 'ag-grid-community';\n\n@Component({\n selector: 'app-date-header',\n template: `\n<span>\n {{ params.displayName }}\n <i class=\"fa-solid fa-calendar-days\" style=\"margin-left: 4px;\"></i>\n <span #menuButton (click)=\"toggleSort()\">{{ params.displayName }}</span>\n<span (click)=\"params.showColumnMenu(menuButton)\">☰</span>\n</span>\n `,\n standalone: false\n})\nexport class DateHeaderComponent {\n params!: IHeaderParams;\n sortOrderAsc: SortDirection = 'asc';\n sortOrderDesc: SortDirection = 'asc';\n agInit(params: IHeaderParams): void {\n this.params = params;\n }\n toggleSort(): void {\n const currentSort = this.params.column.getSort();\n const newSort = currentSort === this.sortOrderAsc ? this.sortOrderDesc : currentSort === this.sortOrderDesc ? null : this.sortOrderAsc;\n this.params.setSort(newSort);\n }\n}\n","import { Component } from '@angular/core';\nimport { IHeaderParams } from 'ag-grid-community';\n\n@Component({\n selector: 'app-date-header',\n template: `\n<span>\n {{ params.displayName }}\n</span>\n `, standalone: false\n})\nexport class HeaderComponent {\n params!: IHeaderParams;\n agInit(params: IHeaderParams): void {\n this.params = params;\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\n//import {LicenseManager} from \"ag-grid-enterprise\";\r\nimport 'ag-grid-enterprise';\r\n//LicenseManager.setLicenseKey(\"Using_this_AG_Grid_Enterprise_key_( AG-040308 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Basesite )_is_granted_a_( Multiple Applications )_Developer_License_for_( 2 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_need_to_be_licensed_in_addition_to_the_ones_working_with_AG_Grid_Enterprise___This_key_has_been_granted_a_Deployment_License_Add-on_for_( 2 )_Production_Environments___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 18 May 2024 )____[v2]_MTcxNTk4NjgwMDAwMA==60418a73ee93fedd598e5d8aa02b2926\")\r\nimport { provideHttpClient, withInterceptorsFromDi } from \"@angular/common/http\";\r\nimport { ButtonRendererComponent } from './renderer/button-renderer/button-renderer.component';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { CustomTooltip } from './renderer/tooltip-renderer/custom-tooltip-renderer';\r\nimport { GridLibraryComponent } from './grid-library.component';\r\nimport { DropdownRenderer } from './renderer/dropdown-renderer/drop-down-renderer';\r\nimport { GridLibraryService } from './grid-library.service';\r\nimport { ColumnValueFormatter } from './formatters/column-value-formatter';\r\nimport { DateHeaderComponent } from './renderer/date-header/date-header.component';\r\nimport { HeaderComponent } from './renderer/header/header.component';\r\nimport { CellRendererComponent } from './renderer/cell-renderer/cell-renderer.component';\r\nimport { FillCellRendererComponent } from './renderer/fill-cell-renderer/fill-cell-renderer.component';\r\n\r\n@NgModule({ declarations: [\r\n GridLibraryComponent,\r\n ButtonRendererComponent,\r\n CustomTooltip,\r\n DropdownRenderer,\r\n DateHeaderComponent,\r\n HeaderComponent,\r\n CellRendererComponent,\r\n FillCellRendererComponent\r\n ],\r\n exports: [\r\n GridLibraryComponent\r\n ],\r\n imports: [AgGridModule,\r\n CommonModule], providers: [DatePipe, GridLibraryService, ColumnValueFormatter, provideHttpClient(withInterceptorsFromDi())] })\r\nexport class GridLibraryModule { }\r\n","/*\r\n * Public API Surface of basesite-shared-grid-lib\r\n */\r\n\r\nexport * from './lib/grid-library.service';\r\nexport * from './lib/grid-library.component';\r\nexport * from './lib/grid-library.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.TokenSharingService","i1","i1.GridLibraryService","i2.ColumnValueFormatter","i3.TokenSharingService","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"basesite-shared-grid-lib.mjs","sources":["../../../projects/basesite-shared-grid-lib/src/lib/token-sharing.service.ts","../../../projects/basesite-shared-grid-lib/src/lib/grid-library.service.ts","../../../projects/basesite-shared-grid-lib/src/lib/helpers/utils.ts","../../../projects/basesite-shared-grid-lib/src/lib/helpers/oDataProvider.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/button-renderer/button-renderer.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/tooltip-renderer/custom-tooltip-renderer.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/dropdown-renderer/drop-down-renderer.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/cell-renderer/cell-renderer.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/fill-cell-renderer/fill-cell-renderer.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/formatters/column-value-formatter.ts","../../../projects/basesite-shared-grid-lib/src/lib/grid-library.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/date-header/date-header.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/renderer/header/header.component.ts","../../../projects/basesite-shared-grid-lib/src/lib/grid-library.module.ts","../../../projects/basesite-shared-grid-lib/src/public-api.ts","../../../projects/basesite-shared-grid-lib/src/basesite-shared-grid-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenSharingService {\r\n\r\n constructor() { }\r\n\r\n private tokenSubject = new BehaviorSubject<string>(\"\");\r\n token$ = this.tokenSubject.asObservable();\r\n updateToken(newToken:string){\r\n this.tokenSubject.next(newToken);\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { TokenSharingService } from './token-sharing.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridLibraryService {\r\n private baseUrl: any = 'https://localhost:7237/api';\r\n accessToken!: string;\r\n constructor(private httpClient: HttpClient,private _tokenSharingService:TokenSharingService) {\r\n this._tokenSharingService.token$.subscribe(res =>{\r\n if(res && res != \"\"){\r\n this.accessToken = res;\r\n }\r\n });\r\n this.setBaseUrl();\r\n } \r\n\r\n setBaseUrl(environment: any=\"\") {\r\n if (window.location.origin.includes('fcelspx')) {\r\n this.baseUrl = window.location.origin + '/designhub/api';\r\n }\r\n else if(environment=='uat'){\r\n this.baseUrl ='https://fcemsuat.intel.com/designhub/api'\r\n }\r\n else if(environment=='production'){\r\n this.baseUrl ='https://fcems.intel.com/designhub/api'\r\n }\r\n else {\r\n this.baseUrl = 'https://fcemstest.intel.com/designhub/api'\r\n }\r\n }\r\n\r\n getColDef(gridId: any): Observable<any> { \r\n return this.httpClient.get<any>(\r\n `${this.baseUrl}/GridConfiguration/${gridId}`, { headers: this.getRequestHeader()}\r\n );\r\n }\r\n\r\n saveColumnConfig(columnConfig:any){\r\n return this.httpClient.post<any>(\r\n `${this.baseUrl}/GridConfiguration/saveUIUserGridConfiguration`, columnConfig, { headers: this.getRequestHeader()}\r\n );\r\n }\r\n\r\n getGridState(gridId: number, loggedInUserId: number, siteId: number) {\r\n return this.httpClient.get<any>(\r\n `${this.baseUrl}/GridConfiguration?gridId=${gridId}&userId=${loggedInUserId}&siteId=${siteId}`, { headers: this.getRequestHeader() }\r\n );\r\n }\r\n\r\n getRequestHeader() {\r\n let reqHeader: any;\r\n\r\n if (this.accessToken) {\r\n reqHeader = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + this.accessToken\r\n });\r\n }\r\n else {\r\n reqHeader = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n });\r\n }\r\n \r\n return reqHeader;\r\n }\r\n\r\n getDataForExport(serverUrl: any): Observable<any> {\r\n return this.httpClient.get<any>(\r\n `${serverUrl}`, { headers: this.getRequestHeader() }\r\n );\r\n }\r\n}\r\n","export function escapeRegExp(string:any) {\r\n return string.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\r\n }\r\n \r\n export function replaceAll(str: string, search: string, replacement: string): string {\r\n return str.replace(new RegExp(escapeRegExp(search), \"g\"), replacement);\r\n }","import {\r\n IGetRowsParams,\r\n ColDef,\r\n ColGroupDef,\r\n ColumnVO,\r\n IServerSideGetRowsRequest,\r\n IServerSideGetRowsParams,\r\n} from 'ag-grid-community';\r\n\r\nimport {\r\n OdataQueryExtendFull,\r\n OdataQueryExtendOptions,\r\n OdataQueryOptions,\r\n PivotResultDat,\r\n} from './types';\r\n\r\nimport { replaceAll } from './utils';\r\nexport declare class OdataProviderOptions {\r\n /**\r\n * Function for call odata api\r\n */\r\n callApi: (query: string) => Promise<any>;\r\n /**\r\n * Name of field contain count of record results in grouping odata query\r\n * @default childCount\r\n */\r\n groupCountFieldName?: string;\r\n /**\r\n * Use in odata build query\r\n * @default false\r\n */\r\n isCaseSensitiveStringFilter?: boolean;\r\n /**\r\n * Callback for extend odata query options for implement user logic\r\n */\r\n beforeRequest?: (\r\n options: OdataQueryOptions,\r\n provider: OdataProvider,\r\n request: IGetRowsParams | IServerSideGetRowsRequest\r\n ) => void;\r\n /**\r\n * Callback for pivot or group for aplly column ag-grid settings\r\n * @example\r\n * <pre><code>\r\n * beforeSetSecondaryColumns = secondaryColumns => {\r\n for (let i = 0; i < secondaryColumns.length; i++) {\r\n const col = secondaryColumns[i]\r\n if (col.children) {\r\n beforeSetSecondaryColumns(col.children)\r\n } else {\r\n //Aplly new setting for group dyncamic created column\r\n // col.cellClassRules = \r\n // col.valueFormatter = \r\n }\r\n }\r\n }\r\n * </pre></code>\r\n */\r\n beforeSetSecondaryColumns?: (\r\n secondaryColDefs: (ColDef | ColGroupDef)[]\r\n ) => void;\r\n /**\r\n * Callback invoked after load data\r\n * @param options odata provider options\r\n * @param rowData data for ag-grid\r\n * @param totalCount total count records\r\n * \r\n * @example\r\n * <pre><code>\r\n afterLoadData = (options, rowData, totalCount) => {\r\n if (options.skip === 0 && rowData.length > 0) {\r\n gridApi.columnController.autoSizeAllColumns()\r\n }\r\n }\r\n * </code></pre>\r\n */\r\n afterLoadData?: (\r\n options: OdataQueryExtendOptions,\r\n rowData: any[],\r\n totalCount: number\r\n ) => void;\r\n /**\r\n * Callback for catch error\r\n */\r\n setError?: (\r\n error: any,\r\n params: IGetRowsParams | IServerSideGetRowsParams\r\n ) => void;\r\n /**\r\n * List of columns by id/field are case sensitive for build odata query\r\n */\r\n caseSensitiveColumns?: string[];\r\n /**\r\n * Use for specified column custom filter implementation\r\n * <pre><code>\r\n customFilters: {\r\n \"customer\": (colName,col,isCaseSensitiveStringFilter,provider) =>{\r\n return provider.odataOperator.in(\r\n colName,\r\n col.values\r\n )\r\n }\r\n }\r\n */\r\n customFilters?: {\r\n [index: string]: (\r\n colName: string,\r\n col: any,\r\n isCaseSensitiveStringFilter: boolean,\r\n provider: OdataProvider\r\n ) => string;\r\n };\r\n}\r\n\r\ndeclare interface CancelablePromise {\r\n promise: Promise<any>;\r\n cancel: () => void;\r\n}\r\nexport class OdataProvider implements OdataProviderOptions {\r\n /**\r\n * Function for call odata api\r\n */\r\n callApi!: (query: string) => Promise<any>;\r\n /**\r\n * Name of field contain count of record results in grouping odata query\r\n * @default childCount\r\n */\r\n groupCountFieldName: string = 'childCount';\r\n /**\r\n * Use in odata build query\r\n * @default false\r\n */\r\n isCaseSensitiveStringFilter: boolean = false;\r\n /**\r\n * Callback for extend odata query options for implement user logic\r\n */\r\n beforeRequest:\r\n | ((\r\n options: OdataQueryOptions,\r\n provider: OdataProvider,\r\n request: IGetRowsParams | IServerSideGetRowsRequest\r\n ) => void)\r\n | undefined;\r\n /**\r\n * Callback for pivot or group for aplly column ag-grid settings\r\n * @example\r\n * <pre><code>\r\n * beforeSetSecondaryColumns = secondaryColumns => {\r\n for (let i = 0; i < secondaryColumns.length; i++) {\r\n const col = secondaryColumns[i]\r\n if (col.children) {\r\n beforeSetSecondaryColumns(col.children)\r\n } else {\r\n //Aplly new setting for group dyncamic created column\r\n // col.cellClassRules = \r\n // col.valueFormatter = \r\n }\r\n }\r\n }\r\n * </pre></code>\r\n */\r\n beforeSetSecondaryColumns:\r\n | ((secondaryColDefs: (ColDef | ColGroupDef)[]) => void)\r\n | undefined;\r\n /**\r\n * Callback invoked after load data\r\n * @param options odata provider options\r\n * @param rowData data for ag-grid\r\n * @param totalCount total count records\r\n * \r\n * @example\r\n * <pre><code>\r\n afterLoadData = (options, rowData, totalCount) => {\r\n if (options.skip === 0 && rowData.length > 0) {\r\n gridApi.columnController.autoSizeAllColumns()\r\n }\r\n }\r\n * </code></pre>\r\n */\r\n afterLoadData:\r\n | ((\r\n options: OdataQueryExtendOptions,\r\n rowData: any[],\r\n totalCount: number\r\n ) => void)\r\n | undefined;\r\n /**\r\n * Callback for catch error\r\n */\r\n setError:\r\n | ((error: any, params: IGetRowsParams | IServerSideGetRowsParams) => void)\r\n | undefined;\r\n /**\r\n * List of columns by id/field are case sensitive for build odata query\r\n */\r\n caseSensitiveColumns?: string[];\r\n /**\r\n * Use for specified column custom filter implementation\r\n * <pre><code>\r\n customFilters: {\r\n \"customer\": (colName,col,isCaseSensitiveStringFilter,provider) =>{\r\n return provider.odataOperator.in(\r\n colName,\r\n col.values\r\n )\r\n }\r\n }\r\n */\r\n customFilters?: {\r\n [index: string]: (\r\n colName: string,\r\n col: any,\r\n isCaseSensitiveStringFilter: boolean,\r\n provider: OdataProvider\r\n ) => string;\r\n };\r\n cancelPromice: CancelablePromise;\r\n constructor(options: OdataProviderOptions) {\r\n Object.assign(this, options);\r\n if (this.callApi == null) {\r\n throw new Error('callApi must be specified');\r\n }\r\n if (typeof this.callApi !== 'function') {\r\n throw new Error('callApi must be a function');\r\n }\r\n if (\r\n this.beforeRequest != null &&\r\n typeof this.beforeRequest !== 'function'\r\n ) {\r\n throw new Error('beforeRequest must be a function');\r\n }\r\n if (\r\n this.afterLoadData != null &&\r\n typeof this.afterLoadData !== 'function'\r\n ) {\r\n throw new Error('afterLoadData must be a function');\r\n }\r\n if (this.setError != null && typeof this.setError !== 'function') {\r\n throw new Error('setError must be a function');\r\n }\r\n this.cancelPromice = this.createCancelablePromise();\r\n }\r\n\r\n /**Creator a cancelable Promise */\r\n createCancelablePromise = (): CancelablePromise => {\r\n let cancel: any;\r\n const pr = new Promise((_, reject) => {\r\n cancel = reject;\r\n }).catch(() => {});\r\n return {\r\n promise: pr,\r\n cancel,\r\n };\r\n };\r\n /**Odata query operations */\r\n odataOperator: any = {\r\n // Logical\r\n equals: (col: string, value1: string): string => `${col} eq ${value1}`,\r\n blank: (col: string, value1: string): string => `(${col} eq ${value1} or ${col} eq null)`,\r\n notBlank: (col: string, value1: string): string => `(${col} ne ${value1} and ${col} ne null)`,\r\n blankDate: (col: string, value1: string): string => `${col} eq null`,\r\n notBlankDate: (col: string, value1: string): string => `${col} ne null`,\r\n notEqual: (col: string, value1: string): string => `${col} ne ${value1}`,\r\n lessThan: (col: string, value1: string): string => `${col} lt ${value1}`,\r\n lessThanOrEqual: (col: string, value1: string): string =>\r\n `${col} le ${value1}`,\r\n greaterThan: (col: string, value1: string): string => `${col} gt ${value1}`,\r\n greaterThanOrEqual: (col: string, value1: string): string =>\r\n `${col} ge ${value1}`,\r\n inRange: (col: string, value1: string, value2: any): string =>\r\n `(${col} ge ${value1} and ${col} le ${value2})`,\r\n // String\r\n equalsStr: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )} eq ${this.ifTolower(value1, isCaseSensitiveStringFilter)}`,\r\n notEqualStr: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )} ne ${this.ifTolower(value1, isCaseSensitiveStringFilter)}`,\r\n contains: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `contains(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)})`,\r\n notContains: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `contains(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)}) eq false`,\r\n startsWith: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `startswith(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)}) eq true`,\r\n endsWith: (\r\n col: string,\r\n value1: string,\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `endswith(${this.ifTolowerCol(\r\n col,\r\n isCaseSensitiveStringFilter\r\n )},${this.ifTolower(value1, isCaseSensitiveStringFilter)}) eq true`,\r\n inStr: (\r\n col: string,\r\n values: string[],\r\n isCaseSensitiveStringFilter: boolean\r\n ): string =>\r\n `${this.ifTolowerCol(col, isCaseSensitiveStringFilter)} in (${values\r\n .map(\r\n (x) =>\r\n `'${this.ifTolower(this.encode(x), isCaseSensitiveStringFilter)}'`\r\n )\r\n .join()})`,\r\n in: (col: string, values: string[]) =>\r\n `${col} in (${values.map((x) => `${this.encode(x)}`).join()})`,\r\n notIn: (col: string, values: string[]) =>\r\n `not (${col} in (${values.map((x) => `${x}`).join()}))`,\r\n // Date\r\n trunc: (col: string): string => `date(${col})`,\r\n };\r\n\r\n /**\r\n * Apply tolower for column in odata syntax\r\n * @param col column name\r\n * @param isCaseSensitiveStringFilter need apply tolower\r\n */\r\n ifTolowerCol = (col: string, isCaseSensitiveStringFilter: boolean): string =>\r\n isCaseSensitiveStringFilter ? col : `tolower(${col})`;\r\n\r\n /**\r\n *\r\n * @param value string value\r\n * @param isCaseSensitiveStringFilter need apply tolower\r\n */\r\n ifTolower = (value: string, isCaseSensitiveStringFilter: boolean): string =>\r\n isCaseSensitiveStringFilter ? value : value ? value.toLowerCase() : value;\r\n /**\r\n * Odata aggregation operations\r\n */\r\n odataAggregation: any = {\r\n // Logical\r\n sum: (col: string, asField?: any): string =>\r\n `${col} with sum as ${col || asField}`,\r\n min: (col: string, asField?: any): string =>\r\n `${col} with min as ${col || asField}`,\r\n max: (col: string, asField?: any): string =>\r\n `${col} with max as ${col || asField}`,\r\n avg: (col: string, asField?: any): string =>\r\n `${col} with average as ${col || asField}`,\r\n count: (col: string, asField?: any): string =>\r\n `$count as ${col || asField}`,\r\n };\r\n /**\r\n * Odata query builder\r\n * @param options parameter for odata query\r\n */\r\n toQuery = (options: OdataQueryExtendFull): string => {\r\n let path: string[] = [];\r\n if (options) {\r\n path.push('$count=true');\r\n }\r\n if (options.skip) {\r\n path.push(`$skip=${options.skip}`);\r\n }\r\n if (options.top) {\r\n path.push(`$top=${options.top}`);\r\n }\r\n if (options.sort && options.sort.length > 0) {\r\n path.push('$orderby=' + options.sort.join(','));\r\n }\r\n if (options.filter && options.filter.length > 0) {\r\n path.push('$filter=' + options.filter.join(' and '));\r\n }\r\n if (options.apply && options.apply.length > 0) {\r\n path.push('$apply=' + options.apply.join('/'));\r\n }\r\n if (options.expand && options.expand.length > 0) {\r\n path.push('$expand=' + options.expand.join(','));\r\n }\r\n if (options.select && options.select.length > 0) {\r\n path.push('$select=' + options.select.join(','));\r\n }\r\n let query: string = '';\r\n if (path.length > 0) {\r\n var defaultFilters = path.filter((x: any) => {\r\n if (\r\n x.indexOf('$count') >= 0 ||\r\n x.indexOf('$top') >= 0 ||\r\n x.indexOf('$orderby') >= 0 ||\r\n x.indexOf('$apply') >= 0 ||\r\n x.indexOf('$expand') >= 0 ||\r\n x.indexOf('$select') >= 0\r\n ) {\r\n return x;\r\n }\r\n });\r\n if (defaultFilters && defaultFilters.length > 0) {\r\n query = '?' + defaultFilters.join('&');\r\n }\r\n var customFilters = path.filter(function (obj) {\r\n return defaultFilters.indexOf(obj) == -1;\r\n });\r\n if (customFilters && customFilters.length > 0) {\r\n if (customFilters.length == 1) query = query + '&' + customFilters;\r\n else query = query + '&' + customFilters.join('and');\r\n }\r\n }\r\n query = query.replace('and$filter=', '&filter=');\r\n return query;\r\n };\r\n /**\r\n * Add quotes for string value\r\n * @param value string value\r\n */\r\n encode = (value: string): string =>\r\n this.isStrVal(value) ? replaceAll(value, \"'\", \"''\") : value;\r\n /**\r\n * Conctat to date a time for create datetime format for odata query\r\n * @param value date string\r\n */\r\n toDateTime = (value: string): string | null => {\r\n const dt = new Date(value);\r\n if (isNaN(dt.getTime())) return null;\r\n const dt1 = new Date(\r\n Date.UTC(dt.getFullYear(), dt.getMonth(), dt.getDate())\r\n );\r\n return dt1.toISOString().split('T')[0]; //dt1.toISOString();\r\n };\r\n /**\r\n *\r\n * @param colName columnName\r\n * @returns is CaseSensitive for column\r\n */\r\n private getIsNeedCaseSensitive = (colName: string) => {\r\n if (\r\n !this.isCaseSensitiveStringFilter &&\r\n this.caseSensitiveColumns &&\r\n this.caseSensitiveColumns.length > 0\r\n ) {\r\n return this.caseSensitiveColumns.indexOf(colName) >= 0;\r\n }\r\n return this.isCaseSensitiveStringFilter;\r\n };\r\n /**\r\n * Convert ag-grid column filter to odata query\r\n * @param colName columnName\r\n * @param col ag-grid column\r\n */\r\n private getFilterOdata = (colName: string, col: any): string => {\r\n const me = this;\r\n const isCaseSensitiveStringFilter = me.getIsNeedCaseSensitive(colName);\r\n const customFilter = me.customFilters && me.customFilters[colName];\r\n colName = replaceAll(colName, '.', '/');\r\n colName = me.getWrapColumnName(colName);\r\n if (customFilter) {\r\n return customFilter(colName, col, isCaseSensitiveStringFilter, me);\r\n } else {\r\n switch (col.filterType) {\r\n case 'number':\r\n return me.odataOperator[col.type](colName, col.filter, col.filterTo);\r\n case 'text': {\r\n let operatorName = col.type;\r\n const filter = me.encode(col.filter) || '';\r\n // let filterTo = me.encode(col.filterTo);\r\n if (\r\n (operatorName === 'equals' || operatorName === 'notEqual') &&\r\n !isCaseSensitiveStringFilter\r\n ) {\r\n operatorName += 'Str';\r\n }\r\n return me.odataOperator[operatorName](\r\n colName,\r\n `'${filter}'`,\r\n isCaseSensitiveStringFilter\r\n );\r\n }\r\n case 'date':\r\n if(col.type == \"blank\"){\r\n return me.odataOperator[\"blankDate\"](colName, col.filter, col.filterTo);\r\n }\r\n else if(col.type == \"notBlank\"){\r\n return me.odataOperator[\"notBlankDate\"](colName, col.filter, col.filterTo);\r\n }\r\n else if (\r\n col.dateFrom != null &&\r\n me.toDateTime(col.dateFrom) != null &&\r\n (col.dateTo == null ||\r\n (col.dateTo != null && me.toDateTime(col.dateTo) != null))\r\n ) {\r\n return me.odataOperator[col.type](\r\n colName,\r\n `${me.toDateTime(col.dateFrom)}`,\r\n `${me.toDateTime(col.dateTo)}`\r\n );\r\n }\r\n break;\r\n case 'set':\r\n return col.values.length > 0\r\n ? me.odataOperator.inStr(\r\n colName,\r\n col.values,\r\n isCaseSensitiveStringFilter\r\n )\r\n : '';\r\n default:\r\n break;\r\n }\r\n }\r\n return '';\r\n };\r\n\r\n /**\r\n * Extract value from record by path to field\r\n * @param field path to column value\r\n * @param obj record\r\n */\r\n private getValue(field: string, obj: any): any {\r\n const paths = field.split('.');\r\n if (paths.length === 1) {\r\n return obj[field];\r\n } else {\r\n return paths.reduce((object, path) => {\r\n return (object || {})[path]; // Oliver Steele's pattern\r\n }, obj);\r\n }\r\n }\r\n\r\n /**\r\n * Caclulate pivot data for ag-grid from odata\r\n * @param pivotCols pivot columns\r\n * @param rowGroupCols row group columns\r\n * @param valueCols value columns\r\n * @param data odata result\r\n * @param countField count field name\r\n */\r\n private getPivot = (\r\n pivotCols: ColumnVO[],\r\n rowGroupCols: ColumnVO[],\r\n valueCols: ColumnVO[],\r\n data: any[],\r\n countField: string\r\n ): PivotResultDat => {\r\n // assume 1 pivot col and 1 value col for this example\r\n const me = this;\r\n const pivotData: any[] = [];\r\n const aggColsList: any[] = [];\r\n\r\n const colKeyExistsMap: any = {};\r\n\r\n const secondaryColDefs: any[] = [];\r\n const secondaryColDefsMap: any = {};\r\n\r\n data.forEach(function (item) {\r\n var pivotValues: string[] = [];\r\n pivotCols.forEach(function (pivotCol) {\r\n var pivotField = pivotCol.id;\r\n var pivotValue = me.getValue(pivotField, item);\r\n if (\r\n pivotValue !== null &&\r\n pivotValue !== undefined &&\r\n pivotValue.toString\r\n ) {\r\n pivotValues.push(pivotValue.toString());\r\n } else {\r\n pivotValues.push('-');\r\n }\r\n });\r\n\r\n // var pivotValue = item[pivotField].toString();\r\n var pivotItem: any = {};\r\n\r\n valueCols.forEach(function (valueCol) {\r\n var valField = valueCol.id;\r\n var colKey = createColKey(pivotValues, valField);\r\n\r\n var value = me.getValue(valField, item);\r\n pivotItem[colKey] = value;\r\n\r\n if (!colKeyExistsMap[colKey]) {\r\n addNewAggCol(colKey, valueCol);\r\n addNewSecondaryColDef(colKey, pivotValues, valueCol);\r\n colKeyExistsMap[colKey] = true;\r\n }\r\n });\r\n if (countField) {\r\n pivotItem[countField] = me.getValue(countField, item);\r\n }\r\n\r\n rowGroupCols.forEach(function (rowGroupCol) {\r\n var rowGroupField = rowGroupCol.id.split('.')[0];\r\n pivotItem[rowGroupField] = item[rowGroupField];\r\n });\r\n\r\n pivotData.push(pivotItem);\r\n });\r\n\r\n function addNewAggCol(colKey: string, valueCol: ColumnVO): void {\r\n var newCol = {\r\n id: colKey,\r\n field: colKey,\r\n aggFunc: valueCol.aggFunc,\r\n };\r\n aggColsList.push(newCol);\r\n }\r\n\r\n function addNewSecondaryColDef(\r\n colKey: any,\r\n pivotValues: any,\r\n valueCol: any\r\n ) {\r\n var parentGroup: any = null;\r\n\r\n var keyParts: any = [];\r\n\r\n pivotValues.forEach(function (pivotValue: any) {\r\n keyParts.push(pivotValue);\r\n var colKey = createColKey(keyParts);\r\n var groupColDef: any = secondaryColDefsMap[colKey];\r\n if (!groupColDef) {\r\n groupColDef = {\r\n groupId: colKey,\r\n headerName: pivotValue,\r\n children: [],\r\n };\r\n secondaryColDefsMap[colKey] = groupColDef;\r\n if (parentGroup) {\r\n parentGroup.children.push(groupColDef);\r\n } else {\r\n secondaryColDefs.push(groupColDef);\r\n }\r\n }\r\n parentGroup = groupColDef;\r\n });\r\n\r\n parentGroup.children.push({\r\n colId: colKey,\r\n headerName: valueCol.aggFunc + '(' + valueCol.displayName + ')',\r\n field: colKey,\r\n suppressMenu: true,\r\n sortable: false,\r\n });\r\n }\r\n\r\n function createColKey(pivotValues: string[], valueField?: string): string {\r\n var result = pivotValues.join('|');\r\n if (valueField !== undefined) {\r\n result += '|' + valueField;\r\n }\r\n result = replaceAll(result, '.', '*');\r\n return result;\r\n }\r\n\r\n return {\r\n data: pivotData,\r\n aggCols: aggColsList,\r\n secondaryColDefs: secondaryColDefs,\r\n };\r\n };\r\n\r\n /**\r\n *\r\n * @param rowData array odata result\r\n * @param rowGroupCols row group columns\r\n * @param groupKeys what groups the user is viewing\r\n * @param countField count field name\r\n */\r\n private buildGroupsFromData = (\r\n rowData: any[],\r\n rowGroupCols: ColumnVO[],\r\n groupKeys: string[],\r\n countField: string\r\n ): any[] => {\r\n const me = this;\r\n let rowGroupCol = rowGroupCols[groupKeys.length];\r\n let field = rowGroupCol.id;\r\n let mappedRowData = me.groupBy(rowData, field);\r\n let groups: any = [];\r\n\r\n me.iterateObject(mappedRowData, function (key, rowData) {\r\n var groupItem = me.aggregateList(rowData, countField);\r\n groupItem[field] = key;\r\n groups.push(groupItem);\r\n });\r\n return groups;\r\n };\r\n\r\n /**\r\n * Internal function for execute callback function for each property of object\r\n * @param object object contained odata grouped result\r\n * @param callback function do somthing\r\n */\r\n private iterateObject = (\r\n object: any,\r\n callback: (key: string, rowData: any[]) => void\r\n ): void => {\r\n if (!object) {\r\n return;\r\n }\r\n const keys = Object.keys(object);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n const value = object[key];\r\n callback(key, value);\r\n }\r\n };\r\n\r\n /**\r\n * Prepeare grouped data\r\n * @param rowData array odata result\r\n * @param field grouping field\r\n */\r\n private groupBy = (rowData: any[], field: string): any => {\r\n var result: any = {};\r\n const me = this;\r\n rowData.forEach(function (item) {\r\n var key = me.getValue(field, item);\r\n var listForThisKey = result[key];\r\n if (!listForThisKey) {\r\n listForThisKey = [];\r\n result[key] = listForThisKey;\r\n }\r\n listForThisKey.push(item);\r\n });\r\n return result;\r\n };\r\n\r\n /**\r\n * Calculate total count records in group\r\n * @param rowData array odata result data\r\n * @param countField field contained count of all records\r\n */\r\n private aggregateList = (rowData: any[], countField: string): any => {\r\n var result: any = {};\r\n rowData.forEach((row) => {\r\n if (countField && row[countField] != null) {\r\n const totalCount = (result[countField] || 0) + (row[countField] || 0);\r\n delete row[countField];\r\n result[countField] = totalCount;\r\n }\r\n result = Object.assign(result, row);\r\n });\r\n return result;\r\n };\r\n\r\n /**\r\n * Calculate distinct values for input field from Odata api\r\n * @param field The field of the row to get the cells data from \r\n * @param callback The function for return distinct values for input field\r\n * @param beforeRequest The function for customize request\r\n * @example \r\n * <pre><code>\r\n * const setFilterValuesFuncParams = params => {\r\n * const me = this\r\n * const col = params.colDef.field\r\n * const storeName = me.getStoreName(col)\r\n * const callback = data => {\r\n * if (data) {\r\n * me.setState({ [storeName]: data })\r\n * params.success(data)\r\n * }\r\n * }\r\n * odataProviderInstance.getFilterValuesParams(params.colDef.field, callback)\r\n * }\r\n * \r\n * ///....\r\n * <AgGridColumn\r\n field=\"product\"\r\n headerName={'PRODUCT'}\r\n filter=\"agSetColumnFilter\"\r\n // rowGroup\r\n // enablePivot\r\n enableRowGroup\r\n filterParams={{\r\n values: setFilterValuesFuncParams,\r\n newRowsAction: 'keep'\r\n }}\r\n // filterParams={{caseSensitive: true}}\r\n />\r\n * </code></pre>\r\n */\r\n getFilterValuesParams = (\r\n field: string,\r\n callback: (data: any[]) => void,\r\n beforeRequest: (options: OdataQueryExtendFull) => void | undefined\r\n ): void => {\r\n const me = this;\r\n const options: OdataQueryExtendFull = {\r\n apply: [`groupby((${me.getWrapColumnName(field)}))`],\r\n };\r\n if (beforeRequest) {\r\n beforeRequest(options);\r\n }\r\n me.callApi(me.toQuery(options)).then((x) => {\r\n if (x) {\r\n let values = me.getOdataResult(x);\r\n callback(values.map((y: any) => y[field]));\r\n }\r\n });\r\n };\r\n /**\r\n * Detect is string value\r\n * @param value\r\n */\r\n isStrVal = (value: any): boolean => typeof value === 'string';\r\n /**\r\n * Extartc values from odata response\r\n * @param response\r\n */\r\n private getOdataResult = (response: any): any =>\r\n Array.isArray(response) ? response : response.value;\r\n /**\r\n * Endocing column name to odata notation\r\n * @param colName column name\r\n */\r\n private getWrapColumnName = (colName: string | undefined): string =>\r\n colName ? replaceAll(colName, '.', '/') : '';\r\n /**\r\n * grid calls this to get rows for IServerSideDatasource\r\n * @param params ag-grid details for the request\r\n */\r\n /**\r\n * grid calls this to get rows implement\r\n * @param params ag-grid details for the request\r\n */\r\n public getRows(params: IGetRowsParams | IServerSideGetRowsParams): void {\r\n const me = this;\r\n const childCount = me.groupCountFieldName;\r\n const isServerMode = 'request' in params;\r\n const request = isServerMode\r\n ? (params as IServerSideGetRowsParams).request\r\n : (params as IGetRowsParams);\r\n const requestSrv = request as IServerSideGetRowsRequest;\r\n\r\n const pivotActive = !isServerMode\r\n ? false\r\n : requestSrv.pivotMode &&\r\n requestSrv.pivotCols.length > 0 &&\r\n requestSrv.valueCols.length > 0;\r\n\r\n if (!pivotActive) {\r\n let fn = (params as any).columnApi.setPivotResultColumns;\r\n if (fn != null) {\r\n // if ((params as any).columnApi.isPivotMode()) {\r\n (params as any).columnApi.setPivotResultColumns([]);\r\n // }\r\n } else {\r\n (params as any).columnApi.setSecondaryColumns([]);\r\n }\r\n }\r\n const options = me.getOdataOptions(params);\r\n const query = me.toQuery(options);\r\n if (\r\n options.skip === 0 &&\r\n (!isServerMode ||\r\n (isServerMode &&\r\n (params as IServerSideGetRowsParams).parentNode.level === -1))\r\n ) {\r\n me.cancelPromice.cancel();\r\n me.cancelPromice = me.createCancelablePromise();\r\n }\r\n Promise.race([me.cancelPromice.promise, me.callApi(query)]).then(\r\n async (x) => {\r\n if (!x) {\r\n // params.failCallback();\r\n return;\r\n } else {\r\n const values = me.getOdataResult(x);\r\n if (!pivotActive) {\r\n if (!options.apply) {\r\n me.setResult(\r\n params,\r\n isServerMode,\r\n values,\r\n x['@odata.count'] || x[0]?.totalCount\r\n );\r\n if (this.afterLoadData) {\r\n this.afterLoadData(\r\n options,\r\n values,\r\n x['@odata.count'] || x[0]?.totalCount\r\n );\r\n }\r\n } else {\r\n let count = values.length;\r\n if (count === options.top && options.skip === 0) {\r\n // If received grouped count of value large than requested then request total count of values\r\n me.callApi(query + '/aggregate($count as count)').then((y) => {\r\n count = me.getOdataResult(y)[0].count;\r\n me.setResult(params, isServerMode, values, count);\r\n });\r\n } else {\r\n if (options.skip != null && options.skip > 0) {\r\n count = null;\r\n }\r\n me.setResult(params, isServerMode, values, count);\r\n if (this.afterLoadData) {\r\n this.afterLoadData(options, values, count);\r\n }\r\n }\r\n }\r\n } else {\r\n let rowData = me.getOdataResult(x);\r\n // Check count\r\n if (\r\n rowData.length === options.top &&\r\n options.skip === 0 &&\r\n requestSrv.groupKeys.length === 0\r\n ) {\r\n let eof = false;\r\n while (!eof) {\r\n options.skip += options.top || 0;\r\n const subQuery = me.toQuery(options);\r\n const newRowData = await me.callApi(subQuery);\r\n if (!newRowData) {\r\n //params.failCallback();\r\n return;\r\n }\r\n eof = newRowData.length !== options.top;\r\n rowData = rowData.concat(newRowData);\r\n }\r\n }\r\n const pivotResult = me.getPivot(\r\n requestSrv.pivotCols,\r\n requestSrv.rowGroupCols,\r\n requestSrv.valueCols,\r\n rowData,\r\n childCount\r\n );\r\n rowData = pivotResult.data;\r\n const secondaryColDefs = pivotResult.secondaryColDefs;\r\n rowData = me.buildGroupsFromData(\r\n rowData,\r\n requestSrv.rowGroupCols,\r\n requestSrv.groupKeys,\r\n childCount\r\n );\r\n const totalCount =\r\n requestSrv.groupKeys.length === 0\r\n ? rowData.length\r\n : rowData.length === options.top\r\n ? null\r\n : rowData.length;\r\n // if (totalCount > (options.top || 0)) {\r\n // const serverSideBlock = (params as any).parentNode.rowModel\r\n // .rowNodeBlockLoader.blocks[0];\r\n // serverSideBlock.rowNodeCacheParams.blockSize = totalCount;\r\n // serverSideBlock.endRow = serverSideBlock.startRow + totalCount;\r\n // serverSideBlock.createRowNodes();\r\n // }\r\n me.setResult(params, isServerMode, rowData, totalCount);\r\n if (this.afterLoadData) {\r\n this.afterLoadData(options, rowData, totalCount);\r\n }\r\n if (requestSrv.groupKeys.length === 0) {\r\n if (this.beforeSetSecondaryColumns) {\r\n this.beforeSetSecondaryColumns(secondaryColDefs);\r\n }\r\n let fn = (params as any).columnApi.setPivotResultColumns;\r\n if (fn) {\r\n (params as any).columnApi.setPivotResultColumns(\r\n secondaryColDefs\r\n );\r\n } else {\r\n (params as any).columnApi.setSecondaryColumns(secondaryColDefs);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n (err) => {\r\n me.setResult(params, isServerMode, [], 0);\r\n if (this.setError) {\r\n this.setError(err, params);\r\n }\r\n }\r\n );\r\n }\r\n /**\r\n * Set result\r\n * @param params ag-grid details for the request\r\n * @param isServerMode detect type of params\r\n * @param rowsThisBlock data of the request\r\n * @param rowCount count of total result\r\n */\r\n private setResult = (\r\n params: IGetRowsParams | IServerSideGetRowsParams,\r\n isServerMode: boolean,\r\n rowsThisBlock: any[],\r\n rowCount?: number\r\n ): void => {\r\n if (isServerMode) {\r\n (params as IServerSideGetRowsParams).success({\r\n rowData: rowsThisBlock,\r\n rowCount: rowCount,\r\n });\r\n } else {\r\n (params as IGetRowsParams).successCallback(rowsThisBlock, rowCount);\r\n }\r\n };\r\n /**\r\n * Generate odata options for build query from ag-grid request\r\n * @param params ag-grid details for the request\r\n */\r\n getOdataOptions = (\r\n params: IGetRowsParams | IServerSideGetRowsParams\r\n ): OdataQueryExtendFull => {\r\n const me = this;\r\n const options: OdataQueryExtendFull = {};\r\n const isServerMode = 'request' in params;\r\n const request = isServerMode\r\n ? (params as IServerSideGetRowsParams).request\r\n : (params as IGetRowsParams);\r\n const childCount = me.groupCountFieldName;\r\n if (this.beforeRequest) {\r\n this.beforeRequest(options, this, request);\r\n }\r\n if (request.sortModel.length > 0) {\r\n const sort = options.sort || [];\r\n for (let i = 0; i < request.sortModel.length; i++) {\r\n const col = request.sortModel[i];\r\n let colName = me.getWrapColumnName(col.colId);\r\n if (col.sort !== 'asc') {\r\n colName += ' desc';\r\n }\r\n sort.push(colName);\r\n }\r\n options.sort = sort;\r\n }\r\n\r\n const filter = options.filter || [];\r\n for (const colName in request.filterModel) {\r\n if (request.filterModel.hasOwnProperty(colName)) {\r\n const col = request.filterModel[colName];\r\n let colFilter = '';\r\n if (!col.operator) {\r\n colFilter = me.getFilterOdata(colName, col);\r\n if (colFilter) {\r\n filter.push(colFilter);\r\n }\r\n } else {\r\n const condition1 = me.getFilterOdata(colName, col.condition1);\r\n const condition2 = me.getFilterOdata(colName, col.condition2);\r\n if (condition1 && condition2) {\r\n colFilter = `(${condition1} ${col.operator.toLowerCase()} ${condition2})`;\r\n filter.push(colFilter);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let pivotActive = false;\r\n\r\n const apply = options.apply || [];\r\n if (isServerMode) {\r\n const requestSrv = request as IServerSideGetRowsRequest;\r\n pivotActive =\r\n requestSrv.pivotMode &&\r\n requestSrv.pivotCols.length > 0 &&\r\n requestSrv.valueCols.length > 0;\r\n if (requestSrv.rowGroupCols.length > 0) {\r\n const filterGroupBy: string[] = [];\r\n if (requestSrv.groupKeys.length < requestSrv.rowGroupCols.length) {\r\n // If request only groups\r\n for (let idx = 0; idx < requestSrv.groupKeys.length; idx++) {\r\n const colValue = requestSrv.groupKeys[idx];\r\n const condition = `${me.getWrapColumnName(\r\n requestSrv.rowGroupCols[idx].field\r\n )} eq ${\r\n (me.isStrVal(colValue) ? \"'\" : '') +\r\n me.encode(colValue) +\r\n (me.isStrVal(colValue) ? \"'\" : '')\r\n }`;\r\n filterGroupBy.push(condition);\r\n }\r\n if (filterGroupBy.length > 0 || filter.length > 0) {\r\n // Filters must by first\r\n apply.push(`filter(${filterGroupBy.concat(filter).join(' and ')})`);\r\n }\r\n\r\n const aggregate: string[] = [];\r\n if (childCount) {\r\n aggregate.push(me.odataAggregation.count(childCount));\r\n }\r\n if (requestSrv.valueCols.length > 0) {\r\n for (let idx = 0; idx < requestSrv.valueCols.length; idx++) {\r\n const colValue = requestSrv.valueCols[idx];\r\n colValue.aggFunc &&\r\n aggregate.push(\r\n me.odataAggregation[colValue.aggFunc](\r\n me.getWrapColumnName(colValue.field)\r\n )\r\n );\r\n }\r\n }\r\n let groups = [\r\n me.getWrapColumnName(\r\n requestSrv.rowGroupCols[requestSrv.groupKeys.length].field\r\n ),\r\n ];\r\n const sort = options.sort || [];\r\n const sortColOnly = sort.map((x) => x.split(' ')[0]);\r\n if (pivotActive) {\r\n groups = groups.concat(\r\n requestSrv.pivotCols.map((x) => me.getWrapColumnName(x.field))\r\n );\r\n groups.forEach((x) => {\r\n if (sortColOnly.indexOf(x) < 0) {\r\n sort.push(x);\r\n }\r\n });\r\n }\r\n options.sort = sort;\r\n apply.push(\r\n `groupby((${groups.join(',')})${\r\n aggregate.length > 0 ? `,aggregate(${aggregate.join(',')})` : ''\r\n })`\r\n );\r\n\r\n options.apply = apply;\r\n if (options.sort && options.sort.length > 0) {\r\n options.sort = options.sort.filter(\r\n (x) => groups.indexOf(x.split(' ')[0]) >= 0\r\n );\r\n }\r\n // delete options.sort;\r\n } else {\r\n // If request rowData by group filter\r\n for (let idx = 0; idx < requestSrv.groupKeys.length; idx++) {\r\n const colValue = requestSrv.groupKeys[idx];\r\n const condition = `${me.getWrapColumnName(\r\n requestSrv.rowGroupCols[idx].field\r\n )} eq ${\r\n (me.isStrVal(colValue) ? \"'\" : '') +\r\n me.encode(colValue) +\r\n (me.isStrVal(colValue) ? \"'\" : '')\r\n }`;\r\n filter.push(condition);\r\n }\r\n }\r\n }\r\n }\r\n if (filter.length > 0) {\r\n options.filter = filter;\r\n }\r\n if (apply.length > 0) {\r\n options.apply = apply;\r\n delete options.filter;\r\n delete options.expand;\r\n delete options.select;\r\n // options.sort = null;\r\n }\r\n options.skip = request.startRow;\r\n options.top = (request.endRow || 0) - (request.startRow || 0);\r\n\r\n if (!options.apply && options.skip === 0) {\r\n options.count = true;\r\n }\r\n return options;\r\n };\r\n /**\r\n * Generate odata query from ag-grid request\r\n * @param params ag-grid details for the request\r\n */\r\n getOdataQuery = (params: IGetRowsParams | IServerSideGetRowsParams): string =>\r\n this.toQuery(this.getOdataOptions(params));\r\n}\r\n\r\nexport class OdataProviderClient extends OdataProvider {\r\n public override getRows(params: IServerSideGetRowsParams) {\r\n super.getRows(params);\r\n }\r\n}\r\nexport class OdataServerSideProvider extends OdataProvider {\r\n public override getRows(params: IServerSideGetRowsParams): void {\r\n super.getRows(params);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'lib-button-renderer',\r\n template: `\r\n <button class=\"btn-actions\" type=\"button\" (click)=\"onClick($event)\" [attr.data-title]=\"params.tooltip\">\r\n <span *ngIf=\"icon && !label\"> <i class=\"{{ icon }}\"></i> </span>\r\n <span *ngIf=\"!icon && label\">{{ label }}</span>\r\n <span *ngIf=\"icon && label\"><i class=\"{{ icon }}\"></i> {{ label }}</span>\r\n </button>\r\n `,\r\n standalone: false\r\n})\r\nexport class ButtonRendererComponent implements ICellRendererAngularComp {\r\n params: any;\r\n label: any;\r\n icon: any;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.label = this.params.label || null;\r\n this.icon = this.params.icon;\r\n }\r\n\r\n refresh(params?: any): boolean {\r\n return false;\r\n }\r\n\r\n onClick($event: any) {\r\n if (this.params.onClick instanceof Function) {\r\n // put anything into params u want pass into parents component\r\n const params = {\r\n event: $event,\r\n rowData: Object.assign({}, this.params.node.data, {\r\n buttonName: this.params.buttonName,\r\n buttonText: this.params.label,\r\n buttonIcon: this.params.icon,\r\n }),\r\n };\r\n this.params.onClick(params);\r\n }\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { ITooltipAngularComp } from 'ag-grid-angular';\r\nimport { ITooltipParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'tooltip-component',\r\n template: ` <div class=\"custom-tooltip\">\r\n <p>\r\n <span>{{ params.value }}</span>\r\n </p>\r\n </div>`,\r\n standalone: false\r\n})\r\nexport class CustomTooltip implements ITooltipAngularComp {\r\n constructor(private datePipe: DatePipe) {}\r\n public params!: { color: string } & ITooltipParams;\r\n agInit(params: { color: string } & ITooltipParams): void {\r\n this.params = params;\r\n params.value = params.valueFormatted;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'lib-dropdown-renderer',\r\n template: `\r\n <div class=\"dropdown\">\r\n <button type=\"button\" class=\"btn btn-white\" data-toggle=\"dropdown\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\">\r\n <span *ngFor='let data of dropDownData' class=\"dropdown-item\" (click)=\"onClick($event)\" [innerHTML]=\"data\"></span>\r\n </div>\r\n</div>\r\n `,\r\n standalone: false\r\n})\r\nexport class DropdownRenderer implements ICellRendererAngularComp {\r\n params: any;\r\n dropDownData:any;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.dropDownData=this.params.dropDownData?this.params.dropDownData.split(','):[]\r\n }\r\n\r\n refresh(params?: any): boolean {\r\n return false;\r\n }\r\n\r\n onClick($event: any) {\r\n if (this.params.onClick instanceof Function) {\r\n const params = {\r\n event: $event,\r\n rowData: Object.assign({}, this.params.node.data, {\r\n buttonName: $event.target.innerText,\r\n }),\r\n };\r\n console.log('Hit', params);\r\n this.params.onClick(params);\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'app-cell-data',\n template: `\n<span>\n {{ params.value }}\n</span>\n `,\n standalone: false\n})\nexport class CellRendererComponent implements ICellRendererAngularComp {\n params: any;\n agInit(params: any): void {\n this.params = params;\n }\n refresh(params?: any): boolean {\n return false;\n }\n}\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\n@Component({\n selector: 'app-fill-cell-data',\n template: `\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'dacStatus'\" [ngStyle]=\"{'background': rowData.dacIndicator? rowData.dacIndicator : '#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'completionStatus'\" [ngStyle]=\"{'background': rowData.pocIndicator? rowData.pocIndicator:'#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'funding'\" [ngStyle]=\"{'background': rowData.fundingIndicator? rowData.fundingIndicator:'#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"status-fill-cell text-white\" *ngIf=\"params.value && params.field === 'layout'\" [ngStyle]=\"{'background': rowData.layoutIndicator? rowData.layoutIndicator:'#fff'}\" >\n {{ params.value }}\n</span>\n<span class=\"info-fill-cell text-white\" *ngIf=\"params.value && params.field === 'facilityName'\" [ngStyle]=\"{'background': 'var(--primary)'}\" >\n {{ params.value }}\n</span>\n<span class=\"info-fill-cell text-black\" *ngIf=\"params.value && params.field === 'aefirm'\" [ngStyle]=\"{'background': 'var(--gray-6)'}\" >\n {{ params.value }}\n</span>\n<span *ngIf=\"!params.value\">{{params.value}}</span>\n `,\n standalone: false\n})\nexport class FillCellRendererComponent implements ICellRendererAngularComp {\n params: any;\n rowData: any;\n agInit(params: any): void {\n this.params = params;\n this.rowData = params.data;\n }\n refresh(params?: any): boolean {\n return false;\n }\n}\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ValueFormatterParams } from 'ag-grid-community';\r\n\r\n@Injectable()\r\nexport class ColumnValueFormatter {\r\n constructor(private datePipe: DatePipe) {}\r\n public colValueFormatter(params: ValueFormatterParams, colType: string) {\r\n if (isNaN(+params.value)) {\r\n var dateWrapper = new Date(params.value);\r\n let isValidDate = !isNaN(dateWrapper.getDate());\r\n if (isValidDate && colType == 'date') {\r\n return this.datePipe.transform(params.value, 'MM-dd-yyyy');\r\n } else {\r\n return params.value;\r\n }\r\n }\r\n return params.value;\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n input,\r\n reflectComponentType,\r\n} from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport {\r\n ColDef,\r\n FirstDataRenderedEvent,\r\n GetContextMenuItemsParams,\r\n GetRowIdFunc,\r\n GetRowIdParams,\r\n GridApi,\r\n GridReadyEvent,\r\n MenuItemDef,\r\n PaginationChangedEvent,\r\n PaginationNumberFormatterParams,\r\n RowModelType,\r\n RowNode,\r\n ValueFormatterParams,\r\n} from 'ag-grid-community';\r\nimport { GridLibraryService } from './grid-library.service';\r\nimport { OdataServerSideProvider } from './helpers';\r\nimport { ButtonRendererComponent } from './renderer/button-renderer/button-renderer.component';\r\nimport { CustomTooltip } from './renderer/tooltip-renderer/custom-tooltip-renderer';\r\nimport { DropdownRenderer } from './renderer/dropdown-renderer/drop-down-renderer';\r\nimport { ColumnValueFormatter } from './formatters/column-value-formatter';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TokenSharingService } from './token-sharing.service';\r\nimport { DateHeaderComponent } from './renderer/date-header/date-header.component';\r\nimport { HeaderComponent } from 'ag-grid-community/dist/types/core/components/framework/componentTypes';\r\nimport { CellRendererComponent } from './renderer/cell-renderer/cell-renderer.component';\r\nimport { FillCellRendererComponent } from './renderer/fill-cell-renderer/fill-cell-renderer.component';\r\n\r\n@Component({\r\n selector: 'lib-basesite-shared-grid-lib',\r\n template: `\r\n <ag-grid-angular\r\n #agGrid\r\n style=\"width: 100%;height:98.2vh\"\r\n class=\"ag-theme-balham shared-grid-lib\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"rowData\"\r\n [rowSelection]=\"rowSelection\"\r\n [animateRows]=\"true\"\r\n (gridReady)=\"onGridReady($event)\"\r\n [pagination]=\"true\"\r\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\r\n [suppressPaginationPanel]=\"true\"\r\n [tooltipShowDelay]=\"tooltipShowDelay\"\r\n [tooltipHideDelay]=\"tooltipHideDelay\"\r\n [rowModelType]=\"rowModelType\"\r\n [cacheBlockSize]=\"cacheBlockSize\"\r\n [maxConcurrentDatasourceRequests]=\"1\"\r\n [blockLoadDebounceMillis]=\"100\"\r\n (columnVisible)=\"saveGridState($event)\"\r\n (columnPinned)=\"saveGridState($event)\"\r\n (columnResized)=\"saveGridState($event)\"\r\n (columnMoved)=\"saveGridState($event)\"\r\n (sortChanged)=\"onSortChangedEvent($event)\"\r\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\r\n [getContextMenuItems]=\"getContextMenuItems\"\r\n (selectionChanged)=\"onSelectionChanged($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\"\r\n [rowHeight]=\"rowHeight\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n >\r\n </ag-grid-angular>\r\n <!-- Custom pagination -->\r\n <div class=\"custom-pagination\">\r\n <div class=\"pagination-nav\">\r\n <button class=\"nav-btn\" (click)=\"onPreviousPage()\" [disabled]=\"isFirstPage\">\r\n <span class=\"nav-btn-prev\"></span>\r\n </button>\r\n\r\n <ng-container *ngFor=\"let page of pageNumbers\">\r\n <span\r\n *ngIf=\"page !== '...'\"\r\n class=\"page-number\"\r\n [ngClass]=\"{'page-number--increased': typeof page === 'number' && +page > 99}\"\r\n [class.active]=\"page === currentPage\"\r\n (click)=\"goToPage(page)\"\r\n >\r\n {{ page }}\r\n </span>\r\n <span *ngIf=\"page === '...'\" class=\"ellipsis\">...</span>\r\n </ng-container>\r\n\r\n <button class=\"nav-btn\" (click)=\"onNextPage()\" [disabled]=\"isLastPage\">\r\n <span class=\"nav-btn-next\"></span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"pagination-info\">\r\n <span>{{ startRow }}-{{ endRow }} of {{ totalRows }} items</span>\r\n </div>\r\n </div>\r\n <ag-grid-angular\r\n #agGridHidden\r\n style=\"height:100vh; width:100%;display:none\"\r\n class=\"ag-theme-balham\"\r\n [rowData]=\"rowDataHidden\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [animateRows]=\"false\"\r\n [rowSelection]=\"'multiple'\"\r\n (gridReady)=\"onGridReadyExcel($event)\"\r\n [suppressScrollOnNewData]=\"true\"\r\n [cacheQuickFilter]=\"false\"\r\n >\r\n </ag-grid-angular>\r\n `,\r\n styles: [],\r\n standalone: false\r\n})\r\nexport class GridLibraryComponent implements OnInit, OnChanges, OnDestroy {\r\n //input params\r\n @Input() overrideColumnDefs: any;\r\n @Input() columnDefs: any;\r\n @Input() rowData: any;\r\n //@Input() pageSize: number = 20;\r\n @Input() paginationAutoPageSize = true;\r\n @Input() rowSelection: any = 'multiple';\r\n @Input() gridId: any;\r\n @Input() loggedInUser: any;\r\n @Input() siteId: any;\r\n @Input() enableServerSidePaging: boolean = false;\r\n @Input() serverDataUrl!: string;\r\n @Input() environment!: string;\r\n @Input() cacheBlockSize: number = 0;\r\n @Input() rowMultiSelectWithClick: boolean = false;\r\n @Input() floatingFilter: boolean = false;\r\n @Input() token!: string;\r\n @Input() userRoles: any[] = [];\r\n @Input() overlayNoRowsTemplate: any;\r\n @Input() rowHeight: number = 44;\r\n //event emitters\r\n @Output() btnClickHandler = new EventEmitter<any>();\r\n @Output() firstDataRendered = new EventEmitter<any>();\r\n @Output() filterChanged = new EventEmitter<any>();\r\n @Output() selectionChanged = new EventEmitter<any>();\r\n\r\n //viewChilds\r\n //@ViewChild('agGrid') agGrid!: AgGridAngular;\r\n //paramters\r\n initialColumnDef: any = [];\r\n rowDataHidden: any = [];\r\n gridColumnState: any;\r\n exportColumnsList: any = [];\r\n gridColumns: any[] = [];\r\n public tooltipShowDelay = 0;\r\n public tooltipHideDelay = 2000;\r\n public rowModelType: RowModelType = 'clientSide';\r\n //public gridPageSize: number = 0;\r\n private excelAPI!: GridApi;\r\n private gridAPI!: GridApi;\r\n private readonly _Design_Manager = 'Design Manager';\r\n private readonly _Integration_Lead = 'Integration Lead';\r\n private readonly _Tool_Owner = 'Tool Owner';\r\n private readonly _Area_Coordinator = 'Area Coordinator';\r\n private readonly _TiPm = 'TI PM'\r\n //unsubscribe subject\r\n private unsubscribe$ = new Subject<void>();\r\n\r\n //custom pagination properties\r\n private pageNumber: number=0;\r\n currentPage: number = 1;\r\n totalPages: number = 0;\r\n pageNumbers: (number | string)[] = [];\r\n isFirstPage: boolean = true;\r\n isLastPage: boolean = false;\r\n pageSize: number = 12;\r\n startRow: number = 0;\r\n endRow: number = 0;\r\n totalRows: number = 0;\r\n dataLoaded: boolean = false;;\r\n //custom pagination properties ends...\r\n\r\n constructor(\r\n private gridService: GridLibraryService,\r\n private formatterService: ColumnValueFormatter,\r\n private _tokenSharingService: TokenSharingService\r\n ) {\r\n this.gridStateLoaded$.subscribe(val => {\r\n if (val) {\r\n this.configureDataState();\r\n }\r\n })\r\n }\r\n\r\n onSortChangedEvent(e: any) {\r\n this.gridColumnState = this.gridAPI.getState();\r\n this.saveGridState(e);\r\n }\r\n\r\n saveGridState(e: any) {\r\n if (!this.overrideColumnDefs) {\r\n setTimeout(() => { this.onSaveGridColumnState(e); }, 2000)\r\n }\r\n }\r\n\r\n public defaultColDef: ColDef = {\r\n sortable: true,\r\n filter: true,\r\n tooltipComponent: CustomTooltip,\r\n };\r\n isInit: boolean = false;\r\n ngOnInit() {\r\n this.isInit = true;\r\n this._tokenSharingService.updateToken(this.token);\r\n\r\n if (this.enableServerSidePaging == true) {\r\n this.rowModelType = 'serverSide';\r\n this.rowData = '';\r\n } else {\r\n this.rowModelType = 'clientSide';\r\n }\r\n\r\n // this.gridPageSize = this.pageSize;\r\n this.cacheBlockSize = this.cacheBlockSize = 0 ? 100 : this.cacheBlockSize;\r\n this.gridService.setBaseUrl(this.environment);\r\n \r\n //this.getGridState();\r\n \r\n /*this.getColDef();*/\r\n \r\n }\r\n\r\n get isOverride() {\r\n return (!!this.overrideColumnDefs);\r\n }\r\n\r\n configureDataState() {\r\n if (this.isOverride) { \r\n this.overrideGridState(this.overrideColumnDefs);\r\n } else {\r\n this.gridAPI.resetColumnState();\r\n this.getGridState();\r\n //setTimeout(() => { this.setGridState(); }, 2000);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n this.gridStateLoaded = false;\r\n if (changes['userRoles']?.currentValue) {\r\n if (this.initialColumnDef?.length > 0 && this.userRoles?.length > 0) {\r\n this.columnDefs = this._mapColumnDef(this.initialColumnDef, this.userRoles);\r\n }\r\n }\r\n if (!this.isInit) {\r\n this._tokenSharingService.updateToken(this.token);\r\n }\r\n \r\n if (!this.colDefInit && (this.overrideColumnDefs == null || typeof this.overrideColumnDefs == \"string\")) { \r\n this.getColDef();\r\n\r\n } else if (this.overrideColumnDefs == null || typeof this.overrideColumnDefs == \"string\") {\r\n this.configureDataState();\r\n }\r\n }\r\n\r\n public paginationNumberFormatter: (\r\n params: PaginationNumberFormatterParams\r\n ) => string = (params: PaginationNumberFormatterParams) => {\r\n return '[' + params.value.toLocaleString() + ']';\r\n };\r\n colDefInit: boolean = false;\r\n getColDef() {\r\n if (this.gridId && this.loggedInUser) {\r\n this.gridService\r\n .getColDef(this.gridId)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any) => {\r\n if (response.status == 1) {\r\n this.initialColumnDef = response.result;\r\n let coldef: ColDef[] = this._mapColumnDef(response.result, this.userRoles).filter((column: any) => column);\r\n this.exportColumnsList = response.result;\r\n\r\n this.colDefInit = true;\r\n\r\n this.columnDefs = coldef;\r\n this.gridColumns = coldef;\r\n this.getGridState();\r\n \r\n // this.agGrid.gridOptions?.api?.setColumnDefs(coldef);\r\n \r\n } else {\r\n console.log('ColDef Read Error=>', response.message);\r\n }\r\n });\r\n } else {\r\n console.log('Please pass valid GridId and loggedIn user Id');\r\n }\r\n }\r\n\r\n private _getColumnVisiblityStatus(column: any, userRoles: any) {\r\n let isDacHidden;\r\n if (column.isButton === false) {\r\n isDacHidden = this.canViewDacStatus(userRoles, column.field);\r\n } else {\r\n isDacHidden = this.canCreateDac(userRoles, column.field);\r\n }\r\n\r\n const columnState: any = this.gridAPI?.getColumnDefs()?.find((col: any) => col.field == column.field);\r\n if (columnState && columnState.hide) {\r\n return columnState.hide || isDacHidden;\r\n }\r\n else {\r\n if(column.field === \"createDac\"){\r\n return !isDacHidden;\r\n }\r\n return !column.visible || isDacHidden;\r\n }\r\n }\r\n private _mapColumnDef(columns: any, userRoles: any) {\r\n return columns?.map((res: any) => {\r\n if (res.isButton === false) {\r\n if (res.columnType === 'checkbox') {\r\n return {\r\n field: res.field,\r\n headerName: res.title,\r\n sortable: false,\r\n tooltipField: res.field,\r\n resizable: true,\r\n headerCheckboxSelection: false,\r\n filterable: false,\r\n checkboxSelection: true,\r\n showDisabledCheckboxes: true,\r\n suppressFilter: true,\r\n suppressSorting: true,\r\n suppressMenu: true,\r\n width: 55,\r\n };\r\n } else if (res.columnType === 'dropdown') {\r\n return {\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n sortable: false,\r\n suppressFilter: true,\r\n suppressSorting: true,\r\n suppressMenu: true,\r\n tooltipField: res.field,\r\n cellRenderer: DropdownRenderer,\r\n cellRendererParams: {\r\n onClick: this.onBtnClick.bind(this),\r\n tooltip: res.tooltip,\r\n dropDownData: res.dropDownData,\r\n },\r\n onCellClicked: (e: any) => {\r\n e.node.setSelected(false);\r\n },\r\n width: 40,\r\n pinned: res.pinPosition,\r\n lockPinned: true,\r\n };\r\n } else if (res.columnType === 'date') {\r\n return {\r\n pinned: res.pinPosition,\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n sortable: true,\r\n tooltipField: res.field,\r\n floatingFilter: this.floatingFilter,\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n this.formatterService.colValueFormatter(\r\n params,\r\n res.columnType\r\n ),\r\n filterable: res.filterable,\r\n filter: 'agDateColumnFilter',\r\n //headerComponent: DateHeaderComponent, \r\n filterParams: {\r\n comparator: (\r\n filterLocalDateAtMidnight: any,\r\n cellValue: any\r\n ) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n const cellDate = new Date(dateAsString);\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }, buttons: ['reset'],\r\n },\r\n };\r\n\r\n } else if (res.columnType === 'fill') {\r\n return {\r\n pinned: res.pinPosition,\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n sortable: true,\r\n tooltipField: res.field,\r\n floatingFilter: this.floatingFilter,\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n this.formatterService.colValueFormatter(\r\n params,\r\n res.columnType\r\n ),\r\n cellRenderer: FillCellRendererComponent,\r\n cellRendererParams: {\r\n field: res.field,\r\n },\r\n filterable: res.filterable,\r\n filter: 'agTextColumnFilter',\r\n filterParams: {\r\n comparator: (\r\n filterLocalDateAtMidnight: any,\r\n cellValue: any\r\n ) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n if (res.columnType == 'date') {\r\n const cellDate = new Date(dateAsString);\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n },\r\n buttons: ['reset'],\r\n },\r\n };\r\n } else {\r\n // if (!hideDacStatus) {\r\n return {\r\n pinned: res.pinPosition,\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n sortable: true,\r\n tooltipField: res.field,\r\n floatingFilter: this.floatingFilter,\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n this.formatterService.colValueFormatter(\r\n params,\r\n res.columnType\r\n ),\r\n cellRenderer: CellRendererComponent,\r\n cellRendererParams: {\r\n field: res.field,\r\n },\r\n filterable: res.filterable,\r\n filter:\r\n res.columnType == 'date'\r\n ? 'agDateColumnFilter'\r\n : res.columnType == 'number'\r\n ? 'agNumberColumnFilter'\r\n : 'agTextColumnFilter',\r\n filterParams: {\r\n comparator: (\r\n filterLocalDateAtMidnight: any,\r\n cellValue: any\r\n ) => {\r\n const dateAsString = cellValue;\r\n\r\n if (dateAsString == null) {\r\n return 0;\r\n }\r\n if (res.columnType == 'date') {\r\n const cellDate = new Date(dateAsString);\r\n if (cellDate < filterLocalDateAtMidnight) {\r\n return -1;\r\n } else if (cellDate > filterLocalDateAtMidnight) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n },\r\n buttons: ['reset'],\r\n },\r\n };\r\n // } \r\n // else {\r\n // return;\r\n // }\r\n }\r\n } else {\r\n // if (!hideBtn) {\r\n return {\r\n field: res.field,\r\n headerName: res.title,\r\n resizable: true,\r\n sortable: false,\r\n hide: this._getColumnVisiblityStatus(res, userRoles),\r\n suppressFilter: true,\r\n suppressSorting: true,\r\n suppressMenu: true,\r\n tooltipField: res.field,\r\n cellRenderer: ButtonRendererComponent,\r\n cellRendererParams: {\r\n onClick: this.onBtnClick.bind(this),\r\n label: res.label,\r\n icon: res.icon,\r\n buttonName: res.buttonName,\r\n tooltip: res.tooltip,\r\n },\r\n valueGetter: (params: any) => {\r\n return res.tooltip || res.title;\r\n },\r\n minWidth: 20,\r\n cellClass: 'action-button',\r\n pinned: res.pinPosition,\r\n lockPinned: true,\r\n width: res.label ? 100 : 40,\r\n };\r\n // } else {\r\n // return;\r\n // }\r\n }\r\n });\r\n }\r\n\r\n canCreateDac(roles: any[], field: string): boolean {\r\n if (roles?.length > 0 && field === 'createDac') {\r\n const isAEGroup = this.userRoles.some((role) => role?.toLowerCase().includes('ae'));\r\n const isDesignManager = this.userRoles.includes(this._Design_Manager);\r\n return isAEGroup || isDesignManager ? true : false;\r\n //return !(isAEGroup || isDesignManager);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n canViewDacStatus(roles: any[], field: string): boolean {\r\n if (roles?.length > 0 && field === 'dacStatus') {\r\n const isAEGroup = this.userRoles.some((role) => role?.toLowerCase().includes('ae'));\r\n const isIntegrationTeamGroup = this.userRoles.some((role) => role?.toLowerCase().includes('integration team'));\r\n const isIntegrationLead = this.userRoles.includes(this._Integration_Lead);\r\n const isToolOwner = this.userRoles.includes(this._Tool_Owner);\r\n const isAreaCoordinator = this.userRoles.includes(this._Area_Coordinator);\r\n const isDesignManager = this.userRoles.includes(this._Design_Manager);\r\n const isTiPm = this.userRoles.includes(this._TiPm);\r\n return !(isAEGroup || isIntegrationTeamGroup || isIntegrationLead || isToolOwner || isAreaCoordinator || isDesignManager || isTiPm);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n setExternalFilters(options: any) {\r\n var serverUrl = '';\r\n if (\r\n this.serverDataUrl.indexOf('filter') >= 0 &&\r\n options.indexOf('filter') >= 0\r\n ) {\r\n let slug = this.serverDataUrl.split('?$filter=');\r\n if (slug && slug.length > 0) {\r\n options = options + ' and ' + slug[1];\r\n serverUrl = slug[0];\r\n }\r\n } else if (this.serverDataUrl.indexOf('?') >= 0) {\r\n serverUrl = this.serverDataUrl;\r\n options = options.replace('?', '&');\r\n }\r\n return `${serverUrl}${options}`;\r\n }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n //this.gridPageSize = this.pageSize;\r\n \r\n this.gridAPI = params.api;\r\n \r\n if (this.enableServerSidePaging == true) {\r\n // Show loading overlay immediately when server-side paging is enabled\r\n this.gridAPI.showLoadingOverlay();\r\n \r\n //call api\r\n let reqHeaders = {\r\n 'Content-type': 'application/json',\r\n Accept: 'application/json',\r\n Authorization: 'Bearer ' + this.token,\r\n };\r\n \r\n // Add timeout to prevent infinite loading\r\n const API_TIMEOUT = 30000; // 30 seconds\r\n \r\n params.api.setServerSideDatasource(\r\n new OdataServerSideProvider({\r\n isCaseSensitiveStringFilter: false,\r\n callApi: (options) => {\r\n const url = this.setExternalFilters(options);\r\n console.log('Server-side API call:', url);\r\n \r\n // Create a timeout promise\r\n const timeoutPromise = new Promise((_, reject) => {\r\n setTimeout(() => reject(new Error('API request timeout')), API_TIMEOUT);\r\n });\r\n \r\n // Create the fetch promise\r\n const fetchPromise = fetch(url, {\r\n headers: reqHeaders,\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n return response.json();\r\n });\r\n \r\n // Race between fetch and timeout\r\n return Promise.race([fetchPromise, timeoutPromise])\r\n .catch((error) => {\r\n console.error('Server-side API error:', error);\r\n this.gridAPI.hideOverlay();\r\n // Show error overlay or handle error appropriately\r\n this.gridAPI.showNoRowsOverlay();\r\n throw error;\r\n });\r\n },\r\n afterLoadData: (options, rowData, totalCount) => {\r\n \r\n // Ensure overlay is hidden after data loads\r\n setTimeout(() => {\r\n if (!rowData || rowData.length <= 0) {\r\n this.gridAPI.showNoRowsOverlay();\r\n } else {\r\n this.gridAPI.hideOverlay();\r\n }\r\n }, 100);\r\n },\r\n setError: (error, params) => {\r\n console.error('OdataProvider error:', error);\r\n this.gridAPI.hideOverlay();\r\n this.gridAPI.showNoRowsOverlay();\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n setGridState() {\r\n if (this.gridColumns && this.gridColumns.length > 0) {\r\n var arrIndex = this.gridColumns.findIndex((x: any) => x.field == \"createDac\");\r\n\r\n if (this.gridId == 1 && !this.canCreateDac(this.userRoles, \"createDac\")) {\r\n if (arrIndex > -1)\r\n this.gridColumns.splice(arrIndex, 1);\r\n\r\n var dacStatusIndex = this.gridColumns.findIndex((x: any) => x.field == \"dacStatus\");\r\n if (dacStatusIndex > -1)\r\n this.gridColumns.splice(dacStatusIndex, 1);\r\n this.columnDefs = this.gridColumns;\r\n }\r\n if (this.gridId == 1 && this.canCreateDac(this.userRoles, \"createDac\")) {\r\n this.gridColumns[arrIndex].hide = false;\r\n }\r\n this.columnDefs = this.gridColumns;\r\n }\r\n if (this.gridColumnState) {\r\n this.gridAPI?.applyColumnState({ state: this.gridColumnState.columnSizing?.columnSizingModel, applyOrder: true });\r\n if (this.gridColumnState.sort) {\r\n this.gridAPI?.applyColumnState({ state: this.gridColumnState.sort.sortModel })\r\n }\r\n if (this.gridColumnState.filter) {\r\n var filterModel: any = this.gridColumnState.filter.filterModel;\r\n this.gridAPI?.setFilterModel(filterModel);\r\n }\r\n if (this.gridColumnState.columnVisibility) {\r\n var hiddenColumns: any = this.gridColumnState.columnVisibility.hiddenColIds;\r\n this.gridAPI?.setColumnsVisible(hiddenColumns, false);\r\n }\r\n } else {\r\n var columns = this.gridAPI.getColumns();\r\n if (columns && columns.length > 0) {\r\n if (columns.length > 15) {\r\n const allColumnIds: string[] = [];\r\n this.gridAPI!.getColumns()!.forEach((column: any) => {\r\n allColumnIds.push(column.getId());\r\n });\r\n this.gridAPI.autoSizeColumns(allColumnIds, false);\r\n } else {\r\n this.gridAPI.sizeColumnsToFit();\r\n }\r\n }\r\n }\r\n }\r\n\r\n overrideGridState(overrideStateData: any) { \r\n this.gridAPI.showLoadingOverlay();\r\n this.gridAPI.resetColumnState();\r\n this.gridColumnState = JSON.parse(overrideStateData);\r\n this.setGridState();\r\n this.gridAPI.autoSizeAllColumns();\r\n setTimeout(() => { this.gridAPI.autoSizeAllColumns(); }, 2000);\r\n setTimeout(() => { this.gridAPI.hideOverlay(); }, 500);\r\n \r\n }\r\n defaultGridState: any;\r\n gridStateLoaded: boolean = false;\r\n gridStateLoaded$ = new Subject<boolean>();\r\n getGridState() {\r\n \r\n this.gridStateLoaded = false;\r\n if (this.gridId && this.loggedInUser) {\r\n this.gridService\r\n .getGridState(this.gridId, this.loggedInUser, this.siteId)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any) => {\r\n if (\r\n response.status == 1 &&\r\n response.result &&\r\n response.result.gridConfig\r\n ) { \r\n \r\n this.defaultGridState = JSON.parse(response.result.gridConfig);\r\n \r\n this.gridAPI.showLoadingOverlay();\r\n this.gridColumnState = JSON.parse(response.result.gridConfig); \r\n this.setGridState();\r\n setTimeout(() => { this.gridStateLoaded = true; this.gridAPI.hideOverlay(); }, 1000);\r\n \r\n //let manualEvent = { type: 'columnResized' };\r\n //this.onSaveGridColumnState(manualEvent);\r\n \r\n } else {\r\n //this.setGridState();\r\n console.log('no grid state found.');\r\n }\r\n\r\n if (this.overrideColumnDefs != null && this.overrideColumnDefs != undefined) {\r\n this.gridStateLoaded$.next(true);\r\n }\r\n \r\n });\r\n }\r\n }\r\n\r\n onBtnClick(e: any) {\r\n this.btnClickHandler.emit(e.rowData);\r\n }\r\n\r\n private __debounceGridSaveHit: any = null;\r\n onSaveGridColumnState(event: any) {\r\n \r\n if (this.isOverride || !this.gridStateLoaded) { return; }\r\n if (this.__debounceGridSaveHit) {\r\n clearTimeout(this.__debounceGridSaveHit);\r\n }\r\n \r\n this.__debounceGridSaveHit = setTimeout(() => {\r\n let columnState = this.gridAPI?.getState();\r\n let columnData = {\r\n gridConfig: JSON.stringify(columnState),\r\n uiGridId: this.gridId,\r\n userId: this.loggedInUser,\r\n siteId: this.siteId\r\n };\r\n if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved' || event.type === 'columnVisible') {\r\n this.gridColumnState = columnState;\r\n this.gridService.saveColumnConfig(columnData)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res: any) => {\r\n //this.setGridState();\r\n if (res.status == 0) {\r\n console.log('Error while saving column configuration:', res.message);\r\n }\r\n });\r\n }\r\n this.__debounceGridSaveHit = null;\r\n }, 1000);\r\n }\r\n\r\n\r\n getRowById: GetRowIdFunc = (params: GetRowIdParams) => {\r\n var data = params.data;\r\n return data.id ?? 0;\r\n };\r\n\r\n // Custom right click Context Menu to support custom excel exports\r\n public getContextMenuItems = (\r\n params: GetContextMenuItemsParams\r\n ): (string | MenuItemDef)[] => {\r\n let res: (string | MenuItemDef)[] = [\r\n 'cut',\r\n 'copy',\r\n 'copyWithHeaders',\r\n 'copyWithGroupHeaders',\r\n 'paste',\r\n {\r\n name: 'Export',\r\n subMenu: [\r\n {\r\n name: 'CSV Export',\r\n action: () => {\r\n this.exportFile('csv');\r\n },\r\n },\r\n {\r\n name: 'Excel Export',\r\n action: () => {\r\n this.exportFile('xlsx');\r\n },\r\n },\r\n ],\r\n },\r\n ];\r\n return res;\r\n };\r\n\r\n //custom export method\r\n public exportFile(type: string = 'xlsx') {\r\n this.getDataForExcelExport(type);\r\n }\r\n //Generate only those columns for export which are visible and are not of other types that are not required for export\r\n generateColumnsForExcel(): string[] {\r\n let columnsToBeDisplayedForExcel: any = [];\r\n this.exportColumnsList.forEach((column: any) => {\r\n if (\r\n column.visible == true &&\r\n column.columnType != 'checkbox' &&\r\n column.columnType != 'dropdown' &&\r\n column.columnType != ''\r\n ) {\r\n columnsToBeDisplayedForExcel.push(column.field);\r\n }\r\n });\r\n return columnsToBeDisplayedForExcel;\r\n }\r\n\r\n //Get data from server without paging so that whole data can be exported to excel\r\n // and also check for server side and client side rendering of data for export.\r\n getDataForExcelExport(type: string) {\r\n this.gridAPI.showLoadingOverlay();\r\n if (this.enableServerSidePaging) {\r\n this.gridService\r\n .getDataForExport(this.serverDataUrl)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any) => {\r\n this.gridAPI.hideOverlay();\r\n if (response && response.value.length > 0) {\r\n this.excelAPI.setRowData(response.value);\r\n this.excelAPI.sizeColumnsToFit();\r\n if (type == 'csv') {\r\n this.excelAPI.exportDataAsCsv({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n } else {\r\n this.excelAPI.exportDataAsExcel({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n }\r\n } else {\r\n console.log('Error while fetching data for excel/csv export');\r\n }\r\n });\r\n } else {\r\n this.gridAPI.hideOverlay();\r\n if (type == 'csv') {\r\n this.gridAPI.exportDataAsCsv({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n } else {\r\n this.gridAPI.exportDataAsExcel({\r\n columnKeys: this.generateColumnsForExcel(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n onSelectionChanged(e: any) {\r\n this.selectionChanged.emit(e);\r\n }\r\n\r\n onFilterChanged(e: any) {\r\n this.saveGridState(e);\r\n this.filterChanged.emit(e);\r\n }\r\n\r\n onFirstDataRendered(e: any) {\r\n const storedPageNumber = localStorage.getItem('pageNumber');\r\n this.pageNumber = storedPageNumber ? parseInt(storedPageNumber) : 0;\r\n if (this.pageNumber >= 1) {\r\n this.gridAPI.paginationGoToPage(this.pageNumber);\r\n }\r\n this.dataLoaded = true;\r\n\r\n setTimeout(() => this.updatePaginationInfo(), 0);\r\n this.firstDataRendered.emit(e);\r\n }\r\n\r\n onGridReadyExcel(params: any) {\r\n this.excelAPI = params.api;\r\n }\r\n //Custom Pagination starts here ================############################================================\r\n\r\n onPaginationChanged = (params: PaginationChangedEvent) => {\r\n if (this.gridAPI && this.dataLoaded) {\r\n this.gridAPI!.deselectAll();\r\n const currentPage = this.gridAPI.paginationGetCurrentPage();\r\n localStorage.setItem('pageNumber', currentPage.toString());\r\n\r\n setTimeout(() => this.updatePaginationInfo(), 0);\r\n }\r\n };\r\n\r\n private updatePaginationInfo() {\r\n if (!this.gridAPI) return;\r\n\r\n // Get all pagination info at once to minimize grid API calls\r\n const currentPage = this.gridAPI.paginationGetCurrentPage() + 1;\r\n const totalPages = this.gridAPI.paginationGetTotalPages();\r\n const totalRows = this.gridAPI.paginationGetRowCount();\r\n const pageSize = this.gridAPI.paginationGetPageSize();\r\n\r\n // Update component state\r\n this.currentPage = currentPage;\r\n this.totalPages = totalPages;\r\n this.totalRows = totalRows;\r\n this.pageSize = pageSize;\r\n\r\n // Calculate derived values\r\n this.startRow = (this.currentPage - 1) * this.pageSize + 1;\r\n this.endRow = Math.min(this.currentPage * this.pageSize, this.totalRows);\r\n this.isFirstPage = this.currentPage === 1;\r\n this.isLastPage = this.currentPage === this.totalPages;\r\n\r\n // Update page numbers array\r\n this.updatePageNumbers();\r\n }\r\n\r\n private updatePageNumbers() {\r\n this.pageNumbers = [];\r\n\r\n if (this.totalPages <= 7) {\r\n // Show all pages if 7 or fewer\r\n for (let i = 1; i <= this.totalPages; i++) {\r\n this.pageNumbers.push(i);\r\n }\r\n } else {\r\n // Always show first page\r\n this.pageNumbers.push(1);\r\n\r\n // Show ellipsis if not near the beginning\r\n if (this.currentPage > 3) {\r\n this.pageNumbers.push('...');\r\n }\r\n\r\n // Calculate range of pages to show around current page\r\n let startPage = Math.max(2, this.currentPage - 1);\r\n let endPage = Math.min(this.totalPages - 1, this.currentPage + 1);\r\n\r\n // Adjust range to show at least 3 pages when possible\r\n if (startPage === 2) endPage = Math.min(4, this.totalPages - 1);\r\n if (endPage === this.totalPages - 1) startPage = Math.max(2, this.totalPages - 3);\r\n\r\n // Add the range of pages\r\n for (let i = startPage; i <= endPage; i++) {\r\n this.pageNumbers.push(i);\r\n }\r\n\r\n // Show ellipsis if not near the end\r\n if (this.currentPage < this.totalPages - 2) {\r\n this.pageNumbers.push('...');\r\n }\r\n\r\n // Always show last page\r\n this.pageNumbers.push(this.totalPages);\r\n }\r\n }\r\n\r\n goToPage(page: number | string) {\r\n if (typeof page === 'number' && this.gridAPI) {\r\n this.gridAPI.paginationGoToPage(page - 1);\r\n }\r\n }\r\n\r\n onPreviousPage() {\r\n if (!this.isFirstPage && this.gridAPI) {\r\n this.gridAPI.paginationGoToPreviousPage();\r\n }\r\n }\r\n\r\n onNextPage() {\r\n if (!this.isLastPage && this.gridAPI) {\r\n this.gridAPI.paginationGoToNextPage();\r\n }\r\n }\r\n\r\n //custom pagination ends...\r\n //destroy all associated subscriptions on component destroy\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { IHeaderParams, SortDirection } from 'ag-grid-community';\n\n@Component({\n selector: 'app-date-header',\n template: `\n<span>\n {{ params.displayName }}\n <i class=\"fa-solid fa-calendar-days\" style=\"margin-left: 4px;\"></i>\n <span #menuButton (click)=\"toggleSort()\">{{ params.displayName }}</span>\n<span (click)=\"params.showColumnMenu(menuButton)\">☰</span>\n</span>\n `,\n standalone: false\n})\nexport class DateHeaderComponent {\n params!: IHeaderParams;\n sortOrderAsc: SortDirection = 'asc';\n sortOrderDesc: SortDirection = 'asc';\n agInit(params: IHeaderParams): void {\n this.params = params;\n }\n toggleSort(): void {\n const currentSort = this.params.column.getSort();\n const newSort = currentSort === this.sortOrderAsc ? this.sortOrderDesc : currentSort === this.sortOrderDesc ? null : this.sortOrderAsc;\n this.params.setSort(newSort);\n }\n}\n","import { Component } from '@angular/core';\nimport { IHeaderParams } from 'ag-grid-community';\n\n@Component({\n selector: 'app-date-header',\n template: `\n<span>\n {{ params.displayName }}\n</span>\n `, standalone: false\n})\nexport class HeaderComponent {\n params!: IHeaderParams;\n agInit(params: IHeaderParams): void {\n this.params = params;\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\n//import {LicenseManager} from \"ag-grid-enterprise\";\r\nimport 'ag-grid-enterprise';\r\n//LicenseManager.setLicenseKey(\"Using_this_AG_Grid_Enterprise_key_( AG-040308 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Basesite )_is_granted_a_( Multiple Applications )_Developer_License_for_( 2 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_need_to_be_licensed_in_addition_to_the_ones_working_with_AG_Grid_Enterprise___This_key_has_been_granted_a_Deployment_License_Add-on_for_( 2 )_Production_Environments___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 18 May 2024 )____[v2]_MTcxNTk4NjgwMDAwMA==60418a73ee93fedd598e5d8aa02b2926\")\r\nimport { provideHttpClient, withInterceptorsFromDi } from \"@angular/common/http\";\r\nimport { ButtonRendererComponent } from './renderer/button-renderer/button-renderer.component';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { CustomTooltip } from './renderer/tooltip-renderer/custom-tooltip-renderer';\r\nimport { GridLibraryComponent } from './grid-library.component';\r\nimport { DropdownRenderer } from './renderer/dropdown-renderer/drop-down-renderer';\r\nimport { GridLibraryService } from './grid-library.service';\r\nimport { ColumnValueFormatter } from './formatters/column-value-formatter';\r\nimport { DateHeaderComponent } from './renderer/date-header/date-header.component';\r\nimport { HeaderComponent } from './renderer/header/header.component';\r\nimport { CellRendererComponent } from './renderer/cell-renderer/cell-renderer.component';\r\nimport { FillCellRendererComponent } from './renderer/fill-cell-renderer/fill-cell-renderer.component';\r\n\r\n@NgModule({ declarations: [\r\n GridLibraryComponent,\r\n ButtonRendererComponent,\r\n CustomTooltip,\r\n DropdownRenderer,\r\n DateHeaderComponent,\r\n HeaderComponent,\r\n CellRendererComponent,\r\n FillCellRendererComponent\r\n ],\r\n exports: [\r\n GridLibraryComponent\r\n ],\r\n imports: [AgGridModule,\r\n CommonModule], providers: [DatePipe, GridLibraryService, ColumnValueFormatter, provideHttpClient(withInterceptorsFromDi())] })\r\nexport class GridLibraryModule { }\r\n","/*\r\n * Public API Surface of basesite-shared-grid-lib\r\n */\r\n\r\nexport * from './lib/grid-library.service';\r\nexport * from './lib/grid-library.component';\r\nexport * from './lib/grid-library.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.TokenSharingService","i1","i1.GridLibraryService","i2.ColumnValueFormatter","i3.TokenSharingService","i5"],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|