ngx-deebodata 0.0.1
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.
- package/LICENSE +1 -0
- package/README.md +140 -0
- package/fesm2022/ngx-deebodata.mjs +6863 -0
- package/fesm2022/ngx-deebodata.mjs.map +1 -0
- package/package.json +33 -0
- package/types/ngx-deebodata.d.ts +439 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-deebodata.mjs","sources":["../../../projects/ngx-deebodata/src/lib/services/common-service.ts","../../../projects/ngx-deebodata/src/lib/services/data-table-service.ts","../../../projects/ngx-deebodata/src/lib/services/table-drag-service.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/data-table-header/data-table-header.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/data-table-header/data-table-header.html","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/data-table-paginator/data-table-paginator.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/data-table-paginator/data-table-paginator.html","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/data-cell/data-cell.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/data-cell/data-cell.html","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/export-component/export-component.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/export-component/export-component.html","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/row-group-menu/row-group-menu.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/row-group-menu/row-group-menu.html","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/row-group-panel/row-group-panel.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/row-group-panel/row-group-panel.html","../../../projects/ngx-deebodata/src/lib/data-table/charts/num-value-distro-component/num-value-distro-component.ts","../../../projects/ngx-deebodata/src/lib/data-table/charts/num-value-distro-component/num-value-distro-component.html","../../../projects/ngx-deebodata/src/lib/data-table/charts/pie-graph-component/pie-graph-component.ts","../../../projects/ngx-deebodata/src/lib/data-table/charts/pie-graph-component/pie-graph-component.html","../../../projects/ngx-deebodata/src/lib/data-table/charts/bar-graph-component/bar-graph-component.ts","../../../projects/ngx-deebodata/src/lib/data-table/charts/bar-graph-component/bar-graph-component.html","../../../projects/ngx-deebodata/src/lib/data-table/charts/line-graph-component/line-graph-component.ts","../../../projects/ngx-deebodata/src/lib/data-table/charts/line-graph-component/line-graph-component.html","../../../projects/ngx-deebodata/src/lib/data-table/charts/column-chart/column-chart.ts","../../../projects/ngx-deebodata/src/lib/data-table/charts/column-chart/column-chart.html","../../../projects/ngx-deebodata/src/lib/data-table/charts/charts-and-graphs/charts-and-graphs.ts","../../../projects/ngx-deebodata/src/lib/data-table/charts/charts-and-graphs/charts-and-graphs.html","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/ngx-deebodata/ngx-deebodata.ts","../../../projects/ngx-deebodata/src/lib/data-table/data-table-module/ngx-deebodata/ngx-deebodata.html","../../../projects/ngx-deebodata/src/public-api.ts","../../../projects/ngx-deebodata/src/ngx-deebodata.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonService {\r\n\r\n uniSep: string = \"X_\";\r\n\r\n replaceUniSep(val: any) {\r\n return (val && typeof val === \"string\") ? val.replace(/\\X_/g, \" \") : (val ? val : null)\r\n }\r\n\r\n elifyCol(col: string) {\r\n return col.replace(/ /g, this.uniSep)\r\n }\r\n\r\n titleCase(str: any) {\r\n if(!str || str === \"\")\r\n return str\r\n return str.replace(/\\w\\S*/g, (txt: string) => txt.charAt(0).toUpperCase() + txt.substring(1) );\r\n }\r\n \r\n idCol(col: string) { \r\n if(col && (col === \"id\" || col === \"ID\" || col === \"Id\" || /[Z+z+][I+i+][P+p+][ _\\-]?/g.test(col)) || /[S+s+][S+s+][N+n+][ _\\-]?/g.test(col))\r\n return true\r\n return col && typeof col === \"string\" && col.toLocaleLowerCase().endsWith(\"id\") && /[-_ ][I+i+][D+d+]/g.test(col)\r\n }\r\n\r\n mapLongDate(val: string) {\r\n let dtStr = \"\"\r\n let yrStr = \"\"\r\n const dt = val.match(/\\d{1,2}\\,/g)\r\n const yr = val.match(/ \\d{4}/g)\r\n if(dt && dt.length)\r\n dtStr = dt[(dt.length-1)]\r\n if(yr && yr.length)\r\n yrStr = yr[(yr.length-1)]\r\n if(!dt || !yr)\r\n return new Date(val)\r\n return new Date(yrStr + \",\" + this.mapTxtMonths(val) + \",\" + dtStr)\r\n }\r\n\r\n mapTxtMonths(val: string) {\r\n if(/(jan|january)/g.test(val))\r\n return \"01\"\r\n if(/(feb|february)/g.test(val))\r\n return \"02\"\r\n if(/(mar|march)/g.test(val))\r\n return \"03\"\r\n if(/(apr|april)/g.test(val))\r\n return \"04\"\r\n if(/may/g.test(val))\r\n return \"05\"\r\n if(/(jun|june)/g.test(val))\r\n return \"06\"\r\n if(/(jul|july)/g.test(val))\r\n return \"07\"\r\n if(/(aug|august)/g.test(val))\r\n return \"08\"\r\n if(/(sept|september)/g.test(val))\r\n return \"09\"\r\n if(/(oct|october)/g.test(val))\r\n return \"10\"\r\n if(/(nov|november)/g.test(val))\r\n return \"11\"\r\n if(/(dec|december)/g.test(val))\r\n return \"12\"\r\n return \"06\"\r\n }\r\n\r\n testShortDate(val: string) {\r\n const isDtReg = new RegExp(/\\d+(\\/|-| )\\d+(\\/|-| )\\d+/)\r\n if(val && isDtReg.test(val) && /^\\d+$/g.test(val.replace(/(\\/|-| )/g, \"\")) && val.length <= 10)\r\n return true\r\n return false\r\n }\r\n\r\n testISODate(val: string) {\r\n return (val && /\\d{4}-[01]\\d-[0-3]\\d(T|t)[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|(Z|z))/.test(val)) ? true : false\r\n }\r\n\r\n testLongDate(val: string) {\r\n const dtReg = /(jan|january|feb|february|mar|march|apr|april|may|jun|june|jul|july|aug|august|sept|september|oct|october|nov|november|dec|december) \\d{1,2}\\, \\d{4}/\r\n if(val && dtReg.test(val) && val.length < 29)\r\n return true\r\n return false\r\n }\r\n\r\n coerceDate(val: any) {\r\n try{\r\n if(!val)\r\n return null\r\n if(this.testLongDate(val))\r\n return this.mapLongDate(val)\r\n const fFour = val.substring(0,4)\r\n const moGuess = val.substring(5,7)\r\n const dtGuess = val.substring(8,10)//2024-10-30\r\n if((this.testISODate(val.replace(/ /g, \"\")) || (/^\\d+$/g.test(fFour) && /^\\d+$/g.test(moGuess) && /^\\d+$/g.test(dtGuess))))\r\n return new Date(fFour + \",\" + moGuess + \",\" + dtGuess)\r\n if(/\\d{2}(\\/|-| )\\d{2}(\\/|-| )\\d{4}/g.test(val))//10-30-2023\r\n return new Date(val.substring(6,10) + \",\" + (val.substring(0,2)) + \",\" + val.substring(3,5))\r\n if(/\\d{2}(\\/|-| )\\d{1}(\\/|-| )\\d{4}/g.test(val))//10-5-2023\r\n return new Date(val.substring(5,9) + \",\" + (val.substring(0,2)) + \",\" + (\"0\"+val.substring(3,4)))\r\n if(/\\d{1}(\\/|-| )\\d{2}(\\/|-| )\\d{4}/g.test(val))//5-26-2025\r\n return new Date(val.substring(5,9) + \",\" + (\"0\"+val.substring(0,1)) + \",\" + val.substring(2,4))\r\n if(/\\d{1}(\\/|-| )\\d{1}(\\/|-| )\\d{4}/g.test(val))//5-6-2025\r\n return new Date(val.substring(4,8) + \",\" + (\"0\"+val.substring(0,1)) + \",\" + (\"0\"+val.substring(2,3)))\r\n\r\n if(/\\d{2}(\\/|-| )\\d{2}(\\/|-| )\\d{2}/g.test(val))//10-30-23\r\n return new Date((\"20\" + val.substring(6,8)) + \",\" + (val.substring(0,2)) + \",\" + val.substring(3,5))\r\n if(/\\d{2}(\\/|-| )\\d{1}(\\/|-| )\\d{2}/g.test(val))//11-6-25\r\n return new Date((\"20\" + val.substring(5,7)) + \",\" + (val.substring(0,2)) + \",\" + (\"0\"+val.substring(3,4)))\r\n if(/\\d{1}(\\/|-| )\\d{2}(\\/|-| )\\d{2}/g.test(val))//5-16-25\r\n return new Date((\"20\" + val.substring(5,7)) + \",\" + (\"0\"+val.substring(0,1)) + \",\" + val.substring(2,4))\r\n if(/\\d{1}(\\/|-| )\\d{1}(\\/|-| )\\d{2}/g.test(val))//5-6-25\r\n return new Date((\"20\" + val.substring(4,6)) + \",\" + (\"0\"+val.substring(0,1)) + \",\" + (\"0\"+val.substring(2,3)))\r\n \r\n if(/\\d{4}(\\/|-| )\\d{2}(\\/|-| )\\d{2}/g.test(val))//2025-12-16\r\n return new Date(val.substring(0,4) + \",\" + (val.substring(5,7)) + \",\" + val.substring(8,10))\r\n if(/\\d{4}(\\/|-| )\\d{2}(\\/|-| )\\d{1}/g.test(val))//2025-12-6\r\n return new Date(val.substring(0,4) + \",\" + (val.substring(5,7)) + \",\" + (\"0\"+val.substring(8,9)))\r\n if(/\\d{4}(\\/|-| )\\d{1}(\\/|-| )\\d{2}/g.test(val))\r\n return new Date(val.substring(0,4) + \",\" + (\"0\"+val.substring(5,6)) + \",\" + val.substring(7,9))\r\n if(/\\d{4}(\\/|-| )\\d{1}(\\/|-| )\\d{1}/g.test(val))//2025-6-5\r\n return new Date(val.substring(0,4) + \",\" + (\"0\"+val.substring(5,6)) + \",\" + (\"0\"+val.substring(7,8)))\r\n return val\r\n } catch(e){\r\n return val\r\n }\r\n }\r\n\r\n isADateObject(val: any) {\r\n return val && typeof val === \"object\" && typeof val.getTime === \"function\"\r\n }\r\n\r\n stripSpecChars(word: any) {\r\n try{\r\n const okword = word?.trim().replace(/[~_\\-]/g, \" \").replace(/[`!@#$%^&*()|+=?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/g, \"\").replace(/ /g, \" \").replace(/ /g, \" \").replace(/^\\d+/, '').trim()\r\n return okword\r\n } catch(e){ return word }\r\n }\r\n\r\n doBigData(num: number) {\r\n try{\r\n let str = num ? num.toLocaleString(undefined, { maximumFractionDigits: 1 }).split(\".\")[0] : '0'\r\n if(num){\r\n let arr = str.split(\",\")\r\n let dec;\r\n if(arr.length > 0)\r\n dec = arr[1].substring(0, 1)\r\n str = str.\r\n replace(/,\\d{3},\\d{3},\\d{3}/, (dec === \"0\" ? \"B\" : (\".\" + dec + \"B\"))).\r\n replace(/,\\d{3},\\d{3}/, (dec === \"0\" ? \"M\" : (\".\" + dec + \"M\"))).\r\n replace(/,\\d{3}/, (dec === \"0\" ? \"K\" : (\".\" + dec + \"K\")))\r\n }\r\n return str\r\n } catch(e){\r\n return num ? num.toLocaleString(undefined, { maximumFractionDigits: 1 }).\r\n replace(/,\\d{3},\\d{3},\\d{3}/,\"B\").\r\n replace(/,\\d{3},\\d{3}/,\"M\").\r\n replace(/,\\d{3}/,\"K\") : '0'\r\n }\r\n }\r\n\r\n mystartsWith(str: string, query: string) {\r\n try{\r\n var qLen = query.length\r\n return str.substring(0, qLen) === query ? true : false\r\n }catch(e){ return false }\r\n }\r\n\r\n isEnterKey(event: any) {\r\n if(event){\r\n if (typeof event.key !== \"undefined\") {\r\n return event.key === 'Enter'\r\n } else if (typeof event.keyIdentifier !== \"undefined\") {\r\n return event.keyIdentifier === 'Enter'\r\n } else if (typeof event.keyCode !== \"undefined\") {\r\n return event.keyCode === 13\r\n }\r\n return false\r\n }\r\n return false\r\n }\r\n\r\n isTabKey(event: any) {\r\n if(event){\r\n if (typeof event.key !== \"undefined\") {\r\n return event.key === 'Tab'\r\n } else if (typeof event.keyIdentifier !== \"undefined\") {\r\n return event.keyIdentifier === 'Tab'\r\n } else if (typeof event.keyCode !== \"undefined\") {\r\n return event.keyCode === 9\r\n }\r\n return false\r\n }\r\n return false\r\n }\r\n\r\n keyCanSearch(event: any) {\r\n return (this.isSearchKey(event) ||\r\n this.isBackKey(event) ||\r\n this.isDeleteKey(event) ||\r\n this.isSpaceKey(event))\r\n }\r\n\r\n isSearchKey(event: any) {\r\n if (event && event.key !== undefined) {\r\n return /^[A-Za-z0-9, ()&:\\-.,#$!@]$/.test(event.key)\r\n } else if (event.keyIdentifier !== undefined) {\r\n return (/Key([a-zA-Z])/.test(event.keyIdentifier) || \r\n this.mystartsWith(event.keyIdentifier, \"Digit\") ||\r\n this.mystartsWith(event.keyIdentifier, \"Numpad\"))\r\n } else if (event.keyCode !== undefined) {\r\n return ((event.keyCode >= 65 && event.keyCode <= 90) || \r\n (event.keyCode >= 48 && event.keyCode <= 57) ||\r\n (event.keyCode >= 96 && event.keyCode <= 105))\r\n }\r\n return false\r\n }\r\n\r\n isBackKey(event: any) {\r\n if (event && event.key !== undefined) {\r\n return event.key === 'Backspace'\r\n } else if (event.keyIdentifier !== undefined) {\r\n return event.keyIdentifier === 'Backspace'\r\n } else if (event.keyCode !== undefined) {\r\n return event.keyCode === 8\r\n }\r\n return false\r\n }\r\n\r\n isDeleteKey(event: any) {\r\n if (event && event.key !== undefined) {\r\n return event.key === 'Delete'\r\n } else if (event.keyIdentifier !== undefined) {\r\n return event.keyIdentifier === 'Delete'\r\n } else if (event.keyCode !== undefined) {\r\n return event.keyCode === 46\r\n }\r\n return false\r\n }\r\n\r\n isSpaceKey(event: any) {\r\n if (event && event.key !== undefined) {\r\n return event.key == \" \"\r\n } else if (event.keyIdentifier !== undefined) {\r\n return event.keyIdentifier == \" \"\r\n } else if (event.keyCode !== undefined) {\r\n return event.keyCode === 32\r\n } else if (event.code !== undefined) {\r\n return event.code === \"Space\"\r\n }\r\n return false\r\n }\r\n\r\n isDownKey(event: any) {\r\n if (event && event.key !== undefined) {\r\n return event.key === 'ArrowDown'\r\n } else if (event.keyIdentifier !== undefined) {\r\n return event.keyIdentifier === 'ArrowDown'\r\n } else if (event.keyCode !== undefined) {\r\n return event.keyCode === 40\r\n }\r\n return false\r\n }\r\n\r\n isUpKey(event: any) {\r\n if (event && event.key !== undefined) {\r\n return event.key === 'ArrowUp'\r\n } else if (event.keyIdentifier !== undefined) {\r\n return event.keyIdentifier === 'ArrowUp'\r\n } else if (event.keyCode !== undefined) {\r\n return event.keyCode === 38\r\n }\r\n return false\r\n }\r\n\r\n dontSan(val: any) {\r\n if(val && (this.testShortDate(val) || this.testISODate(val)))\r\n return true\r\n return false\r\n }\r\n\r\n sanitizeUi(val: any) {\r\n if(val){\r\n if(this.dontSan(val))\r\n return val;\r\n var entityMap: any = {\r\n '<': '<',\r\n '>': '>',\r\n };\r\n \r\n return typeof val === \"string\" ? val.replace(/[<>]/g, s => {\r\n return entityMap[s];\r\n }) : val\r\n } else\r\n return val === 0 ? val : ''\r\n }\r\n\r\n unbindMouseEvent(e: any) {\r\n e && e.stopPropagation()\r\n }\r\n\r\n goodLs = signal<boolean>(false);\r\n\r\n getRgbParts(rgb: string) {\r\n try{\r\n const clst = rgb.replace(/rgb[\\(\\)]/g, \"\").split(\",\")\r\n return {r: parseInt(clst[0].trim()), g: parseInt(clst[1].trim()), b: parseInt(clst[2].trim())}\r\n } catch(e) { return {r: 255, g: 255, b: 255} }\r\n }\r\n\r\n componentToHex(c: any) {\r\n const hex = c.toString(16);\r\n return hex.length == 1 ? \"0\" + hex : hex;\r\n }\r\n\r\n rgbToHex(r: any, g: any, b: any) {\r\n return \"#\" + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\r\n }\r\n\r\n hexToRgb(hex: any) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n }\r\n\r\n setLs() {\r\n this.goodLs.set(true)\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { CommonService } from './common-service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subject } from 'rxjs';\r\nimport { ColumnSymbol } from '../interfaces/column-symbol';\r\nimport { ColumnStyles } from '../interfaces/column-styles';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataTableService {\r\n\r\n constructor(private common: CommonService,\r\n private http: HttpClient,\r\n ) {\r\n \r\n }\r\n\r\n sortOrder: string[] = []\r\n mainData: any[] = []\r\n mainDataLen = 0\r\n tblTop: number = 0;\r\n tblBot: number = 0;\r\n tblLeft: number = 0;\r\n tblRight: number = 0;\r\n dpLim: number = 1000;\r\n currFilData: any[] = []\r\n currMapping: any = {}\r\n mapperWorkerId: number = 1;\r\n dTblHeight: number = 500;\r\n defltRHgt: string = \"50px\"\r\n isSorting = signal<boolean>(false);\r\n isFiltering = signal<boolean>(false);\r\n showCharts = signal<boolean>(false)\r\n themeColor1: any = null\r\n themeColor2: any = null\r\n currEditCol: string = \"\"\r\n currEditIndex: number = -1\r\n visibleCols: string[] = []\r\n currColumnEdit: any = null;\r\n useColWid: string = \"100px\"\r\n currGroup: string = \"\"\r\n firstCol: string = \"\"\r\n primaryKey: string = \"\"\r\n autoScrollOnEdit: boolean = false\r\n listenToCloseExportOpts = false;\r\n listenToCloseGroupByOpts = false;\r\n currGrouping: Subject<any> = new Subject()\r\n closeExportOpts: Subject<boolean> = new Subject()\r\n closeGroupByOpts: Subject<boolean> = new Subject()\r\n gridEventWhileGrouped: Subject<any> = new Subject()\r\n gridScrollEndWhileGrouped: Subject<any> = new Subject()\r\n mouseupWhileGrouped: Subject<any> = new Subject()\r\n setIdealColumnWidth: Subject<any> = new Subject()\r\n currSelRows: any[] = []//just be an index of mainData\r\n displayOnlySelRows = false\r\n noDataMsg: string = \"Loading...\"\r\n deboTotal: string = \"deebo_total\"\r\n bgSep: string = \"__forbargX\"\r\n errorLoading = false;\r\n dataFilSrtTracker: any = {}\r\n comparatorOpts: any = {\r\n text: [\"Equals\", \"Not Equal\", \"Empty\", \"Not Empty\", \"Contains\", \"Starts With\", \"Ends With\"],\r\n number: [\"Equals\", \"Not Equal\", \"Empty\", \"Not Empty\", \"Less Than\", \"Less Than or Equal\", \"Greater Than\", \"Greater Than or Equal\"],\r\n date: [\"Equals\", \"Not on\", \"Empty\", \"Not Empty\", \"Before\", \"After\"],\r\n }\r\n badStrings: string[] = [\"null\", \"NULL\", \"Null\", \"undefined\", \"UNDEFINED\", \"Undefined\"]\r\n\r\n columnSymbols: ColumnSymbol[] = []\r\n\r\n columnStyles: ColumnStyles[] = []\r\n\r\n pieGraphColors: string[] = []\r\n removePieCovers: boolean|string[] = false\r\n\r\n getColumnStyle(col: string): string {\r\n const foundCol = this.columnStyles.find( c => c.column === col)?.column\r\n return foundCol ? (\" data-cell-\" + foundCol + \"-\") : \"\";\r\n }\r\n\r\n isLocalHost(andSet: boolean): boolean {\r\n const isLocal = (/4200/g.test(location.port) && /localhost/g.test(location.href));\r\n if(andSet && isLocal)\r\n this.common.setLs()\r\n return isLocal\r\n }\r\n\r\n validateLicense(key: string) {\r\n return this.http.post(this.validationEndpoint, {key: key})\r\n }\r\n\r\n getNewTrackerObj(colName: string) {\r\n const symbol = this.columnSymbols.filter( c => c.column === colName)[0]?.symbol?.substring(0, 2);\r\n return { \r\n filter: \"\", \r\n comparator: \"\", \r\n sort: null, \r\n type: \"string\", \r\n selDDVals: null,\r\n minimize: false, \r\n freeze: false, \r\n colWidth: null,\r\n colCellSymbol: symbol,\r\n }\r\n }\r\n\r\n setTblVertBounds() {\r\n this.tblBot = (document.getElementById(\"tableFooter\")?.getBoundingClientRect().top || 0)\r\n this.tblTop = (document.getElementsByClassName(\"data-table-headers\")[0]?.getBoundingClientRect().bottom || 0)\r\n }\r\n\r\n setTblHorizBounds() {\r\n const dtBds = document.getElementsByClassName(\"data-table\")[0]?.getBoundingClientRect()\r\n if(dtBds){\r\n this.tblLeft = (dtBds.left || 0) - 200\r\n this.tblRight = (dtBds.right || 0) + 250\r\n }\r\n }\r\n\r\n setTblBounds() {\r\n this.setTblVertBounds()//critical, do it again it's ok\r\n this.setTblHorizBounds()\r\n }\r\n\r\n elIsAboveFold(el: HTMLElement | null, top: number): boolean {\r\n if(el){\r\n const elRect = el.getBoundingClientRect()\r\n if(el && elRect && elRect.bottom < top)\r\n return true\r\n return false\r\n }\r\n return false;\r\n }\r\n\r\n elIsBelowFold(el: HTMLElement | null, top: number): boolean {\r\n if(el){\r\n const elRect = el.getBoundingClientRect()\r\n if(el && elRect && elRect.top > top)\r\n return true\r\n return false\r\n }\r\n return false;\r\n }\r\n\r\n chartTopIsInView(column: string) {\r\n const lg = document.getElementById(\"insField\" + this.common.elifyCol(column))\r\n if(lg){\r\n const lgTop = lg.getBoundingClientRect().top\r\n return lgTop <= this.tblBot\r\n }\r\n return true\r\n }\r\n\r\n buildDataFilSrtTracker(data: any) {\r\n let i = 0\r\n let obj: any = {}\r\n const len = data.length\r\n for(i; i < len; i++)\r\n obj[data[i]] = this.getNewTrackerObj(data[i])\r\n return obj\r\n }\r\n\r\n resetFilSrtTracker() {\r\n for(const prop in this.dataFilSrtTracker){\r\n const fsObj = this.dataFilSrtTracker[prop]\r\n const oType = fsObj[\"type\"]//keep\r\n const ddvals = fsObj[\"selDDVals\"]?.map( (v: any) => {v.checked = true; return v})//keep\r\n const oWid = fsObj[\"colWidth\"]//keep\r\n const sym = fsObj[\"colCellSymbol\"]//keep\r\n const min = false;\r\n const compToUse = (ddvals && ddvals.length) ? \"Equals\" : \"\";\r\n this.dataFilSrtTracker[prop] = { filter: \"\", comparator: compToUse, sort: null, type: oType, selDDVals: ddvals, minimize: min, \r\n freeze: false, colWidth: oWid, colCellSymbol: sym,\r\n }\r\n }\r\n }\r\n\r\n figureCellText(text: any, notNum: boolean, symbol?: any) {\r\n if(this.common.isADateObject(text))\r\n return { prop: \"textContent\", value: text.toLocaleDateString() }\r\n if((text && this.badStrings.indexOf(text) < 0) || (text === 0)){\r\n if(notNum){\r\n const isProd = true;\r\n if(/[<>]/g.test(text) || (!/(blob:)?((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-:]+|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w\\-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w\\.\\/-]*))?)/g.test(text)))\r\n return { prop: \"textContent\", value: text }\r\n let useText = text\r\n const urls = text.matchAll(/(blob:)?((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-:]+|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w\\-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w\\.\\/-]*))?)/g)\r\n if(urls){\r\n try{\r\n let imgs = []\r\n let ancs = []\r\n const blobSchm = (isProd ? \"blob:https://\" : \"blob:http://\")\r\n const blobUrl = blobSchm + location.host\r\n let i = 0; let a = 0\r\n for(const url of urls){\r\n const low = (url[0] && typeof url[0] === \"string\") ? url[0].toLocaleLowerCase() : \"\";\r\n if((this.common.mystartsWith(low, \"https\") || this.common.mystartsWith(low, blobUrl)) && /(blob|\\.)/g.test(low)){\r\n if(imgs.indexOf(url[0]) < 0 && (this.common.mystartsWith(low, blobUrl) ||\r\n /\\.(webp|jpeg|jpg|png|jfif|pjpeg|pjp|avif)/g.test(url[0].toLocaleLowerCase()))){\r\n imgs.push(url[0].split(\"?\")[0])\r\n } else {\r\n if(ancs.indexOf(url[0]) < 0)\r\n ancs.push(url[0]/*.split(\"?\")[0]*/)\r\n }\r\n }\r\n }\r\n const ilen = imgs.length\r\n const alen = ancs.length\r\n for(i; i < ilen; i++)\r\n useText = useText.replace(new RegExp(imgs[i], \"g\"), ' <img src=\"'+imgs[i]+'\" alt=\"Image in cell data\" /> ')\r\n for(a; a < alen; a++){//only get ones with space at first\r\n const anc = ancs[a]\r\n useText = useText.replace(new RegExp((anc.replace(/\\?/g, \"\\\\?\") + \" \"), \"g\"), (' <a href=\"'+anc+'\" target=\"_blank\">'+anc+'</a> '))\r\n if(useText.endsWith(anc))\r\n useText = useText.replace(new RegExp(\" \" + anc.replace(/\\?/g, \"\\\\?\"), \"g\"), (' <a href=\"'+anc+'\" target=\"_blank\">'+anc+'</a>'))\r\n if(useText === anc)\r\n useText = useText.replace(new RegExp(anc.replace(/\\?/g, \"\\\\?\"), \"g\"), ('<a href=\"'+anc+'\" target=\"_blank\">'+anc+'</a>'))\r\n }\r\n if(imgs.length || ancs.length)\r\n return { prop: \"innerHTML\", value: useText, ancs: ancs }\r\n return { prop: \"textContent\", value: this.common.sanitizeUi(text) };\r\n }catch(e){ return { prop: \"textContent\", value: this.common.sanitizeUi(text) } }\r\n }\r\n return { prop: \"textContent\", value: this.common.sanitizeUi(text) }\r\n }\r\n try{\r\n const minFracDigs = (symbol && [\"$\",\"€\",\"£\",\"¥\",\"₣\",\"₹\"].indexOf(symbol) > -1) ? 2 : 0;\r\n if(typeof text === \"number\")\r\n return { prop: \"textContent\", value: text.toLocaleString(undefined, { minimumFractionDigits: minFracDigs, maximumFractionDigits: 2 }) }\r\n const numVal = /\\./g.test(text) ? parseFloat(text) : parseInt(text);\r\n if(!isNaN(numVal))\r\n return { prop: \"textContent\", value: numVal.toLocaleString(undefined, { minimumFractionDigits: minFracDigs, maximumFractionDigits: 2 }) }\r\n return { prop: \"textContent\", value: this.common.sanitizeUi(text) }\r\n } catch(e){\r\n return { prop: \"textContent\", value: this.common.sanitizeUi(text) }\r\n }\r\n }\r\n return { prop: \"textContent\", value: \" \" };\r\n }\r\n\r\n figureFilterType(col: any): string {\r\n const item = this.dataFilSrtTracker[col]\r\n if(item){\r\n switch(item.type){\r\n case \"string\":\r\n return \"text\";\r\n case \"number\":\r\n return \"number\";\r\n case \"date\":\r\n return \"date\"\r\n default:\r\n return \"text\";\r\n }\r\n }\r\n return \"text\"\r\n }\r\n\r\n mapCompToSym(comp: string) {\r\n switch(comp){//not all comps will get converted\r\n case \"Equals\":\r\n return \"=\";\r\n case \"Not Equal\":\r\n return \"!=\";\r\n case \"Less Than\":\r\n return \"<\";\r\n case \"Less Than or Equal\":\r\n return \"<=\";\r\n case \"Greater Than\":\r\n return \">\";\r\n case \"Greater Than or Equal\":\r\n return \">=\";\r\n }\r\n return comp;\r\n }\r\n\r\n clearAllFocused() {//for editing\r\n const els = document.getElementsByClassName(\"focused-el\")\r\n const len = els.length\r\n for(var i = (len-1); i >= 0; i--)\r\n els[i].classList.remove(\"focused-el\")\r\n }\r\n\r\n clearDCellFcsd() {\r\n const els = document.getElementsByClassName(\"dragger-cell-focused\")\r\n const len = els.length\r\n for(let i = (len-1); i >= 0; i--){\r\n const el = els[i]\r\n if(el)\r\n el.classList.remove(\"dragger-cell-focused\")\r\n }\r\n }\r\n\r\n findObjIndxInData(item: any, data?: any[]) {\r\n try{\r\n if(this.primaryKey)\r\n return (data || this.mainData).indexOf( (data || this.mainData).find( d => d[this.primaryKey] === item[this.primaryKey]) )\r\n let i = 0; let eq = 0;\r\n const propLen = Object.keys(item).length\r\n const len = (data || this.mainData)?.length\r\n for(i; i < len; i++){\r\n eq = 0\r\n const mD = (data || this.mainData)[i]\r\n for(const prop in item){\r\n if(item[prop] === mD[prop])\r\n eq += 1\r\n if(eq === propLen)//they all equal\r\n return i\r\n }\r\n }\r\n return -1\r\n } catch(e) { return -1 }\r\n }\r\n\r\n nLevelSort(data: any[], sortOrder: string[], obj: any) {\r\n let sortData = data.filter( (d: any) => true)\r\n const len = sortOrder.length\r\n for(var i = (len-1); i >= 0; i--){\r\n const field = sortOrder[i]\r\n const dir = obj[field][\"sort\"] === \"asc\" ? 1 : -1;\r\n sortData = sortData.sort( (a: any, b: any) => { \r\n if(!a[field] && a[field] !== 0)\r\n return 1\r\n if(!b[field] && b[field] !== 0)\r\n return -1\r\n if(a[field] > b[field])\r\n return (1*dir)\r\n if((a[field] === b[field]) || (JSON.stringify(a[field]) === JSON.stringify(b[field])))\r\n return 0\r\n return (-1*dir)\r\n })\r\n }\r\n return sortData\r\n }\r\n\r\n doSortOnField(field: any) {\r\n const k = this.common.goodLs\r\n if(!this.sortOrder.length || this.sortOrder.indexOf(field) < 0){\r\n this.sortOrder.push(field)\r\n this.dataFilSrtTracker[field][\"sort\"] = \"asc\"\r\n if(!k){\r\n this.sortOrder.reverse() \r\n this.sortOrder.pop()\r\n }\r\n } else {\r\n const currSort = this.dataFilSrtTracker[field][\"sort\"]\r\n switch(currSort){\r\n case \"desc\":\r\n this.dataFilSrtTracker[field][\"sort\"] = null\r\n this.sortOrder = this.sortOrder.filter( (s: string) => s !== field )\r\n break;\r\n case \"asc\":\r\n this.dataFilSrtTracker[field][\"sort\"] = \"desc\"\r\n break;\r\n }\r\n }\r\n this.currFilData = this.nLevelSort(this.currFilData, this.sortOrder, this.dataFilSrtTracker)\r\n }\r\n\r\n nLevelFilter(data: any, filterVal: any, ddVals: any, comparator: any, field: any) {\r\n const sixHrs = (1000*60*60*6)\r\n const oneDay = (1000*60*60*24)\r\n const symReg = new RegExp(/[$€£₹¥¢\\,]/, \"g\")\r\n const isDtReg = new RegExp(/\\d+(\\/|-)\\d+(\\/|-)\\d+/)\r\n if(filterVal && typeof filterVal === \"string\"){\r\n filterVal = filterVal.toLocaleLowerCase()\r\n if(!this.common.idCol(field) && !isDtReg.test(filterVal) && !isNaN(parseInt(filterVal.replace(symReg, \"\"))))//not viewed as num, but can be\r\n filterVal = /\\./g.test(filterVal) ? parseFloat(filterVal.replace(symReg, \"\")) : parseInt(filterVal.replace(symReg, \"\"))\r\n if(this.common.testShortDate(filterVal) || this.common.testISODate(filterVal) || this.common.testLongDate(filterVal))\r\n filterVal = new Date(filterVal)\r\n }\r\n return data.filter( (d: any) => {\r\n if(!ddVals && (!filterVal && filterVal != \"0\") && (!comparator || (comparator && comparator !== \"Not Empty\" && comparator !== \"Empty\")))\r\n return true\r\n let colVal = d[field]\r\n if(typeof colVal === \"string\")\r\n colVal = colVal.toLocaleLowerCase()\r\n if(!comparator){//what we did originally\r\n if(ddVals && ddVals.length){\r\n const chkdVs = ddVals.filter( (d: any) => d.checked ).\r\n map( (v: any) => typeof v.value === \"string\" ? v.value.toLocaleLowerCase() : v.value )\r\n return chkdVs.indexOf(colVal) > -1\r\n } else {\r\n if(typeof colVal === \"string\")\r\n return (colVal == filterVal || colVal.startsWith(filterVal) || colVal.indexOf(filterVal) > -1)\r\n if(typeof colVal === \"number\")\r\n return (colVal == filterVal)//assume equals\r\n if(this.common.isADateObject(filterVal) && this.common.isADateObject(colVal))\r\n return Math.abs(colVal.getTime() - filterVal.getTime()) < sixHrs\r\n return colVal == filterVal\r\n }\r\n } else {\r\n if(comparator === \"Equals\"){\r\n if(ddVals && ddVals.length){\r\n const chkdVs = ddVals.filter( (d: any) => d.checked ).\r\n map( (v: any) => typeof v.value === \"string\" ? v.value.toLocaleLowerCase() : v.value )\r\n return chkdVs.indexOf(colVal) > -1\r\n } else {\r\n if(this.common.isADateObject(filterVal) && this.common.isADateObject(colVal))\r\n return Math.abs(colVal.getTime() - filterVal.getTime()) < sixHrs\r\n return colVal == filterVal\r\n }\r\n }\r\n if(comparator === \"Not Equal\" || comparator === \"Not on\"){\r\n if(ddVals && ddVals.length){\r\n const chkdVs = ddVals.filter( (d: any) => !d.checked ).\r\n map( (v: any) => typeof v.value === \"string\" ? v.value.toLocaleLowerCase() : v.value )\r\n return chkdVs.indexOf(colVal) > -1\r\n } else {\r\n if(this.common.isADateObject(filterVal) && this.common.isADateObject(colVal))\r\n return Math.abs(colVal.getTime() - filterVal.getTime()) > oneDay\r\n return colVal != filterVal\r\n } \r\n }\r\n if(comparator === \"Contains\")\r\n return colVal && ((typeof colVal === \"string\" && colVal.indexOf(filterVal) > -1) || colVal == filterVal)\r\n if(comparator === \"Starts With\")\r\n return colVal && ((typeof colVal === \"string\" && colVal.startsWith(filterVal)) || (typeof colVal !== \"string\" && colVal.toString().startsWith(filterVal)))\r\n if(comparator === \"Ends With\")\r\n return colVal && ((typeof colVal === \"string\" && colVal.endsWith(filterVal)) || (typeof colVal !== \"string\" && colVal.toString().endsWith(filterVal)))\r\n if(comparator === \"Less Than\" || comparator === \"Before\")\r\n return colVal < filterVal\r\n if(comparator === \"Less Than or Equal\")\r\n return colVal <= filterVal\r\n if(comparator === \"Greater Than\" || comparator === \"After\")\r\n return colVal > filterVal\r\n if(comparator === \"Greater Than or Equal\")\r\n return colVal >= filterVal\r\n if(comparator === \"Not Empty\"){\r\n if(ddVals && ddVals.length && this.hasUnchkdDDVals(this.dataFilSrtTracker[field])){\r\n const chkdVs = ddVals.filter( (d: any) => d.checked && d.value ).\r\n map( (v: any) => typeof v.value === \"string\" ? v.value.toLocaleLowerCase() : v.value )\r\n return chkdVs.indexOf(colVal) > -1\r\n }\r\n if(!filterVal && filterVal != \"0\")\r\n return !!colVal || (colVal === 0)//just return non empty\r\n //treat it like normal filter\r\n if(typeof colVal === \"string\")\r\n return (colVal == filterVal || colVal.startsWith(filterVal) || colVal.indexOf(filterVal) > -1)\r\n if(typeof colVal === \"number\")\r\n return (colVal == filterVal || colVal.toString().startsWith(filterVal) || colVal.toString().indexOf(filterVal) > -1)\r\n if(this.common.isADateObject(filterVal) && this.common.isADateObject(colVal))\r\n return Math.abs(colVal.getTime() - filterVal.getTime()) < sixHrs\r\n return colVal == filterVal\r\n }\r\n if(comparator === \"Empty\")\r\n return (!colVal && colVal !== 0)\r\n return false\r\n }\r\n }).sort( (a: any, b: any) => { \r\n if(comparator)\r\n return 0\r\n const colVal = a[field]\r\n if(colVal && typeof colVal === \"string\")\r\n return (colVal.toLocaleLowerCase() == filterVal || colVal.toLocaleLowerCase().startsWith(filterVal)) ? -1 : 1\r\n if(colVal && typeof colVal === \"number\")\r\n return (colVal == filterVal || colVal.toString().startsWith(filterVal)) ? -1 : 1\r\n return 0\r\n })\r\n }\r\n \r\n columnFilter(dataI: any[], field: string, dataObj: any, sortOrder: string[], manual: any) {\r\n if(manual && !this.displayOnlySelRows && !dataObj[field].filter && this.arefilSrtTrkPropsDefault(true))\r\n return this.currFilData = this.mainData.filter( (d: any) => true )\r\n const initData = !this.displayOnlySelRows ? dataI :\r\n dataI.filter( (d: any, ind: any) => { return this.currSelRows.indexOf(ind) > -1 })\r\n let dataM = this.nLevelFilter(initData, dataObj[field].filter, dataObj[field].selDDVals, dataObj[field].comparator, field)\r\n const doWithoutFilt = [\"Not Empty\", \"Empty\"]\r\n for(const prop in dataObj){\r\n if(field === prop) \r\n continue;\r\n if((dataObj[prop].filter || this.hasUnchkdDDVals(dataObj[prop])) || (dataObj[prop].comparator && doWithoutFilt.indexOf(dataObj[prop].comparator) > -1))\r\n dataM = this.nLevelFilter(dataM, dataObj[prop].filter, dataObj[prop].selDDVals, dataObj[prop].comparator, prop)\r\n }\r\n this.currFilData = this.nLevelSort(dataM, sortOrder, dataObj)\r\n return this.currFilData\r\n }\r\n\r\n hasUnchkdDDVals(obj: any) {\r\n if(obj && obj.selDDVals && obj.selDDVals.length)\r\n return obj.selDDVals.filter( (v: any) => v && !v.checked ).length\r\n return false\r\n }\r\n\r\n getAllFilSrtInfo(): string {\r\n let filinfo = \"Filtered By:\";\r\n let srtinfo = \"Sorted By:\";\r\n const doWithoutFilt = [\"Not Empty\", \"Empty\"]\r\n const initB = \" <span>\";\r\n for(const prop in this.dataFilSrtTracker){\r\n const obj = this.dataFilSrtTracker[prop]\r\n const colNm = this.common.sanitizeUi(this.common.titleCase(prop));\r\n if(obj && (obj.filter || this.hasUnchkdDDVals(obj) || (obj.comparator && doWithoutFilt.indexOf(obj.comparator) > -1))){\r\n const comp = this.mapCompToSym(obj.comparator ? obj.comparator : (obj.type === \"string\" ? \"Contains\" : \"Equals\"))\r\n let propFilTxt = (initB + colNm + \"</span> \" + comp)\r\n if(obj.filter)\r\n propFilTxt += (initB + this.common.sanitizeUi(obj.filter) + \"</span>\");\r\n if(!obj.filter && obj.selDDVals && obj.selDDVals.length && this.hasUnchkdDDVals(obj)){\r\n const chkdVals = obj.selDDVals.filter( (v: any) => v && v.checked ).map( (v: any) => v.value).join()\r\n propFilTxt += (initB + chkdVals + \"</span>\");\r\n }\r\n if(propFilTxt.endsWith(\"Equals\"))\r\n propFilTxt = \"\";\r\n if(filinfo === \"Filtered By:\"){\r\n filinfo += propFilTxt\r\n } else {\r\n filinfo += (\",\" + propFilTxt)\r\n }\r\n }\r\n }\r\n let s = 0\r\n const solen = this.sortOrder.length\r\n for(s; s < solen; s++){\r\n const prop = this.sortOrder[s]\r\n const obj = this.dataFilSrtTracker[prop]\r\n if(obj && obj.sort){\r\n const colNm = this.common.sanitizeUi(this.common.titleCase(prop));\r\n const propSrtTxt = (initB + colNm + \"</span> \" + obj.sort)\r\n if(srtinfo === \"Sorted By:\"){\r\n srtinfo += propSrtTxt\r\n } else {\r\n srtinfo += (\",\" + propSrtTxt)\r\n }\r\n }\r\n }\r\n if(filinfo === \"Filtered By:\")\r\n filinfo = \"\";\r\n if(srtinfo === \"Sorted By:\")\r\n srtinfo = \"\";\r\n if(filinfo && srtinfo)\r\n return (\" • \" + filinfo + \" • \" + srtinfo)\r\n if(filinfo && !srtinfo)\r\n return (\" • \" + filinfo)\r\n if(!filinfo && srtinfo)\r\n return (\" • \" + srtinfo)\r\n return \"\";\r\n }\r\n\r\n public validationEndpoint: string = \"https://deebodata.com/api/validate-license\"//NEVER CHANGE THIS\r\n\r\n easyFilter(val: any, dataI: any[], sortOrder: string[]) {\r\n const initData = !this.displayOnlySelRows ? dataI :\r\n dataI.filter( (d: any, ind: any) => { return this.currSelRows.indexOf(ind) > -1 })\r\n let dataM = this.allDataFilter(val, initData)\r\n this.currFilData = this.nLevelSort(dataM, sortOrder, this.dataFilSrtTracker)\r\n }\r\n\r\n allDataFilter(filterVal: any, data: any[]) {\r\n const sixHrs = (1000*60*60*6)\r\n const symReg = new RegExp(/[$€£₹¥¢\\,]/, \"g\")\r\n const isDtReg = new RegExp(/\\d+(\\/|-)\\d+(\\/|-)\\d+/)\r\n if(filterVal && typeof filterVal === \"string\"){\r\n filterVal = filterVal.toLocaleLowerCase()\r\n if(!isDtReg.test(filterVal) && !isNaN(parseInt(filterVal.replace(symReg, \"\"))))//not viewed as num, but can be\r\n filterVal = /\\./g.test(filterVal) ? parseFloat(filterVal.replace(symReg, \"\")) : parseInt(filterVal.replace(symReg, \"\"))\r\n if(this.common.testShortDate(filterVal) || this.common.testISODate(filterVal) || this.common.testLongDate(filterVal))\r\n filterVal = new Date(filterVal)\r\n }\r\n return data.filter( (d: any) => {\r\n if(!filterVal && filterVal != \"0\")\r\n return true\r\n for(const prop in d){\r\n let colVal = d[prop]\r\n if(typeof colVal === \"string\")\r\n colVal = colVal.toLocaleLowerCase()\r\n if(typeof colVal === \"string\" && (colVal == filterVal || colVal.startsWith(filterVal) || colVal.indexOf(filterVal) > -1))\r\n return true\r\n if(typeof colVal === \"number\" && (colVal == filterVal || colVal.toString().startsWith(filterVal) || colVal.toString().indexOf(filterVal) > -1))\r\n return true\r\n if(this.common.isADateObject(filterVal) && this.common.isADateObject(colVal) && \r\n (Math.abs(colVal.getTime() - filterVal.getTime()) < sixHrs || (colVal == filterVal || \r\n colVal.startsWith(filterVal) || colVal.indexOf(filterVal) > -1)))\r\n return true\r\n if(colVal == filterVal)\r\n return true\r\n }\r\n return false\r\n })\r\n }\r\n\r\n arefilSrtTrkPropsDefault(ignoreColFM?: any) {\r\n for(const prop in this.dataFilSrtTracker){\r\n // const elId= prop.replace(/ /g, this.common.uniSep)\r\n const obj = this.dataFilSrtTracker[prop]\r\n if(obj && (obj.filter || obj.comparator || obj.sort || obj.minimize || obj.freeze || obj.selDDVals)){\r\n const fm = ignoreColFM ? true : (!obj.minimize && !obj.freeze);\r\n const defComp = !obj.comparator || [\"Equals\", \"Contains\"].indexOf(obj.comparator) > -1;\r\n if(!obj.filter && !obj.sort && fm && defComp /*&& document.getElementById(\"selectComp\" + elId) */&& \r\n (!obj.selDDVals || (obj.selDDVals && !obj.selDDVals.filter( (v: any) => { return v && !v.checked } ).length))){\r\n //let it go\r\n } else\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DataTableService } from './data-table-service';\r\nimport { Subject } from 'rxjs';\r\nimport { CommonService } from './common-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TableDragService {\r\n\r\n constructor(private dataTableService: DataTableService,\r\n private common: CommonService,\r\n ) {}\r\n \r\n currDataRow: any;\r\n currColForDataRow: any;\r\n dTblHeight: number = 500;\r\n currColumnEdit: string = \"\"\r\n listenForMouseUp: boolean = false;\r\n listenForSelectStart: boolean = false;\r\n listenForColMvMouseUp: boolean = false;\r\n colDragStartFrmHeaderTracker: any = { col: null, xstart: null, ystart: null, resized: false }\r\n colDragStartFrmCellTracker: any = { col: null, row: null, xstart: null, ystart: null, resized: false }\r\n tblDragStartFrmPagiTracker: any = { row: null, ystart: null, resized: false }\r\n didResizeOnEvent: boolean = false\r\n colMoving: boolean = false\r\n headDims: Subject<any> = new Subject()\r\n cellDims: Subject<any> = new Subject()\r\n columnMove: Subject<any> = new Subject()\r\n dTblHeightOutput: Subject<number> = new Subject()\r\n\r\n checkItemBorderCursor(e: MouseEvent, noColResize?: boolean) {\r\n try{\r\n if(this.colMoving)\r\n return\r\n const el = e.target\r\n if(el instanceof Element && /(col-header|data-cell)/g.test(el.className)){\r\n const offsx = 11; const offsy = 9;\r\n const cls = \"moveable-col\"\r\n const rcls = \"moveable-row\"\r\n const bds = el.getBoundingClientRect()\r\n if(noColResize){\r\n } else {\r\n if(e.offsetX >= bds.width-offsx){\r\n el.classList.add(cls)\r\n el.classList.remove(rcls)\r\n } else {\r\n el.classList.remove(cls)\r\n }\r\n }\r\n if(e.offsetY >= bds.height-offsy){\r\n el.classList.add(rcls)\r\n el.classList.remove(cls)\r\n } else {\r\n el.classList.remove(rcls)\r\n }\r\n }\r\n }catch(err){}\r\n }\r\n\r\n checkPaginatorBorderCursor(e: MouseEvent) {\r\n try{\r\n const el = e.target\r\n if(el instanceof Element && /data-table-footer/g.test(el.className)){\r\n const offsy = 9;\r\n const rcls = \"moveable-row\"\r\n const bds = el.getBoundingClientRect()\r\n if(e.offsetY >= bds.height-offsy){\r\n el.classList.add(rcls)\r\n } else {\r\n el.classList.remove(rcls)\r\n }\r\n }\r\n }catch(err){}\r\n }\r\n\r\n handleHeaderSizeAdjust(e: any) {\r\n e && e.preventDefault()\r\n let col\r\n const cls = \"moveable-col\"\r\n const rcls = \"moveable-row\"\r\n const clist = e.target.classList\r\n if(e.type === \"mousedown\"){\r\n if(e && e.target.id && /columnHeader/g.test(e.target.id))\r\n col = e.target\r\n if(e && e.target.parentElement.id && /columnHeader/g.test(e.target.parentElement.id))\r\n col = e.target.parentElement\r\n if(col){\r\n const cBds = col.getBoundingClientRect()\r\n if(clist.contains(cls)){\r\n let rootCol;\r\n let useX = e.offsetX\r\n if(useX > ((cBds.right-cBds.left)/2)){//the one we're aiming for IS the target\r\n useX = (useX - cBds.width)\r\n rootCol = col.id.replace(/columnHeader/g, \"\")\r\n } else {\r\n if(!col.nextElementSibling && (e.offsetX > ((cBds.right-cBds.left)/2)))//last and grabbing the end of it\r\n rootCol = col.id.replace(/columnHeader/g, \"\")\r\n else\r\n rootCol = col.previousElementSibling.id.replace(/columnHeader/g, \"\")\r\n }\r\n this.dataTableService.currColumnEdit =rootCol\r\n this.colDragStartFrmHeaderTracker = { col: rootCol, xstart: useX, ystart: null, resized: false }\r\n this.listenForMouseUp = true\r\n }\r\n \r\n if(clist.contains(rcls)){\r\n this.dataTableService.currColumnEdit = null\r\n this.colDragStartFrmHeaderTracker = { col: null, xstart: null, ystart: e.pageY, resized: false }\r\n this.listenForMouseUp = true\r\n }\r\n\r\n if(!clist.contains(cls) && !clist.contains(rcls)){//drag column to diff position\r\n let rootCol;\r\n this.colMoving = true\r\n rootCol = col.id.replace(/columnHeader/g, \"\")\r\n this.dataTableService.currColumnEdit =rootCol\r\n this.colDragStartFrmHeaderTracker = { col: rootCol, xstart: null, ystart: null, resized: false }\r\n this.listenForColMvMouseUp = true\r\n }\r\n }\r\n }\r\n\r\n if(e.type === \"mousemove\"){\r\n if(!this.colMoving){\r\n if(this.colDragStartFrmHeaderTracker.col && this.dataTableService.currColumnEdit === this.colDragStartFrmHeaderTracker.col)\r\n this.doHeaderWidth(e)\r\n \r\n if(this.colDragStartFrmHeaderTracker.ystart)\r\n this.doHeaderHeight(e)\r\n } else {\r\n if(this.listenForColMvMouseUp)\r\n this.handleColMoveMouseUp(e)\r\n }\r\n }\r\n }\r\n\r\n handleCellSizeAdjust(e: any, rootCol?: string) {\r\n let col\r\n const cls = \"moveable-col\"\r\n const rcls = \"moveable-row\"\r\n const clist = e.target.classList\r\n if(e.type === \"mousedown\" && /data-cell/g.test(e.target.className)){\r\n if(e && e.target && /data-cell/g.test(e.target.className))\r\n col = e.target\r\n if(e && e.target.parentElement && /data-cell/g.test(e.target.parentElement.className))\r\n col = e.target.parentElement\r\n if(clist.contains(cls)){\r\n if(col){\r\n let useX = e.offsetX\r\n const cBds = col.getBoundingClientRect()\r\n if(useX > ((cBds.right-cBds.left)/2)){//the one we're aiming for IS the target\r\n useX = (useX - cBds.width)\r\n }\r\n if(rootCol){\r\n this.dataTableService.currColumnEdit =rootCol\r\n this.colDragStartFrmCellTracker = { col: rootCol, row: null, xstart: useX, ystart:null, resized: false }\r\n this.listenForMouseUp = true\r\n }\r\n }\r\n }\r\n\r\n if(clist.contains(rcls)){\r\n this.dataTableService.currColumnEdit = null\r\n if(!this.currDataRow){\r\n this.currColForDataRow = rootCol//this lets us process the sub once on a given cell\r\n this.currDataRow = document.getElementById(col.getAttribute(\"data-index\"))\r\n }\r\n this.colDragStartFrmCellTracker = { col: null, row: this.currDataRow, xstart: null, ystart: e.offsetY, resized: false }\r\n this.listenForMouseUp = true\r\n }\r\n }\r\n if(e.type === \"mousemove\"){\r\n if(this.colDragStartFrmCellTracker.col && this.dataTableService.currColumnEdit === this.colDragStartFrmCellTracker.col)\r\n this.doCellWidth(e)\r\n\r\n if(this.colDragStartFrmCellTracker.row && this.colDragStartFrmCellTracker.ystart)\r\n this.doRowHeight(e)\r\n }\r\n }\r\n\r\n handleTableHeightAdjust(e: any) {\r\n const rcls = \"moveable-row\"\r\n const clist = e.target.classList\r\n if(e.type === \"mousedown\" && /data-table-footer/g.test(e.target.className)){\r\n this.listenForSelectStart = true\r\n if(clist.contains(rcls)){\r\n this.tblDragStartFrmPagiTracker = { row: e.target, ystart: e.offsetY, resized: false }\r\n this.listenForMouseUp = true\r\n }\r\n }\r\n if(e.type === \"mousemove\"){\r\n if(this.tblDragStartFrmPagiTracker.row && this.tblDragStartFrmPagiTracker.ystart)\r\n this.doTblHeight(e)\r\n }\r\n }\r\n\r\n doHeaderWidth(e: any) {\r\n try{\r\n const head = document.getElementById(\"columnHeader\" + this.colDragStartFrmHeaderTracker.col)\r\n if(head){\r\n const hbds = head?.getBoundingClientRect()\r\n const useWid = e.pageX - (hbds.left+window.scrollX)\r\n this.colDragStartFrmHeaderTracker.resized = true\r\n this.headDims.next({ prop: \"width\", value: Math.floor(Math.max(30, useWid)) })\r\n }\r\n }catch(err){}\r\n }\r\n\r\n doHeaderHeight(e: any) {\r\n try{\r\n const hdrs = document.querySelector(\".col-header:not(.col-header-minimized)\") || document.getElementById(\"dataTableHeaders\")\r\n if(hdrs){\r\n const hdrbds = hdrs.getBoundingClientRect()\r\n const useHgt= e.pageY - (hdrbds.top+window.scrollY)\r\n this.colDragStartFrmHeaderTracker.resized = true\r\n this.headDims.next({ prop: \"height\", value: Math.floor(Math.max(30, useHgt)) })\r\n }\r\n }catch(err){}\r\n }\r\n\r\n doCellWidth(e: any) {\r\n try{\r\n const head = document.getElementById(\"columnHeader\" + this.colDragStartFrmCellTracker.col)//this looks outta place but is ok here\r\n if(head){\r\n const useWid = e.pageX - (head.getBoundingClientRect().left+window.scrollX)\r\n this.colDragStartFrmCellTracker.resized = true\r\n this.cellDims.next({ prop: \"width\", value: Math.floor(Math.max(30, useWid)) })\r\n }\r\n }catch(err){}\r\n }\r\n\r\n doRowHeight(e: any) {\r\n try{\r\n const rowbds = this.colDragStartFrmCellTracker.row.getBoundingClientRect()\r\n const useHgt = e.pageY - (rowbds.top+window.scrollY)\r\n this.colDragStartFrmCellTracker.resized = true\r\n this.cellDims.next({ row: this.colDragStartFrmCellTracker.row, prop: \"height\", value: Math.floor(Math.max(30, useHgt)) })\r\n }catch(err){}\r\n }\r\n\r\n doTblHeight(e: any) {\r\n try{\r\n const rowbds = this.tblDragStartFrmPagiTracker.row.getBoundingClientRect()\r\n const useHgt = e.pageY - (rowbds.bottom+window.scrollY)\r\n this.tblDragStartFrmPagiTracker.resized = true\r\n let max = 1000\r\n if(isNaN(max))\r\n max = 700;\r\n const tblWant = Math.min((this.dTblHeight + useHgt), max);\r\n this.dTblHeight = Math.floor(Math.max(tblWant, 100))\r\n this.dTblHeightOutput.next(this.dTblHeight)\r\n }catch(err){}\r\n }\r\n\r\n handleColResMouseUp(e: any) {\r\n try{ e && e.preventDefault() } catch(e) {}\r\n if(this.colMoving)\r\n return;\r\n this.listenForMouseUp = false\r\n if(this.colDragStartFrmHeaderTracker.ystart)\r\n this.doHeaderHeight(e)\r\n if(this.colDragStartFrmCellTracker.ystart)\r\n this.doRowHeight(e)\r\n if(this.colDragStartFrmHeaderTracker.col && this.dataTableService.currColumnEdit === this.colDragStartFrmHeaderTracker.col)\r\n this.doHeaderWidth(e)\r\n if(this.colDragStartFrmCellTracker.col && this.dataTableService.currColumnEdit === this.colDragStartFrmCellTracker.col)\r\n this.doCellWidth(e)\r\n if(this.tblDragStartFrmPagiTracker.ystart){\r\n this.doTblHeight(e)\r\n this.listenForSelectStart = false\r\n }\r\n this.didResizeOnEvent = (this.colDragStartFrmCellTracker.resized || \r\n this.colDragStartFrmHeaderTracker.resized || this.tblDragStartFrmPagiTracker.resized)\r\n this.colDragStartFrmHeaderTracker = { col: null, xstart: null, ystart: null, resized: false }\r\n this.colDragStartFrmCellTracker = { col: null, row: null, xstart: null, ystart: null, resized: false }\r\n this.tblDragStartFrmPagiTracker = { row: null, ystart: null, resized: false }\r\n this.currDataRow = null;\r\n this.currColForDataRow = null\r\n if(window.getSelection)\r\n window.getSelection()?.removeAllRanges();\r\n if(this.dataTableService.currColumnEdit){\r\n const prop = this.common.replaceUniSep(this.dataTableService.currColumnEdit)\r\n if(this.dataTableService.dataFilSrtTracker[prop] && this.dataTableService.dataFilSrtTracker[prop].colWidth){\r\n const useWid = Math.min(2500, (parseInt(this.dataTableService.dataFilSrtTracker[prop].colWidth.replace(/[ ]?px/g, \"\"))))\r\n this.cellDims.next({ prop: \"width\", value: (Math.floor(Math.max(50, useWid))) })\r\n }\r\n }\r\n setTimeout( () => { //let the click event process first\r\n this.dataTableService.currColumnEdit = null\r\n this.didResizeOnEvent = false \r\n if(window.getSelection)\r\n window.getSelection()?.removeAllRanges();\r\n })\r\n }\r\n\r\n handleColMoveMouseUp(e: any) {\r\n try{ e && e.preventDefault() } catch(e) {}\r\n const isMUp = e && e.type === \"mouseup\";\r\n if(isMUp){\r\n this.listenForColMvMouseUp = false\r\n this.didResizeOnEvent = true\r\n this.colDragStartFrmHeaderTracker = { col: null, xstart: null, ystart: null, resized: false }\r\n }\r\n if(this.colMoving){\r\n if(window.getSelection)\r\n window.getSelection()?.removeAllRanges();\r\n if(this.dataTableService.currColumnEdit){\r\n const colRef = document.getElementById(\"columnHeader\" + this.dataTableService.currColumnEdit)\r\n if(colRef){\r\n let xDrop = e.clientX\r\n let i = 0;\r\n let lfts = []\r\n let wantlfts = []\r\n const cols = document.getElementsByClassName(\"col-header\")\r\n const len = cols.length\r\n const nwColLft = Math.floor(colRef.getBoundingClientRect().left)\r\n for(i; i < len; i++){\r\n const col = cols[i]\r\n if(!col.classList.contains(\"col-header-minimized\")){\r\n const elLft = Math.floor(col.getBoundingClientRect().left)\r\n lfts.push(elLft)\r\n if(col.id !== colRef.id)\r\n wantlfts.push(elLft)\r\n }\r\n }\r\n wantlfts.push(xDrop)\r\n wantlfts = wantlfts.sort( (a, b) => a-b )\r\n if(lfts.length && lfts.length === wantlfts.length)\r\n this.columnMove.next({ ls: lfts, nl: nwColLft, wl: wantlfts, x: xDrop })\r\n }\r\n }\r\n if(isMUp){\r\n setTimeout( () => { //let the click event process first\r\n this.dataTableService.currColumnEdit = null\r\n this.didResizeOnEvent = false\r\n this.colMoving = false\r\n })\r\n }\r\n }\r\n }\r\n\r\n stopWindowSelection(e: any) {\r\n e.preventDefault()\r\n return false;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, ViewChild, ElementRef, } from '@angular/core';\r\nimport { ColumnHeader } from '../../../interfaces/column-header';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TableDragService } from '../../../services/table-drag-service';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\n\r\nexport interface columnWidthResize{\r\n column: string\r\n value: number\r\n}\r\n\r\n@Component({\r\n selector: 'app-data-table-header',\r\n imports: [CommonModule, FormsModule, DecimalPipe, ],\r\n templateUrl: './data-table-header.html',\r\n styleUrls: ['./data-table-header.css', '../../../styles.css']\r\n})\r\nexport class DataTableHeader {\r\n\r\n constructor(public common: CommonService, \r\n public tblDragService: TableDragService,\r\n public dataTableService: DataTableService,){\r\n \r\n }\r\n\r\n init = false;\r\n showBtnX = false;\r\n isSelect = false\r\n autoMaxed = false\r\n text: string = \"\"\r\n elCol: string = \"\";\r\n canTabScroll = true\r\n compOpts: string[] = []\r\n filterBuildUp: any[] = []\r\n @Input() colWid: string = \"\";\r\n @Input() canFreeze: boolean = false;\r\n @Input() hideMinCol: boolean = false;\r\n @Input() columnHeader!: ColumnHeader;\r\n @Output(\"sort\") sort: EventEmitter<string> = new EventEmitter()\r\n @Output(\"render\") render: EventEmitter<any> = new EventEmitter()\r\n @Output(\"width\") width: EventEmitter<columnWidthResize> = new EventEmitter()\r\n @Output(\"height\") height: EventEmitter<number> = new EventEmitter()\r\n @Output(\"reset\") reset: EventEmitter<string> = new EventEmitter()\r\n @Output(\"freeze\") freeze: EventEmitter<string> = new EventEmitter()\r\n @Output(\"filFocus\") filFocus: EventEmitter<any> = new EventEmitter()\r\n @Output(\"filSelClick\") filSelClick: EventEmitter<any> = new EventEmitter()\r\n @Output(\"minimize\") minimize: EventEmitter<string> = new EventEmitter()\r\n @Output(\"emitCompFocus\") emitCompFocus: EventEmitter<boolean> = new EventEmitter()\r\n @Output(\"scrollOnFocus\") scrollOnFocus: EventEmitter<string> = new EventEmitter()\r\n @ViewChild('colHeader', { static: true }) colHeaderEl!: ElementRef<HTMLElement>\r\n @ViewChild('filterInput', { static: true }) filterInputEl!: ElementRef<HTMLInputElement>\r\n @ViewChild('compSelect', { static: true }) compSelectEl!: ElementRef<HTMLSelectElement>\r\n\r\n ngOnInit() {\r\n this.elCol = this.common.elifyCol(this.columnHeader.column)\r\n this.text = this.common.titleCase(this.columnHeader.column)\r\n this.isSelect = this.dataTableService.dataFilSrtTracker[this.columnHeader.column]?.[\"selDDVals\"]?.length\r\n if(this.isSelect){\r\n const canComp = [\"Equals\", \"Not Equal\", \"Empty\", \"Not Empty\",]\r\n this.compOpts = this.dataTableService.comparatorOpts[this.columnHeader.dataType].\r\n filter( (co: string) => canComp.indexOf(co) > -1 );\r\n } else {\r\n this.compOpts = [...this.dataTableService.comparatorOpts[this.columnHeader.dataType]]\r\n }\r\n this.tblDragService.headDims.subscribe( d => { this.updateUiColCellTheme(d.prop, d.value) })\r\n this.dataTableService.setIdealColumnWidth.subscribe( c => { this.handleColResDblClick(this.columnHeader.column, true) })\r\n }\r\n \r\n ngAfterViewInit() {\r\n if(this.isSelect){\r\n setTimeout( () => {\r\n this.filterInputEl?.nativeElement.setAttribute(\"readonly\", \"true\")\r\n })\r\n }\r\n if(this.columnHeader.dataType === \"date\"){\r\n setTimeout( () => {\r\n this.filterInputEl?.nativeElement.addEventListener(\"change\", e => { this.filterDateOnKeyUp(e) })\r\n })\r\n }\r\n }\r\n\r\n preventTabScroll() {\r\n this.canTabScroll = false\r\n }\r\n\r\n emitTabFocus(col: string) {\r\n if(this.canTabScroll)\r\n this.scrollOnFocus.emit(col)\r\n }\r\n\r\n handleCompFocus() {\r\n this.emitCompFocus.emit(true)\r\n }\r\n\r\n freezeColOnClick(e: any, prop: string) {\r\n e && e.stopPropagation()\r\n try{\r\n const currCol = this.dataTableService.dataFilSrtTracker[prop]\r\n if(currCol){\r\n this.dataTableService.dataFilSrtTracker[prop].freeze = !currCol.freeze\r\n const nowVal = this.dataTableService.dataFilSrtTracker[prop].freeze\r\n if(nowVal)\r\n this.columnHeader.freeze = true\r\n else\r\n this.columnHeader.freeze = false\r\n this.freeze.emit(prop)\r\n }\r\n }catch(e){}\r\n }\r\n\r\n minimizeColumn(col: string) {\r\n this.canTabScroll = true\r\n this.dataTableService.dataFilSrtTracker[col].minimize = true\r\n this.dataTableService.sortOrder = this.dataTableService.sortOrder.filter( (s: any) => s !== col )\r\n this.minimize.emit(col)\r\n }\r\n\r\n doSortOnClick(e: any, col: string) {\r\n e && e.stopPropagation()\r\n this.canTabScroll = true\r\n if(!this.dataTableService.isSorting()){\r\n this.dataTableService.isSorting.set(true)\r\n setTimeout( () => {\r\n this.dataTableService.doSortOnField(col)\r\n this.render.emit({value: (this.dataTableService.dataFilSrtTracker[col].filter || \"\"), field: col})\r\n if(!this.dataTableService.currSelRows.length && this.dataTableService.arefilSrtTrkPropsDefault())\r\n this.reset.emit(col)\r\n this.dataTableService.isSorting.set(false)\r\n })\r\n }\r\n }\r\n\r\n resetColFilter(event: any, field: string) {\r\n event && event.stopPropagation()\r\n const fil = this.filterInputEl.nativeElement\r\n const comp = this.compSelectEl.nativeElement\r\n if(fil){\r\n fil.value = \"\";\r\n if(this.isSelect){\r\n comp.value = \"Equals\"\r\n this.recheckAllDDOpts(field)\r\n this.dataTableService.dataFilSrtTracker[field].comparator = \"Equals\"\r\n } else {\r\n comp.value = \"\"\r\n this.dataTableService.dataFilSrtTracker[field].comparator = null\r\n }\r\n this.filterOnKeyUp(event, field, \"\", true)\r\n }\r\n }\r\n\r\n recheckAllDDOpts(prop: string) {\r\n this.dataTableService.dataFilSrtTracker[prop][\"selDDVals\"] = this.dataTableService.dataFilSrtTracker[prop][\"selDDVals\"].\r\n map( function(v: any) {v.checked = true; return v})\r\n }\r\n\r\n filterDateOnKeyUp(event: any) {\r\n const elId: string = event.target?.id?.replace(/filter/g, \"\")\r\n const field: string = this.common.replaceUniSep(elId)\r\n this.filterOnKeyUp(event, field, event.target.value)\r\n }\r\n\r\n filTO: any = null;\r\n\r\n filterOnKeyUp(event:any, field: string, val: any, manual?: any) {\r\n const filObj = {value: val, field: field}\r\n if(field && !this.dataTableService.isFiltering()){\r\n if(!manual && event && event.type !== \"change\" && !this.common.keyCanSearch(event))\r\n return;\r\n this.dataTableService.isFiltering.set(true)\r\n this.dataTableService.dataFilSrtTracker[field].filter = val || \"\"\r\n this.dataTableService.columnFilter(this.dataTableService.mainData, field, this.dataTableService.dataFilSrtTracker, this.dataTableService.sortOrder, manual)\r\n this.render.emit(filObj)\r\n if(this.filTO){\r\n clearTimeout(this.filTO)\r\n this.filTO = null\r\n }\r\n this.filTO = setTimeout( () => { \r\n this.dataTableService.isFiltering.set(false)\r\n const buildUpLen = this.filterBuildUp.length\r\n if(buildUpLen){\r\n const filBld = this.filterBuildUp[(buildUpLen-1)]\r\n this.filterOnKeyUp(null, filBld.field, filBld.value, true)\r\n this.filterBuildUp = []\r\n if((this.dataTableService.dataFilSrtTracker[field].filter || \r\n (this.dataTableService.dataFilSrtTracker[field].comparator && this.dataTableService.dataFilSrtTracker[field].comparator != \"Equals\")\r\n )){\r\n this.showBtnX = true\r\n } else {\r\n this.showBtnX = false\r\n }\r\n } \r\n }, 500)\r\n if((this.dataTableService.dataFilSrtTracker[field].filter || \r\n (this.dataTableService.dataFilSrtTracker[field].comparator && this.dataTableService.dataFilSrtTracker[field].comparator != \"Equals\")\r\n )){\r\n this.showBtnX = true\r\n } else {\r\n this.showBtnX = false\r\n }\r\n const tlFil = <HTMLInputElement>document.getElementsByName(\"topLevelDataFilter\")[0]\r\n if(tlFil)\r\n tlFil.value = \"\"\r\n } else {\r\n if(!this.filterBuildUp.find( f => f.value === val && f.field === field))\r\n this.filterBuildUp.push(filObj)\r\n }\r\n }\r\n\r\n handleComparatorChange(col: string, comp: string) {\r\n if(col){\r\n const value = this.dataTableService.dataFilSrtTracker[col].filter\r\n this.dataTableService.dataFilSrtTracker[col].comparator = comp\r\n this.filterOnKeyUp(null, col, (value || \"\"), true)\r\n }\r\n }\r\n\r\n updateUiColCellTheme(cssProp: string, val: number, col?: string) {\r\n if(cssProp === \"height\")\r\n this.height.emit(val)\r\n const prop = col || this.common.replaceUniSep(this.dataTableService.currColumnEdit)\r\n if(prop && this.dataTableService.dataFilSrtTracker[prop]){\r\n if(cssProp === \"width\"){\r\n this.dataTableService.dataFilSrtTracker[prop].colWidth = (val || parseInt(this.colWid)).toString()\r\n this.width.emit({column: prop, value: val || parseInt(this.colWid)})\r\n } \r\n }\r\n }\r\n\r\n handleColResDblClick(prop: string, auto?: boolean) {\r\n if(this.dataTableService.dataFilSrtTracker[prop] && (!auto || (!this.autoMaxed && this.dataTableService.visibleCols.includes(prop)))){\r\n let i = 0\r\n let wids = []\r\n let useWid = 50\r\n const els = document.getElementsByClassName(\"data-cell-\" + this.common.elifyCol(prop))\r\n const nw = els[0]?.getBoundingClientRect().width || 0\r\n const len = els.length\r\n if(len){\r\n for(i; i < len; i++)\r\n wids.push(els[i].scrollWidth)\r\n useWid =wids.sort()[(len-1)]\r\n if(useWid && useWid > nw){\r\n const cswid = Math.ceil(Math.max((useWid+1), parseInt(this.dataTableService.useColWid.replace(/[ ]?px/g, \"\"))))\r\n this.updateUiColCellTheme(\"width\", cswid, prop)\r\n this.autoMaxed = true\r\n }\r\n }\r\n }\r\n }\r\n\r\n emitFilterFocus(target: HTMLInputElement, col: string) {\r\n this.filFocus.emit({ target: target, col: col, select: this.isSelect })\r\n }\r\n\r\n emitFilterClick(target: HTMLInputElement, col: string) {\r\n if(this.isSelect)\r\n this.filSelClick.emit({ target: target, col: col})\r\n }\r\n\r\n}\r\n","<div #colHeader [id]=\"'columnHeader' + elCol\" class=\"col-header\" (dblclick)=\"handleColResDblClick(columnHeader.column)\"\r\n[ngClass]=\"{ 'col-item-freeze': columnHeader.freeze, 'col-header-minimized': columnHeader.minimized, 'not-licensed': !common.goodLs() }\"\r\n[ngStyle]=\"{'width': columnHeader.width, 'height': columnHeader.height, 'lineHeight': columnHeader.lineHeight}\"\r\n(mousedown)=\"tblDragService.handleHeaderSizeAdjust($event)\" (mouseup)=\"tblDragService.handleColResMouseUp($event)\"\r\n(mousemove)=\"tblDragService.checkItemBorderCursor($event)\" (mousemove)=\"tblDragService.handleHeaderSizeAdjust($event)\">\r\n <span (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\"\r\n (click)=\"doSortOnClick($event, columnHeader.column)\" [class.span-disabled]=\"dataTableService.isSorting()\">{{text}}</span>\r\n <button [id]=\"'btnSort' + elCol\" type=\"button\" [disabled]=\"dataTableService.isSorting()\" (click)=\"doSortOnClick($event, columnHeader.column)\" class=\"data-sort-arr\"\r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"preventTabScroll()\" (mouseup)=\"common.unbindMouseEvent($event)\"\r\n (focus)=\"emitTabFocus(elCol)\">\r\n <i class=\"material-icons v-mid\">{{dataTableService.dataFilSrtTracker[columnHeader.column].sort === \"asc\" ? \"arrow_downward\" : \"arrow_upward\"}}</i>\r\n </button>\r\n @if(dataTableService.sortOrder.indexOf(columnHeader.column) > -1){\r\n <sup [class.prevent]=\"dataTableService.isSorting()\" (click)=\"doSortOnClick($event, columnHeader.column)\" \r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\" \r\n class=\"sort-order-indicator\">{{(dataTableService.sortOrder.indexOf(columnHeader.column)+1) | number}}</sup>\r\n }\r\n @if(common.goodLs()){\r\n <button [id]=\"'btnMin' + elCol\" type=\"button\" (click)=\"minimizeColumn(columnHeader.column)\" class=\"btn-min-col\" [class.btn-min-col-hide]=\"hideMinCol\"\r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"preventTabScroll()\" (mouseup)=\"common.unbindMouseEvent($event)\" \r\n (focus)=\"emitTabFocus(elCol)\">\r\n <i class=\"material-icons\">minimize</i>\r\n </button>\r\n }\r\n @if(canFreeze){\r\n <button type=\"button\" (click)=\"freezeColOnClick($event, columnHeader.column)\" class=\"btn-freeze-col\"\r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\" >\r\n <i class=\"material-icons\">featured_play_list</i>\r\n </button>\r\n }\r\n <br>\r\n @if(dataTableService.dataFilSrtTracker[columnHeader.column].filter || dataTableService.hasUnchkdDDVals(dataTableService.dataFilSrtTracker[columnHeader.column]) > 0){\r\n <button type=\"button\" class=\"btn-x-filter\" (click)=\"resetColFilter($event, columnHeader.column)\" \r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\" >×</button>\r\n }\r\n <input #filterInput [name]=\"'filter' + elCol\" [class.select-filter]=\"isSelect\" [id]=\"'filter' + elCol\"\r\n (input)=\"filterOnKeyUp($event, columnHeader.column, $any($event).target.value)\" maxlength=\"255\" autocomplete=\"off\" \r\n (keyup)=\"filterOnKeyUp($event, columnHeader.column, $any($event).target.value)\" [attr.type]=\"columnHeader.dataType\" \r\n (focus)=\"emitFilterFocus($any($event).target, columnHeader.column)\" (click)=\"emitFilterClick($any($event).target, columnHeader.column)\" \r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\" />\r\n <select #compSelect [id]=\"'selectComp' + elCol\" [name]=\"'selectComp' + elCol\" [(ngModel)]=\"dataTableService.dataFilSrtTracker[columnHeader.column].comparator\" \r\n (change)=\"handleComparatorChange(columnHeader.column, $any($event).target.value)\" class=\"select-filter-comparator\" (focus)=\"handleCompFocus()\"\r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\" >\r\n <option value=\"\">Comparison?</option>\r\n @for(opt of compOpts; track opt){\r\n <option [value]=\"opt\" [attr.selected]=\"isSelect && opt === 'Equals'\" >{{opt}}</option>\r\n }\r\n </select>\r\n <div class=\"inline relly\" style=\"z-index: 1;\">\r\n <button class=\"btn-fil-comp\" type=\"button\"\r\n (mousemove)=\"common.unbindMouseEvent($event)\" (mousedown)=\"common.unbindMouseEvent($event)\" (mouseup)=\"common.unbindMouseEvent($event)\" >\r\n <i class=\"material-icons\" aria-hidden=\"false\">filter_list</i>\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, HostListener, input, signal } from '@angular/core';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TableDragService } from '../../../services/table-drag-service';\r\nimport { CommonService } from '../../../services/common-service';\r\n\r\n@Component({\r\n selector: 'app-data-table-paginator',\r\n imports: [CommonModule, FormsModule,],\r\n templateUrl: './data-table-paginator.html',\r\n styleUrls: ['./data-table-paginator.css', '../../../styles.css']\r\n})\r\nexport class DataTablePaginator {\r\n\r\n @HostListener('window:click', ['$event'])\r\n onWindowClick(e: MouseEvent) {\r\n if(this.listenToWindowSkipTo && document.getElementsByClassName(\"skip-to-options\").length){\r\n if(e && e.target && (e.target instanceof Element) && (/skip/g.test(e.target.className) || /skip/g.test(e.target.id)))\r\n return;\r\n this.closeSkipOpts()\r\n }\r\n }\r\n\r\n constructor(public dataTableService: DataTableService,\r\n public tblDragService: TableDragService,\r\n public common: CommonService,\r\n public skipTo: ElementRef,) {\r\n\r\n }\r\n\r\n init = true\r\n isKeying = false\r\n totalRowStr = \"\";\r\n rowinating = false\r\n jumpableRows: any[] = []\r\n listenToWindowSkipTo = false\r\n showSkipTo: boolean = false;\r\n @Input() totalRows: number = 0;\r\n filSortStr = input<string>(\"\");\r\n @Input() disableJump: boolean = false;\r\n @Output(\"jumpTo\") jumpTo: EventEmitter<number> = new EventEmitter(true)\r\n\r\n ngOnChanges(changes: SimpleChanges){\r\n if(!this.init && changes){\r\n if(changes[\"totalRows\"])\r\n this.setUpPagi()\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.setUpPagi()\r\n this.init = false\r\n }\r\n\r\n setUpPagi() {\r\n this.handleSkipToDD()\r\n this.totalRowStr = this.totalRows.toLocaleString(undefined, { maximumFractionDigits: 0 })\r\n }\r\n\r\n //PAGINATOR\r\n handleSkipToPage(value: any) {\r\n const pnum = parseInt(value.toString())\r\n if(value && !isNaN(pnum) && !this.isKeying){\r\n this.jumpTo.emit(pnum)\r\n this.closeSkipOpts()\r\n }\r\n }\r\n\r\n setUpHandleSkipToPage(val: any) {//mock option click\r\n if(val){\r\n const useVal = Math.min(val, this.totalRows)\r\n this.skipTo.nativeElement.value = useVal\r\n this.handleSkipToPage(useVal)\r\n } else {\r\n this.closeSkipOpts()\r\n }\r\n }\r\n\r\n handleSkipToPageOnKeyup(event: any, val: any) {\r\n if(event && event.type === \"blur\" && ((event.relatedTarget && /skip-to-options/g.test(event.relatedTarget.className)) || \r\n (event.relatedTarget && event.relatedTarget.parentElement && /skip-to-options/g.test(event.relatedTarget.parentElement.className)))) return;\r\n this.isKeying = true\r\n setTimeout( () => { \r\n this.isKeying = false \r\n this.handleSkipToPage(val)\r\n })\r\n }\r\n\r\n setUpHandleSkipToPageOnEnter(page: any) {\r\n this.setUpHandleSkipToPage(page)\r\n }\r\n\r\n handleSkipToPageOnKeyupEnter(val: any) {\r\n this.handleSkipToPage(val)\r\n }\r\n\r\n showSkipToOptions(event: Event) {\r\n if(!this.showSkipTo)\r\n this.showSkipTo = true;\r\n if(event && event.type === \"click\" && !this.listenToWindowSkipTo)\r\n setTimeout( () => { this.listenToWindowSkipTo = true })\r\n }\r\n\r\n closeSkipOpts() {\r\n this.showSkipTo = false;\r\n this.listenToWindowSkipTo = false\r\n }\r\n\r\n handleSkipToDD() {\r\n this.jumpableRows = []\r\n this.jumpableRows.push({ text: \"1st Row\", value: \"1\" })\r\n if(this.totalRows > 10){\r\n const qtr = Math.ceil(this.totalRows/4)\r\n const half = Math.ceil(this.totalRows/2)\r\n const thrqtr = Math.ceil(this.totalRows*.75)\r\n this.jumpableRows.push({ text: \"Row \" + qtr.toLocaleString(undefined, { maximumFractionDigits: 0 }), value: qtr })\r\n this.jumpableRows.push({ text: \"Row \" + half.toLocaleString(undefined, { maximumFractionDigits: 0 }), value: half })\r\n this.jumpableRows.push({ text: \"Row \" + thrqtr.toLocaleString(undefined, { maximumFractionDigits: 0 }), value: thrqtr })\r\n }\r\n this.jumpableRows.push({ text: \"Last Row\", value: this.totalRows })\r\n }\r\n //PAGINATOR\r\n\r\n}\r\n","<div id=\"tableFooter\" class=\"data-table-footer\" (mousemove)=\"tblDragService.checkPaginatorBorderCursor($event)\" \r\n(mousemove)=\"tblDragService.handleTableHeightAdjust($event)\" (mousedown)=\"tblDragService.handleTableHeightAdjust($event)\" \r\n(mouseup)=\"tblDragService.handleColResMouseUp($event)\">\r\n <div class=\"three-qtr-wid\">\r\n @if(!common.goodLs()){<span class=\"v-mid error-message lg-text\">{{\"Invalid License Key\"}} </span>}\r\n <div class=\"inline v-mid semi-heavy lg-text\">{{totalRowStr}}</div> <div class=\"inline v-mid\">row{{totalRows === 1 ? \"\" : \"s\"}}</div>\r\n @if(filSortStr()){\r\n <div class=\"inline v-mid\" [innerHTML]=\"filSortStr()\"></div>\r\n }\r\n </div><div class=\"qtr-wid right\">\r\n <label class=\"skip-lbl\" for=\"skipTo\">Jump To Row</label> <div class=\"skip-to-contain\"><input type=\"number\" min=\"1\" [attr.max]=\"totalRowStr\"\r\n name=\"skipTo\" id=\"skipTo\" #skipTo placeholder=\"Jump to...\" (input)=\"handleSkipToPageOnKeyup($event, $any($event).target.value)\"\r\n (focus)=\"showSkipToOptions($event)\" (click)=\"showSkipToOptions($event)\" (blur)=\"handleSkipToPageOnKeyup($event, $any($event).target.value)\" \r\n (keyup.enter)=\"handleSkipToPageOnKeyupEnter($any($event).target.value)\" (keyup)=\"handleSkipToPageOnKeyup($event, $any($event).target.value)\" \r\n (mouseup)=\"common.unbindMouseEvent($event)\" [disabled]=\"disableJump\" />\r\n <div #skipToOptions class=\"skip-to-options-hide\" [class.skip-to-options]=\"showSkipTo\">\r\n @for(row of jumpableRows; track row.value){\r\n <div (click)=\"setUpHandleSkipToPage(row.value)\"\r\n (keyup.enter)=\"setUpHandleSkipToPage(row.value)\"\r\n tabIndex=\"0\" >{{row.text}}</div>\r\n }\r\n </div></div>\r\n </div>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { DataCell } from '../../../interfaces/data-cell';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { TableDragService } from '../../../services/table-drag-service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\n\r\n@Component({\r\n selector: 'app-data-cell',\r\n imports: [CommonModule],\r\n templateUrl: './data-cell.html',\r\n styleUrl: '../../../styles.css'\r\n})\r\nexport class DataCellComponent {\r\n\r\n constructor(public tblDragService: TableDragService,\r\n public dataTableService: DataTableService,\r\n private common: CommonService,) {\r\n\r\n }\r\n\r\n init = true\r\n ready = false\r\n canEdit = false\r\n elCol: string = \"\"\r\n cellStyle: any = {}\r\n setCellEditScrlActionTO: any = null;\r\n @Input() rawText: any;\r\n @Input() cell!: DataCell;\r\n @Input() rowId: string = \"\";//starts with dataTableRow\r\n @Input() colWid: string = \"\";\r\n @Input() rowHeight: string = \"\";\r\n @Input() noColResize: boolean = false;\r\n @Input() columnValClass: string = \"\";\r\n @Output(\"width\") width: EventEmitter<number> = new EventEmitter()\r\n @Output(\"height\") height: EventEmitter<any> = new EventEmitter()\r\n @Output(\"edit\") edit: EventEmitter<any> = new EventEmitter()\r\n @Output(\"dragListen\") dragListen: EventEmitter<any> = new EventEmitter()\r\n @Output(\"validateEditFocus\") validateEditFocus: EventEmitter<any> = new EventEmitter()\r\n @Output(\"clearVEditFocus\") clearVEditFocus: EventEmitter<any> = new EventEmitter()\r\n @ViewChild('cellEl', { static: true }) cellElem!: ElementRef<HTMLElement>\r\n rightAlign: string = \"\";//for numbers, always add a space in front\r\n symbolCls: string = \"\";//also for numbers only, always add a space in front\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(!this.init){\r\n if(this.cell.visible || changes[\"rowHeight\"]){\r\n if(typeof changes !== \"undefined\" && (changes[\"cell\"] || changes[\"rowHeight\"] || changes[\"colWid\"]))\r\n this.applyDimensions()\r\n if(this.cell.visible && !this.ready)\r\n this.handleSettingText()\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if(this.cell.visible)\r\n this.applyDimensions()\r\n if(this.cell.column)\r\n this.elCol = this.common.elifyCol(this.cell.column) \r\n this.rightAlign = this.cell.dataType === \"number\" ? \" data-cell-riiight\" : \"\";\r\n this.applySymbol()\r\n this.canEdit = this.cell.editable && !this.validateEdit()//to see if free text edit\r\n this.init = false\r\n this.tblDragService.cellDims.subscribe( d => { this.updateUiColCellTheme(d.prop, d.value) })\r\n }\r\n\r\n ngAfterViewInit() {\r\n if(this.cell.visible)\r\n this.handleSettingText()\r\n }\r\n\r\n validateEdit(): boolean {\r\n if(!this.cell.html && ([\"number\", \"date\"].includes(this.cell.dataType) || this.dataTableService.dataFilSrtTracker[this.cell.column].selDDVals))\r\n return true\r\n return false\r\n }\r\n \r\n applySymbol() {\r\n const sym = this.dataTableService.dataFilSrtTracker[this.cell.column][\"colCellSymbol\"];\r\n if(sym){\r\n this.symbolCls = [\"$\",\"€\",\"£\",\"¥\",\"₣\",\"₹\"].indexOf(sym) > -1 ? \" has-symbol-b\" : \" has-symbol\";\r\n this.cellElem.nativeElement.setAttribute(\"data-symbol\", sym)\r\n }\r\n }\r\n\r\n handleSettingText() {\r\n if(this.cell.text || (this.cell.html && !/<img/g.test(this.cell.html)))\r\n return this.setCellText()\r\n if(this.cell.html)\r\n setTimeout( () => { this.setCellText() }, 100)\r\n }\r\n\r\n setCellText() {\r\n const cell = this.cellElem.nativeElement\r\n if(this.cell.text && !cell.textContent)\r\n cell.textContent = this.cell.text\r\n if(this.cell.html && !cell.innerHTML)\r\n cell.innerHTML = this.cell.html\r\n this.ready = true\r\n if(this.cell.html){\r\n setTimeout( () => {\r\n const ancOIm = (document.querySelector(\"#\" + this.rowId + \" .data-cell-\" + this.elCol + \" a\") || \r\n document.querySelector(\"#\" + this.rowId + \" .data-cell-\" + this.elCol + \" img\"))\r\n if(ancOIm){\r\n ancOIm.addEventListener(\"mousemove\", e => { e && e.stopPropagation() })\r\n ancOIm.addEventListener(\"mousedown\", e => { e && e.stopPropagation() })\r\n ancOIm.addEventListener(\"mouseup\", e => { e && e.stopPropagation() })\r\n }\r\n })\r\n }\r\n }\r\n\r\n applyDimensions() {\r\n this.cellStyle = { \"width\": (this.cell.width || this.colWid), \"height\": this.rowHeight }\r\n }\r\n\r\n updateUiColCellTheme(cssProp: string, val: number) {\r\n const rProp = this.common.replaceUniSep(this.tblDragService.currColForDataRow)\r\n if(cssProp === \"height\" && (this.cell.column === this.tblDragService.currColForDataRow || this.cell.column === rProp) && \r\n this.tblDragService.currDataRow.id === this.rowId)\r\n this.height.emit(val)\r\n const prop = this.common.replaceUniSep(this.dataTableService.currColumnEdit)\r\n if(prop && this.dataTableService.dataFilSrtTracker[prop]){\r\n if(cssProp === \"width\"){\r\n this.dataTableService.dataFilSrtTracker[prop].colWidth = (val || parseInt(this.colWid)).toString() + \"px\"\r\n this.width.emit(val || parseInt(this.colWid))\r\n } \r\n }\r\n }\r\n\r\n handleColResDblClick(prop: string) {\r\n if(this.dataTableService.dataFilSrtTracker[prop]){\r\n let i = 0\r\n let wids = []\r\n let useWid = 50\r\n const elCol = this.common.elifyCol(prop)\r\n const els = document.getElementsByClassName(\"data-cell-\" + elCol)\r\n const nw = els[0]?.getBoundingClientRect().width || 0\r\n const len = els.length\r\n for(i; i < len; i++)\r\n wids.push(els[i].scrollWidth)\r\n useWid =wids.sort()[(len-1)]\r\n if(useWid && useWid > nw){\r\n const cswid = (Math.ceil(useWid+1))\r\n this.dataTableService.currColumnEdit = elCol\r\n this.updateUiColCellTheme(\"width\", cswid)\r\n setTimeout( () => this.dataTableService.currColumnEdit = null)\r\n }\r\n }\r\n }\r\n\r\n validateRawText(text: string, col: string, dataType: string): string {\r\n if(this.dataTableService.dataFilSrtTracker[col].selDDVals){\r\n if(this.dataTableService.dataFilSrtTracker[col].selDDVals.map( (d: any) => d.value).includes(text))\r\n return text\r\n return \"\";\r\n }\r\n if(dataType === \"number\" && (!text || /[a-zA-Z \\/]/g.test(text)))\r\n return \"\"\r\n return text\r\n }\r\n\r\n setToEditAfterTO() {\r\n this.setCellEditScrlActionTO = setTimeout( () => {\r\n if(this.dataTableService.currEditCol === this.cell.column)\r\n this.setCellToEdit(true)\r\n }, 100)\r\n }\r\n\r\n setCellToEdit(noHScrl?: boolean) {\r\n if(this.tblDragService.didResizeOnEvent || !this.cell.editable){\r\n if(!this.cell.editable){\r\n this.dataTableService.clearAllFocused()\r\n this.dataTableService.clearDCellFcsd()\r\n this.clearVEditFocus.emit(\"\")\r\n this.dataTableService.currEditCol = \"\"\r\n this.setCellEditScrlActionTO = null;\r\n this.dataTableService.autoScrollOnEdit = false\r\n this.dataTableService.currEditIndex = -1\r\n }\r\n return//not editable or was really a drag event, not click\r\n }\r\n this.dataTableService.currEditCol = this.cell.column\r\n this.dataTableService.currEditIndex = parseInt(this.rowId.replace(/^dataTableRow/, \"\"))\r\n const cell = this.cellElem.nativeElement\r\n const cellWid = parseInt(this.dataTableService.useColWid?.replace(/px/g, \"\") || \"250\")\r\n if(cell.getBoundingClientRect().right+cellWid >= this.dataTableService.tblRight){\r\n if(!noHScrl){\r\n this.dataTableService.autoScrollOnEdit = true\r\n const grid = <HTMLElement>document.getElementById(\"dataTableBody\")\r\n grid.scrollBy((cellWid+1), 0)\r\n }\r\n if(!this.setCellEditScrlActionTO){\r\n return this.setToEditAfterTO()\r\n } else {\r\n window.clearTimeout(this.setCellEditScrlActionTO)\r\n }\r\n }\r\n const ddReClick = cell.classList.contains(\"focused-el\")\r\n this.dataTableService.clearAllFocused()\r\n this.dataTableService.clearDCellFcsd()\r\n this.setCellEditScrlActionTO = null;\r\n setTimeout( () => this.dataTableService.autoScrollOnEdit = false)\r\n if(this.needsVal()){\r\n const okText = this.validateRawText(this.cell.rawText, this.cell.column, this.cell.dataType)\r\n if(this.cell.rawText && !okText)\r\n return;\r\n this.validateEditFocus.emit({type: this.cell.dataType, value: okText})\r\n if(this.dataTableService.dataFilSrtTracker[this.cell.column].selDDVals){//only for sel dds\r\n if(ddReClick){\r\n cell.blur()\r\n return this.dataTableService.clearAllFocused()\r\n }\r\n setTimeout( () => {if(this.dataTableService.currEditCol === this.cell.column) cell.focus() }, 45)\r\n setTimeout( () => {if(this.dataTableService.currEditCol === this.cell.column) cell.classList.add(\"focused-el\") }, 150)\r\n }\r\n return;\r\n }\r\n this.clearVEditFocus.emit(\"\")\r\n setTimeout( () => {\r\n const fCellDragger = <HTMLElement>document.getElementsByClassName(\"focused-cell-dragger\")[0]\r\n const par = fCellDragger?.parentElement\r\n if(fCellDragger && par){\r\n const cbds = cell.getBoundingClientRect()\r\n const rbds = par.getBoundingClientRect()\r\n fCellDragger.style.left = (Math.ceil(cbds.left-rbds.left) + cbds.width - 4) + \"px\";\r\n fCellDragger.style.top = (Math.ceil(cbds.bottom-rbds.top) - 4) + \"px\";\r\n }\r\n })\r\n }\r\n\r\n needsVal(): boolean {\r\n if(!this.cell.html && ([\"number\", \"date\"].includes(this.cell.dataType) || this.dataTableService.dataFilSrtTracker[this.cell.column].selDDVals))\r\n return true\r\n return false\r\n }\r\n\r\n emitEdit(event: any) {\r\n if(!this.cell.editable || this.needsVal()/*only for validated edits*/ || \r\n (event.relatedTarget && event.relatedTarget.classList.contains(\"edit-input\")))\r\n return;\r\n this.execFreeEdit()\r\n }\r\n\r\n execFreeEdit() {\r\n const el = this.cellElem.nativeElement\r\n const val = el.textContent\r\n if(val !== this.rawText)\r\n this.edit.emit({ column: this.cell.column, value: val })\r\n else{\r\n setTimeout( () => {\r\n const actEl = document.activeElement\r\n if(actEl && actEl.id === \"fCellDragger\"){\r\n el.classList.add(\"dragger-cell-focused\")\r\n this.dragListen.emit(true)\r\n } else {\r\n if(!actEl || (actEl && !/data-cell/g.test(actEl?.className))){\r\n this.dataTableService.currEditIndex = -1\r\n const fCellDragger = <HTMLElement>document.getElementsByClassName(\"focused-cell-dragger\")[0]\r\n if(fCellDragger && !this.dataTableService.autoScrollOnEdit){\r\n fCellDragger.style.removeProperty(\"top\")\r\n fCellDragger.style.removeProperty(\"left\")\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n}\r\n","<div #cellEl [attr.contenteditable]=\"canEdit\" [ngStyle]=\"cellStyle\" class=\"data-cell data-cell-{{elCol}}{{rightAlign}}{{symbolCls}}{{columnValClass}}\" \r\n[ngClass]=\"{ 'col-item-freeze': cell.freeze, 'col-header-minimized': cell.minimized, 'holding-check': cell.column === dataTableService.firstCol }\" tabindex=\"0\"\r\n(mousemove)=\"tblDragService.checkItemBorderCursor($event, noColResize)\" (mousemove)=\"tblDragService.handleCellSizeAdjust($event, elCol)\"\r\n(mousedown)=\"tblDragService.handleCellSizeAdjust($event, elCol)\" (focus)=\"setCellToEdit()\" (blur)=\"emitEdit($event)\"\r\n[attr.data-index]=\"rowId\" (dblclick)=\"handleColResDblClick(cell.column)\"\r\n></div>","import { Component, ElementRef, input, Input, SimpleChanges, ViewChild, } from '@angular/core';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { ColumnHeader } from '../../../interfaces/column-header';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-export-component',\r\n imports: [CommonModule, DecimalPipe, FormsModule],\r\n templateUrl: './export-component.html',\r\n styleUrls: ['./export-component.css', '../../../styles.css']\r\n})\r\nexport class ExportComponent {\r\n\r\n constructor(private dataTableService: DataTableService,) {\r\n\r\n }\r\n\r\n init = true\r\n rowsStr = \"rows\"\r\n optsOpen = false\r\n disableExport = input<boolean>(false)\r\n exporting: boolean = false;\r\n @Input() count: number = 0\r\n @Input() columns: ColumnHeader[] = []\r\n formats: string[] = [\"csv\" ,\"json\" ,\"psv\" ,\"tsv\"]\r\n @ViewChild(\"ddSelect\", { static: true }) ddSelect!: ElementRef<HTMLDivElement>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(!this.init && changes){\r\n if(changes[\"count\"]?.currentValue)\r\n this.rowsStr = this.count === 1 ? \"row\" : \"rows\"\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.init = false\r\n this.dataTableService.closeExportOpts.subscribe( e => this.optsOpen = e)\r\n }\r\n\r\n toggleExportOpts() {\r\n this.optsOpen = !this.optsOpen\r\n if(this.optsOpen){\r\n setTimeout( () => {\r\n const hgt = this.ddSelect.nativeElement.getBoundingClientRect().height\r\n this.dataTableService.listenToCloseExportOpts = true;\r\n this.ddSelect.nativeElement.style.top = -(hgt+3) + \"px\"\r\n })\r\n }\r\n }\r\n\r\n //EXPORT\r\n handleExportData(format: string) { \r\n if(!this.dataTableService.mainData || !this.dataTableService.mainDataLen){\r\n this.optsOpen = false;\r\n this.dataTableService.listenToCloseExportOpts = false\r\n return alert(\"Please generate a table then export data!\");\r\n }\r\n this.exporting = true\r\n try{\r\n let data; let cType = \"application/octet-stream\";\r\n const dt = new Date().getTime()\r\n let rows = this.dataTableService.currFilData.filter( function(d) { return true })\r\n const rLen = rows.length\r\n const selLen = this.dataTableService.currSelRows.length\r\n if(selLen && (selLen !== rLen)){\r\n setTimeout( () => { this.endExportOpts() })\r\n const sStr = (selLen.toLocaleString(undefined, {maximumFractionDigits:0}) + (\" row\" + (selLen === 1 ? \"\" : \"s\")))\r\n const rStr = (rLen.toLocaleString(undefined, {maximumFractionDigits:0}) + (\" row\" + (rLen === 1 ? \"\" : \"s\")))\r\n const noun = (selLen === 1 ? \"just that one\" : \"them only\")\r\n if(!confirm(\"You've selected \" + sStr + \" but didn't toggle to export \"+noun+\", so you're about to export \" + rStr + \". Continue?\"))\r\n return\r\n }\r\n if(!rLen){\r\n setTimeout( () => { this.endExportOpts() })\r\n return alert(\"Please include some rows to export.\")\r\n }\r\n let c = 0\r\n let cols = []\r\n const colLen = this.columns.length\r\n for(c; c < colLen; c++)\r\n cols.push(this.columns[c].column)\r\n let title = \"MyDataTable\"\r\n const fName = title + dt\r\n if(format === \"csv\"){\r\n cType = \"text/csv\"\r\n data = this.whipToDelimForm(rows, cols, \",\")\r\n return this.downloadFileExp(data, cType, fName, format)\r\n }\r\n if(format === \"tsv\")\r\n data = this.whipToDelimForm(rows, cols, '\\t')\r\n if(format === \"psv\")\r\n data = this.whipToDelimForm(rows, cols, '|')\r\n if(data && (format === \"tsv\" || format === \"psv\"))\r\n return this.downloadFileExp(data, cType, fName, format)\r\n if(format === \"json\"){\r\n let n = 0\r\n let i = 0\r\n let useCols = []\r\n const clen = cols.length\r\n cType = \"application/json\"\r\n for(n; n < clen; n++){\r\n if(!this.dataTableService.dataFilSrtTracker[cols[n]][\"minimize\"])\r\n useCols.push(cols[n])\r\n }\r\n const uLen = useCols.length\r\n if(!uLen){\r\n setTimeout( () => { this.endExportOpts() })\r\n return alert(\"Please select or unhide some columns to export.\")\r\n }\r\n if(uLen === clen){//nothing hidden just strinify\r\n data = JSON.stringify(rows)\r\n } else {//we know we have objs by now\r\n let json = []\r\n for(i; i < rLen; i++){\r\n const row = rows[i]\r\n if(row && typeof row === \"object\"){\r\n let exp: any = {}\r\n for(const prop in row){\r\n if(useCols.indexOf(prop) > -1)\r\n exp[prop] = row[prop]\r\n }\r\n json.push(exp)\r\n } else {\r\n json.push(row)\r\n }\r\n }\r\n data = JSON.stringify(json)\r\n }\r\n if(data)\r\n this.downloadFileExp(data, cType, fName, format)\r\n }\r\n }catch(e){ \r\n setTimeout( () => { this.endExportOpts() })\r\n }\r\n }\r\n\r\n downloadFileExp(data: any, cType: string, fName: string, format: string) {\r\n const blob = new Blob([data], {type: cType})\r\n const url = URL.createObjectURL(blob)\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", (fName + \".\" + format));\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n URL.revokeObjectURL(url)\r\n setTimeout( () => { this.endExportOpts() })\r\n }\r\n\r\n endExportOpts() {\r\n this.exporting = false;\r\n this.optsOpen = false;\r\n this.dataTableService.listenToCloseExportOpts = false\r\n }\r\n\r\n whipToDelimForm(rows: any[], cols: any[], delim: any) {\r\n let text = \"\"\r\n let i = 0; let n =0; let o = 0;\r\n const len = rows.length\r\n let useCols = []\r\n const clen = cols.length\r\n for(n; n < clen; n++){\r\n if(!this.dataTableService.dataFilSrtTracker[cols[n]][\"minimize\"])\r\n useCols.push(cols[n])\r\n }\r\n const ulen = useCols.length\r\n for(o; o < ulen; o++)\r\n text += (useCols[o].replace(/[,\\|]/g, \"\") + (o < (ulen-1) ? delim : \"\"));//just remove commas in a col header\r\n if(!text)\r\n return alert(\"Please select or unhide some columns to export.\")\r\n text += '\\n'\r\n for(i; i < len; i++){\r\n const row = rows[i]\r\n if(typeof row === \"object\"){\r\n let z = 0\r\n for(const prop in row){\r\n if(this.dataTableService.dataFilSrtTracker[prop][\"minimize\"])\r\n continue\r\n const val: any = row[prop]\r\n if(val && typeof val === \"string\"){\r\n if((delim === \",\" && /,/g.test(val)) || (delim === \"|\" && /\\|/g.test(val)))\r\n text += ('\"' + val + '\"' + (z < (ulen-1) ? delim : \"\"))\r\n else\r\n text += ((val || \"null\") + (z < (ulen-1) ? delim : \"\"))\r\n } else\r\n text += ((val || \"null\") + (z < (ulen-1) ? delim : \"\"))\r\n z += 1\r\n }\r\n } else {\r\n if(row && typeof row === \"string\"){\r\n if((delim === \",\" && /,/g.test(row)) || (delim === \"|\" && /\\|/g.test(row)))\r\n text += ('\"' + row + '\"')\r\n else\r\n text += (row || \"null\")\r\n } else\r\n text += (row || \"null\")\r\n }\r\n if(i < (len-1))\r\n text += '\\n'\r\n }\r\n return text\r\n }\r\n //EXPORT\r\n\r\n}\r\n","<div class=\"relly\">\r\n <div #ddSelect class=\"deebo-dd-select-hide deebo-dd-export\" [class.deebo-dd-select]=\"optsOpen\">\r\n @for(format of formats; track format){\r\n <div class=\"deebo-dd-opt deebo-dd-export\">\r\n <button type=\"button\" class=\"no-btn btn-export\" (click)=\"handleExportData(format)\" \r\n [disabled]=\"exporting || !count\">{{format}}</button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div class=\"deebo-dd-contain deebo-dd-export flex-center\">\r\n <button type=\"button\" class=\"btn-deebo-dd deebo-dd-export no-btn\" (click)=\"toggleExportOpts()\" [disabled]=\"disableExport()\">\r\n <span>Export {{count | number}} {{rowsStr}}</span>\r\n <i class=\"material-icons\" aria-hidden=\"false\">{{optsOpen ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\"}}</i>\r\n </button>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewChild, ElementRef, input, signal } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-row-group-menu',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './row-group-menu.html',\r\n styleUrls: ['./row-group-menu.css', '../export-component/export-component.css', '../../../styles.css']\r\n})\r\nexport class RowGroupMenu {\r\n\r\n groups = input<string[]>([])\r\n disableGB = input<boolean>(false)\r\n optsOpen = signal<boolean>(false)\r\n enableClear = input<boolean>(false)\r\n \r\n @ViewChild(\"ddSelect\", { static: true }) ddSelect!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(public common: CommonService,\r\n private dataTableService: DataTableService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.dataTableService.closeGroupByOpts.subscribe( e => { this.setOptsOpen(e) })\r\n }\r\n\r\n setOptsOpen(e: boolean) {\r\n this.optsOpen.set(e)\r\n }\r\n\r\n toggleGroupByOpts() {\r\n this.setOptsOpen(!this.optsOpen())\r\n if(this.optsOpen()){\r\n setTimeout( () => {\r\n const hgt = this.common.goodLs() ? this.ddSelect.nativeElement.getBoundingClientRect().height : 10;\r\n this.dataTableService.listenToCloseGroupByOpts = true;\r\n this.ddSelect.nativeElement.style.top = -(hgt+3) + \"px\"\r\n })\r\n }\r\n }\r\n\r\n setGrouping(group: string | null) {\r\n this.dataTableService.currGrouping.next(group)\r\n if(!group){\r\n let i = 0\r\n const len = this.groups().length\r\n for(i; i < len; i++){\r\n const el = <HTMLInputElement>document.getElementById(\"groupby\" + this.groups()[i])\r\n if(el)\r\n el.checked = false\r\n }\r\n }\r\n } \r\n\r\n}\r\n","<div class=\"relly\">\r\n <div #ddSelect class=\"deebo-dd-select-hide deebo-dd-groupby\" [class.deebo-dd-select]=\"optsOpen()\">\r\n @if(enableClear()){\r\n <div class=\"deebo-dd-opt deebo-dd-groupby\">\r\n <button type=\"button\" (click)=\"setGrouping(null)\" class=\"v-mid no-btn\" style=\"width: 100%;\">\r\n <i class=\"material-icons error-message heavy v-mid\" aria-hidden=\"false\">close</i> <span class=\"md-text v-mid\">Grouping</span>\r\n </button>\r\n </div>\r\n }\r\n @for(grp of groups(); track grp){\r\n <div class=\"deebo-dd-opt deebo-dd-groupby\">\r\n <div>\r\n <label for=\"groupby{{grp}}\">\r\n <input type=\"radio\" name=\"groupby\" id=\"groupby{{grp}}\" (click)=\"setGrouping(grp)\" (input)=\"setGrouping(grp)\" /> \r\n {{common.titleCase(grp)}}\r\n </label>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div class=\"deebo-dd-contain deebo-dd-groupby flex-center\">\r\n <button type=\"button\" class=\"btn-deebo-dd deebo-dd-groupby no-btn\" (click)=\"toggleGroupByOpts()\" [disabled]=\"disableGB()\">\r\n <span>Group By</span>\r\n <i class=\"material-icons\" aria-hidden=\"false\">{{optsOpen() ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\"}}</i>\r\n </button>\r\n</div>","import { Component, ElementRef, Input, Output, ViewChild, EventEmitter, SimpleChanges, HostListener, input, signal } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { DataRow } from '../../../interfaces/data-row';\r\nimport { DataCellComponent } from '../data-cell/data-cell';\r\nimport { DataCell } from '../../../interfaces/data-cell';\r\nimport { TableDragService } from '../../../services/table-drag-service';\r\n\r\n@Component({\r\n selector: 'app-row-group-panel',\r\n imports: [CommonModule, DecimalPipe, DataCellComponent],\r\n templateUrl: './row-group-panel.html',\r\n styleUrls: ['./row-group-panel.css', '../../../styles.css']\r\n})\r\nexport class RowGroupPanel {\r\n\r\n @HostListener('window:mouseup', ['$event'])\r\n onWindowMouseUp(e: MouseEvent) {\r\n if(this.open()){\r\n setTimeout( () => { \r\n const pEl = this.panelDataGrid?.nativeElement\r\n if(pEl){\r\n pEl.scrollBy(0, 1);\r\n pEl.scrollBy(0, -1);\r\n }\r\n } )\r\n }\r\n }\r\n\r\n init = true\r\n count: number = 0\r\n verticalRest = 0\r\n isScrolling = false;\r\n open = signal<boolean>(false)\r\n uiGroupValue: string = \"\"\r\n elifyGrouping: string = \"\"\r\n rows: DataRow[] = [];\r\n panelData: any[] = []\r\n tblTop: number = 0\r\n tblBot: number = 0\r\n aboveHgt: number = 0;\r\n belowHgt: number = 0;\r\n rowNums: number[] = []\r\n changedIds: string[] = []\r\n scrollDir: string = \"down\"\r\n lastElRowIndex: number = 0;\r\n horizRest = input<number>(0)\r\n colOfInt = input<string>(\"\")\r\n @Input() groupValue: string = \"\"\r\n @Input() useRowWid: string = \"\"\r\n @Input() maxCols: number = 0\r\n @Input() editable: boolean = false\r\n @Input() columns: string[] = []\r\n @Input() showRowNumbers: boolean = true\r\n @Output(\"openEvt\") openEvt: EventEmitter<string> = new EventEmitter()\r\n @Output(\"horizPos\") horizPos: EventEmitter<number> = new EventEmitter()\r\n @Output(\"cellEdit\") cellEdit: EventEmitter<any> = new EventEmitter()\r\n @ViewChild(\"panelDataGrid\") panelDataGrid!: ElementRef<HTMLElement>;\r\n @ViewChild(\"aboveArea\") aboveArea!: ElementRef<HTMLElement>;\r\n @ViewChild(\"belowArea\") belowArea!: ElementRef<HTMLElement>;\r\n\r\n constructor(public common: CommonService,\r\n private tblDragService: TableDragService,\r\n public dataTableService: DataTableService,\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(!this.init && this.open() && changes){\r\n if(changes[\"horizRest\"]?.currentValue)\r\n this.setHorizScrPos()\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.uiGroupValue = this.common.titleCase(this.groupValue)\r\n this.elifyGrouping = this.common.elifyCol(this.groupValue)\r\n this.count = this.dataTableService.currFilData.filter( d => d[this.dataTableService.currGroup] === this.groupValue).length\r\n this.dataTableService.gridScrollEndWhileGrouped.subscribe( e => { this.setTblBot() })\r\n this.dataTableService.gridEventWhileGrouped.subscribe( e => { \r\n const nowOpen = this.open()\r\n this.rows = []\r\n this.panelData = []\r\n this.open.set(false) \r\n this.rowNums = []\r\n this.count = this.dataTableService.currFilData.filter( d => d[this.dataTableService.currGroup] === this.groupValue).length\r\n if(nowOpen)\r\n setTimeout( () => { this.openGroup() })\r\n })//just close\r\n this.dataTableService.mouseupWhileGrouped.subscribe( e => {\r\n if(this.open()){\r\n setTimeout( () => { \r\n const pEl = this.panelDataGrid?.nativeElement\r\n if(pEl){\r\n pEl.scrollBy(0, 1);\r\n pEl.scrollBy(0, -1);\r\n }\r\n } )\r\n }\r\n })\r\n this.init = false;\r\n }\r\n\r\n openGroup() {\r\n this.open.set(!this.open())\r\n setTimeout( () => {\r\n if(!this.open()){\r\n this.rows = []\r\n this.panelData = []\r\n this.aboveHgt = 0;\r\n this.belowHgt = 0;\r\n this.rowNums = []\r\n } else {\r\n this.panelData = this.dataTableService.currFilData.filter( d => d[this.dataTableService.currGroup] === this.groupValue)\r\n this.count = this.panelData.length\r\n let n = 0\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const init = Math.max(this.dataTableService.dTblHeight/defNum);\r\n const addCell = (text: any, prop: string | null, row: DataRow | null, visible: boolean) => {\r\n if(prop && row){\r\n const useProp = this.dataTableService.dataFilSrtTracker[prop]\r\n const notNum = (this.dataTableService.figureFilterType(prop) != \"number\" || /(year|yr|fy)/g.test(prop.toLocaleLowerCase())) ? true : false\r\n const useTxt = this.dataTableService.figureCellText(text, notNum, useProp[\"colCellSymbol\"])\r\n const colStyle = this.dataTableService.getColumnStyle(prop)\r\n row.cells?.push({\r\n column: prop,\r\n rawText: text,\r\n visible: visible,\r\n freeze: useProp.freeze,\r\n minimized: useProp.minimize,\r\n editable: false,\r\n width: useProp.colWidth || this.dataTableService.useColWid,\r\n dataType: this.dataTableService.figureFilterType(prop),\r\n text: (useTxt.prop === \"textContent\" ? useTxt.value : \"\"),\r\n html: (useTxt.prop !== \"textContent\" ? useTxt.value : \"\"),\r\n specialColClass: (colStyle ? (colStyle + this.common.elifyCol(useTxt.value)) : \"\"),\r\n })\r\n }\r\n }\r\n const limit = Math.min(init, this.count)\r\n const colLen = this.columns.length\r\n let horizLim = Math.min(this.maxCols, colLen)\r\n if(this.colOfInt()){\r\n let indOfScrl: number = this.columns.indexOf(this.colOfInt()) + 1\r\n const vlen: number =this.dataTableService.visibleCols.length\r\n const indInVis: number = this.dataTableService.visibleCols.indexOf(this.colOfInt())\r\n const diff = vlen - indInVis\r\n if(diff > 0)\r\n indOfScrl += diff\r\n horizLim = indOfScrl\r\n } else {\r\n if(this.horizRest() > 0){\r\n const vCollen = this.dataTableService.visibleCols.length\r\n const lvis = this.dataTableService.visibleCols[(vCollen - 1)]\r\n horizLim = this.columns.indexOf(lvis) + 1\r\n }\r\n }\r\n for(n; n < limit; n++){\r\n const item = this.panelData[n]\r\n const index = this.dataTableService.currMapping[n] || this.dataTableService.findObjIndxInData(item)\r\n if(index > -1){\r\n this.rows.push({ id: \"dataTableRow\" + index, index: index, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt })\r\n let k = 0\r\n for(k; k < colLen; k++){\r\n const col = this.columns?.[k]\r\n if(col)\r\n addCell(item[col], col, this.rows[n], (k <= horizLim))\r\n }\r\n }\r\n }\r\n this.setLastRowIndex()\r\n setTimeout( () => { \r\n this.setRowNums()\r\n if(this.count > init){\r\n let total = 0\r\n let z = this.lastElRowIndex + 1\r\n for(z; z < this.count; z++)\r\n total += 1\r\n this.belowHgt = total*defNum\r\n }\r\n this.setHorizScrPos()\r\n this.openEvt.emit(\"row-group-panel-\" + this.elifyGrouping)\r\n setTimeout( () => { \r\n this.setTblBot(); \r\n const pEl = this.panelDataGrid?.nativeElement\r\n if(pEl){\r\n pEl.scrollBy(1, 1);\r\n pEl.scrollBy(0, -1);\r\n }\r\n this.setRowNumPlacement()\r\n })\r\n }, 250)\r\n }\r\n })\r\n }\r\n\r\n setTblBot() {\r\n if(this.panelDataGrid)\r\n this.tblBot = (this.panelDataGrid.nativeElement.getBoundingClientRect().bottom || 0)// + 250\r\n const panelTop = document.getElementsByClassName(\"row-group-panel-\" + this.elifyGrouping)[0]\r\n if(panelTop)\r\n this.tblTop = (panelTop.getBoundingClientRect().bottom || 0)// - 200\r\n setTimeout( () => { this.setRowNumPlacement() })\r\n }\r\n \r\n setHorizScrPos() {\r\n const body = this.panelDataGrid?.nativeElement\r\n if(body)\r\n body.scrollLeft = this.horizRest()\r\n }\r\n\r\n setLastRowIndex() {\r\n const realMax = this.panelData.length - 1\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const wannabeMax = (this.rows.length - 1) + Math.floor(this.aboveHgt/defNum)\r\n this.lastElRowIndex = Math.min(wannabeMax, realMax)\r\n return this.lastElRowIndex;\r\n }\r\n\r\n setColsOnVisScreen() {\r\n let i = 0\r\n let vCols = []\r\n const len = this.columns.length\r\n for(i; i < len; i++){\r\n const col = this.columns[i]\r\n const el = document.getElementById(\"columnHeader\" + this.common.elifyCol(col))\r\n if(el){\r\n const elbds = el.getBoundingClientRect()\r\n if(elbds.left >= this.dataTableService.tblLeft && elbds.right < this.dataTableService.tblRight)\r\n vCols.push(col)\r\n }\r\n }\r\n this.dataTableService.visibleCols = [...vCols]\r\n }\r\n\r\n setRowNums() {//only on initial\r\n if(this.showRowNumbers){\r\n const rlen = this.rows.length\r\n if(rlen){\r\n let n = (this.lastElRowIndex + 1) - rlen\r\n for(n; n <= this.lastElRowIndex; n++)\r\n this.rowNums.push(n + 1)\r\n }\r\n }\r\n }\r\n\r\n setRowNumPlacement() {\r\n if(this.showRowNumbers){\r\n let i = 0\r\n const radd = 2\r\n const els = document.getElementsByClassName(\"row-nums-\" + this.elifyGrouping)\r\n const len = els.length\r\n const dtBody = this.panelDataGrid?.nativeElement\r\n if(dtBody){\r\n const tbds = dtBody.getBoundingClientRect()\r\n const col1Frozen = document.getElementsByClassName(\"col-item-freeze\").length\r\n for(i; i < len; i++){\r\n const num = <HTMLElement>els[i]\r\n const row = this.rows[i]\r\n if(row){\r\n const tTop = tbds.top\r\n const rbds = document.querySelector(\"#panelDataGrid\" + this.elifyGrouping + \" #\" + row.id)?.getBoundingClientRect()\r\n if(rbds){\r\n const hh = (rbds.height/2)\r\n const top = Math.floor(((rbds.bottom - (hh+radd)) - tTop))\r\n num.style.top = top + \"px\"\r\n if(rbds.top < (tTop-2) || (rbds.bottom > (tTop + tbds.height+1)) || (dtBody.scrollLeft > 35 && !col1Frozen)){\r\n num.classList.add(\"hide\")\r\n continue\r\n }\r\n num.classList.remove(\"hide\")\r\n num.classList.remove(\"invisible\")\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleScroll(event: any) {\r\n const top = event.target.scrollTop\r\n const left = event.target.scrollLeft\r\n /*horiz scroll*/\r\n requestAnimationFrame( () => { this.execHorizScroll(left) })\r\n /*horiz scroll*/\r\n /*vert scroll*/\r\n if(top === this.verticalRest){\r\n this.isScrolling = false\r\n return this.setRowNumPlacement();\r\n }\r\n this.isScrolling = true\r\n requestAnimationFrame( () => { this.execVertScroll(top) })\r\n /*vert scroll*/\r\n }\r\n\r\n execHorizScroll(left: number, reverse?: boolean) {\r\n this.setColsOnVisScreen()\r\n if(reverse || left !== this.horizRest()){\r\n this.execHorizBodyScroll()\r\n this.horizPos.emit(left)\r\n this.setColsOnVisScreen()\r\n }\r\n }\r\n\r\n execVertScroll(top: number) {\r\n if(top >= this.verticalRest){\r\n this.execVertScrollDown(this.columns, this.columns.length)\r\n this.clearAboveFoldRows()\r\n this.scrollDir = \"down\"\r\n } else {//scrolling back up\r\n this.execVertScrollUp(this.columns, this.columns.length)\r\n this.clearBelowFoldRows()\r\n this.scrollDir = \"up\"\r\n }\r\n this.verticalRest = top\r\n this.setRowNumPlacement()\r\n }\r\n\r\n handleScrollEnd(): any {\r\n this.isScrolling = false\r\n setTimeout( () => { \r\n this.setColsOnVisScreen()\r\n this.setRowNumPlacement()\r\n setTimeout( () => { this.cleanUpPossibles() })\r\n })\r\n }\r\n\r\n addCell(text: any, prop: string, visible: boolean): DataCell {\r\n const useProp = this.dataTableService.dataFilSrtTracker[prop]\r\n const notNum = (this.dataTableService.figureFilterType(prop) != \"number\" || /(year|yr|fy)/g.test(prop.toLocaleLowerCase())) ? true : false\r\n const useTxt = this.dataTableService.figureCellText(text, notNum, useProp[\"colCellSymbol\"])\r\n const colStyle = this.dataTableService.getColumnStyle(prop)\r\n return {\r\n column: prop,\r\n rawText: text,\r\n visible: visible,\r\n editable: false,\r\n dataType: this.dataTableService.figureFilterType(prop),\r\n freeze: useProp.freeze,\r\n minimized: useProp.minimize,\r\n width: useProp.colWidth,\r\n text: useTxt.prop === \"textContent\" ? useTxt.value : \"\",\r\n html: useTxt.prop !== \"textContent\" ? useTxt.value : \"\",\r\n specialColClass: (colStyle ? (colStyle + this.common.elifyCol(useTxt.value)) : \"\"),\r\n }\r\n }\r\n\r\n execHorizBodyScroll() {\r\n let i = 0;\r\n const clen = this.columns.length\r\n const rlen = this.rows.length\r\n let positions: any = []\r\n const row0 = this.rows[0]\r\n for(let p = (clen-1); p >= 0; p--){\r\n const col = this.columns[p]\r\n const elcol = this.common.elifyCol(col)\r\n const head = document.getElementById(\"columnHeader\" + elcol)\r\n if(head){\r\n const bds = head.getBoundingClientRect()\r\n if(bds.left > this.dataTableService.tblRight)\r\n continue\r\n const cell = row0?.cells?.find( c => c.column === col)\r\n if(cell){\r\n if(!cell.visible && (this.dataTableService.visibleCols.includes(col) || (bds.left >= (this.dataTableService.tblLeft) && bds.right < (this.dataTableService.tblRight))))//visible\r\n positions.push({ col: col, vis: true })\r\n if(cell.visible && !this.dataTableService.visibleCols.includes(col) && !positions.find( (p: any) => p.col === col))\r\n positions.push({ col: col, vis: false })\r\n }\r\n }\r\n }\r\n const plen = positions.length\r\n for(i; i < rlen; i++){\r\n let c = 0\r\n const row = this.rows[i]\r\n for(c; c < plen; c++){\r\n const pos = positions[c]\r\n if(pos){\r\n if(pos.vis){\r\n row.cells = row.cells?.map( c => {\r\n if(c.column === pos.col)\r\n return this.addCell(c.rawText, pos.col, true)\r\n return c\r\n })\r\n } else {\r\n const rCell: DataCell | undefined = row.cells?.find( c => c.column === pos.col)\r\n if(rCell){\r\n rCell.visible = false\r\n }\r\n }\r\n }\r\n }\r\n }\r\n setTimeout( () => { \r\n this.dataTableService.setIdealColumnWidth.next(true); \r\n this.setColsOnVisScreen() \r\n setTimeout( () => { this.cleanUpPossibles() }, 100)\r\n }, 50)\r\n }\r\n\r\n cleanUpPossibles() {\r\n let i = 0\r\n const len = this.rows.length\r\n for(i; i < len; i++){\r\n const row = this.rows[i]\r\n if(row){\r\n let p = 0\r\n if(row.cells?.length){\r\n const rclen = row.cells.length\r\n for(p; p < rclen; p++){\r\n const cell = row.cells[p]\r\n if(cell){\r\n const ccol = cell.column\r\n const el = document.querySelector(\"#panelDataGrid\" + this.elifyGrouping + \" #\" + row.id + \" .data-cell-\" + this.common.elifyCol(ccol))\r\n if((el && el.getBoundingClientRect().right < this.dataTableService.tblLeft) && (!el?.innerHTML || !el.getAttribute(\"style\"))){\r\n row.cells[p].visible = true\r\n row.cells[p] = {...this.addCell(cell.rawText, ccol, true)}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n execVertScrollDown(cols: string[], colLen: number) {\r\n let canAdd = 0\r\n const vlen = this.dataTableService.visibleCols.length\r\n const lastVisInd = this.columns.indexOf(this.dataTableService.visibleCols[(vlen-1)]) + 1\r\n const bel = this.belowArea?.nativeElement\r\n const bbds = bel?.getBoundingClientRect()\r\n if(!bbds)\r\n return\r\n const rTop = (bbds?.top - this.verticalRest)\r\n const gap = this.tblBot - rTop\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n if(gap > 0){\r\n let h = 0\r\n let z = this.lastElRowIndex + 1\r\n const last = <HTMLElement>document.querySelector(\"#panelDataGrid\" + this.elifyGrouping + \" #dataTableRow\" + this.lastElRowIndex)\r\n if(last && this.dataTableService.elIsBelowFold(last, this.tblBot))\r\n return;\r\n let bhToSub = 0\r\n let ahToAdd = 0\r\n const rowsInGap = Math.ceil(gap/defNum)\r\n canAdd = z+(rowsInGap)\r\n let numsToAdd: number[] = []\r\n let rowsToAdd: DataRow[] = []\r\n const goTo = Math.min(this.panelData.length, canAdd)\r\n for(z; z < goTo; z++){\r\n const wldBeElTop = bbds.top + (defNum*h);\r\n const wldBeElBot = wldBeElTop+defNum\r\n if(wldBeElBot < this.tblTop){\r\n ahToAdd += defNum\r\n bhToSub += defNum\r\n } else {\r\n if(wldBeElTop <= this.tblBot){\r\n const item = this.panelData[z]\r\n const index = this.dataTableService.currMapping[z] || this.dataTableService.findObjIndxInData(item)\r\n if(index > -1 && !this.rows.find( r => r.index === index)){\r\n const nRow: DataRow = { id: \"dataTableRow\" + index, index: index, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt }\r\n let k = 0\r\n let cells: DataCell[] = []\r\n for(k; k < colLen; k++){\r\n const col = cols[k]\r\n const cell = this.addCell(item[col], col, (k <= lastVisInd))\r\n if(typeof cell !== \"string\")\r\n cells.push(cell)\r\n }\r\n nRow.cells = [...cells]\r\n rowsToAdd.push(nRow)\r\n numsToAdd.push((z+1))//just do it\r\n bhToSub += defNum\r\n }\r\n }\r\n }\r\n h += 1\r\n }\r\n if(rowsToAdd.length)\r\n this.rows = [...this.rows, ...rowsToAdd]\r\n if(bhToSub)\r\n this.belowHgt -= bhToSub\r\n if(this.showRowNumbers)\r\n this.rowNums = [...this.rowNums, ...numsToAdd]\r\n if(ahToAdd)\r\n this.aboveHgt += ahToAdd\r\n this.setLastRowIndex()\r\n }\r\n }\r\n\r\n execVertScrollUp(cols: string[], colLen: number) {\r\n const vlen = this.dataTableService.visibleCols.length\r\n const lastVisInd = this.columns.indexOf(this.dataTableService.visibleCols[(vlen-1)]) + 1;\r\n const ael = this.aboveArea?.nativeElement\r\n const abds = ael?.getBoundingClientRect()\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const rbot = abds?.bottom || 0\r\n const gap = rbot - this.tblTop\r\n if(gap > 0){\r\n let h = 0\r\n const rlen = this.rows.length\r\n let z = (this.lastElRowIndex - rlen)\r\n if(z < 0)\r\n return\r\n let bhToAdd = 0\r\n let ahToSub = 0\r\n const rowsInGap = Math.ceil(gap/defNum)\r\n const min = Math.max(0, (z-rowsInGap))\r\n for(z; z >= min; z--){\r\n const wldBeElBot = rbot - (defNum*h);\r\n const wldBeElTop = wldBeElBot-defNum\r\n if(wldBeElTop > this.tblBot){\r\n bhToAdd += defNum\r\n ahToSub += defNum\r\n } else {\r\n if(wldBeElBot > this.tblTop){\r\n const item = this.panelData[z]\r\n const index = this.dataTableService.currMapping[z] || this.dataTableService.findObjIndxInData(item)\r\n if(index > -1){\r\n let k = 0\r\n const nRow: DataRow = { id: \"dataTableRow\" + index, index: index, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt }\r\n let cells: DataCell[] = []\r\n for(k; k < colLen; k++){\r\n const col = cols[k]\r\n const cell = this.addCell(item[col], col, (k <= lastVisInd))\r\n if(typeof cell !== \"string\")\r\n cells.push(cell)\r\n }\r\n nRow.cells = [...cells]\r\n this.rows = [nRow, ...this.rows]\r\n if(this.showRowNumbers)\r\n this.rowNums = [(z+1), ...this.rowNums]\r\n ahToSub += defNum\r\n }\r\n }\r\n }\r\n h += 1\r\n }\r\n if(ahToSub){\r\n this.aboveHgt -= ahToSub\r\n }\r\n if(bhToAdd)\r\n this.belowHgt += bhToAdd\r\n }\r\n }\r\n\r\n clearAboveFoldRows() {\r\n const els = this.rows.filter( r => this.dataTableService.elIsAboveFold(document.getElementById(r.id), this.tblTop))\r\n const justids = els.map( e => e.id)\r\n const changes = justids.length\r\n if(changes > 0){\r\n const justindx = els.map( (e, i) => i)\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n this.rows = this.rows.filter( r => !justids.includes(r.id))\r\n if(this.showRowNumbers)\r\n this.rowNums = this.rowNums.filter( (c, i) => !justindx.includes(i))\r\n const item = this.dataTableService.mainData[(this.rows[0]?.index || -1)]\r\n if(item)\r\n this.aboveHgt = this.dataTableService.findObjIndxInData(item, this.panelData)*defNum\r\n }\r\n }\r\n\r\n clearBelowFoldRows() {\r\n const els = this.rows.filter( r => this.dataTableService.elIsBelowFold(document.getElementById(r.id), this.tblBot))\r\n const justids = els.map( e => e.id)\r\n let changes = justids.length\r\n if(changes > 0){\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n this.rows = this.rows.filter( r => !justids.includes(r.id))\r\n if(this.showRowNumbers){\r\n for(let p = (changes-1); p >= 0; p--)\r\n this.rowNums.pop()\r\n }\r\n const rlen = this.rows.length\r\n const item = this.dataTableService.mainData[(this.rows[(rlen-1)]?.index || -1)]\r\n if(item)\r\n this.belowHgt = ((this.panelData.length-1)-this.dataTableService.findObjIndxInData(item, this.panelData))*defNum\r\n this.setLastRowIndex()\r\n }\r\n }\r\n\r\n// execCellEdit(event: any) {//{ element: el, column: this.cell.column, value: val }\r\n// this.cellEdit.emit(event)\r\n// }\r\n\r\n setSingleRowHgt(val: any, row?: any) {\r\n if(val && typeof val === \"string\")\r\n val = Math.ceil(parseInt(val))\r\n const rHgt = val\r\n const useHgt = Math.floor(rHgt) + \"px\";\r\n if(typeof row === \"string\" && this.tblDragService.colDragStartFrmCellTracker.row && this.tblDragService.colDragStartFrmCellTracker.ystart){\r\n const drow = this.rows.find( r => r.id === row)\r\n if(drow)\r\n drow.height = useHgt\r\n }\r\n setTimeout( () => { this.setRowNumPlacement() })\r\n }\r\n\r\n\r\n}\r\n","<div class=\"row-group-panel row-group-panel-{{elifyGrouping}}\" [ngClass]=\"{'open-panel': open(), 'hide': !count}\">\r\n <button class=\"no-btn\" (click)=\"openGroup()\">\r\n <span class=\"v-mid md-text\">{{uiGroupValue}} ({{count | number}})</span> \r\n <i class=\"material-icons v-mid\" aria-hidden=\"false\">{{open() ? \"keyboard_arrow_down\" : \"chevron_right\"}}</i>\r\n </button>\r\n</div>\r\n@if(showRowNumbers && open()){\r\n <div class=\"relly\">\r\n @for(num of rowNums; track $index){\r\n <span class=\"gb-row-num row-nums-{{elifyGrouping}} invisible\" >{{num | number}}</span>\r\n }\r\n </div>\r\n}\r\n@if(open()){\r\n <div #panelDataGrid [id]=\"'panelDataGrid' + elifyGrouping\" style=\"overflow: auto;margin-top: 3px\" class=\"group-panel-grid panel-height\"\r\n (scroll)=\"handleScroll($event)\" (scrollend)=\"handleScrollEnd()\">\r\n <div #aboveArea [style.height]=\"aboveHgt + 'px'\"></div>\r\n @for(row of rows; track row.index){\r\n <div [id]=\"row.id\" class=\"data-table-row rows-for-{{elifyGrouping}}\" [attr.data-index]=\"row.index\"\r\n [ngStyle]=\"{'width': row.width, 'height': row.height}\" >\r\n @for(cell of row.cells; track cell.column){\r\n @if(isScrolling){\r\n <div class=\"data-cell data-cell-{{common.elifyCol(cell.column)}}{{cell.specialColClass}}\" [class.data-cell-riiight]=\"cell.dataType === 'number'\"\r\n [ngClass]=\"{ 'col-item-freeze': cell.freeze, 'col-header-minimized': cell.minimized, 'holding-check': cell.column === dataTableService.firstCol }\"\r\n [ngStyle]=\"{'width': cell.width || dataTableService.useColWid, 'height': row.height}\" >{{cell.text}}@if(cell.html){<div class=\"mock-html\"></div>}</div>\r\n } @else {\r\n <app-data-cell\r\n [cell]=\"cell\" [rowId]=\"row.id\" \r\n [noColResize]=\"true\"\r\n [rawText]=\"cell.rawText\"\r\n [rowHeight]=\"row.height || ''\"\r\n [columnValClass]=\"cell.specialColClass\"\r\n [colWid]=\"cell.width || dataTableService.useColWid\"\r\n (height)=\"setSingleRowHgt($event, row.id)\"\r\n ></app-data-cell>\r\n }\r\n }\r\n </div>\r\n }\r\n <div #belowArea [style.height]=\"belowHgt + 'px'\"></div>\r\n @if(!panelData.length){\r\n <div \r\n class=\"data-table-row panel-height flex-center data-table-row-no-data\" style=\"width: 100%; white-space: normal;\">\r\n <div class=\"center\">Loading...</div>\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, NgZone, Output, signal, ViewChild } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-num-value-distro-component',\r\n imports: [CommonModule],\r\n templateUrl: './num-value-distro-component.html',\r\n styleUrls: ['./num-value-distro-component.css', '../../../styles.css']\r\n})\r\nexport class NumValueDistroComponent {\r\n\r\n nmrksVdn: any[] = []\r\n nmrksVdnH = signal<any[]>([])\r\n nColValBars = signal<any[]>([])\r\n avgColValBar: any = null\r\n naddedtks: any = []\r\n @Input() title: string = \"\"\r\n @Input() column: string = \"\"\r\n @Input() average: number = 0\r\n @Input() originalArr: number[] = []\r\n @Output(\"done\") doneLoading: EventEmitter<string> = new EventEmitter()\r\n @ViewChild(\"numColDistContainer\", { static: true }) numColDistContainerEl!: ElementRef<HTMLElement>; \r\n\r\n constructor(public common: CommonService,\r\n public dataTableService: DataTableService,\r\n private _zone: NgZone,)\r\n {}\r\n\r\n ngOnInit() {\r\n this.showNumColValDist(this.common.elifyCol(this.column), this.title, this.average)\r\n }\r\n\r\n showNumColValDist(elIdCol: any, title: any, avg: any) {//will be only numbers\r\n try{\r\n const numArr = this.originalArr.sort( (a: number, b: number) => a - b );\r\n const nlen = numArr.length;\r\n const nmmin = numArr[0]\r\n const nmmax = numArr[(nlen-1)]\r\n const nmrange = nmmax - nmmin;\r\n const nqtrdts = (nmrange/4) + nmmin\r\n const nhalfdts = (nmrange/2) + nmmin\r\n const nthrqtrdts = (nmrange*0.75) + nmmin\r\n const nokTickVal = [nmmin, nqtrdts, nhalfdts, nthrqtrdts, nmmax]\r\n const ntklen = nokTickVal.length\r\n let nadded = []\r\n let t = 0\r\n const maxDigs = nmrange > 3 ? 0 : 2;\r\n const whiteTxt = [\"white\", \"#FFFFFF\", \"#ffffff\", \"rgb(255, 255, 255)\", \"rgb(255,255,255)\"];\r\n for(t; t < ntklen; t++){\r\n const ntkval = nokTickVal[t]?.toLocaleString(undefined, {maximumFractionDigits: maxDigs});\r\n if(!ntkval || this.naddedtks.indexOf(ntkval) > -1 || ntkval === \"NaN\")\r\n continue\r\n this.nmrksVdn.push({value: ntkval})\r\n this.naddedtks.push(ntkval)\r\n }\r\n let h = 0\r\n let nHmck: any[] = []\r\n for(h; h < nlen; h++){//not seen but heard\r\n const unum = numArr[h]\r\n const usenval = unum?.toLocaleString(undefined, {maximumFractionDigits: maxDigs});\r\n if(nadded.indexOf(usenval) > -1)\r\n continue\r\n let pct = ((unum-nmmin) / nmrange)\r\n if(isNaN(pct))\r\n pct = 0\r\n nHmck.push({ value: usenval, percent: pct.toFixed(2) })\r\n nadded.push(usenval)\r\n }\r\n /*avg marker*/\r\n if(avg && typeof avg === \"number\"){\r\n let pct = ((avg-nmmin) / nmrange)\r\n if(isNaN(pct))\r\n pct = 0\r\n const usenval = avg.toLocaleString(undefined, {maximumFractionDigits: maxDigs});\r\n nHmck.push({ value: usenval, percent: pct.toFixed(2) })\r\n nadded.push(usenval)\r\n }\r\n /*avg marker*/\r\n this.nmrksVdnH.set([...nHmck])\r\n if(!this.naddedtks.length)\r\n return;\r\n setTimeout( () => {\r\n try{\r\n let r =0\r\n let hd =0\r\n const halfPlot = 6\r\n const pbds = this.numColDistContainerEl.nativeElement.getBoundingClientRect()\r\n const outParId = (\"insField\" + elIdCol)\r\n const mrks = document.querySelectorAll(\"#\" + outParId + \" .vd-n-marker\")\r\n const mrlen = this.nmrksVdn.length\r\n const hmrlen = this.nmrksVdnH().length\r\n const lastdtdv = mrks[mrlen-1].getBoundingClientRect()\r\n const space = (pbds.right - (lastdtdv.right)) - halfPlot\r\n const divby = Math.max(1, (mrlen-1))\r\n const mrrgt = (Math.ceil(space/divby))//divide space up by count-1 because last gets no marg right\r\n for(r; r < mrlen; r++)\r\n this.nmrksVdn[r].left = Math.floor((mrrgt*r)) + \"px\";\r\n setTimeout( () => {\r\n const xrange = Math.min((mrks[mrlen-1].getBoundingClientRect().right - pbds.left) - (Math.ceil(lastdtdv.width/2)+halfPlot+1))\r\n for(hd; hd < hmrlen; hd++){\r\n const hmrk = nHmck[hd]\r\n const per = hmrk.percent\r\n nHmck[hd].left = (Math.floor(parseFloat(per)*xrange)) + \"px\";\r\n }\r\n this.nmrksVdnH.set([...nHmck])\r\n let mrkbds = mrks[0].getBoundingClientRect()\r\n const findNLft = (val: any, avg: boolean) => {\r\n let q = 0; let k = 0\r\n for(q; q < mrlen; q++){\r\n try{\r\n const mrk = this.nmrksVdn[q]\r\n const mrkEl = mrks[q]\r\n mrkbds = mrkEl.getBoundingClientRect()\r\n const dttxt = mrk.value\r\n let toadd = 0\r\n if(avg)\r\n toadd -= halfPlot\r\n if(val === dttxt)\r\n return (parseInt(mrk.left.replace(/[ ]?(px|\\%)/g, \"\"))) + (((mrkbds.width/2)-halfPlot)-toadd)\r\n }catch(e){ }\r\n }\r\n \r\n for(k; k < hmrlen; k++){\r\n try{\r\n const hmrk = this.nmrksVdnH()[k]\r\n const dttxt = hmrk.value\r\n let toadd = 0;\r\n if(avg)\r\n toadd -= halfPlot\r\n if(val === dttxt)\r\n return (parseInt(hmrk.left.replace(/[ ]?(px|\\%)/g, \"\"))) - toadd\r\n }catch(e){ }\r\n }\r\n return null;\r\n }\r\n \r\n let i = 0;\r\n let minL = 0\r\n let nvBars: any[] = []\r\n const maxLft = Math.floor((pbds.right - mrks[0].getBoundingClientRect().left) - Math.ceil((lastdtdv.width/2)+1))\r\n for(i; i < nlen; i++){\r\n const usennum = numArr[i]?.toLocaleString(undefined, {maximumFractionDigits: maxDigs})\r\n const plft = findNLft(usennum, false)\r\n if((plft && plft !== 0) && !isNaN(plft)){\r\n const nBar: any = { number: \"\", left: \"\", background: \"\", stat: \"\" }\r\n const dmn = Math.max(Math.ceil(plft), minL)\r\n if(i === (nlen-1))\r\n nBar.left = (dmn + \"px\");\r\n else\r\n nBar.left = Math.min(dmn, maxLft) + \"px\";\r\n nBar.number = usennum\r\n nvBars.push(nBar)\r\n if(this.dataTableService.themeColor1 && whiteTxt.indexOf(this.dataTableService.themeColor1) < 0)\r\n nBar.background = this.dataTableService.themeColor1\r\n if(i === 0 || i === (nlen-1))\r\n nBar.stat = ((i === 0) ? \"min\" : \"max\")\r\n if(i === 0)//don't let anything lay before it\r\n minL = Math.ceil(Math.min(dmn, maxLft) + 1);\r\n }\r\n }\r\n this.nColValBars.set([...nvBars])\r\n \r\n /*avg marker*/\r\n if(avg && typeof avg === \"number\"){\r\n const useavg = avg.toLocaleString(undefined, {maximumFractionDigits: maxDigs})\r\n const aplft = findNLft(useavg, true)\r\n if((aplft && aplft !== 0) && !isNaN(aplft))\r\n this._zone.run( () => { this.avgColValBar = { number: useavg, left: (Math.floor(aplft) + \"px\") } } )\r\n }\r\n /*avg marker */\r\n this.doneLoading.emit(title?.replace(/Building /g, \"\").replace(/distribution\\.\\.\\./g, \"distribution\"))\r\n }, 250)\r\n }catch(e){ }\r\n }, 250)\r\n } catch(e){ }\r\n }\r\n\r\n matchVdBarToStat(parent: string, stat: string) {\r\n try{\r\n let elIdCol = \"\"\r\n let selOrFil = \"\"\r\n if(stat){\r\n const useStat = /(min|max)/g.test(stat) ? stat : \"avg\";\r\n if(parent && useStat){\r\n const parts = parent.split(\"insField\");\r\n if(parts.length === 1)\r\n elIdCol = parts[0]\r\n if(parts.length === 2){\r\n selOrFil = parts[0] || \"\";\r\n elIdCol = parts[1]\r\n }\r\n const matchEl = document.querySelector(\"#\" + useStat + selOrFil + this.common.elifyCol(this.column))?.lastElementChild\r\n if(matchEl)\r\n matchEl.classList.add(\"save-hilite\")\r\n }\r\n }\r\n } catch(e){}\r\n }\r\n\r\n killAllVdHighlights() {\r\n try{\r\n const els = document.querySelectorAll(\".insight-field .save-hilite\")\r\n const len = els.length\r\n for(var i = (len-1); i >= 0; i--)\r\n els[i].classList.remove(\"save-hilite\")\r\n }catch(e){}\r\n }\r\n}\r\n","<div #numColDistContainer class=\"num-col-val-dist-cont\">\r\n @for(nm of nmrksVdn; track nm){\r\n <div class=\"vd-n-marker\" [attr.data-value]=\"nm.value\" [style.left]=\"nm.left\">\r\n {{nm.value}}\r\n </div>\r\n }\r\n @for(nm of nmrksVdnH(); track nm){\r\n <div class=\"vd-n-marker-h\" [attr.data-value]=\"nm.value\" [attr.data-perc]=\"nm.percent\" [style.left]=\"nm.left\">\r\n {{nm.value}}\r\n </div>\r\n }\r\n @for(nb of nColValBars(); track nb){\r\n <div class=\"num-col-val-dist-bar\" [attr.data-number]=\"nb.number\"\r\n (mouseenter)=\"matchVdBarToStat('insField' + common.elifyCol(column), nb.stat)\" (mouseleave)=\"killAllVdHighlights()\"\r\n [ngStyle]=\"{ 'left': nb.left, 'background': (nb.background || 'rgb(50, 50, 50)') }\"></div>\r\n }\r\n @if(avgColValBar){\r\n <div class=\"num-col-avg-dist-bar\" [style.left]=\"avgColValBar.left\" [attr.data-number]=\"avgColValBar.number\"\r\n (mouseenter)=\"matchVdBarToStat('insField' + common.elifyCol(column), avgColValBar.number)\" (mouseleave)=\"killAllVdHighlights()\">\r\n </div>\r\n }\r\n</div>\r\n@if(dataTableService.dataFilSrtTracker[column]['colCellSymbol']){\r\n <div class=\"center heavy pad-top-ten\">\r\n {{\"(\"+dataTableService.dataFilSrtTracker[column]['colCellSymbol']+\")\"}}\r\n </div>\r\n}","import { Component, Input, ViewChild, ElementRef, HostListener } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-pie-graph-component',\r\n imports: [CommonModule],\r\n templateUrl: './pie-graph-component.html',\r\n styleUrls: ['./pie-graph-component.css', '../../../styles.css']\r\n})\r\nexport class PieGraphComponent {\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(e: Event) {\r\n if(!this.shouldUncover())\r\n this.cleanUpPieLayovers()\r\n }\r\n\r\n rmNotes: any[] = []\r\n pieLbls: any[] = []\r\n @Input() data: any = null\r\n @Input() column: string = \"\"\r\n @Input() uncoverPie: boolean|string[] = false\r\n @ViewChild(\"pieParent\", { static: true }) pieParent!: ElementRef<HTMLElement>; \r\n @ViewChild(\"pieCanvas\", { static: true }) pieCanvas!: ElementRef<HTMLElement>; \r\n @ViewChild(\"pieLayover\") pieLayover!: ElementRef<HTMLElement>;\r\n\r\n constructor(public common: CommonService,\r\n public dataTableService: DataTableService,)\r\n {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout( () => { this.buildPieGraphFromColVals(this.data.counts, this.data.type) })\r\n }\r\n\r\n ngAfterContentInit() {\r\n if(!this.shouldUncover())\r\n setTimeout( () => { this.cleanUpPieLayovers() }, 50)\r\n }\r\n\r\n shouldUncover(): boolean {\r\n try{\r\n if(this.uncoverPie === true)\r\n return true\r\n if(typeof this.uncoverPie === \"object\" && this.uncoverPie.indexOf(this.column) > -1)\r\n return true;\r\n return false;\r\n }catch(e){\r\n return false\r\n }\r\n }\r\n\r\n //pie graph\r\n cleanUpPieLayovers() {\r\n try{\r\n const can: HTMLCanvasElement = <HTMLCanvasElement>this.pieCanvas.nativeElement\r\n const par = this.pieParent.nativeElement\r\n const lay = this.pieLayover?.nativeElement\r\n const cwid = can.width\r\n const pbds = par.getBoundingClientRect()\r\n const cbds = can.getBoundingClientRect()\r\n const lbds = lay.getBoundingClientRect()\r\n const cleft = (cbds.left - pbds.left)\r\n const diff = cwid-lbds.width\r\n lay.style.left = (cleft + (diff/2)) + \"px\"\r\n }catch(e){}\r\n }\r\n\r\n buildPieGraphFromColVals(counts: any, type: any) {\r\n let data = []\r\n let odiv: HTMLDivElement|null = null;\r\n const div: HTMLDivElement = <HTMLDivElement>this.pieParent.nativeElement\r\n if(!this.shouldUncover())\r\n odiv = <HTMLDivElement>this.pieLayover.nativeElement\r\n const canvas: HTMLCanvasElement = <HTMLCanvasElement>this.pieCanvas.nativeElement;\r\n const ctx = canvas.getContext(\"2d\");\r\n const whiteTxt = [\"white\", \"#FFFFFF\", \"#ffffff\", \"rgb(255, 255, 255)\", \"rgb(255,255,255)\"];\r\n if(ctx){\r\n const dbds = div.getBoundingClientRect()\r\n const cwid = dbds.width\r\n const canWid = Math.floor(cwid/3)\r\n canvas.width = canWid;\r\n canvas.height = canWid;\r\n const cBds = canvas.getBoundingClientRect()\r\n const oWid = Math.floor(cwid/3.8)\r\n if(odiv){\r\n odiv.style.width = oWid + \"px\"\r\n odiv.style.height = oWid + \"px\"\r\n const diff = cBds.width-oWid\r\n odiv.style.top = Math.floor((cBds.top-dbds.top) + (diff/2)) + \"px\";\r\n odiv.style.left = Math.floor((cBds.left-dbds.left) + (diff/2)) + \"px\";\r\n }\r\n const props = Object.keys(counts)\r\n let colors = [\"forestgreen\", \"crimson\", \"orange\", \"blue\", \"turquoise\", \"brown\", \"hotpink\", \"goldenrod\", \"purple\", \"olive\", \"steelblue\", \"black\", \r\n \"violet\", \"teal\", \"gray\", \"navy\", \"tan\", \"indigo\"]\r\n if(this.dataTableService.pieGraphColors.length)\r\n colors = [...this.dataTableService.pieGraphColors]\r\n const na = \"n_a\"\r\n const oth = \"Other\"\r\n const dTotal = counts[this.dataTableService.deboTotal]\r\n if(props.length >= 5){\r\n const totalSansEmp = counts[na] ? (dTotal - counts[na]) : dTotal\r\n for(const prop in counts){//first alter small percents to other\r\n if(prop === this.dataTableService.deboTotal || prop === oth)\r\n continue\r\n const percent = Math.ceil((counts[prop]/totalSansEmp)*100)\r\n if(percent < 5){\r\n if(!counts[oth] || typeof counts[oth] === \"undefined\")\r\n counts[oth] = counts[prop]\r\n else\r\n counts[oth] += counts[prop]\r\n delete counts[prop]\r\n }\r\n }\r\n }\r\n \r\n if(counts[oth])\r\n props.push(oth)\r\n \r\n const isBool = type === \"boolean\" ? true : false;\r\n if(isBool || props.filter( (p) => p != this.dataTableService.deboTotal ).length < 3)\r\n colors = [(this.dataTableService.themeColor1 && whiteTxt.indexOf(this.dataTableService.themeColor1) < 0) ? this.dataTableService.themeColor1 : \"#00a8f3\", \r\n (this.dataTableService.themeColor2 || \"black\")]\r\n const numNa = counts[na]\r\n const rmNaPer = 65\r\n const perNa = numNa ? ((numNa/dTotal)*100) : 0\r\n const useTotal = (!isBool && numNa && (perNa > rmNaPer)) ? (dTotal-numNa) : dTotal\r\n for(const prop in counts){\r\n if(prop === this.dataTableService.deboTotal)\r\n continue\r\n const percent = (counts[prop]/useTotal)*100\r\n const strPct = percent.toLocaleString(undefined, {maximumFractionDigits: 1})\r\n if(strPct === \"0\")\r\n continue\r\n if(!isBool && (prop === na && perNa > rmNaPer)){\r\n const rmNt = \"Note: <b>N/A</b> values make up \" + Math.floor(perNa).toLocaleString(undefined, {maximumFractionDigits: 0}) + \"% of all values, \" +\r\n \"so we removed it from the chart to help visualize the make up of values in this column from the \" + \r\n Math.ceil(100-perNa).toLocaleString(undefined, {maximumFractionDigits: 0}) + \"% that has values.\"\r\n this.rmNotes.push(rmNt)\r\n continue\r\n }\r\n const color = colors[props.indexOf(prop)]\r\n data.push({ label: prop, value: counts[prop], color: color })\r\n this.pieLbls.push({ text: this.common.sanitizeUi(prop).replace(/n_a/, \"N/A\"), background: color, percent: (strPct+\"%\") })\r\n }\r\n \r\n let n = 0\r\n let total = 0;\r\n const dlen = data.length\r\n for (n; n < dlen; n++) {\r\n total += data[n].value;\r\n }\r\n \r\n const maxArr = data.sort( function(a, b) { return a.value < b.value ? -1 : 1 })\r\n const max = maxArr[(maxArr.length-1)]\r\n if(odiv && max && (max.value !== maxArr[0].value || maxArr.length === 1)){\r\n odiv.style.color = max.color;\r\n odiv.innerHTML = (\"<div><div>\" + this.common.sanitizeUi(max.label) + '</div><div class=\"pad-top-sm\">'+((max.value/total)*100).toFixed(1)+ '%</div></div>')\r\n }\r\n \r\n if(dlen > 1){\r\n try{\r\n let m = 0\r\n let diffCts = []\r\n for(m; m < dlen; m++){\r\n const dct = data[m].value\r\n if(diffCts.indexOf(dct) < 0)\r\n diffCts.push(dct)\r\n }\r\n if(diffCts.length === 1){\r\n let cltxt = this.column\r\n if(!cltxt.endsWith(\"s\"))\r\n cltxt += \"s\";\r\n if(odiv)\r\n odiv.innerHTML = ('<div><div><b class=\"ins-even-dist-ct\">' + dlen + '</b> </div><div class=\"pad-top-sm\">' +cltxt+ '</div></div>')\r\n }\r\n }catch(e){}\r\n }\r\n \r\n let i = 0\r\n let startAngle = 0;\r\n for (i; i < dlen; i++) {\r\n const sliceAngle = 2 * Math.PI * data[i].value / total;\r\n \r\n ctx.beginPath();\r\n ctx.arc(canvas.width/2, canvas.height/2, Math.min(canvas.width, canvas.height)/2, startAngle, startAngle + sliceAngle);\r\n ctx.lineTo(canvas.width/2, canvas.height/2);\r\n ctx.fillStyle = data[i].color;\r\n ctx.fill();\r\n ctx.closePath();\r\n \r\n startAngle += sliceAngle;\r\n }\r\n }\r\n }\r\n}\r\n","<div #pieParent class=\"center relly pad-top-thirty\">\r\n <canvas #pieCanvas></canvas>\r\n @if(!shouldUncover()){<div #pieLayover class=\"pie-layover\"></div>}\r\n</div>\r\n<div class=\"chart-label-cont\">\r\n @for(lbl of pieLbls; track lbl){\r\n <div class=\"pie-piece-label\">\r\n <span [attr.data-percent]=\"lbl.percent\">{{lbl.text}}</span>\r\n <label class=\"pie-piece-label-sq\" [style.background]=\"lbl.background\"></label>\r\n </div>\r\n }\r\n</div>\r\n@for(rm of rmNotes; track rm; let i = $index){\r\n <div [innerHTML]=\"rm\" [ngClass]=\"{ 'pad-top-thirty': i === 0, 'pad-top-ten': i !== 0, 'small-text': true }\"></div>\r\n}","import { Component, ElementRef, EventEmitter, Input, ViewChild, Output, HostListener, signal, NgZone } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-bar-graph-component',\r\n imports: [CommonModule],\r\n templateUrl: './bar-graph-component.html',\r\n styleUrls: ['./bar-graph-component.css', '../../../styles.css']\r\n})\r\nexport class BarGraphComponent {\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(e: Event) {\r\n this.handleStatChange(this.selStat(), true)\r\n }\r\n\r\n numTicks = signal<string[]>([])\r\n barVals: any[] = []\r\n xLblWidth: string= \"\"\r\n xLabels: string[] = []\r\n maxBarWid: number = 90\r\n showing: boolean = false\r\n buildingStat: boolean = false\r\n maxYVal: string = \"0\";\r\n statData: any[] = []\r\n selStat = signal<string>(\"avg\")\r\n numYPlots: number = 5\r\n bgDepVarHgt: number = 70//height of y ticks\r\n statOpts: string[] = [\"avg\", \"min\", \"max\", \"mode\", \"median\", \"sum\"]\r\n statBtnWid: string = \"30px\"\r\n titleTrail: string = \"\"\r\n @Input() column: string = \"\"\r\n @Input() data: any[] = []\r\n @Output(\"title\") title: EventEmitter<string> = new EventEmitter();\r\n @ViewChild(\"innerGB\", { static: true }) innerGB!: ElementRef;\r\n @ViewChild(\"xLabel\", { static: true }) xLabel!: ElementRef;\r\n @ViewChild(\"xValues\", { static: true }) xValues!: ElementRef;\r\n @ViewChild(\"yAxis\", { static: true }) yAxis!: ElementRef;\r\n @ViewChild(\"statOptsCont\", { static: true }) statOptsCont!: ElementRef;\r\n @ViewChild(\"barContainer\", { static: true }) barContainer!: ElementRef;\r\n\r\n constructor(public common: CommonService,\r\n private dataTableService: DataTableService,\r\n private _zone: NgZone,\r\n ){ }\r\n\r\n ngOnInit() {\r\n this.buildBarGraphWithTwoCols(this.selStat())\r\n }\r\n \r\n ngAfterContentInit() {\r\n this.handleBGBarHgts(this.statData)\r\n setTimeout( () => { this.sizeUpBgDims() })\r\n }\r\n\r\n sizeUpBgDims() {\r\n const bgWid = this.innerGB.nativeElement.getBoundingClientRect().width\r\n const yWid = this.yAxis.nativeElement.getBoundingClientRect().width\r\n const offY = Math.ceil(yWid+5)\r\n this.statBtnWid = Math.floor((bgWid-offY)/this.statOpts.length) + \"px\";\r\n this.statOptsCont.nativeElement.style.marginLeft = offY + \"px\";\r\n this.xValues.nativeElement.style.marginLeft = offY + \"px\";\r\n this.barContainer.nativeElement.style.marginLeft = offY + \"px\";\r\n this.xLblWidth = Math.min(this.maxBarWid, (Math.floor((bgWid-offY)/this.xLabels.length))) + \"px\";\r\n }\r\n\r\n buildBarGraphWithTwoCols(stat: string) {\r\n const bgCols = this.column.split(this.dataTableService.bgSep)\r\n const strCol = bgCols[0]\r\n const numCol = bgCols[1]\r\n if(!this.titleTrail)\r\n this.titleTrail = this.common.titleCase(numCol) + \" by \" + this.common.titleCase(strCol);\r\n const vals = this.dataTableService.dataFilSrtTracker[strCol].selDDVals.filter( (g: any) => g.value !== \"(Select All)\")\r\n const vlen = vals.length\r\n let o = 0\r\n for(o; o < vlen; o++){\r\n const val = vals[o].value\r\n const justVal = this.data.filter( d => d[\"strColumn\"] === val).map( d => d[\"numColumn\"] )\r\n const jvlen = justVal.length\r\n if(jvlen){//[\"avg\", \"min\", \"max\", \"mode\", \"median\", \"sum\"]\r\n let statobj = {x: val, y: 0}\r\n if(stat === \"avg\")\r\n statobj.y = (justVal.reduce( (acc, curr) => (acc += curr) , 0)/jvlen)\r\n if(stat === \"min\")\r\n statobj.y = Math.min(...justVal)\r\n if(stat === \"max\")\r\n statobj.y = Math.max(...justVal)\r\n if(stat === \"sum\")\r\n statobj.y = (justVal.reduce( (acc, curr) => (acc += curr) , 0))\r\n if(stat === \"median\")\r\n statobj.y = this.findDataMedian(justVal, jvlen)\r\n if(stat === \"mode\")\r\n statobj.y = this.findDataMode(justVal)\r\n this.statData.push(statobj)\r\n this.xLabels.push(val)\r\n }\r\n }\r\n const justNull = this.data.filter( d => d[\"strColumn\"] === \"N/A\").map( d => d[\"numColumn\"] )\r\n const jlen = justNull.length\r\n if(jlen){\r\n let statobj = {x: \"N/A\", y: 0}\r\n if(stat === \"avg\")\r\n statobj.y = (justNull.reduce( (acc, curr) => (acc += curr) , 0)/jlen)\r\n if(stat === \"min\")\r\n statobj.y = Math.min(...justNull)\r\n if(stat === \"max\")\r\n statobj.y = Math.max(...justNull)\r\n if(stat === \"sum\")\r\n statobj.y = (justNull.reduce( (acc, curr) => (acc += curr) , 0))\r\n if(stat === \"median\")\r\n statobj.y = this.findDataMedian(justNull, jlen)\r\n if(stat === \"mode\")\r\n statobj.y = this.findDataMode(justNull)\r\n this.statData.push(statobj)\r\n this.xLabels.push(\"N/A\")\r\n }\r\n const par = this.innerGB.nativeElement\r\n const nums = this.statData.map( d => d[\"y\"] );\r\n let srtNums = nums.sort( (a, b) => a - b > 0 ? 1 : -1 )\r\n const max = srtNums[(nums.length-1)]\r\n let lbly = this.common.sanitizeUi(numCol)\r\n const sym = this.dataTableService.dataFilSrtTracker[numCol].colCellSymbol\r\n if(sym)\r\n lbly += \" (\"+sym+\")\";\r\n par.setAttribute(\"data-yaxis\", lbly)\r\n this.xLabel.nativeElement.textContent = this.common.sanitizeUi(this.common.titleCase(strCol))\r\n this.buildYAxisBGVals(max)\r\n setTimeout( () => { this.buildBGBars(this.statData, max, sym) })\r\n setTimeout( () => { this.buildingStat = false }, 500)\r\n }\r\n\r\n buildBGBars(data: any[], max: number, sym: any) {\r\n let i = 0\r\n const len = data.length\r\n let background: string = \"initial\"\r\n const yAx = this.yAxis.nativeElement\r\n const ybds = yAx.getBoundingClientRect()\r\n const yWid = ybds.width\r\n const offY = Math.ceil(yWid+5)\r\n const whiteTxt = [\"white\", \"#FFFFFF\", \"#ffffff\", \"rgb(255, 255, 255)\", \"rgb(255,255,255)\"];\r\n if(this.dataTableService.themeColor1 && whiteTxt.indexOf(this.dataTableService.themeColor1) < 0)\r\n background = this.dataTableService.themeColor1;\r\n const useIncr = Math.min(this.maxBarWid, (Math.floor((this.innerGB.nativeElement.getBoundingClientRect().width-offY)/this.xLabels.length)))\r\n for(i; i < len; i++){\r\n const item = data[i]\r\n const bhgt = item[\"y\"]/max;\r\n const strVal = item[\"y\"].toLocaleString(undefined, {maximumFractionDigits: 2})\r\n let symb4 = \"\"\r\n let symaf = \"\"\r\n if(sym){\r\n let isCurr = [\"$\",\"€\",\"£\",\"¥\",\"₣\",\"₹\"].indexOf(sym) > -1\r\n if(isCurr)\r\n symb4 = sym\r\n else\r\n symaf = sym\r\n }\r\n const fVal = item[\"x\"] + ': ' + symb4 + strVal + symaf;\r\n const bv = { id: item[\"x\"], left: ((i*useIncr) + \"px\"), heightVal: bhgt, height: \"0px\", fullValue: fVal, numValue: strVal, background: background}\r\n this.barVals.push(bv);\r\n }\r\n this.handleBGBarHgts(data)\r\n }\r\n\r\n handleBGBarHgts(data: any[]) {\r\n let i = 0\r\n let show = false\r\n const len = data.length\r\n const ybds = this.yAxis.nativeElement.getBoundingClientRect()\r\n const maxHgt = ybds.height\r\n const cont = document.getElementById(\"insField\" + this.common.elifyCol(this.column))\r\n const cBds = cont?.getBoundingClientRect()\r\n const insTop = document.getElementsByClassName(\"chart-contain-show\")[0]?.scrollTop || 0;\r\n if(cBds && (cBds.bottom-(cBds.height/2)) < (this.dataTableService.tblTop+insTop+this.dataTableService.dTblHeight))\r\n show = true;\r\n if(show){\r\n for(i; i < len; i++){\r\n const item = data[i]\r\n const xvalue = item[\"x\"]\r\n const bv = this.barVals.find( b => b.id === xvalue)\r\n if(bv){\r\n this.showing = true\r\n setTimeout( () => {\r\n this._zone.run( () => { bv.height = (Math.ceil(bv.heightVal*maxHgt) + \"px\"); this.barVals = [...this.barVals] });\r\n }, 250 )\r\n }\r\n }\r\n }\r\n }\r\n\r\n buildYAxisBGVals(max: number) {\r\n let nts: string[] = []\r\n // let diff = max - min\r\n const incr = max/(this.numYPlots-1)\r\n const strNum = (val: number) => {\r\n return val < 1000 ? val.toLocaleString(undefined, {maximumFractionDigits: 0}) : this.common.doBigData(val);\r\n }\r\n for(let i = (this.numYPlots-1); i >= 0; i--){\r\n try{\r\n const inc = i*incr\r\n let useVal = inc//(min + inc)\r\n if(i === 0)\r\n useVal = 0//min\r\n if(i === (this.numYPlots-1))\r\n useVal = max\r\n const strVal = strNum(useVal);\r\n if(i === (this.numYPlots-1))\r\n this.maxYVal = strVal\r\n nts.push(strVal)\r\n }catch(e){}\r\n }\r\n this.numTicks.set([...nts])\r\n }\r\n\r\n handleStatChange(stat: string, resize?: boolean) {\r\n if(this.selStat() === stat && !resize)\r\n return;\r\n this.buildingStat = true\r\n this.maxYVal = \"0\"\r\n this.selStat.set(stat)\r\n this.numTicks.set([])\r\n this.barVals = []\r\n this.xLabels = []\r\n this.statData = []\r\n if(!resize)\r\n this.title.emit(this.common.titleCase(stat) + \" \" + this.titleTrail);\r\n setTimeout( () => { \r\n this.buildBarGraphWithTwoCols(stat);\r\n setTimeout( () => { this.sizeUpBgDims() }) \r\n })\r\n }\r\n\r\n findDataMedian(data: number[], len: number): number {\r\n if(len === 1)\r\n return data[0]\r\n if(len === 2)\r\n return (data[0]+data[1])/2\r\n const isOdd = len%2 !== 0\r\n if(isOdd){\r\n return data[Math.ceil(len/2)]\r\n } else {\r\n const loMed = data[len/2]\r\n const hiMed = data[len/2] + 1\r\n return (loMed+hiMed)/2\r\n }\r\n }\r\n\r\n getColumnValueCounts(data: any[]) {\r\n let i = 0\r\n let count: any = {}\r\n const len = data.length\r\n for(i; i < len; i++){\r\n const d = data[i]\r\n const val = \"v\" + d\r\n if(!count[val] || typeof count[val] === \"undefined\")\r\n count[val] = 1\r\n else\r\n count[val] += 1\r\n }\r\n return count;\r\n }\r\n\r\n findDataMode(data: any[]): number {\r\n const count = this.getColumnValueCounts(data)\r\n let most = null\r\n for(const prop in count){\r\n if(!most)\r\n most = {text: prop, amount: count[prop]}\r\n if(count[prop] > most.amount)\r\n most = {text: prop, amount: count[prop]}\r\n }\r\n if(most)\r\n return parseInt(most?.text.replace(\"v\", \"\"))\r\n return 0;\r\n }\r\n\r\n lblMouseIn(el: any) {\r\n el.classList.add(\"lbl-show\")\r\n }\r\n\r\n lblMouseOut(el: any) {\r\n el.classList.remove(\"lbl-show\")\r\n }\r\n\r\n}\r\n","<div #statOptsCont class=\"center stat-opt-contain\">\r\n @for(stat of statOpts; track stat){\r\n <div [style.width]=\"statBtnWid\" class=\"inline-b center\">\r\n <button class=\"no-btn stat-opt-btn\" (click)=\"handleStatChange(stat)\"\r\n [class.stat-opt-btn-active]=\"selStat() === stat\">{{common.titleCase(stat)}}</button>\r\n </div>\r\n }\r\n</div>\r\n<div #innerGB class=\"inner-bg-contain\">\r\n <div #yAxis class=\"bar-graph-y-cols\" [style.height]=\"((bgDepVarHgt*(numYPlots-1))+17) + 'px'\">\r\n @for(num of numTicks(); track $index){\r\n <div class=\"bg-dep-var\" [class.invisible]=\"num && num === maxYVal\" [attr.data-number]=\"num\">{{(num === '0') ? '' : num}}</div>\r\n }\r\n </div><div #barContainer class=\"bar-graph-real-vals\">\r\n @for(bar of barVals; track bar){\r\n <div [ngStyle]=\"{'width': xLblWidth, 'left': bar.left}\" \r\n class=\"graph-actual-bar\" [attr.data-value]=\"bar.fullValue\">\r\n <div [ngStyle]=\"{'height': bar.height, 'background': bar.background}\"></div>\r\n </div>\r\n }\r\n </div>\r\n <div #xValues class=\"bar-graph-x-cols\">\r\n @for(lbl of xLabels; track lbl){\r\n <div class=\"bg-ind-var center\" [style.width]=\"xLblWidth\" (mouseenter)=\"lblMouseIn($event.target)\" (mouseleave)=\"lblMouseOut($event.target)\">\r\n {{lbl}}</div>\r\n }\r\n </div>\r\n</div>\r\n<div #xLabel class=\"bar-graph-x-label\"></div>","import { Component, ElementRef, EventEmitter, HostListener, Input, NgZone, Output, signal, ViewChild } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-line-graph-component',\r\n imports: [ CommonModule, FormsModule ],\r\n templateUrl: './line-graph-component.html',\r\n styleUrls: ['./line-graph-component.css', '../bar-graph-component/bar-graph-component.css', '../../../styles.css']\r\n})\r\nexport class LineGraphComponent {\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(e: Event) {\r\n this.handleStatChange(this.selStat, true)\r\n }\r\n\r\n alloneyr: boolean = false\r\n lblTxt: string = \"\"\r\n naddedtks = signal<any[]>([])\r\n nmrks: any[] = []\r\n dtmrks: any[] = []\r\n dtmrksH: any[] = []\r\n plots = signal<any[]>([])\r\n contScrollHgt: number = 0\r\n buildingStat: boolean = false\r\n maxYVal: string = \"0\";\r\n statData: any[] = []\r\n valOpts = signal<any[]>([])\r\n selStat: string = \"avg\"\r\n statBtnWid: string = \"30px\"\r\n titleTrail: string = \"\"\r\n useData: any[] = []\r\n uDates: any[] = []\r\n selDdVal: string = \"\"\r\n selTDOpt: number = -1\r\n numYPlots: number = 5\r\n bgDepVarHgt: number = 70//height of y ticks\r\n totalHgt: number = 297;\r\n graphMsg: string = \"Loading...\"\r\n currentDelta: string = \"\"\r\n currentDeltaCls: string = \"neutral\"\r\n timeDiffOpts: any[] = []\r\n statOpts: string[] = [\"avg\", \"min\", \"max\", \"mode\", \"median\", \"sum\"]\r\n @Input() data: any[] = []\r\n @Input() numCol: string = \"\"\r\n @Input() column: string = \"\"\r\n @Output(\"title\") title: EventEmitter<string> = new EventEmitter();\r\n @ViewChild(\"yAxis\", { static: true }) yAxis!: ElementRef<HTMLDivElement>;\r\n @ViewChild(\"lineGraph\", { static: true }) lineGraph!: ElementRef<HTMLDivElement>;\r\n @ViewChild(\"lgContain\", { static: true }) lgContain!: ElementRef<HTMLDivElement>;\r\n @ViewChild(\"auxOptsCont\", { static: true }) auxOptsCont!: ElementRef<HTMLDivElement>;\r\n @ViewChild(\"statOptsCont\", { static: true }) statOptsCont!: ElementRef<HTMLDivElement>;\r\n @ViewChild(\"lgCanvas\", { static: true }) lgCanvas!: ElementRef<HTMLCanvasElement>;\r\n \r\n constructor(public common: CommonService,\r\n public dataTableService: DataTableService,\r\n private _zone: NgZone,)\r\n {}\r\n\r\n ngOnInit() {\r\n const cols = this.column.split(this.dataTableService.bgSep)\r\n this.totalHgt = ((this.bgDepVarHgt*(this.numYPlots-1))+17);\r\n if(cols.length === 3){\r\n this.titleTrail = this.common.titleCase(cols[1]) + \" by \" + this.common.titleCase(cols[0]);\r\n } else {\r\n if(this.numCol)\r\n this.titleTrail = this.common.titleCase(this.numCol) + \" by \" + this.common.titleCase(cols[0]);\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.buildLg()\r\n }\r\n\r\n buildLg() {\r\n let valData: any[] = []\r\n const strODtCol = this.column.split(this.dataTableService.bgSep)[0]\r\n if(this.dataTableService.dataFilSrtTracker[strODtCol].selDDVals && this.dataTableService.dataFilSrtTracker[strODtCol].selDDVals.length){\r\n const vals = this.dataTableService.dataFilSrtTracker[strODtCol].selDDVals?.filter( (g: any) => g.checked && g.value !== \"(Select All)\")\r\n this.valOpts.set(vals.map( (v: any) => v.value))\r\n if(!this.selDdVal)\r\n this.selDdVal = vals[0].value\r\n valData = this.data.filter( d => d[\"strColumn\"] === this.selDdVal)\r\n } else {\r\n valData = this.data.filter( d => true)\r\n }\r\n if(this.selTDOpt > -1){//not all time\r\n try{\r\n const oneDay = (1000*60*60*24);\r\n let oData = valData.filter( v => v && v[\"dtColumn\"] && this.common.isADateObject(v[\"dtColumn\"]) && v[\"dtColumn\"].toString() !== \"Invalid Date\").\r\n sort( (a, b) => a[\"dtColumn\"] > b[\"dtColumn\"] ? 1 : -1 );\r\n const vlen = oData.length\r\n const lastDate = oData[(vlen-1)].dtColumn.getTime()\r\n const cutoff = (lastDate-(this.selTDOpt*oneDay))\r\n valData = oData.filter( v => v[\"dtColumn\"].getTime() >= cutoff )\r\n }catch(e){}\r\n }\r\n const dSet = new Set(valData.filter( v => true).sort( (a, b) => a[\"dtColumn\"] > b[\"dtColumn\"] ? 1 : -1 ).map( (d) => JSON.stringify(d[\"dtColumn\"]) ))//unique dates\r\n dSet.forEach( (v) => { \r\n const pdt = JSON.parse(v)\r\n if(typeof pdt === \"string\")\r\n this.uDates.push(this.common.coerceDate(pdt)) \r\n else\r\n this.uDates.push(pdt)\r\n });\r\n this.setUseableData(valData, this.selStat)\r\n setTimeout( () => { \r\n this.drawLineGraph(this.useData); \r\n this._zone.run( () => { this.buildingStat = false } );\r\n })\r\n }\r\n\r\n getYTDNumDays(dtmax: any) {\r\n try{\r\n const dt = new Date()\r\n const yr = dt.getFullYear()\r\n const oneDay = (1000*60*60*24);\r\n const jan1 = new Date(\"January 1, \"+ yr +\" 00:01:00\")\r\n const gap = Math.floor((dtmax.getTime() - jan1.getTime()) / oneDay)\r\n return gap > 0 ? gap : null;\r\n } catch(e){ return null}\r\n }\r\n\r\n findTimeDiffOpts(milRange: number, dtmax: any) {\r\n let i = 0\r\n this.timeDiffOpts = []\r\n // const oneDay = (1000*60*60*24);\r\n // const range = Math.floor(milRange/oneDay)\r\n const ytd = \"YTD\"\r\n const ytdNum = this.getYTDNumDays(dtmax)\r\n let avail: any[] = [{text: \"1D\", val: 1}, {text: \"5D\", val: 5},{text: \"1M\", val: 31},\r\n {text: \"6M\", val: Math.ceil(365/2)},{text: \"1Y\", val: 365}, {text: ytd, val: ytdNum},\r\n {text: \"5Y\", val: ((365*5)+1)}];\r\n if(!ytdNum)\r\n avail = avail.filter( a => a.text !== ytd)\r\n const len = avail.length\r\n for(i; i < len; i++){\r\n const av = avail[i]\r\n // if(range > av.val)\r\n this.timeDiffOpts.push(av)\r\n }\r\n }\r\n\r\n handleStatChange(stat: string, resize?: boolean) {\r\n if(this.selStat === stat && !resize)\r\n return;\r\n this.killPlots(\"Loading...\")\r\n this.buildingStat = true\r\n this.maxYVal = \"0\"\r\n this.selStat = stat\r\n if(!resize)\r\n this.title.emit(this.common.titleCase(stat) + \" \" + this.titleTrail);\r\n setTimeout( () => { this.buildLg() })\r\n }\r\n\r\n handleValSelChange(selVal: string) {\r\n this.killPlots(\"Loading...\")\r\n this.buildingStat = true\r\n this.selDdVal = selVal\r\n this.maxYVal = \"0\"\r\n setTimeout( () => { this.buildLg() })\r\n }\r\n\r\n handleTimeDiffChange(topt: number) {\r\n this.killPlots(\"Loading...\")\r\n this.buildingStat = true\r\n this.selTDOpt = topt\r\n this.maxYVal = \"0\"\r\n setTimeout( () => { this.buildLg() })\r\n }\r\n\r\n setUseableData(valArr: any[], stat: string) {\r\n const dlen = this.uDates.length\r\n this.useData = []\r\n let d = 0;\r\n for(d; d < dlen; d++){\r\n let obj = {}\r\n const dt = this.uDates[d]\r\n const justVal = valArr.filter( (d) => {\r\n return d && d[(\"dtColumn\")] && this.common.isADateObject(d[(\"dtColumn\")]) && d[\"dtColumn\"].toString() !== \"Invalid Date\" &&\r\n this.common.isADateObject(dt) && dt.toString() !== \"Invalid Date\" && d[(\"dtColumn\")].getTime() === dt.getTime()} ).\r\n map( function(d) {return d[(\"numColumn\")]} )\r\n const jlen = justVal.length\r\n if(jlen){\r\n switch(stat){\r\n case \"avg\":\r\n obj = { dtColumn: dt, numColumn: (justVal.reduce( (acc, curr) => (acc += curr) , 0)/jlen) }\r\n break;\r\n case \"min\":\r\n obj = { dtColumn: dt, numColumn: (Math.min(...justVal)) }\r\n break;\r\n case \"max\":\r\n obj = { dtColumn: dt, numColumn: (Math.max(...justVal)) }\r\n break;\r\n case \"sum\":\r\n obj = { dtColumn: dt, numColumn: justVal.reduce( (acc, curr) => (acc += curr) , 0) }\r\n break;\r\n case \"median\":\r\n obj = { dtColumn: dt, numColumn: this.findDataMedian(justVal, jlen) }\r\n break;\r\n case \"mode\":\r\n obj = { dtColumn: dt, numColumn: this.findDataMode(justVal) }\r\n break;\r\n default: \"avg\"\r\n obj = { dtColumn: dt, numColumn: (justVal.reduce( (acc, curr) => (acc += curr) , 0)/jlen) };\r\n }\r\n this.useData.push(obj)\r\n }\r\n }\r\n }\r\n\r\n sizeUpBgDims() {\r\n const bgWid = this.lgContain.nativeElement.getBoundingClientRect().width\r\n const yWid = this.yAxis.nativeElement.getBoundingClientRect().width\r\n const offY = Math.ceil(yWid+5)\r\n this.statBtnWid = Math.floor((bgWid-offY)/this.statOpts.length) + \"px\";\r\n this.statOptsCont.nativeElement.style.marginLeft = offY + \"px\";\r\n this.auxOptsCont.nativeElement.style.marginLeft = offY + \"px\";\r\n }\r\n \r\n drawLineGraph(data: any[]): any {\r\n if(data && data.length){\r\n try{\r\n const lmarg = 60\r\n const dlen = data.length\r\n const lg = this.lineGraph.nativeElement\r\n const par = this.lgContain.nativeElement\r\n const canvas = this.lgCanvas.nativeElement\r\n lg.style.width = ((par.getBoundingClientRect().width*0.92) -lmarg) + \"px\";\r\n canvas.width = ((par.getBoundingClientRect().width*0.92) -lmarg)\r\n const dtopts = {year: \"2-digit\",month: \"2-digit\", day: \"numeric\"}\r\n const numCol = this.numCol || this.column.split(this.dataTableService.bgSep)[1]\r\n let lbly = this.common.sanitizeUi(numCol)\r\n const sym = this.dataTableService.dataFilSrtTracker[numCol].colCellSymbol\r\n if(sym)\r\n lbly += \" (\"+sym+\")\";\r\n par.setAttribute(\"data-yaxis\", lbly)\r\n\r\n //numbers\r\n const numArr = data.map( (d) => d[\"numColumn\"] ).\r\n filter( (a) => !!a && a >= 0 ).sort( (a, b) => (a - b)*-1 );\r\n if(numArr.length < 2 || !numArr.some( (n) => n > 0 ))\r\n return this.killPlots(\"Not enough data for a graph\")\r\n const nlen = numArr.length;\r\n const nmmin = numArr[(nlen-1)]\r\n const nmmax = numArr[0]\r\n const nmrange = nmmax - nmmin;\r\n const nqtrdts = (nmrange/4) + nmmin\r\n const nhalfdts = (nmrange/2) + nmmin\r\n const nthrqtrdts = (nmrange*0.75) + nmmin\r\n const nokTickVal = [nmmax, nthrqtrdts, nhalfdts, nqtrdts, nmmin]//desc order!\r\n const ntklen = nokTickVal.length\r\n let nadded = [];\r\n let mckNaTs: any[] = []\r\n let t = 0\r\n this.maxYVal = nmmax < 1000 ? nmmax.toLocaleString(undefined, {maximumFractionDigits: 0}) : this.common.doBigData(nmmax);\r\n for(t; t < ntklen; t++){\r\n const val = nokTickVal[t]\r\n const ntkval: string = val < 1000 ? val.toLocaleString(undefined, {maximumFractionDigits: 0}) : this.common.doBigData(val);\r\n if(mckNaTs.map( n => n.value).indexOf(ntkval) > -1)\r\n continue\r\n mckNaTs.push({value: ntkval, visible: false})\r\n }\r\n this.naddedtks.set([...mckNaTs])\r\n let i = 0\r\n for(i; i < nlen; i++){//not seen but heard\r\n const unum = numArr[i]\r\n if(nadded.indexOf(unum) > -1)\r\n continue\r\n const pct = (Math.max(1, unum-nmmin) / Math.max(1, nmrange))\r\n const usenval = unum?.toLocaleString(undefined, {maximumFractionDigits: 2});\r\n this.nmrks.push({value: usenval, percent: pct.toFixed(2), visible: false})\r\n nadded.push(usenval)\r\n }\r\n //numbers\r\n\r\n //dates\r\n let arrFrmSet: any[] = []\r\n const dSet = new Set(data.map( (d) => d[\"dtColumn\"] ))//unique dates\r\n dSet.forEach( (v) => { arrFrmSet.push(v) });\r\n if(arrFrmSet.length < 2)\r\n return this.killPlots(\"Not enough data for a graph\");\r\n const dttype = typeof arrFrmSet[0];\r\n const ordDts = arrFrmSet.filter( (a) => !!a ).sort( (a, b) => { \r\n return (dttype !== \"object\" ? (parseInt(a.toString()) - parseInt(b.toString())) : ( a.getTime() - b.getTime() ))\r\n })\r\n let m = 0\r\n let added = []\r\n const olen = ordDts.length\r\n const yearvals = ordDts.map( (o) => typeof o !== \"object\" ? o : o.getFullYear() )\r\n this.alloneyr = (new Set(yearvals.filter( (d) => true )).size < 2) ? true : false;//unique years\r\n // let yrReg = new RegExp(\"sjdkgf\", \"g\")//not gonna replace anything\r\n // if(this.alloneyr)\r\n // yrReg = new RegExp(\"\\/\" + yearvals[0], \"g\")\r\n let dtrange\r\n let dtmin: any; let dtmax: any;\r\n if(typeof ordDts[0] === \"object\"){\r\n dtmin = ordDts[0]\r\n dtmax = ordDts[(ordDts.length-1)]\r\n }\r\n if(typeof ordDts[0] === \"number\"){\r\n dtmin = ordDts[0]\r\n dtmax = ordDts[(ordDts.length-1)]\r\n }\r\n if(typeof ordDts[0] === \"string\" && !isNaN(parseInt(ordDts[0])) && !isNaN(parseInt(ordDts[(ordDts.length-1)]))){\r\n dtmin = parseInt(ordDts[0]);\r\n dtmax = parseInt(ordDts[(ordDts.length-1)])\r\n }\r\n dtrange = typeof ordDts[0] === \"object\" ? (dtmax.getTime() - dtmin.getTime()) : (dtmax - dtmin)\r\n if(!dtrange || typeof dtrange !== \"number\")\r\n return this.killPlots(\"Not enough data for a graph\");\r\n if(this.selTDOpt === -1)\r\n setTimeout( () => { this.findTimeDiffOpts(dtrange, dtmax) }, 500)\r\n const figureDtTicks = (val: number) => (typeof dtmin === \"object\" ? new Date(val+dtmin.getTime()) : (val+dtmin))\r\n const halfdts = figureDtTicks(Math.ceil(dtrange/2))\r\n const okDtTks = [dtmin, halfdts, dtmax];\r\n let de = 0\r\n const dtklen = okDtTks.length\r\n for(de; de < dtklen; de++){\r\n const tval = okDtTks[de]\r\n const useDVal = this.common.isADateObject(tval) ? tval.toLocaleDateString('en-US', dtopts)/*.replace(yrReg, \"\")*/ : tval\r\n if(this.dtmrks.find( d => d.value === useDVal))\r\n continue;\r\n this.dtmrks.push({value: useDVal, left: 0, visible: false})\r\n }\r\n const oZ = ordDts[0].getTime()\r\n for(m; m < olen; m++){\r\n const oval = ordDts[m]\r\n const useDVal = this.common.isADateObject(oval) ? oval.toLocaleDateString('en-US', dtopts)/*.replace(yrReg, \"\")*/ : oval\r\n if(added.indexOf(useDVal) > -1)\r\n continue\r\n let pct: number = 0\r\n if(typeof ordDts[0] === \"object\")\r\n pct = ((ordDts[m].getTime()-oZ) / dtrange)\r\n if(typeof ordDts[0] === \"number\")\r\n pct = ((ordDts[m]-ordDts[0]) / dtrange)\r\n if(typeof ordDts[0] === \"string\")\r\n pct = ((parseInt(ordDts[m])-parseInt(ordDts[0])) / dtrange)\r\n this.dtmrksH.push({ value: useDVal, percent: pct, left: 0, visible: false })\r\n added.push(useDVal)\r\n }//space out the markers\r\n //dates\r\n //set graph dims\r\n setTimeout( (): any => {\r\n let r =0\r\n let hd =0\r\n const halfPlot = 2\r\n let lgbds = lg.getBoundingClientRect()\r\n const mrks = document.querySelectorAll(\"#\" + par.id + \" .lg-dt-marker\")\r\n const mrlen = mrks.length\r\n const hmrlen = this.dtmrksH.length\r\n // const lastdtdv = mrks[mrlen-1].getBoundingClientRect()\r\n const space = lgbds.width//(lgbds.right - (lastdtdv.right/*-lmarg*/)) - halfPlot\r\n const divby = Math.max(1, (mrlen-1))\r\n const mrrgt = Math.ceil(space/divby)//divide space up by count-1 because last gets no marg right\r\n for(r; r < mrlen; r++){\r\n const dtmrk = this.dtmrks[r]\r\n if(dtmrk)\r\n dtmrk.left = (Math.floor(mrrgt*r)-halfPlot) + \"px\";\r\n }\r\n setTimeout( () => {\r\n lgbds = lg.getBoundingClientRect()\r\n const xrange = space\r\n for(hd; hd < hmrlen; hd++){\r\n const hmrk = this.dtmrksH[hd]\r\n if(hmrk)\r\n hmrk.left = Math.floor((hmrk.percent*xrange)) + \"px\";\r\n }\r\n\r\n const nmrks = document.querySelectorAll(\"#\" + par.id + \" .bg-dep-var\")\r\n const nmrlen = nmrks.length\r\n const hnmrks = this.nmrks\r\n const hnmrlen = hnmrks.length\r\n //set graph dims\r\n //add x label\r\n let colsspl = this.column.split(this.dataTableService.bgSep)\r\n const useCol = colsspl.length === 3 ? colsspl[2] : colsspl[0]\r\n const pretXlbl = this.common.sanitizeUi(this.common.titleCase(useCol))\r\n this.lblTxt = pretXlbl\r\n if(this.alloneyr)\r\n this.lblTxt = yearvals[0] + \" \" + pretXlbl\r\n //add x label\r\n setTimeout( () => {\r\n //add plots\r\n lgbds = lg.getBoundingClientRect()\r\n const maxPtLft = xrange - halfPlot\r\n const maxPtBot = lgbds.height - (halfPlot*6) - 1;\r\n // const dtmrWid =mrks[0].getBoundingClientRect().width\r\n const findDtLft = (dt: any) => {\r\n let q = 0; let k = 0\r\n const ptval = this.common.isADateObject(dt) ? dt.toLocaleDateString('en-US', dtopts)/*.replace(yrReg, \"\")*/ : dt\r\n for(q; q < mrlen; q++){\r\n const dtmrk = this.dtmrks[q]\r\n if(dtmrk){\r\n const dttxt = dtmrk.value\r\n if(ptval === dttxt)\r\n return (parseFloat(dtmrk.left.replace(/[ ]?(px|\\%)/g, \"\")) || 0)/* + (dtmrWid/2)*/ - halfPlot\r\n }\r\n }\r\n \r\n for(k; k < hmrlen; k++){\r\n const hm = this.dtmrksH[k]\r\n const dttxt = hm.value\r\n if(ptval === dttxt)\r\n return Math.min(maxPtLft, ((parseFloat(hm.left.replace(/[ ]?(px|\\%)/g, \"\")) || 0))) - halfPlot\r\n }\r\n return 0;\r\n }\r\n \r\n const nmrHgt = (nmrks[0]?.getBoundingClientRect().height || 17)\r\n const lbot = lgbds.bottom\r\n const findNBot = (num: number) => {\r\n let q = 0; let k = 0\r\n const ptval = num?.toLocaleString(undefined, {maximumFractionDigits: 2});\r\n for(q; q < nmrlen; q++){\r\n const nmrk = this.naddedtks()[q]\r\n if(nmrk){\r\n const dttxt = nmrk.value\r\n if(ptval === dttxt)\r\n return Math.floor(lbot - nmrks[q].getBoundingClientRect().bottom) + (nmrHgt/2) - halfPlot/*halfPlot is half the dot*/\r\n }\r\n }\r\n for(k; k < hnmrlen; k++){\r\n const hnmrk = hnmrks[k]\r\n const dttxt = hnmrk.value\r\n if((ptval === dttxt) && hnmrk.percent){\r\n const totalh = Math.floor(lgbds.height*(hnmrk.percent || 0)) + (nmrHgt/2) - halfPlot\r\n return Math.min(maxPtBot, Math.ceil(totalh))/*halfPlot is half the dot*/\r\n }\r\n }\r\n return 0;\r\n }\r\n let p = 0;\r\n let skipped = 0\r\n let plots: any[] = []\r\n let lgColor: string = \"#00a8f3\"\r\n let lgUndColor: string = \"\"\r\n const ctx = canvas.getContext(\"2d\")\r\n if(ctx){\r\n let mkPlts: any[] = [] \r\n const whiteTxt = [\"white\", \"#FFFFFF\", \"#ffffff\", \"rgb(255, 255, 255)\", \"rgb(255,255,255)\"];\r\n if(this.dataTableService.themeColor1 && whiteTxt.indexOf(this.dataTableService.themeColor1) < 0)\r\n lgColor = this.dataTableService.themeColor1;\r\n let useCol: any = lgColor\r\n if(lgColor.startsWith(\"#\"))\r\n useCol = this.common.hexToRgb(lgColor)\r\n else\r\n useCol = this.common.getRgbParts(lgColor)\r\n if(useCol && typeof useCol === \"object\")\r\n lgUndColor = \"rgba(\"+useCol.r+\", \"+useCol.g+\", \"+useCol.b+\", 0.2)\";\r\n const bSym = ((sym && [\"$\",\"€\",\"£\",\"¥\",\"₣\",\"₹\"].indexOf(sym) > -1) ? sym : \"\");\r\n const aSym = ((!sym || sym && [\"$\",\"€\",\"£\",\"¥\",\"₣\",\"₹\"].indexOf(sym) > -1) ? \"\" : sym);\r\n const minFrac = bSym ? 2 : 0;//currency\r\n for(p; p < dlen; p++){\r\n try{\r\n const dval = data[p]\r\n if(!dval[\"dtColumn\"] || (typeof dval[\"numColumn\"] !== \"number\"))\r\n continue;\r\n const plft = Math.max(0, findDtLft(dval[\"dtColumn\"]))\r\n const pbot = Math.max(0, findNBot(dval[\"numColumn\"]))\r\n if(typeof plft !== \"number\" || typeof pbot !== \"number\")\r\n continue\r\n const usedval = this.common.isADateObject(dval[\"dtColumn\"]) ? dval[\"dtColumn\"].toLocaleDateString('en-US', dtopts)/*.replace(yrReg, \"\")*/ : dval[\"dtColumn\"]\r\n let pt = { \r\n date: usedval, \r\n number: (bSym + dval[\"numColumn\"].toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: minFrac}) + aSym),\r\n left: plft > 0 ? (plft+halfPlot) : plft,\r\n bottom: (pbot+(halfPlot*2)),\r\n }\r\n const plen = plots.push(pt)\r\n const ptBef = plots[plen-(2+skipped)]\r\n if(ptBef){ \r\n const dx = pt.left - ptBef.left;\r\n const dy = (lgbds.height-pt.bottom) - (lgbds.height-ptBef.bottom);\r\n if(dx <= 20 && (p < (dlen-1))){\r\n if(!nokTickVal.includes(dval[\"numColumn\"])){\r\n skipped += 1;\r\n continue\r\n }\r\n }\r\n skipped = 0\r\n this.drawCanvasLineGraph(ctx, dx, dy, ptBef.left, (lgbds.height-ptBef.bottom), lgColor, lgUndColor)\r\n }\r\n mkPlts.push(pt)\r\n }catch(e){}\r\n }\r\n this.plots.set(mkPlts)\r\n }\r\n //add plots\r\n this.sizeUpBgDims()\r\n this.calcCurrChangeOverTime()\r\n }, 100)\r\n })\r\n }, 250)\r\n }catch(e){}\r\n }\r\n }\r\n\r\n drawCanvasLineGraph(ctx: CanvasRenderingContext2D, sideA: number, sideB: number, xb: number, yb: number, color: string, ucolor: string) {\r\n // Define the vertices of the right triangle\r\n // Assuming the right angle is at (x1, y2)\r\n let x2 = xb + sideA;\r\n let y2 = yb + sideB; // Top-right vertex\r\n\r\n // Draw the hypotenuse\r\n ctx.beginPath();\r\n ctx.moveTo(xb, yb); // Start at one end of the hypotenuse\r\n ctx.lineTo(x2, y2); // Draw to the other end of the hypotenuse\r\n ctx.strokeStyle = color; // Make hypotenuse red for distinction\r\n ctx.lineWidth = 1;\r\n ctx.stroke();\r\n\r\n // Close the path to the bottom of the canvas for filling\r\n ctx.lineTo(x2, this.totalHgt); // Down to the bottom at the last x-coordinate\r\n ctx.lineTo(xb, this.totalHgt); // Across to the bottom at the first x-coordinate\r\n ctx.closePath(); // Connects back to the starting point (50, 100)\r\n\r\n ctx.fillStyle = ucolor || color; // Set the fill color\r\n ctx.fill(); // Fill the enclosed area\r\n }\r\n\r\n calcCurrChangeOverTime() {\r\n const dttype = typeof this.useData[0].dtColumn;\r\n const srtData = this.useData.filter( (a) => !!a.dtColumn ).sort( (a, b) => { \r\n return (dttype !== \"object\" ? (parseInt(a.dtColumn.toString()) - parseInt(b.dtColumn.toString())) : ( a.dtColumn.getTime() - b.dtColumn.getTime() ))\r\n })\r\n const srtLen = srtData.length\r\n const firstVal = srtData[0].numColumn\r\n const diff = srtData[srtLen-1].numColumn - firstVal\r\n this.currentDelta = (((diff > 0) ? \"+ \" : \"\") + ((diff/firstVal)*100).toLocaleString(undefined, { maximumFractionDigits: 2 }) + \"%\");\r\n this.currentDeltaCls = diff === 0 ? \"neutral\" : (diff > 0 ? \"success\" : \"error-message\");\r\n }\r\n\r\n findDataMedian(data: number[], len: number): number {\r\n if(len === 1)\r\n return data[0]\r\n if(len === 2)\r\n return (data[0]+data[1])/2\r\n const isOdd = len%2 !== 0\r\n if(isOdd){\r\n return data[Math.ceil(len/2)]\r\n } else {\r\n const loMed = data[len/2]\r\n const hiMed = data[len/2] + 1\r\n return (loMed+hiMed)/2\r\n }\r\n }\r\n\r\n getColumnValueCounts(data: any[]) {\r\n let i = 0\r\n let count: any = {}\r\n const len = data.length\r\n for(i; i < len; i++){\r\n const d = data[i]\r\n const val = \"v\" + d\r\n if(!count[val] || typeof count[val] === \"undefined\")\r\n count[val] = 1\r\n else\r\n count[val] += 1\r\n }\r\n return count;\r\n }\r\n\r\n findDataMode(data: any[]): number {\r\n const count = this.getColumnValueCounts(data)\r\n let most = null\r\n for(const prop in count){\r\n if(!most)\r\n most = {text: prop, amount: count[prop]}\r\n if(count[prop] > most.amount)\r\n most = {text: prop, amount: count[prop]}\r\n }\r\n if(most)\r\n return parseInt(most?.text.replace(\"v\", \"\"))\r\n return 0;\r\n }\r\n \r\n showDotPlotInfo(dt: any, num: any): any {\r\n const mrlen = this.dtmrks.length\r\n const hmrlen = this.dtmrksH.length\r\n let q = 0; let k = 0\r\n for(q; q < mrlen; q++){\r\n const dttxt = this.dtmrks[q].value\r\n if(dt === dttxt)\r\n return this.dtmrks[q].visible = true\r\n }\r\n \r\n for(k; k < hmrlen; k++){\r\n const dttxt = this.dtmrksH[k].value\r\n if(dt === dttxt)\r\n return this.dtmrksH[k].visible = true\r\n }\r\n \r\n q = 0;\r\n k = 0;\r\n const nmrlen = this.naddedtks().length\r\n const hnmrlen = this.nmrks.length\r\n const ptval = num?.toLocaleString(undefined, {maximumFractionDigits: 2});\r\n for(q; q < nmrlen; q++){\r\n const dttxt = this.naddedtks()[q].value\r\n if(ptval === dttxt)\r\n this.naddedtks()[q].visible = true\r\n }\r\n \r\n for(k; k < hnmrlen; k++){\r\n const dttxt = this.nmrks[k].value\r\n if(ptval === dttxt)\r\n return this.nmrks[k].visible = true\r\n }\r\n }\r\n \r\n hideDotPlotInfo() {\r\n this.dtmrks = this.dtmrks.map( n => {\r\n n.visible = false\r\n return n\r\n })\r\n this.dtmrksH = this.dtmrksH.map( n => {\r\n n.visible = false\r\n return n\r\n })\r\n this.naddedtks.set(this.naddedtks().map( n => {\r\n n.visible = false\r\n return n\r\n }))\r\n this.nmrks = this.nmrks.map( n => {\r\n n.visible = false\r\n return n\r\n })\r\n }\r\n\r\n killPlots(msg?: string) {\r\n this.lblTxt = \"\"\r\n if(msg)\r\n this.graphMsg = msg\r\n this.selTDOpt = -1\r\n this.plots.set([])\r\n this.nmrks = []\r\n this.dtmrks = []\r\n this.uDates = []\r\n this.dtmrksH = []\r\n this.naddedtks.set([])\r\n this.useData = []\r\n this.currentDelta = \"\"\r\n this.clearCanvas()\r\n if(msg && /enough/g.test(msg))\r\n this.sizeUpBgDims()\r\n }\r\n \r\n clearCanvas() {\r\n const canvas = this.lgCanvas.nativeElement\r\n if(canvas){\r\n canvas.getContext(\"2d\")?.clearRect(0, 0, canvas.width, canvas.height)\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.killPlots()\r\n }\r\n}\r\n","<div #statOptsCont class=\"center stat-opt-contain\">\r\n @for(stat of statOpts; track stat){\r\n <div [style.width]=\"statBtnWid\" class=\"inline-b center\">\r\n <button class=\"no-btn stat-opt-btn\" (click)=\"handleStatChange(stat)\"\r\n [class.stat-opt-btn-active]=\"selStat === stat\">{{common.titleCase(stat)}}</button>\r\n </div>\r\n }\r\n</div>\r\n<div #auxOptsCont style=\"padding-bottom: 17px;\">\r\n <div class=\"qtr-wid center v-mid\">\r\n @if(valOpts().length){\r\n <select [name]=\"'valSel' + common.elifyCol(column)\" [id]=\"'valSel' + common.elifyCol(column)\" [(ngModel)]=\"selDdVal\"\r\n (change)=\"handleValSelChange($any($event).target.value)\" style=\"max-width: 80%\">\r\n @for(o of valOpts(); track o){\r\n <option [value]=\"o\" [selected]=\"o === selDdVal\">{{o}}</option>\r\n }\r\n </select>\r\n }\r\n </div><div class=\"qtr-wid center v-mid\">\r\n <select [name]=\"'timeDiff' + common.elifyCol(column)\" [id]=\"'timeDiff' + common.elifyCol(column)\" \r\n (change)=\"handleTimeDiffChange($any($event).target.value)\" style=\"max-width: 88%\" [(ngModel)]=\"selTDOpt\">\r\n <option value=\"-1\" [selected]=\"selTDOpt === -1\">All time</option>\r\n @for(t of timeDiffOpts; track t.val){\r\n <option [value]=\"t.val\" [selected]=\"t.val === selTDOpt\">{{t.text}}</option>\r\n }\r\n </select>\r\n </div><div class=\"half-wid v-mid center dontwrap {{currentDeltaCls}}\" [innerHTML]=\"currentDelta\"></div>\r\n</div>\r\n<div #lgContain [id]=\"'lineGraph' + common.elifyCol(column)\" class=\"inner-bg-contain\" style=\"margin-bottom: 33px;\">\r\n <div #yAxis class=\"lg-n-marker-cont\" [style.height]=\"totalHgt + 'px'\">\r\n @for(n of naddedtks(); track n.value; let i = $index){\r\n <div class=\"bg-dep-var\" [class.invisible]=\"n.value && n.value === maxYVal\" [attr.data-number]=\"n.value\"\r\n [style.padding-bottom]=\"i < 4 ? (((i*4)+1) + 'px') : '0px'\">\r\n {{(n.value === '0') ? '' : n.value}}\r\n </div>\r\n }\r\n @for(n of nmrks; track n){\r\n <div class=\"lg-n-marker-h\">{{n.value}}</div>\r\n }\r\n </div><div #lineGraph class=\"line-graph\" [style.height]=\"totalHgt + 'px'\">\r\n @for(n of dtmrks; track n){\r\n <div class=\"lg-dt-marker\" [class.visible-marker]=\"n.visible\" [style.left]=\"n.left\">{{n.value}}</div>\r\n }\r\n @for(n of dtmrksH; track n){\r\n <div class=\"lg-dt-marker-h\" [class.visible-marker]=\"n.visible\" [style.left]=\"n.left\">{{n.value}}</div>\r\n }\r\n @if(lblTxt){\r\n <div class=\"lg-lbl-x\">{{lblTxt}}</div>\r\n }\r\n <canvas #lgCanvas class=\"lg-canvas\" [height]=\"totalHgt\"></canvas>\r\n @for(p of plots(); track $index){\r\n <div class=\"lg-plot lg-plot-opq\" [attr.data-number]=\"p.number\" (mouseenter)=\"showDotPlotInfo(p.date, p.number)\" \r\n (mouseleave)=\"hideDotPlotInfo()\" [ngStyle]=\"{'bottom': (p.bottom-4) + 'px', 'left': (p.left-4) + 'px' }\">{{p.value}}</div>\r\n }\r\n @if(!plots().length){\r\n <div class=\"flex-center lg-msg\" [style.height]=\"totalHgt + 'px'\"><div>{{graphMsg}}</div></div>\r\n }\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NumValueDistroComponent } from '../num-value-distro-component/num-value-distro-component';\r\nimport { PieGraphComponent } from '../pie-graph-component/pie-graph-component';\r\nimport { BarGraphComponent } from '../bar-graph-component/bar-graph-component';\r\nimport { LineGraphComponent } from '../line-graph-component/line-graph-component';\r\n\r\n@Component({\r\n selector: 'app-column-chart',\r\n imports: [ CommonModule, NumValueDistroComponent, PieGraphComponent, BarGraphComponent, LineGraphComponent, ],\r\n templateUrl: './column-chart.html',\r\n styleUrls: ['./column-chart.css', '../../../styles.css']\r\n})\r\nexport class ColumnChart {\r\n\r\n isNumData = false\r\n isBoolData = false\r\n isBarGraph = false\r\n isLineGraph = false\r\n counts: any = null\r\n sum: string = \"\"\r\n avg: string = \"\"\r\n min: string = \"\"\r\n max: string = \"\"\r\n numArrMax: number = 5000\r\n numAvg: number = 0\r\n modeHtml: string = \"\"\r\n tdivHtml: string = \"\"\r\n numValDistMsg = \"\"\r\n numLen: number = 0\r\n symCls: string = \"\"\r\n symAttr: string = \"\"\r\n pieData: any = null\r\n nonNumUVal: string = \"\"\r\n nonNumEVal: string = \"\"\r\n @Input() column: string = \"\"\r\n @Input() colData: any[] = []\r\n @Output(\"bgTitle\") bgTitle: EventEmitter<string> = new EventEmitter();\r\n\r\n constructor(public common: CommonService,\r\n public dataTableService: DataTableService,){ }\r\n\r\n ngOnInit() {\r\n const reg = new RegExp(this.dataTableService.bgSep, \"g\")\r\n if(reg.test(this.column)){\r\n if(this.column.split(this.dataTableService.bgSep).length > 2){\r\n this.isLineGraph = true\r\n } else {\r\n this.isBarGraph = true\r\n }\r\n } else {\r\n this.buildDataInsights()\r\n } \r\n }\r\n\r\n setDistMsg(event: string) {\r\n this.numValDistMsg = event\r\n }\r\n\r\n buildDataInsights() {\r\n const yearCol = /(year|yr|fy)/g.test(this.column?.toLocaleLowerCase())\r\n const allNumData = this.colData.every( d => !d || (d && typeof d === \"number\") )\r\n const boolData = this.colData.every( d => !d || (d && typeof d === \"boolean\") )\r\n this.counts = this.getColumnValueCounts(this.colData)//build pie graphs with this\r\n let mode = this.getColumnMode(this.counts)\r\n const disr = (this.counts[\"n_a\"] && this.counts[\"n_a\"] >= mode?.amount) ? \" (non-empty value)\" : \"\";\r\n if(mode && mode.amount != 1){\r\n try{\r\n let maxChars = 75\r\n let pMdTxt = this.common.sanitizeUi(mode.text)\r\n if(mode.text && typeof mode.text === \"string\"){\r\n pMdTxt = mode.text.substring(0, maxChars)\r\n if(pMdTxt.length === maxChars){\r\n try{\r\n pMdTxt = (pMdTxt.trim() + \"...\")\r\n if(pMdTxt.startsWith(\"\\\"\"))\r\n pMdTxt += \"\\\"\"\r\n if(pMdTxt.startsWith(\"'\"))\r\n pMdTxt += \"'\"\r\n }catch(e){}\r\n }\r\n }\r\n if(pMdTxt && allNumData && !yearCol)\r\n pMdTxt = parseInt(pMdTxt).toLocaleString(undefined, { maximumFractionDigits: 3 })\r\n const modeVal = mode.amount.toLocaleString(undefined, { maximumFractionDigits: 0 })\r\n this.modeHtml = \"Most frequent\"+disr+\": <i>\" + pMdTxt + \"</i> appears \" + modeVal + \" time\" + (mode.amount === 1 ? \"\" : \"s\");\r\n }catch(e){}\r\n }\r\n let bitData;\r\n if(allNumData)\r\n bitData = this.colData.every( d => !d || d === 1 || d === 0 )\r\n if(allNumData && !yearCol && !bitData){//num data\r\n let isCurr = false\r\n this.isNumData = true\r\n const numsOnly = this.colData.filter( d => !!d || (d === 0) )\r\n this.numLen = numsOnly.length\r\n let usum = numsOnly.reduce( (acc, curr) => (acc + curr), 0)\r\n const lastNum = numsOnly[numsOnly.length-1]\r\n const sym = this.dataTableService.dataFilSrtTracker[this.column]?.colCellSymbol;\r\n if(sym){\r\n isCurr = [\"$\",\"€\",\"£\",\"¥\",\"₣\",\"₹\"].indexOf(sym) > -1\r\n this.symCls = isCurr ? ' has-symbol-b' : ' has-symbol';\r\n this.symAttr = sym;\r\n }\r\n if(typeof lastNum === \"number\" && ((usum - lastNum === lastNum) || (Math.abs(usum - lastNum*2) < 0.02))){//check that a total column is already there\r\n usum -= lastNum\r\n this.numLen -= 1\r\n this.tdivHtml = \"We omitted the last value from the total because it may be a total row itself.\";\r\n }\r\n this.numAvg = (usum/this.numLen)\r\n this.sum = usum.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: (isCurr ? 2 : 0) });\r\n this.avg = this.numAvg.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: (isCurr ? 2 : 0) });\r\n this.min = Math.min(...numsOnly).toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: (isCurr ? 2 : 0) });\r\n this.max = Math.max(...(this.tdivHtml ? numsOnly.filter( (n, ind) => ind < (numsOnly.length-1) ) : numsOnly)).\r\n toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: (isCurr ? 2 : 0) });\r\n if(this.numLen && this.numLen < this.numArrMax)\r\n this.numValDistMsg = \"Building \" + this.common.sanitizeUi(this.common.titleCase(this.column)) + \" value distribution...\"\r\n } else {\r\n const dSet =new Set(this.colData)\r\n let arrFrmSet: any[] = []\r\n dSet.forEach( (v) => { arrFrmSet.push(v) })\r\n this.nonNumUVal = arrFrmSet.length.toLocaleString(undefined, { maximumFractionDigits: 0 }) + \" unique value\" + (dSet.size === 1 ? \"\" : \"s\")\r\n const empVals = this.colData.filter( (d) => !d).length\r\n this.nonNumEVal = empVals.toLocaleString(undefined, { maximumFractionDigits: 0 }) + \" empty value\" + (empVals === 1 ? \"\" : \"s\"); \r\n const cantDoDD = arrFrmSet.some( a => a && a.length > 40 )\r\n if(!cantDoDD && ((boolData || bitData) || (arrFrmSet.filter( (a) => !!a ).length > 0 && this.colData.every( (d) => !d || typeof d === \"string\")))){\r\n if(arrFrmSet.length <= 18)\r\n this.pieData = { counts: this.counts, type: ((boolData || bitData) ? \"boolean\" : \"string\") }\r\n }\r\n }\r\n }\r\n\r\n getColumnValueCounts(data: any[]) {\r\n let i = 0\r\n let count: any = {}\r\n const na = \"n_a\"\r\n const len = data.length\r\n for(i; i < len; i++){\r\n const d = data[i]\r\n const val = (d && typeof d) === \"string\" ? d : \r\n (this.common.isADateObject(d) ? d.toLocaleDateString() : d)\r\n if(!val || typeof val === \"undefined\" || this.dataTableService.badStrings.indexOf(val) > -1){\r\n if(!count[na] || typeof count[na] === \"undefined\")\r\n count[na] = 1\r\n else\r\n count[na] += 1\r\n continue\r\n }\r\n if(!count[val] || typeof count[val] === \"undefined\")\r\n count[val] = 1\r\n else\r\n count[val] += 1\r\n }\r\n count[this.dataTableService.deboTotal] = len\r\n return count;\r\n }\r\n\r\n getColumnMode(count: any) {\r\n let most = null\r\n const na = \"n_a\"\r\n for(const prop in count){\r\n if(prop === this.dataTableService.deboTotal || prop === na)\r\n continue\r\n if(!most)\r\n most = {text: prop, amount: count[prop]}\r\n if(count[prop] > most.amount)\r\n most = {text: prop, amount: count[prop]}\r\n }\r\n return most\r\n }\r\n\r\n handleBgTitle(event: string) {\r\n this.bgTitle.emit(event)\r\n }\r\n\r\n}\r\n","@if(isNumData){\r\n <div class=\"half-wid\" [id]=\"'sum' + common.elifyCol(column)\">\r\n <span class=\"v-mid\">Total: </span><span class=\"lg-text v-mid{{symCls}}\" [attr.data-symbol]=\"symAttr\">{{sum}}</span>\r\n </div><div class=\"half-wid\" [id]=\"'avg' + common.elifyCol(column)\">\r\n <span class=\"v-mid\">Avg: </span><span class=\"lg-text v-mid{{symCls}}\" [attr.data-symbol]=\"symAttr\">{{avg}}</span>\r\n </div><div class=\"half-wid\" [id]=\"'min' + common.elifyCol(column)\">\r\n <span class=\"v-mid\">Min: </span><span class=\"lg-text v-mid{{symCls}}\" [attr.data-symbol]=\"symAttr\">{{min}}</span>\r\n </div><div class=\"half-wid\" [id]=\"'max' + common.elifyCol(column)\">\r\n <span class=\"v-mid\">Max: </span><span class=\"lg-text v-mid{{symCls}}\" [attr.data-symbol]=\"symAttr\">{{max}}</span>\r\n </div>@if(modeHtml){ <div [innerHTML]=\"modeHtml\"></div>}<div>{{tdivHtml}}</div>\r\n @if(numValDistMsg){ <div class=\"vdh-loading\">{{numValDistMsg}}</div> }\r\n @if(numLen < numArrMax){\r\n <app-num-value-distro-component\r\n [column]=\"column\"\r\n [average]=\"numAvg\"\r\n [originalArr]=\"colData\"\r\n (done)=\"numValDistMsg = $event\"\r\n [title]=\"'Building ' + common.sanitizeUi(common.titleCase(column)) + ' value distribution...'\"\r\n ></app-num-value-distro-component>\r\n }\r\n} @else {\r\n @if(nonNumUVal){ <div>{{nonNumUVal}}</div> }\r\n @if(nonNumEVal){ <div>{{nonNumEVal}}</div> }\r\n @if(modeHtml){ <div [innerHTML]=\"modeHtml\"></div> }\r\n}\r\n\r\n@if(pieData){\r\n <app-pie-graph-component\r\n [uncoverPie]=\"dataTableService.removePieCovers\"\r\n [data]=\"pieData\"\r\n [column]=\"column\"\r\n ></app-pie-graph-component>\r\n}\r\n@if(isBarGraph){\r\n <app-bar-graph-component\r\n [column]=\"column\"\r\n [data]=\"colData\"\r\n (title)=\"handleBgTitle($event)\"\r\n ></app-bar-graph-component>\r\n}\r\n@if(isLineGraph){\r\n <app-line-graph-component\r\n [column]=\"column\"\r\n [data]=\"colData\"\r\n (title)=\"handleBgTitle($event)\"\r\n ></app-line-graph-component>\r\n}","import { Component, ElementRef, EventEmitter, Input, Output, signal, ViewChild } from '@angular/core';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { ColumnChart } from '../column-chart/column-chart';\r\nimport { LineGraphComponent } from '../line-graph-component/line-graph-component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-charts-and-graphs',\r\n imports: [ CommonModule, ColumnChart, LineGraphComponent, ],\r\n templateUrl: './charts-and-graphs.html',\r\n styleUrls: ['./charts-and-graphs.css', '../../../styles.css']\r\n})\r\nexport class ChartsAndGraphs {\r\n\r\n chartsReady = signal<boolean>(false);\r\n rowIsAboveFold = signal<number[]>([0]);\r\n useData: any[] = []\r\n iRows: any[][] = []\r\n dtCols: string[] = [];\r\n numCols: string[] = [];\r\n filterInfo: string = \"\"\r\n currNumColData: any = {}//[] = []\r\n currNumColNm: any = {}//string = \"\"\r\n okBarGraphs: string[] = []\r\n okLineGraphs: string[] = []\r\n hasNoData: string[] = []\r\n @Input() height: string = \"\";\r\n @Input() state: string = \"all\";\r\n @Input() chartColumns: string[] = [];\r\n @Output(\"close\") close: EventEmitter<boolean> = new EventEmitter();\r\n @ViewChild(\"xChartsBtn\", { static: true }) xChartsBtn!: ElementRef<HTMLButtonElement>;\r\n @ViewChild(\"chartsTitle\", { static: true }) chartsTitle!: ElementRef<HTMLHeadElement>;\r\n @ViewChild(\"chartContain\", { static: true }) chartContain!: ElementRef<HTMLElement>;\r\n h2Text: string = \"\" \r\n\r\n constructor(public common: CommonService,\r\n public dataTableService: DataTableService,){ }\r\n\r\n ngOnInit() {\r\n if(this.state === \"selected\")\r\n this.useData = this.dataTableService.mainData.filter( (d, ind) => this.dataTableService.currSelRows.indexOf(ind) > -1 )\r\n else\r\n this.useData = this.dataTableService.currFilData//.filter( d => true )\r\n this.gatherRelationalPairs()\r\n const dLen = this.useData.length\r\n let filinfo = this.dataTableService.getAllFilSrtInfo()?.replace(/Filtered By:/g, \"filtered by\").\r\n replace(/ \\• Sorted By/g, \", Sorted By\").replace(/ \\• /g, \" \")\r\n this.h2Text = \"Data Insights for <b>\"+ dLen.toLocaleString(undefined, {maximumFractionDigits: 0}) + \"</b>\" +\r\n (this.state !== 'all' ? (' ' + this.common.titleCase(this.state)) : '') +\" Rows \";\r\n if(filinfo){\r\n this.h2Text = (\"Data Insights \" + (\"for <b>\" + (dLen).toLocaleString(undefined, {maximumFractionDigits:0}) + \r\n \"</b> row\" + (dLen === 1 ? \" \" : \"s \")) + filinfo?.split(\", Sorted By\")[0].trim())\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout( () => { \r\n let r = 0; let c = 0; let u = 0; let o = 0\r\n let useChartCols: string[] = [];\r\n const usableCharts = this.chartColumns.filter( c => !this.hasNoData.includes(c))\r\n const uclen = usableCharts.length\r\n const nlen = this.numCols.length\r\n for(u; u < uclen; u++){\r\n const ucol = usableCharts[u]\r\n useChartCols.push(ucol)\r\n if(this.okBarGraphs.indexOf(ucol) > -1){\r\n for(o; o < nlen; o++)\r\n useChartCols.push(ucol + this.dataTableService.bgSep + this.numCols[o])\r\n o = 0;\r\n }\r\n if(this.okLineGraphs.indexOf(ucol) > -1){\r\n o = 0; let d = 0;\r\n const dtlen = this.dtCols.length\r\n for(o; o < nlen; o++){\r\n for(d; d < dtlen; d++)\r\n useChartCols.push(ucol + this.dataTableService.bgSep + this.numCols[o] + this.dataTableService.bgSep + this.dtCols[d])\r\n d = 0;\r\n }\r\n o = 0;\r\n }\r\n }\r\n const clen = useChartCols.length\r\n const cWid = this.chartContain.nativeElement.getBoundingClientRect().width\r\n const insightColsPerRow = cWid < 640 ? 1 : (cWid < 960 ? 2 : 3);\r\n const rlen = Math.ceil(clen/insightColsPerRow)\r\n for(r; r < rlen; r++){\r\n let i = 0\r\n this.iRows[r] = []\r\n for(i; i < insightColsPerRow; i++){\r\n const col = useChartCols[c]\r\n if(col){\r\n let title = this.common.titleCase(col)\r\n let mappedData: any[] = []\r\n const reg = new RegExp(this.dataTableService.bgSep, \"g\")\r\n if(reg.test(col)){\r\n const bgCols = col.split(this.dataTableService.bgSep)\r\n const strCol = bgCols[0]\r\n const numCol = bgCols[1]\r\n let dtCol\r\n if(bgCols.length === 3)//line graph\r\n dtCol = bgCols[2]\r\n if(!dtCol){//bar graph\r\n const valsLen = this.dataTableService.dataFilSrtTracker[strCol]?.selDDVals?.filter( (g: any) => g.value !== \"(Select All)\").length || 0;\r\n const doAvg = this.useData.length <= valsLen ? \"\" : \"Avg \";\r\n title = doAvg + this.common.titleCase(numCol) + \" by \" + this.common.titleCase(strCol);\r\n mappedData = this.useData.filter( d => d[numCol] === 0 || !!d[numCol]).map( d => ({strColumn: (d[strCol] || \"N/A\"), numColumn: d[numCol]}))\r\n } else {//line graph\r\n title = \"Avg \" + this.common.titleCase(numCol) + \" by \" + this.common.titleCase(dtCol);\r\n mappedData = this.useData.filter( d => d[numCol] === 0 || !!d[numCol]).map( d => ({strColumn: (d[strCol] || \"N/A\"), numColumn: d[numCol], dtColumn: d[dtCol]}))\r\n }\r\n } else {\r\n if(this.dtCols.indexOf(col) > -1){\r\n const n0 = this.numCols[0]\r\n title = \"Avg \" + this.common.titleCase(n0) + \" by \" + this.common.titleCase(col);\r\n mappedData = this.useData.filter( d => d[n0] === 0 || !!d[n0]).map( d => ({numColumn: d[n0], dtColumn: d[col]}))\r\n } else {\r\n mappedData = this.useData.map( d => d[col] )\r\n }\r\n }\r\n this.iRows[r].push({ column: col, data: mappedData, title: title })\r\n c += 1\r\n }\r\n }\r\n }\r\n setTimeout( () => { this.chartsReady.set(true) })\r\n })\r\n }\r\n\r\n handleChartScroll(event: any) {\r\n let abv: number[] = []\r\n const xBtn= this.xChartsBtn.nativeElement\r\n const top = event.target.scrollTop\r\n const rows = document.getElementsByClassName(\"insight-field-row\")\r\n const rlen = rows.length\r\n if(xBtn)\r\n xBtn.style.top = (7 + top) + \"px\"\r\n for(var i = (rlen-1); i >= 0; i--){\r\n const row: HTMLElement = <HTMLElement>rows[i]\r\n if(this.dataTableService.elIsAboveFold(row, this.dataTableService.tblBot) && !abv.includes(i) && !this.rowIsAboveFold().includes(i))\r\n abv.push(i)\r\n }\r\n this.rowIsAboveFold.set([...this.rowIsAboveFold(), ...abv])\r\n }\r\n\r\n \r\n\r\n gatherRelationalPairs() {//dot plots and bar graphs\r\n let i = 0;\r\n const len = this.chartColumns.length\r\n for(i; i < len; i++){\r\n const col = this.chartColumns[i]\r\n const colData = this.useData.map( (d) => d[col] )\r\n if(colData.every( (d: any) => !d )){\r\n this.hasNoData.push(col)\r\n continue;\r\n }\r\n const yearCol = /(year|yr|fy)/g.test(col?.toLocaleLowerCase())\r\n const allNumData = colData.every( (d: any) => !d || (d && typeof d === \"number\") )\r\n let bitData;\r\n if(allNumData)\r\n bitData = colData.every( (d: any) => !d || d === 1 || d === 0 )\r\n if(allNumData && !yearCol && !bitData){//num data\r\n this.numCols.push(col);\r\n } else {\r\n const dSet =new Set(colData)\r\n let arrFrmSet: any = []\r\n dSet.forEach( (v) => arrFrmSet.push(v) )\r\n const dateData = (colData.every( (d: any) => !d || this.common.isADateObject(d)) && !colData.every( (d: any) => !d ))\r\n if(dateData || yearCol)\r\n this.dtCols.push(col)\r\n }\r\n }\r\n\r\n if(this.numCols.length){\r\n for(const prop in this.dataTableService.dataFilSrtTracker){\r\n const trkr = this.dataTableService.dataFilSrtTracker[prop]\r\n if(trkr && trkr.selDDVals){\r\n this.okBarGraphs.push(prop)\r\n if(this.dtCols.length)\r\n this.okLineGraphs.push(prop)\r\n }\r\n }\r\n }\r\n\r\n const dtlen = this.dtCols.length\r\n if(dtlen && this.numCols.length && typeof document.querySelectorAll === \"function\"){\r\n let c = 0\r\n for(c; c < dtlen; c++){\r\n const dcol = this.dtCols[c]\r\n this.currNumColNm[dcol] = this.numCols[0]\r\n this.currNumColData[dcol] = [1]//this.useData.filter( d => !!d).map( (d) => d[this.numCols[0]] )* this was for dot plot, but now we use line graph\r\n }\r\n }\r\n }\r\n\r\n setLineGraphNumCol(rowI: number, dtCol: string, col: string) {\r\n this.currNumColData[dtCol] = []\r\n setTimeout( () => { \r\n this.currNumColNm[dtCol] = col\r\n const irow = this.iRows[rowI].find( i => i.column === dtCol)\r\n if(irow){\r\n this.iRows[rowI].find( i => i.column === dtCol).data = this.useData.filter( d => d[col] === 0 || !!d[col]).map( d => ({numColumn: d[col], dtColumn: d[dtCol]}))\r\n this.iRows[rowI].find( i => i.column === dtCol).title = \"Avg \" + this.common.titleCase(col) + \" by \" + this.common.titleCase(dtCol);\r\n }\r\n this.currNumColData[dtCol] = [1]//this.useData.filter( d => !!d).map( (d) => d[col] )* this was for dot plot, but now we use line graph \r\n })\r\n }\r\n\r\n closeCharts() {\r\n this.close.emit(false)\r\n }\r\n \r\n}\r\n","<div class=\"relly chart-rel-contain\">\r\n <div #chartContain class=\"chart-contain\" (scroll)=\"handleChartScroll($event)\" [class.chart-contain-show]=\"chartsReady()\" [style.height]=\"height\">\r\n <div class=\"relly\" style=\"z-index: 10;\">\r\n <button type=\"button\" #xChartsBtn class=\"abs-right no-btn\" (click)=\"closeCharts()\" style=\"background: white;\">\r\n <i class=\"material-icons error-message heavy\" aria-hidden=\"false\">close</i>\r\n </button>\r\n </div>\r\n <div class=\"insights\">\r\n <h2 class=\"no-weight center\" [innerHTML]=\"h2Text\"></h2>\r\n @for(row of iRows; track row; let r = $index){\r\n <div class=\"insight-field-row\">\r\n @for(col of row; track col; let i = $index){\r\n <div [id]=\"'insField' + common.elifyCol(col.column)\" class=\"insight-field\">\r\n @if(rowIsAboveFold().indexOf(r) > -1){\r\n <div style=\"width: 85%;\">\r\n <h3 class=\"semi-heavy\" [class.h3-bg]=\"col.title.indexOf( ' by ') > -1\">{{col.title}}</h3>\r\n @if(dtCols.indexOf(col.column) > -1 && common.goodLs()){\r\n <div class=\"lg-title-cont\">\r\n @if(numCols.length > 1){\r\n @for(opt of numCols; track opt){\r\n <button type=\"button\" class=\"btn-line-graph-opts\" [class.btn-lg-sel]=\"opt === currNumColNm[col.column]\"\r\n (click)=\"setLineGraphNumCol(r, col.column, opt)\">\r\n {{opt + \" by \" + col.column}}\r\n </button>\r\n }\r\n } @else {\r\n <span class=\"sp-line-graph-title\">{{common.titleCase(currNumColNm[col.column]) + \" by \" + common.titleCase(col.column)}}</span>\r\n }\r\n </div>\r\n @if(currNumColData[col.column]?.length){\r\n <app-line-graph-component\r\n [column]=\"col.column\"\r\n [data]=\"col.data\"\r\n [numCol]=\"currNumColNm[col.column]\"\r\n (title)=\"col.title = $event\"\r\n ></app-line-graph-component>\r\n }\r\n } @else {\r\n <app-column-chart\r\n [column]=\"col.column\"\r\n [colData]=\"col.data\"\r\n (bgTitle)=\"col.title = $event\"\r\n ></app-column-chart>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, HostListener, input, Input, NgZone, Output, signal, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ColumnHeader } from '../../../interfaces/column-header';\r\nimport { CommonService } from '../../../services/common-service';\r\nimport { TableDragService } from '../../../services/table-drag-service';\r\nimport { DataTableService } from '../../../services/data-table-service';\r\nimport { DataRow } from '../../../interfaces/data-row';\r\nimport { DataTableHeader } from '../data-table-header/data-table-header';\r\nimport { DataTablePaginator } from '../data-table-paginator/data-table-paginator';\r\nimport { DataCellComponent } from '../data-cell/data-cell';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { ExportComponent } from '../export-component/export-component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CellEdit } from '../../../interfaces/cell-edit';\r\nimport { DataCell } from '../../../interfaces/data-cell';\r\nimport { RowGroupMenu } from '../row-group-menu/row-group-menu';\r\nimport { RowGroupPanel } from '../row-group-panel/row-group-panel';\r\nimport { ChartsAndGraphs } from '../../charts/charts-and-graphs/charts-and-graphs';\r\nimport { RowNumber } from '../../../interfaces/row-number';\r\nimport { ColumnStyles, ValueCss } from '../../../interfaces/column-styles';\r\nimport { finalize, Subscription } from 'rxjs';\r\nimport { ColumnSymbol } from '../../../interfaces/column-symbol';\r\n\r\n@Component({\r\n selector: 'ngx-deebodata',\r\n imports: [\r\n DataTableHeader,\r\n DataCellComponent,\r\n DataTablePaginator,\r\n ChartsAndGraphs,\r\n RowGroupMenu,\r\n RowGroupPanel,\r\n ExportComponent,\r\n FormsModule,\r\n DecimalPipe,\r\n CommonModule,\r\n ],\r\n templateUrl: './ngx-deebodata.html',\r\n styleUrls: ['./ngx-deebodata.css', '../../../styles.css'],\r\n})\r\nexport class NgxDeebodata {\r\n\r\n @HostListener('window:click', ['$event'])\r\n onWindowClick(e: MouseEvent) {\r\n if(this.listenToWindowCurrFil && this.currFilOpts.length){\r\n if(e && e.target && (e.target instanceof Element) && (/selfil-/g.test(e.target.className) || /selfil-/g.test(e.target.id))){\r\n } else {\r\n this.killSelFilOpts(true)\r\n }\r\n }\r\n\r\n if(this.dataTableService.listenToCloseExportOpts){\r\n if(e && e.target && (e.target instanceof Element) && /deebo-dd-export/g.test(e.target.className)){\r\n } else {\r\n this.dataTableService.closeExportOpts.next(false)\r\n this.dataTableService.listenToCloseExportOpts = false\r\n }\r\n }\r\n\r\n if(this.dataTableService.listenToCloseGroupByOpts){\r\n if(e && e.target && (e.target instanceof Element) && /deebo-dd-groupby/g.test(e.target.className)){\r\n } else {\r\n this.dataTableService.closeGroupByOpts.next(false)\r\n this.dataTableService.listenToCloseGroupByOpts = false\r\n }\r\n }\r\n\r\n if(this.validatedEditType && (!document.activeElement || (document.activeElement && !document.activeElement.className)))\r\n this.clearValidatedEdit(e)\r\n }\r\n\r\n @HostListener('window:mouseup', ['$event'])\r\n onWindowMouseUp(e: MouseEvent) {\r\n if(this.tblDragService.listenForMouseUp){\r\n this.tblDragService.handleColResMouseUp(e)\r\n this.dataTableBody?.nativeElement.scrollBy(1, 0)\r\n }\r\n if(this.tblDragService.listenForColMvMouseUp)\r\n this.tblDragService.handleColMoveMouseUp(e)\r\n if(this.listenToCellDraggerMouseMove){\r\n this.listenToCellDraggerMouseMove = false\r\n this.clearDragEditFlag()\r\n try{this.fCellDragger.nativeElement.blur()}catch(e){}\r\n }\r\n if(this.listenToCellDraggerMouseUp)\r\n this.handleDraggerMU(e)\r\n if(this.currGroupValues().length)\r\n return this.dataTableService.mouseupWhileGrouped.next(e)\r\n }\r\n\r\n @HostListener('window:mousemove', ['$event'])\r\n onWindowMouseMove(e: MouseEvent) {\r\n if(this.listenToCellDraggerMouseMove)\r\n this.handleCellDraggerEdit(e)\r\n }\r\n\r\n @HostListener('window:selectstart', ['$event'])\r\n onWindowSelectStart(e: Event) {\r\n if(this.listenToCellDraggerMouseMove)\r\n e.preventDefault()\r\n if(this.tblDragService.listenForSelectStart)\r\n this.tblDragService.stopWindowSelection(e)\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(e: Event) {\r\n this.dataTableService.setTblBounds()\r\n this.testHideMinBtn()\r\n this.clearValidatedEdit()\r\n }\r\n\r\n @HostListener('window:scroll', ['$event'])\r\n onWindowScroll(e: Event) {\r\n this.dataTableService.setTblBounds()\r\n this.clearValidatedEdit()\r\n }\r\n\r\n constructor(public dataTableService: DataTableService, \r\n private tblDragService: TableDragService,\r\n public common: CommonService,) {\r\n \r\n }\r\n\r\n rows: DataRow[] = [];\r\n aboveHgt = signal<number>(0);\r\n belowHgt = signal<number>(0);\r\n dtChecks: number[] = [];\r\n rowNos: RowNumber[] = [];\r\n verticalRest = 0\r\n horizRest = signal<number>(0)\r\n isScrolling = false;\r\n useRowWid: string = \"\"\r\n currGroupValues = signal<any[]>([])\r\n chartHgt: string = \"\"\r\n chartState: string = \"all\"\r\n columnsForCharts: string[] = []\r\n paginatorReady = false;\r\n handlingSelRows = false\r\n columnOfInterest = signal<string>(\"\")\r\n hiddenCols: string[] = [];\r\n desRowHeight: string = \"50\"\r\n currFilOpts: any[] = []\r\n currSelEditOpts: any[] = []\r\n listenToWindowCurrFil = false\r\n listenToCellDraggerMouseMove = false\r\n listenToCellDraggerMouseUp = false\r\n currDDFilter: string = \"\";\r\n topLevelFilter: string = \"\"\r\n allFilSortInfo = signal<string>(\"\")\r\n lockVScroll: boolean = false;\r\n isMultiFiltering = signal<boolean>(false);\r\n ddFilStyle: any = {}\r\n filterBuildUp: any[] = []\r\n togSelRows: string = \"Selected Rows\"\r\n maxCols: number = 0;\r\n lastElRowIndex: number = 0;\r\n columnHeaders: ColumnHeader[] = []\r\n columnNames: string[] = []\r\n linkCell: any;\r\n linkCells: any[] = []\r\n canGroupBy = signal<string[]>([]);\r\n validatedEditType: string = \"\"\r\n validationSettled = signal<boolean>(false)\r\n dataHasBeenSet = signal<boolean>(false)\r\n validationSub: Subscription = new Subscription;\r\n data = input<any[]>([])\r\n @Input() licenseKey: string = \"\";\r\n @Input() color1: string = \"\"\r\n @Input() color2: string = \"\"\r\n @Input() primaryKey: string = \"\"\r\n @Input() defRowHgt: string = \"50px\"\r\n @Input() defGridHgt: number = 500\r\n @Input() altRowColor: string = \"\";\r\n @Input() myColumnSymbols: ColumnSymbol[] = []\r\n @Input() myColumnStyles: ColumnStyles[] = []\r\n @Input() pieGraphColors: string[] = []\r\n @Input() removePieCovers: boolean|string[] = false\r\n @Input() editable: boolean = true;\r\n @Input() rowNumbers: boolean = true\r\n @Output(\"cellEdit\") cellEdit: EventEmitter<CellEdit> = new EventEmitter()\r\n @ViewChild(\"dataTable\", { static: true }) dataTable!: ElementRef<HTMLElement>;\r\n @ViewChild(\"dataTableBody\", { static: true }) dataTableBody!: ElementRef<HTMLElement>;\r\n @ViewChild(\"aboveArea\", { static: true }) aboveArea!: ElementRef<HTMLElement>;\r\n @ViewChild(\"belowArea\", { static: true }) belowArea!: ElementRef<HTMLElement>;\r\n @ViewChild(\"validatedEdit\", { static: true }) validatedEdit!: ElementRef<HTMLElement>;\r\n @ViewChild(\"rowNumHeader\", { static: true }) rowNumHeader!: ElementRef<HTMLElement>;\r\n @ViewChild(\"rowNumBody\", { static: true }) rowNumBody!: ElementRef<HTMLElement>;\r\n @ViewChild(\"fCellDragger\", { static: true }) fCellDragger!: ElementRef<HTMLElement>;\r\n @ViewChild(\"selFilContainer\", { static: true }) selFilContainer!: ElementRef<HTMLElement>;\r\n @ViewChild(\"btnTogSelRows\", { static: true }) btnTogSelRows!: ElementRef<HTMLButtonElement>;\r\n @ViewChild(\"dataTableHeaders\", { static: true }) dataTableHeaders!: ElementRef<HTMLElement>;\r\n @ViewChild(\"topLevelDataFilter\", { static: true }) topLevelDataFilter!: ElementRef<HTMLInputElement>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(typeof changes !== \"undefined\" && changes[\"data\"] && this.validationSettled() && !this.dataHasBeenSet() && this.data().length)\r\n this.handleDataInput()\r\n }\r\n\r\n ngOnInit() {\r\n this.execSetters()\r\n this.handleValidation()\r\n }\r\n\r\n execSetters() {\r\n if(this.defRowHgt && /\\d+px/g.test(this.defRowHgt))\r\n this.dataTableService.defltRHgt = this.defRowHgt\r\n if(this.defGridHgt)\r\n this.dataTableService.dTblHeight = this.defGridHgt\r\n if(this.myColumnSymbols)\r\n this.dataTableService.columnSymbols = [...this.myColumnSymbols]\r\n if(this.myColumnStyles)\r\n this.dataTableService.columnStyles = [...this.myColumnStyles]\r\n if(this.pieGraphColors)\r\n this.dataTableService.pieGraphColors = [...this.pieGraphColors];\r\n this.dataTableService.removePieCovers = this.removePieCovers\r\n }\r\n\r\n handleDataInput() {\r\n let tdata = this.convertNeededCols([...this.data()])\r\n this.dataTableService.mainData = tdata.filter( (d: any) => true )\r\n this.dataTableService.currFilData = tdata.filter( (d: any) => true )\r\n this.dataTableService.mainDataLen = this.dataTableService.mainData.length\r\n this.buildInitUiDataTable(tdata, this.color1, this.color2)//hex or rgb values work best\r\n if(!this.dataTableService.errorLoading)\r\n this.dataTableService.noDataMsg = \"No data to display for this configuration.\";\r\n this.tblDragService.dTblHeightOutput.subscribe( h => this.setTableHeight(h) )\r\n this.tblDragService.columnMove.subscribe( c => this.processColMove(c) )\r\n this.dataTableService.currGrouping.subscribe( g => this.processGrouping(g) )\r\n setTimeout( () => this.setTableHeight(510), 1000)//for demo\r\n this.dataHasBeenSet.set(true)\r\n }\r\n\r\n getAllColsAtRuntime(excludeHidden: any) {\r\n let cols = (typeof this.dataTableService.mainData[0] === \"object\" ? Object.keys(this.dataTableService.mainData[0]) : \r\n (Object.keys(this.dataTableService.dataFilSrtTracker)));\r\n if(!excludeHidden)\r\n return cols;\r\n return cols.filter( (c: any) => { \r\n return !this.dataTableService.dataFilSrtTracker[c].minimize\r\n });\r\n }\r\n\r\n setMaxCols() {\r\n const el = this.dataTable.nativeElement\r\n if(el){\r\n const elWid = el.getBoundingClientRect().width;\r\n return elWid >= 1024 ? 5 : (elWid > 760 ? 3 : 2)\r\n }\r\n const wid = window.innerWidth\r\n return wid >= 1024 ? 5 : (wid > 760 ? 3 : 2)\r\n }\r\n\r\n getAllColWidth(colLen: any) {\r\n try{\r\n if(!colLen || colLen === 0)\r\n return 0\r\n const colWid = parseInt(this.dataTableService.useColWid.replace(/[ ]?px/g, \"\"))\r\n let i = 0\r\n let wid = 0\r\n for(const prop in this.dataTableService.dataFilSrtTracker){\r\n if(this.dataTableService.dataFilSrtTracker[prop].minimize)\r\n continue\r\n i += 1\r\n const ownColWid = this.dataTableService.dataFilSrtTracker[prop].colWidth\r\n wid += (ownColWid ? parseInt(ownColWid.replace(/[ ]?px/g, \"\")) : colWid)\r\n }\r\n if(i === colLen)\r\n return Math.floor(wid)\r\n return Math.floor(colWid*colLen)\r\n }catch(e){ \r\n try{\r\n return Math.floor(parseInt(this.dataTableService.useColWid.replace(/[ ]?px/g, \"\"))*colLen)\r\n }catch(e){\r\n return window.innerWidth\r\n }\r\n }\r\n }\r\n\r\n removeAllFreezeCols() {\r\n const len = this.columnHeaders.length\r\n const rlen = this.rows.length\r\n for(var i = (len-1); i >= 0; i--)\r\n try{this.columnHeaders[i].freeze = false}catch(e){}\r\n for(var o = (rlen-1); o >= 0; o--){\r\n try{\r\n const row =this.rows[o]\r\n const clen = row.cells?.length\r\n if(clen && clen > 0){\r\n for(var n = (clen-1); n >= 0; n--){\r\n const cell = row.cells?.[n]\r\n if(cell)\r\n cell.freeze = false\r\n }\r\n }\r\n }catch(e){}\r\n }\r\n }\r\n\r\n setTableHeight(h: number) {\r\n this.dataTableService.dTblHeight = h\r\n setTimeout( () => { \r\n this.dataTableService.setTblBounds()\r\n this.chartHgt = this.dataTable.nativeElement.getBoundingClientRect().height + \"px\";\r\n if(!this.dataTableService.showCharts() && !this.currGroupValues().length){\r\n const el = this.dataTableBody?.nativeElement\r\n if(el){\r\n el.scrollBy(0, 1)\r\n el.scrollBy(0, -1)\r\n }\r\n setTimeout(() => { this.setRowSelChecksPlacement() })\r\n }\r\n if(this.currGroupValues().length)\r\n setTimeout( () => { this.dataTableService.gridScrollEndWhileGrouped.next(true) })\r\n })\r\n }\r\n\r\n openCharts() {\r\n this.dataTableService.showCharts.set(true)\r\n this.chartHgt = this.dataTable.nativeElement.getBoundingClientRect().height + \"px\";\r\n this.columnsForCharts = this.columnHeaders.filter( c => !c.minimized && !this.common.idCol(c.column)).map( c => c.column)\r\n this.chartState = this.dataTableService.displayOnlySelRows ? 'selected' : \r\n (this.dataTableService.currFilData.length !== this.dataTableService.mainDataLen ? 'filtered' : 'all');\r\n this.clearValidatedEdit(null, true)\r\n }\r\n\r\n closeCharts(event: boolean) {\r\n this.dataTableService.showCharts.set(event)\r\n const bod = this.dataTableBody?.nativeElement\r\n if(bod){\r\n bod.scrollBy(1, 0)\r\n bod.scrollBy(-1, 0)\r\n }\r\n }\r\n\r\n processColMove(event: any) {\r\n let lfts = event.ls\r\n let nwColLft = event.nl\r\n let wantlfts = event.wl\r\n let xDrop = event.x\r\n const wLf = wantlfts.indexOf(xDrop)\r\n if(wLf != lfts.indexOf(nwColLft)){\r\n const inAft = wLf - 1\r\n this.columnHeaders = this.columnHeaders.filter( c => this.common.elifyCol(c.column) !== this.dataTableService.currColumnEdit)\r\n const rwCol = this.common.replaceUniSep(this.dataTableService.currColumnEdit)\r\n const trkr = this.dataTableService.dataFilSrtTracker[rwCol]\r\n const addCol: ColumnHeader = { column: rwCol, width: (trkr[\"colWidth\"] || this.dataTableService.useColWid), \r\n hideMinCol: false, freeze: false, minimized: trkr[\"minimize\"], dataType: this.dataTableService.figureFilterType(rwCol) }\r\n if(inAft === -1){//they want it first\r\n this.columnHeaders.unshift(addCol)\r\n } else {\r\n if(inAft >= (wantlfts.length - 2)){//last\r\n this.columnHeaders.push(addCol)\r\n } else {\r\n if(this.columnHeaders[inAft])\r\n this.columnHeaders.splice((inAft+1), 0, addCol)\r\n }\r\n }\r\n setTimeout( () => {\r\n let i = 0\r\n const els = document.getElementsByClassName(\"col-header\")\r\n const len = els.length\r\n this.columnHeaders = []\r\n for(i; i < len; i++){\r\n const col = this.common.replaceUniSep(els[i].id.replace(/^columnHeader/, \"\"))\r\n if(this.columnHeaders.map( c => c.column).indexOf(col) < 0){\r\n const trkr = this.dataTableService.dataFilSrtTracker[col]\r\n const addCol: ColumnHeader = { column: col, width: (trkr[\"colWidth\"] || this.dataTableService.useColWid), \r\n hideMinCol: false, freeze: false, minimized: trkr[\"minimize\"], dataType: this.dataTableService.figureFilterType(col) }\r\n this.columnHeaders.push(addCol)\r\n }\r\n }\r\n this.columnNames = this.columnHeaders.map( c => c.column)\r\n const dtB = this.dataTableBody.nativeElement\r\n if(dtB){\r\n const willSclTo = dtB.scrollLeft\r\n this.renderCurrData(false)\r\n setTimeout( () => { dtB.scrollLeft = willSclTo })\r\n }\r\n }, 100)\r\n }\r\n this.clearValidatedEdit(null, true)\r\n }\r\n\r\n processGrouping(group: any): any {\r\n if(!group)\r\n return this.resetCurrentData()\r\n this.verticalRest = 0\r\n this.rows = []\r\n this.aboveHgt.set(0)\r\n this.belowHgt.set(0)\r\n this.dtChecks = []\r\n this.rowNos = []\r\n this.clearValidatedEdit(null, true)\r\n this.dataTableService.currMapping = {}\r\n this.dataTableService.currSelRows = []\r\n this.dataTableService.displayOnlySelRows = false\r\n this.dataTableService.currGroup = group\r\n this.dataTableBody.nativeElement.scrollTop = 0;\r\n this.currGroupValues.set(this.dataTableService.dataFilSrtTracker[group]?.[\"selDDVals\"]?.filter( (g: any) => g.value !== \"(Select All)\"))\r\n setTimeout( () => { this.rows = [] })\r\n }\r\n\r\n setColHeaderHgt() {//set hgt = to tallest\r\n let z = 0; let i = 0; let x = 0\r\n let hgts = []\r\n const cols = document.getElementsByClassName(\"col-header\")\r\n const cLen = this.columnHeaders?.length\r\n for(x; x < cLen; x++){\r\n const col = this.columnHeaders[x]\r\n col.height = undefined\r\n col.lineHeight = undefined\r\n }\r\n for(z; z < cLen; z++){\r\n if(cols[z])\r\n hgts.push(cols[z].getBoundingClientRect().height)\r\n }\r\n const maxHgt = hgts.sort( (a: number,b: number) => a > b ? -1 : 1 )[0]\r\n const useHgt = Math.ceil(maxHgt)\r\n for(i; i < cLen; i++){\r\n const col = this.columnHeaders[i]\r\n if(col && !col.minimized){\r\n col.height = useHgt + \"px\"\r\n const elCol = cols[i]\r\n if(elCol && elCol.firstElementChild && elCol.firstElementChild.getBoundingClientRect().height < 40)\r\n col.lineHeight = Math.floor(((useHgt/2)-21)) + \"px\"\r\n }\r\n }\r\n if(this.dataTableHeaders)\r\n this.dataTableHeaders.nativeElement.style.height = useHgt + \"px\"\r\n if(this.rowNumHeader)\r\n this.rowNumHeader.nativeElement.style.height = useHgt + \"px\"\r\n setTimeout( () => { this.setRowSelChecksPlacement() })\r\n }\r\n\r\n renameColSpecChars(data: any[]) {\r\n if(data && data.some( d => d && typeof d === \"object\" )){\r\n let specCharCols = []\r\n if(data[0] && typeof data[0] === \"object\"){\r\n for(const prop in data[0]){\r\n if(/[`~!@#$%^&*()_|+\\-=?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/g.test(prop))\r\n specCharCols.push(prop) \r\n }\r\n let c = 0\r\n let i = 0\r\n const dlen = data.length\r\n const len = specCharCols.length\r\n for(c; c < len; c++){\r\n const prop = specCharCols[c]\r\n const okNwNam = this.common.stripSpecChars(prop)\r\n for(i; i < dlen; i++){\r\n if(data[i] && typeof data[i] === \"object\"){\r\n const desc = Object.getOwnPropertyDescriptor(data[i], prop)\r\n if(desc){\r\n try{\r\n Object.defineProperty(data[i], okNwNam, desc);\r\n delete data[i][prop]\r\n }catch(e){}\r\n }\r\n }\r\n }\r\n i = 0;\r\n }\r\n return data?.filter( d => true );\r\n }\r\n return data?.filter( d => true );\r\n }\r\n return data?.filter( d => true );\r\n }\r\n\r\n scoopOutObjsInObjs(data: any[]) {//scoop out one layer of nested objs\r\n let i = 0;\r\n let ndata = []\r\n const len = data?.length\r\n if(data && data.some( (d: any) => { return d && typeof d === \"object\" })){\r\n for(i; i < len; i++){\r\n try{\r\n const dta = data[i]\r\n if(dta && typeof dta === \"object\"){\r\n let nobj: any = {}\r\n for(const prop in dta){\r\n const val = dta[prop]\r\n if(val && typeof val === \"object\" && typeof val.getTime === \"undefined\" && typeof val.filter === \"undefined\" && Object.keys(val).length){\r\n for(const iprp in val)\r\n nobj[iprp] = val[iprp]\r\n } else {\r\n nobj[prop] = val\r\n }\r\n }\r\n ndata.push(nobj)\r\n }\r\n } catch(e){}\r\n }\r\n } else {\r\n ndata = data?.filter( (d: any) => { return true })\r\n }\r\n return ndata;\r\n }\r\n\r\n convertNeededCols(data: any) {\r\n data = this.scoopOutObjsInObjs(data)\r\n data = this.renameColSpecChars(data)\r\n let nData = data?.filter( (d: any) => true )\r\n const symReg = new RegExp(/[$€£₹¥¢%\\,\\\"\\']/, \"g\")\r\n const isDtReg = new RegExp(/\\d+(\\/|-)\\d+(\\/|-)\\d+/)\r\n let i = 0;\r\n const len = data?.length\r\n let allCols: any[] = []\r\n if(data && data.some( (d: any) => d && typeof d === \"object\" )){\r\n allCols = this.getDataColumns(data)//gets all possible props in array\r\n this.dataTableService.dataFilSrtTracker = this.dataTableService.buildDataFilSrtTracker(allCols)\r\n for(i; i < len; i++){\r\n try{\r\n if(data[i] && typeof data[i] === \"object\"){\r\n for(const prop in data[i]){\r\n if(allCols.indexOf(prop) < 0){\r\n delete data[i][prop]\r\n continue\r\n }\r\n const val = data[i][prop]\r\n if(val && typeof val === \"string\"){\r\n const tval = val.trim()\r\n const low = tval.toLocaleLowerCase()\r\n if(this.common.testLongDate(low))\r\n nData[i][prop] = this.common.coerceDate(low)\r\n if(!this.common.testLongDate(low) && (this.common.testShortDate(tval) || this.common.testISODate(tval)))\r\n nData[i][prop] = this.common.coerceDate(tval)\r\n if(this.common.testISODate(tval.replace(/ /g, \"\")))\r\n nData[i][prop] = this.common.coerceDate(tval.replace(/ /g, \"\"))\r\n if(low === \"null\" || low === \"undefined\")\r\n nData[i][prop] = null\r\n if(!this.common.idCol(prop) && !isDtReg.test(tval) && !/[A-Za-z]/g.test(val) && /^[0-9,]+[\\.]{0,1}?[0-9,]*$/g.test(tval.replace(symReg, \"\")) && !isNaN(parseInt(tval.replace(symReg, \"\"))))//not viewed as num, but can be\r\n nData[i][prop] = /\\./g.test(val) ? parseFloat(tval.replace(symReg, \"\")) : parseInt(tval.replace(symReg, \"\"))\r\n }\r\n if(val && typeof val === \"object\" && typeof val.getTime === \"undefined\")/**not dates */\r\n try{ nData[i][prop] = JSON.stringify(val).replace(/[\\[\\]{}\\\"]/g, \"\").replace(/:/g, \": \").replace(/,/g, \", \").replace(/ /g, \" \")}catch(e){}\r\n }\r\n const keys = Object.keys(data[i])\r\n const diff = allCols.filter( (c) => keys.indexOf(c) < 0 )\r\n const dLen = diff.length\r\n if(dLen){//obj doesn't have all props\r\n let n = 0\r\n for(n; n < dLen; n++)\r\n nData[i][diff[n]] = \"\";\r\n }\r\n }\r\n }catch(e) { }\r\n }\r\n }\r\n //read data that's already not a string\r\n if(allCols && allCols.length){//array of objs\r\n let a = 0\r\n const alen = allCols.length\r\n for(a; a < alen; a++){\r\n const col = allCols[a]\r\n const colData = nData?.map( (d: any) => d[col] )\r\n if(colData && colData.every( (d: any) => !d ))\r\n continue\r\n if(!this.common.idCol(col) && colData && colData.every( (d: any) => !d || typeof d === \"number\" )){\r\n try{ this.dataTableService.dataFilSrtTracker[col][\"type\"] = \"number\" } catch(e){}\r\n }\r\n if(colData && colData.every( (d: any) => { return !d || this.common.isADateObject(d) })){\r\n try{ this.dataTableService.dataFilSrtTracker[col][\"type\"] = \"date\" } catch(e){}\r\n }\r\n if(colData && colData.every( (d: any) => !d || typeof d === \"boolean\" )){\r\n nData = nData.map( (d: any) => {\r\n d[col] = d[col]?.toString() || \"false\";\r\n return d\r\n })\r\n }\r\n }\r\n }\r\n return nData\r\n }\r\n\r\n setRowSelChecksPlacement() {\r\n let i = 0\r\n const radd = 12\r\n const els = document.getElementsByClassName(\"select-row-check\")\r\n const len = els.length\r\n const dtBody = this.dataTableBody.nativeElement\r\n const tbds = dtBody.getBoundingClientRect()\r\n const initT = this.initCheckTop()\r\n const col1Frozen = document.getElementsByClassName(\"col-item-freeze\").length\r\n for(i; i < len; i++){\r\n const chk = <HTMLInputElement>els[i]\r\n const row = document.getElementById(chk.value)\r\n if(row){\r\n const tTop = tbds.top\r\n const rbds = row.getBoundingClientRect()\r\n const hh = (rbds.height/2)\r\n const top = Math.floor(initT + ((rbds.bottom - (hh+radd)) - tTop))\r\n chk.style.top = Math.floor(top) + \"px\"\r\n if((rbds.top+(hh-radd)) < tTop || ((rbds.bottom - (hh-radd)) >= (tTop + tbds.height)) || (dtBody.scrollLeft > 35 && !col1Frozen)){\r\n chk.classList.add(\"hide\")\r\n continue\r\n }\r\n chk.className = \"select-row-check\"\r\n } else {\r\n chk.classList.add(\"hide\")\r\n }\r\n }\r\n this.setRowNumbers()\r\n }\r\n\r\n setRowNumbers() {\r\n const rlen = this.rows.length\r\n if(this.rowNumbers && rlen){\r\n const hasHgt: RowNumber[] = this.rowNos.filter( r => r.height)\r\n this.rowNos = []\r\n let n = (this.lastElRowIndex + 1) - rlen\r\n for(n; n <= this.lastElRowIndex; n++){\r\n let rn: any = {number: n + 1}\r\n if(hasHgt.length){\r\n const hh = hasHgt.find( h => h.number === n+1)\r\n if(hh)\r\n rn.height = hh.height\r\n }\r\n this.rowNos.push(rn)\r\n }\r\n const r1 = document.getElementById(\"dataTableRow\" + this.rows[0]?.index)\r\n if(r1){\r\n const useCalc = -(this.dataTableService.tblTop - r1.getBoundingClientRect().top)\r\n this.rowNumBody.nativeElement.style.marginTop = Math.min(useCalc, 0) + \"px\"\r\n }\r\n }\r\n }\r\n\r\n initCheckTop() {\r\n const headHt = this.dataTableHeaders.nativeElement.getBoundingClientRect().height\r\n return headHt + 17;//dt table marg top is 17\r\n }\r\n\r\n toggleSelectedRows(forceUnsel?: any) {\r\n this.handlingSelRows = true\r\n setTimeout( () => {//let the button disable\r\n this.dataTableService.displayOnlySelRows = !this.dataTableService.displayOnlySelRows\r\n if(forceUnsel)\r\n this.dataTableService.displayOnlySelRows = false\r\n const icn = this.btnTogSelRows.nativeElement.firstElementChild;\r\n if(this.dataTableService.displayOnlySelRows){\r\n this.dataTableService.currFilData = this.dataTableService.mainData.\r\n filter( (d: any, ind: number) => this.dataTableService.currSelRows.indexOf(ind) > -1 )\r\n if(icn){\r\n icn.textContent = \"check_box\"\r\n icn.classList.add(\"sel-rows-checked\")\r\n }\r\n } else {\r\n this.dataTableService.currFilData = this.dataTableService.mainData.filter( (d: any) => true )\r\n if(icn){\r\n icn.classList.remove(\"sel-rows-checked\")\r\n icn.textContent = \"check_box_outline_blank\"\r\n }\r\n }\r\n if(this.dataTableService.arefilSrtTrkPropsDefault(true)){\r\n this.renderCurrData(false)\r\n } else {\r\n const col = this.columnHeaders[0].column//just fil by 1st col\r\n const fil = this.dataTableService.dataFilSrtTracker[col].filter\r\n if(col)\r\n this.execFilter(col, (fil || \"\"))\r\n }\r\n setTimeout( () => this.handlingSelRows = false)\r\n })\r\n }\r\n\r\n toggleSingleRowSelected(useInd: number) {\r\n if(this.tblDragService.didResizeOnEvent)\r\n return false\r\n try{\r\n if(this.dataTableService.currSelRows.indexOf(useInd) > -1){//it's already selected\r\n this.dataTableService.currSelRows = this.dataTableService.currSelRows.filter( (r) => r !== useInd )\r\n if(this.dataTableService.displayOnlySelRows){\r\n const btnTog = this.btnTogSelRows.nativeElement\r\n btnTog.click()\r\n btnTog.click()\r\n if(!this.dataTableService.currSelRows.length)\r\n btnTog.click()\r\n }\r\n } else {\r\n if(this.dataTableService.currSelRows.indexOf(useInd) < 0)\r\n this.dataTableService.currSelRows.push(useInd)\r\n }\r\n }catch(e){}\r\n return this.setBtnTogRows(this.dataTableService.currSelRows.length)\r\n } \r\n\r\n setBtnTogRows(amt?: number) {\r\n if(amt){\r\n this.togSelRows = amt.toLocaleString(undefined, {maximumFractionDigits:0}) + \" Selected Row\" + (amt == 1 ? \"\" : \"s\")\r\n } else {\r\n this.togSelRows = \"Selected Rows\"\r\n }\r\n }\r\n\r\n clearSelectedRows() {\r\n this.handlingSelRows = true\r\n this.dataTableService.currSelRows = []\r\n const fullClear = this.dataTableService.displayOnlySelRows ? true : false;\r\n this.dataTableService.displayOnlySelRows = false;\r\n this.setBtnTogRows()\r\n if(fullClear)\r\n return this.toggleSelectedRows(true)\r\n setTimeout( () => this.handlingSelRows = false)\r\n }\r\n\r\n getDataColumns(data: any[]) {\r\n let i = 0\r\n let cols = Object.keys(data[0])\r\n const len = data.length\r\n for(i; i < len; i++){\r\n const obj = data[i]\r\n const keys = Object.keys(obj)\r\n const notInCols = keys.filter( (k: any) => cols.indexOf(k) < 0)\r\n if(typeof obj === \"object\" && notInCols.length){\r\n let n = 0\r\n const dLen = notInCols.length\r\n for(n; n < dLen; n++)\r\n cols.push(notInCols[n])\r\n }\r\n }\r\n let f =0\r\n let fincols: any = []\r\n const strpdcols = cols.map( (c: any) => this.common.stripSpecChars(c) )\r\n const slen = strpdcols.length\r\n for(f; f < slen; f++){\r\n const scol = strpdcols[f]\r\n if(!fincols.includes(scol))\r\n fincols.push(scol) \r\n }\r\n return fincols\r\n }\r\n\r\n setLastRowIndex() {\r\n const realMax = this.dataTableService.currFilData.length - 1\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const wannabeMax = (this.rows.length - 1) + Math.floor(this.aboveHgt()/defNum)\r\n this.lastElRowIndex = Math.min(wannabeMax, realMax)\r\n return this.lastElRowIndex;\r\n }\r\n\r\n buildInitUiDataTable(data: any[], color1?: any, color2?: any) {\r\n try{\r\n const cols = Object.keys(data[0])\r\n let i = 0; let n = 0; \r\n const len = data.length;\r\n const colLen = cols.length\r\n this.maxCols = this.setMaxCols()\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const init = Math.max(this.dataTableService.dTblHeight/defNum);\r\n this.dataTableService.useColWid = Math.ceil((this.dataTableBody.nativeElement.getBoundingClientRect().width-16)/Math.min(colLen, this.maxCols)) + \"px\"\r\n for(i; i < colLen; i++){\r\n this.columnHeaders.push({ column: cols[i], width: this.dataTableService.useColWid, hideMinCol: false, freeze: false, minimized: false, dataType: this.dataTableService.figureFilterType(cols[i]) })\r\n if(i < this.maxCols)\r\n this.dataTableService.visibleCols.push(cols[i])\r\n }\r\n this.columnNames = this.columnHeaders.map( c => c.column)\r\n const initVisCols = cols.filter( (c, ind) => ind <= (this.maxCols+1) )\r\n const addCell = (text: any, prop: string | null, row: DataRow | null, indx: number) => {\r\n if(prop && row){\r\n const notNum = (this.dataTableService.figureFilterType(prop) != \"number\" || /(year|yr|fy)/g.test(prop.toLocaleLowerCase())) ? true : false\r\n const useTxt = this.dataTableService.figureCellText(text, notNum, this.dataTableService.dataFilSrtTracker[prop][\"colCellSymbol\"])\r\n const colStyle = this.dataTableService.getColumnStyle(prop)\r\n row.cells?.push({\r\n column: prop,\r\n freeze: false,\r\n minimized: false,\r\n rawText: text,\r\n visible: initVisCols.indexOf(prop) > -1,\r\n width: this.dataTableService.useColWid,\r\n editable: useTxt.prop === \"textContent\" ? this.editable : false,\r\n dataType: this.dataTableService.figureFilterType(prop),\r\n text: (useTxt.prop === \"textContent\" ? useTxt.value : \"\"),\r\n html: (useTxt.prop !== \"textContent\" ? useTxt.value : \"\"),\r\n specialColClass: (colStyle ? (colStyle + this.common.elifyCol(useTxt.value)) : \"\"),\r\n })\r\n this.dataTableService.dataFilSrtTracker[prop].colWidth = this.dataTableService.useColWid\r\n }\r\n\r\n if(row && prop && row.cells && row.cells.length === 1)\r\n this.dtChecks.push(indx)\r\n }\r\n this.useRowWid = this.getAllColWidth(colLen) + \"px\"\r\n const limit = Math.min(init, len)\r\n for(n; n < limit; n++){\r\n this.rows.push({ id: \"dataTableRow\" + n, index: n, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt })\r\n let k = 0\r\n for(k; k < colLen; k++)\r\n addCell(data[n][cols[k]], cols[k], this.rows[n], n)\r\n this.dataTableService.currMapping[n] = n\r\n }\r\n this.setLastRowIndex()\r\n this.paginatorReady = true;\r\n this.handleTheme(color1, color2)\r\n this.handleColAnyDDFilters(data, cols)\r\n setTimeout( () => { \r\n this.testHideMinBtn() \r\n this.setColHeaderHgt()\r\n this.setHoldingCheckCls()\r\n this.setRowSelChecksPlacement()\r\n this.dataTableService.setTblBounds()\r\n })\r\n setTimeout( () => { \r\n this.dataTableService.setIdealColumnWidth.next(true)\r\n if(len > init){\r\n let total = 0\r\n let z = this.lastElRowIndex + 1\r\n for(z; z < len; z++){\r\n total += 1\r\n this.dataTableService.currMapping[z] = z\r\n }\r\n this.belowHgt.set(total*defNum)\r\n setTimeout( () => { if(this.dataTableBody) {this.dataTableBody.nativeElement.scrollBy(0, 1); this.dataTableBody.nativeElement.scrollBy(0, -1)} })\r\n }\r\n \r\n this.setColsOnVisScreen()\r\n }, 250)\r\n this.getPrimaryKey(cols)\r\n } catch(e) {} \r\n }\r\n\r\n getPrimaryKey(cols: string[]): string {\r\n let i = 0\r\n const len = cols.length\r\n if(this.primaryKey){//means they set 1 manually\r\n const colData = this.dataTableService.mainData.map( (d) => d[this.primaryKey] )\r\n if(colData.length && !colData.some( (c) => !c )){\r\n const map = new Set(colData)\r\n if(map.size === this.dataTableService.mainDataLen){\r\n this.dataTableService.primaryKey = this.primaryKey;\r\n return this.dataTableService.primaryKey;//they set a good one\r\n }\r\n }\r\n }\r\n for(i; i < len; i++){\r\n const col = cols[i]\r\n if(this.common.idCol(col)){\r\n const colData = this.dataTableService.mainData.map( d => d[col])\r\n if(colData && !colData.some( c => !c)){//no null vals\r\n const map = new Set(colData)\r\n if(map.size === this.dataTableService.mainDataLen){//all unique vals\r\n this.dataTableService.primaryKey = col\r\n return this.dataTableService.primaryKey\r\n }\r\n }\r\n }\r\n }\r\n return \"\"\r\n }\r\n\r\n handleColAnyDDFilters(data: any[], cols: string[]) {\r\n let i = 0;\r\n let cgb: string[] = []\r\n const len = cols.length\r\n const dLen = data.length\r\n for(i; i < len; i++){\r\n const col = cols[i]\r\n const colData = data.map( (d) => (d && typeof d === \"object\") ? d[col] : d )\r\n const yearCol = /(year|yr|fy)/g.test(col?.toLocaleLowerCase())\r\n const allNumData = colData.every( (d) => !d || (d && typeof d === \"number\") )\r\n const boolData = colData.every( (d) => !d || (d && typeof d === \"boolean\") )\r\n if(colData.every( (d) => !d ))\r\n continue;\r\n let bitData;\r\n if(allNumData)\r\n bitData = colData.every( (d) => !d || d === 1 || d === 0 )\r\n if(allNumData && !yearCol && !bitData)//num data\r\n continue\r\n const dSet =new Set(colData)\r\n if(dSet.size >= colData.filter( (d) => !!d ).length)\r\n continue//means values are all unique so likely not dropdown material\r\n let arrFrmSet: any[] = []\r\n dSet.forEach( (v: any) => { arrFrmSet.push(v) }) \r\n const doSels = dLen < 100 ? 2 : ((dLen >= 100 && dLen < 500) ? 10 : 15)\r\n const cantDoDD = arrFrmSet.some( (a) => (a && a.length > 40) )\r\n if(!cantDoDD && ((boolData || bitData) || (arrFrmSet.filter( (a) => !!a ).length > 0 && colData.every( (d) => !d || typeof d === \"string\" )))){\r\n if(arrFrmSet.length > 1 && arrFrmSet.length <= doSels){\r\n this.swapColFilterToSelect(col, arrFrmSet.filter( (v: any) => (!!v && this.dataTableService.badStrings.indexOf(v) < 0) ))\r\n cgb.push(col)\r\n }\r\n }\r\n }\r\n this.canGroupBy.set([...cgb])\r\n }\r\n\r\n swapColFilterToSelect(col: string, vals: any[]) {\r\n let o = 0;\r\n vals = vals?.sort()\r\n const oLen = vals?.length\r\n this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"] = []\r\n this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"].push({ value: \"(Select All)\", checked: true })\r\n for(o; o < oLen; o++)\r\n this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"].push({ value: vals[o], checked: true })\r\n this.dataTableService.dataFilSrtTracker[col].comparator = \"Equals\"\r\n }\r\n\r\n handleFilFocus(event: any) {\r\n if(!event.select)\r\n return this.killSelFilOpts(true)\r\n this.buildSelFilOptions(event)\r\n }\r\n\r\n buildSelFilOptions(event: any) {\r\n const target = event.target\r\n const col: string = event.col;\r\n const esfd = document.getElementsByClassName(\"selfil-opt-\" + this.currDDFilter)[0]\r\n if(this.currDDFilter){\r\n target.blur()\r\n this.currFilOpts = []\r\n this.currDDFilter = \"\"\r\n this.listenToWindowCurrFil = false\r\n return this.listenToWindowCurrFil\r\n }\r\n if(esfd){\r\n this.currFilOpts = []\r\n this.listenToWindowCurrFil = false\r\n }\r\n let i = 0\r\n const rel = this.selFilContainer.nativeElement\r\n this.currDDFilter = this.common.elifyCol(col)\r\n if(this.common.goodLs()){\r\n const len = this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"].length\r\n for(i; i < len; i++)\r\n this.currFilOpts.push(this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"][i])\r\n }\r\n const rbds = rel.getBoundingClientRect()\r\n const ibds = target.getBoundingClientRect()\r\n this.ddFilStyle = {'top': Math.ceil((ibds.bottom - rbds.top)+5) + \"px\", 'left': Math.ceil(ibds.left - rbds.left) + \"px\"}\r\n return target.blur()\r\n }\r\n\r\n handleWinClickOnSelFil() {\r\n this.listenToWindowCurrFil = false;\r\n setTimeout( () => { this.listenToWindowCurrFil = true })\r\n }\r\n\r\n killSelFilOpts(skipBlur?: boolean) {\r\n this.currFilOpts = []\r\n this.ddFilStyle = {}\r\n this.currDDFilter = \"\"\r\n if(!skipBlur){\r\n try{ \r\n const actEl = document.activeElement\r\n if(actEl && actEl instanceof HTMLInputElement)\r\n actEl.blur()\r\n }catch(e){}\r\n }\r\n this.listenToWindowCurrFil = false\r\n }\r\n\r\n handleMultiSelFilter(elCol: string, value: any, checked: boolean) {\r\n let checkAll: any;\r\n const sAll = \"(Select All)\";\r\n const col= this.common.replaceUniSep(elCol)\r\n if(col && this.dataTableService.dataFilSrtTracker[col] && !this.isMultiFiltering() && \r\n this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"]){\r\n this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"] = this.dataTableService.dataFilSrtTracker[col][\"selDDVals\"].map( (v: any) => {\r\n if(value === sAll){\r\n v.checked = checked\r\n checkAll = checked ? \"true\" : \"false\";\r\n } else {\r\n const tarChkd = checked;\r\n if((v.value === value) || (!v.value && !value))\r\n v.checked = tarChkd\r\n if(!tarChkd && v.value === sAll)\r\n v.checked = false\r\n }\r\n return v\r\n })\r\n if(checkAll && typeof checkAll === \"string\"){\r\n this.currFilOpts = this.currFilOpts.map( o => {\r\n o.checked = checkAll === \"true\" ? true : false;\r\n return o;\r\n })\r\n\r\n }\r\n this.isMultiFiltering.set(true);\r\n this.execFilter(col, \"\")\r\n setTimeout( () => { this.isMultiFiltering.set(false) })\r\n this.topLevelFilter = \"\"\r\n }\r\n }\r\n\r\n execFilter(field: any, val: any) {\r\n this.dataTableService.isFiltering.set(true)\r\n this.dataTableService.dataFilSrtTracker[field].filter = val || \"\"\r\n this.dataTableService.columnFilter(this.dataTableService.mainData, field, this.dataTableService.dataFilSrtTracker, this.dataTableService.sortOrder, true)\r\n this.renderCurrData(false, field)\r\n setTimeout( () => { this.dataTableService.isFiltering.set(false) }, 500)\r\n }\r\n\r\n tFilTO: any = null;\r\n\r\n topFilterOnKeyUp(event: any) {\r\n if(event && !this.common.keyCanSearch(event))\r\n return;\r\n if(!this.dataTableService.isFiltering()){\r\n this.dataTableService.isFiltering.set(true)\r\n this.dataTableService.easyFilter((this.topLevelFilter || \"\"), this.dataTableService.mainData, this.dataTableService.sortOrder)\r\n if(!this.topLevelFilter && !this.dataTableService.arefilSrtTrkPropsDefault()){\r\n let altField = Object.keys(this.dataTableService.mainData[0])[0]\r\n this.dataTableService.columnFilter(this.dataTableService.mainData, altField, this.dataTableService.dataFilSrtTracker, this.dataTableService.sortOrder, false)\r\n }\r\n this.renderCurrData(false, \"topLevelDataFilter\")\r\n if(this.tFilTO){\r\n clearTimeout(this.tFilTO)\r\n this.tFilTO = null\r\n }\r\n this.tFilTO = setTimeout( () => { \r\n this.dataTableService.isFiltering.set(false)\r\n const buildUpLen = this.filterBuildUp.length\r\n if(buildUpLen){\r\n this.topFilterOnKeyUp(null)\r\n this.filterBuildUp = []\r\n } \r\n }, 500)\r\n } else {\r\n if(this.filterBuildUp.indexOf(this.topLevelFilter) < 0)\r\n this.filterBuildUp.push(this.topLevelFilter)\r\n }\r\n }\r\n\r\n setHorizPos(event: any) {\r\n const head = this.dataTableHeaders.nativeElement\r\n if(event > 0)\r\n head.style.marginLeft = -event + \"px\"\r\n else\r\n head.style.removeProperty(\"margin-left\")\r\n this.horizRest.set(event)\r\n }\r\n\r\n blurContEd() {\r\n const actEl = <HTMLElement>document.activeElement\r\n if(actEl && actEl.getAttribute(\"contenteditable\"))\r\n actEl.blur()\r\n }\r\n\r\n setColsOnVisScreen() {\r\n const lftPlus = this.rowNumbers ? 75 : 0//ctrl+f \"--row-num-width\" in css\r\n let i = 0\r\n let vCols = []\r\n const useCols = this.columnHeaders.filter( c => !c.minimized).map( c => c.column)\r\n const len = useCols.length\r\n for(i; i < len; i++){\r\n const col = useCols[i]\r\n const el = document.getElementById(\"columnHeader\" + this.common.elifyCol(col))\r\n if(el){\r\n const elbds = el.getBoundingClientRect()\r\n if(elbds.left >= (this.dataTableService.tblLeft-lftPlus) && elbds.right < this.dataTableService.tblRight)\r\n vCols.push(col)\r\n }\r\n }\r\n this.dataTableService.visibleCols = [...vCols]\r\n }\r\n \r\n handleScroll(event: any) {\r\n if(this.currGroupValues().length || this.dataTableService.showCharts())\r\n return;\r\n const top = event.target.scrollTop\r\n const left = event.target.scrollLeft\r\n /*horiz scroll*/\r\n if(left !== this.horizRest())\r\n requestAnimationFrame( () => { this.execHorizScroll(left) })\r\n /*horiz scroll*/\r\n /*vert scroll*/\r\n if(top === this.verticalRest || this.lockVScroll){\r\n this.isScrolling = false\r\n if(!this.dataTableService.autoScrollOnEdit)\r\n this.clearValidatedEdit();\r\n return this.setRowSelChecksPlacement()\r\n }\r\n this.isScrolling = true\r\n requestAnimationFrame( () => { this.execVertScroll(top) })\r\n /*vert scroll*/\r\n if(top%2===0)\r\n this.clearValidatedEdit()\r\n }\r\n\r\n execHorizScroll(left: number) {\r\n const head = this.dataTableHeaders.nativeElement\r\n if(left > 0)\r\n head.style.marginLeft = -left + \"px\"\r\n else\r\n head.style.removeProperty(\"margin-left\")\r\n this.setColsOnVisScreen()\r\n this.execHorizBodyScroll()\r\n this.horizRest.set(left)\r\n this.setColsOnVisScreen()\r\n }\r\n\r\n execVertScroll(top: number) {\r\n if(top >= this.verticalRest){\r\n this.execVertScrollDown(this.columnNames, this.columnNames.length)\r\n this.clearAboveFoldRows()\r\n this.scrollDir = \"down\"\r\n } else {//scrolling back up\r\n this.execVertScrollUp(this.columnNames, this.columnNames.length)\r\n this.clearBelowFoldRows()\r\n this.scrollDir = \"up\"\r\n }\r\n this.verticalRest = top;\r\n if(this.rowNumbers && top%2 === 0)\r\n this.setRowNumbers()\r\n }\r\n\r\n scrollDir: string = \"down\"\r\n\r\n handleScrollEnd(): any {\r\n this.isScrolling = false\r\n this.lockVScroll = false\r\n if(this.currGroupValues().length)\r\n return setTimeout( () => { this.dataTableService.gridScrollEndWhileGrouped.next(true) })\r\n if(this.dataTableService.showCharts())\r\n return;\r\n setTimeout( () => { \r\n this.dataTableService.autoScrollOnEdit = false\r\n this.setColsOnVisScreen()\r\n this.setRowSelChecksPlacement()\r\n if(this.listenToCellDraggerMouseMove)\r\n this.settleCellDragger()\r\n setTimeout( () => { this.cleanUpPossibles() })\r\n })\r\n }\r\n\r\n addCell(text: any, prop: string, visible: boolean): DataCell {\r\n const useProp = this.dataTableService.dataFilSrtTracker[prop]\r\n const notNum = (this.dataTableService.figureFilterType(prop) != \"number\" || /(year|yr|fy)/g.test(prop.toLocaleLowerCase())) ? true : false\r\n const useTxt = this.dataTableService.figureCellText(text, notNum, useProp[\"colCellSymbol\"])\r\n const colStyle = this.dataTableService.getColumnStyle(prop)\r\n return {\r\n column: prop,\r\n rawText: text,\r\n editable: useTxt.prop !== \"textContent\" ? false : this.editable,\r\n dataType: this.dataTableService.figureFilterType(prop),\r\n freeze: useProp.freeze,\r\n visible: visible,\r\n minimized: useProp.minimize,\r\n width: useProp.colWidth || this.dataTableService.useColWid,\r\n text: useTxt.prop === \"textContent\" ? useTxt.value : \"\",\r\n html: useTxt.prop !== \"textContent\" ? useTxt.value : \"\",\r\n specialColClass: (colStyle ? (colStyle + this.common.elifyCol(useTxt.value)) : \"\"),\r\n }\r\n }\r\n\r\n execHorizBodyScroll() {\r\n const allcols = this.getAllColsAtRuntime(null);\r\n let i = 0;\r\n const clen = allcols.length\r\n const rlen = this.rows.length\r\n const lftPlus = this.rowNumbers ? 75 : 0//ctrl+f \"--row-num-width\" in css\r\n let positions: any = []\r\n const row0 = this.rows[0]\r\n for(let p = (clen-1); p >= 0; p--){\r\n const col = allcols[p]\r\n const elcol = this.common.elifyCol(col)\r\n const head = document.getElementById(\"columnHeader\" + elcol)\r\n if(head){\r\n const bds = head.getBoundingClientRect()\r\n if(bds.left > this.dataTableService.tblRight)\r\n continue\r\n const cell = row0?.cells?.find( c => c.column === col)\r\n if(cell){\r\n if(!cell.visible && (this.dataTableService.visibleCols.indexOf(col) > -1 || (bds.left >= (this.dataTableService.tblLeft-lftPlus) && bds.right < (this.dataTableService.tblRight+lftPlus))))//visible\r\n positions.push({ col: col, vis: true })\r\n if(cell.visible && this.dataTableService.visibleCols.indexOf(col) < 0 && !positions.find( (p: any) => p.col === col))\r\n positions.push({ col: col, vis: false })\r\n }\r\n }\r\n }\r\n const plen = positions.length\r\n for(i; i < rlen; i++){\r\n let c = 0\r\n const row = this.rows[i]\r\n if(row){\r\n for(c; c < plen; c++){\r\n const pos = positions[c]\r\n if(pos){\r\n if(pos.vis){\r\n row.cells = row.cells?.map( c => {\r\n if(c.column === pos.col)\r\n return this.addCell(c.rawText, pos.col, true)\r\n return c\r\n })\r\n } else {\r\n const rCell: DataCell | undefined = row.cells?.find( c => c.column === pos.col)\r\n if(rCell){\r\n rCell.visible = false\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n setTimeout( () => { \r\n this.dataTableService.setIdealColumnWidth.next(true); \r\n this.setColsOnVisScreen() \r\n setTimeout( () => { this.cleanUpPossibles() })\r\n }, 50)\r\n }\r\n\r\n cleanUpPossibles() {\r\n let i = 0\r\n const len = this.rows.length\r\n const lftPlus = this.rowNumbers ? 75 : 0//ctrl+f \"--row-num-width\" in css\r\n for(i; i < len; i++){\r\n const row = this.rows[i]\r\n if(row){\r\n let p = 0\r\n if(row.cells?.length){\r\n const rclen = row.cells.length\r\n for(p; p < rclen; p++){\r\n const cell = row.cells[p]\r\n if(cell){\r\n const ccol = cell.column\r\n const el = document.querySelector(\"#\" + row.id + \" .data-cell-\" + this.common.elifyCol(ccol))\r\n if((el && el.getBoundingClientRect().right < (this.dataTableService.tblLeft-lftPlus)) && (!el?.innerHTML || !el.getAttribute(\"style\"))){\r\n row.cells[p].visible = true\r\n row.cells[p] = {...this.addCell(cell.rawText, ccol, true)}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n execVertScrollDown(cols: string[], colLen: number) {\r\n let canAdd = 0\r\n const actvCols = this.columnHeaders.map(c => c.column)\r\n const vlen = this.dataTableService.visibleCols.length\r\n const lastVisInd = actvCols.indexOf(this.dataTableService.visibleCols[(vlen-1)]) + 1\r\n const bel = this.belowArea.nativeElement\r\n const bbds = bel.getBoundingClientRect()\r\n const rTop = (bbds.top - this.verticalRest)\r\n const gap = this.dataTableService.tblBot - rTop\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n if(gap > 0){\r\n let h = 0\r\n let z = this.lastElRowIndex + 1\r\n const last = document.getElementById(\"dataTableRow\" + this.lastElRowIndex)\r\n if(last && this.dataTableService.elIsBelowFold(last, this.dataTableService.tblBot))\r\n return;\r\n let bhToSub = 0\r\n let ahToAdd = 0\r\n const rowsInGap = Math.ceil(gap/defNum)\r\n canAdd = z+(rowsInGap)\r\n let chksToAdd = []\r\n let rowsToAdd: DataRow[] = []\r\n const goTo = Math.min(this.dataTableService.currFilData.length, canAdd)\r\n for(z; z < goTo; z++){\r\n const wldBeElTop = bbds.top + (defNum*h);\r\n const wldBeElBot = wldBeElTop+defNum\r\n if(wldBeElBot < this.dataTableService.tblTop){\r\n ahToAdd += defNum\r\n bhToSub += defNum\r\n } else {\r\n if(wldBeElTop <= this.dataTableService.tblBot){\r\n const item = this.dataTableService.currFilData[z]\r\n const index = this.dataTableService.currMapping[z] || this.dataTableService.findObjIndxInData(item)\r\n if(index > -1 && !this.rows.find( r => r.index === index)){\r\n const nRow: DataRow = { id: \"dataTableRow\" + index, index: index, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt }\r\n let cells: DataCell[] = []\r\n for(let k = (colLen-1); k >= 0; k--){\r\n const col = cols[k]\r\n const cell = this.addCell(item[col], col, (k <= lastVisInd))\r\n if(typeof cell !== \"string\")\r\n cells.unshift(cell)\r\n }\r\n nRow.cells = [...cells]\r\n chksToAdd.push(index)\r\n rowsToAdd.push(nRow)\r\n bhToSub += defNum\r\n }\r\n }\r\n }\r\n h += 1\r\n }\r\n this.rows = [...this.rows, ...rowsToAdd]\r\n if(bhToSub)\r\n this.belowHgt.set(Math.max(0, this.belowHgt() - bhToSub))\r\n if(chksToAdd.length)\r\n this.dtChecks= [...this.dtChecks, ...chksToAdd]\r\n if(ahToAdd)\r\n this.aboveHgt.set(this.aboveHgt() + ahToAdd)\r\n this.setLastRowIndex()\r\n }\r\n }\r\n\r\n execVertScrollUp(cols: string[], colLen: number) {\r\n const actvCols = this.columnHeaders.map(c => c.column)\r\n const vlen = this.dataTableService.visibleCols.length\r\n const lastVisInd = actvCols.indexOf(this.dataTableService.visibleCols[(vlen-1)]) + 1;\r\n const ael = this.aboveArea.nativeElement\r\n const abds = ael.getBoundingClientRect()\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const rbot = abds.bottom\r\n const gap = rbot - (this.dataTableService.tblTop)\r\n if(gap > 0){\r\n let h = 0\r\n const rlen = this.rows.length\r\n let z = (this.lastElRowIndex - rlen)\r\n if(z < 0)\r\n return\r\n let bhToAdd = 0\r\n let ahToSub = 0\r\n const rowsInGap = Math.ceil(gap/defNum)\r\n const min = Math.max(0, (z-rowsInGap))\r\n for(z; z >= min; z--){\r\n const wldBeElBot = rbot - (defNum*h);\r\n const wldBeElTop = wldBeElBot-defNum\r\n if(wldBeElTop > this.dataTableService.tblBot){\r\n bhToAdd += defNum\r\n ahToSub += defNum\r\n } else {\r\n if(wldBeElBot > this.dataTableService.tblTop){\r\n const item = this.dataTableService.currFilData[z]\r\n const index = this.dataTableService.currMapping[z] || this.dataTableService.findObjIndxInData(item)\r\n if(index > -1){\r\n let k = 0\r\n const nRow: DataRow = { id: \"dataTableRow\" + index, index: index, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt }\r\n let cells: DataCell[] = []\r\n for(k; k < colLen; k++){\r\n const col = cols[k]\r\n const cell = this.addCell(item[col], col, (k <= lastVisInd))\r\n if(typeof cell !== \"string\")\r\n cells.push(cell)\r\n }\r\n nRow.cells = [...cells]\r\n this.rows = [nRow, ...this.rows]\r\n this.dtChecks = [index, ...this.dtChecks]\r\n ahToSub += defNum\r\n }\r\n }\r\n }\r\n h += 1\r\n }\r\n if(ahToSub)\r\n this.aboveHgt.set(Math.max(0, (this.aboveHgt() - ahToSub)))\r\n if(bhToAdd)\r\n this.belowHgt.set(this.belowHgt() + bhToAdd)\r\n }\r\n }\r\n\r\n clearAboveFoldRows() {\r\n const els = this.rows.filter( r => this.dataTableService.elIsAboveFold(document.getElementById(r.id), (this.dataTableService.tblTop)))\r\n const justids = els.map( e => e.id)\r\n const justindx = els.map( e => e.index)\r\n const changes = justids.length\r\n if(changes > 0){\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n this.rows = this.rows.filter( r => justids.indexOf(r.id) < 0)\r\n this.dtChecks = this.dtChecks.filter( c => justindx.indexOf(c) < 0)\r\n const item = this.dataTableService.mainData[(this.rows[0]?.index || -1)]\r\n if(item)\r\n this.aboveHgt.set(Math.max(0, this.dataTableService.findObjIndxInData(item, this.dataTableService.currFilData)*defNum))\r\n }\r\n }\r\n\r\n clearBelowFoldRows() {\r\n const els = this.rows.filter( r => this.dataTableService.elIsBelowFold(document.getElementById(r.id), this.dataTableService.tblBot))\r\n const justids = els.map( e => e.id)\r\n const justindx = els.map( e => e.index)\r\n let changes = justids.length\r\n if(changes > 0){\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n this.rows = this.rows.filter( r => justids.indexOf(r.id) < 0)\r\n this.dtChecks = this.dtChecks.filter( c => justindx.indexOf(c) < 0)\r\n const rlen = this.rows.length\r\n const item = this.dataTableService.mainData[(this.rows[(rlen-1)]?.index || -1)]\r\n if(item)\r\n this.belowHgt.set(Math.max(0, ((this.dataTableService.currFilData.length-1)-this.dataTableService.findObjIndxInData(item, this.dataTableService.currFilData))*defNum))\r\n this.setLastRowIndex()\r\n }\r\n }\r\n\r\n jumpToRow(row: number) {\r\n if(this.dataTableBody){\r\n const ind = row - 1\r\n const tbl = this.dataTableBody.nativeElement\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n tbl.scrollTop = ind*defNum;\r\n setTimeout( () => { this.setRowSelChecksPlacement() })\r\n }\r\n }\r\n\r\n scrollToRowGroup(rClass: string) {\r\n const el = document.getElementsByClassName(rClass)[0]\r\n if(el){\r\n const dtb = this.dataTableBody.nativeElement\r\n const dttop = dtb.getBoundingClientRect().top - dtb.scrollTop\r\n const etop = el.getBoundingClientRect().top\r\n this.dataTableBody.nativeElement.scrollTop = etop - dttop\r\n }\r\n }\r\n\r\n valEditFocusTo: number|null = null;\r\n\r\n handleValidatedCellEditFocus(cellData: any) {//{type: this.cell.dataType, value: this.cell.rawText}\r\n this.validatedEditType = cellData.type\r\n if(this.valEditFocusTo){\r\n clearTimeout(this.valEditFocusTo)\r\n this.valEditFocusTo = null\r\n }\r\n this.valEditFocusTo = setTimeout( () => {\r\n const rel = this.validatedEdit.nativeElement\r\n let el;\r\n const elD = <HTMLDivElement>document.querySelector(\".relly.edit-input\")\r\n if(!elD)//look for the one that's relly (relative) positioned first\r\n el = <HTMLInputElement>document.getElementsByClassName(\"edit-input\")[0]\r\n const cell = document.querySelector(\"#dataTableRow\" + this.dataTableService.currEditIndex + \" .data-cell-\" + this.common.elifyCol(this.dataTableService.currEditCol))\r\n if((el || elD) && cell){\r\n const rbds = rel.getBoundingClientRect()\r\n const cbds = cell.getBoundingClientRect();\r\n (el || elD).style.top = (cellData.type === \"text\" ? (Math.ceil(cbds.bottom-rbds.top) + 1) : (Math.ceil(cbds.top-rbds.top) + 1)) + \"px\";\r\n (el || elD).style.left = (Math.ceil(cbds.left-rbds.left) + 1) + \"px\";\r\n (el || elD).style.width = (cbds.width-2) + \"px\";\r\n (el || elD).style.height = (cbds.height-2) + \"px\";\r\n if(el){\r\n el.value = cellData.type === \"date\" ? new Date(cellData.value)?.toISOString().split(\"T\")[0] : cellData.value;\r\n setTimeout( () => { el.focus() })\r\n }\r\n if(elD){//text w/ limited values\r\n this.currSelEditOpts = this.dataTableService.dataFilSrtTracker[this.dataTableService.currEditCol][\"selDDVals\"]?.\r\n filter( (g: any) => g.value !== \"(Select All)\").map( (s: any) => ({ ...s, selected: s.value === cellData.value }))\r\n }\r\n rel.classList.remove(\"invisible\")\r\n this.fCellDragger.nativeElement.style.left = (Math.ceil(cbds.left-rbds.left) + cbds.width - 4) + \"px\";\r\n this.fCellDragger.nativeElement.style.top = (Math.ceil(cbds.bottom-rbds.top) - 4) + \"px\"\r\n }\r\n }, 10)\r\n }\r\n\r\n clearFCellDragger() {\r\n if(!this.dataTableService.autoScrollOnEdit){\r\n this.fCellDragger.nativeElement.style.removeProperty(\"top\")\r\n this.fCellDragger.nativeElement.style.removeProperty(\"left\")\r\n }\r\n }\r\n\r\n clearValidatedEdit(e?: any, clearDrag?: boolean) {\r\n if(this.listenToCellDraggerMouseMove)\r\n return;\r\n if((e && e.type === \"blur\") || (e && e.type === \"focus\" && e.relatedTarget?.id === \"fCellDragger\")){\r\n setTimeout( () => { this.handleCellDraggerInit() })\r\n } else {\r\n this.execValClear(clearDrag)\r\n }\r\n }\r\n\r\n execValClear(clearDrag?: boolean) {\r\n this.blurContEd()\r\n this.dataTableService.currEditIndex = -1\r\n this.dataTableService.currEditCol = \"\"\r\n this.validatedEditType = \"\"\r\n this.currSelEditOpts = []\r\n this.validatedEdit.nativeElement.classList.add(\"invisible\")\r\n if(clearDrag)\r\n this.clearCellDEdits()\r\n setTimeout( () => { this.dataTableService.clearAllFocused() })\r\n }\r\n\r\n handleDraggerMU(e: any) {\r\n if(e && e.target && e.target.id && e.target.id.startsWith(\"selEdit\"))\r\n return;\r\n this.listenToCellDraggerMouseUp = false\r\n if(this.listenToCellDraggerMouseMove){\r\n this.listenToCellDraggerMouseMove = false\r\n this.clearCellDEdits()\r\n }\r\n }\r\n\r\n handleDraggerKD(e: any) {\r\n const row = document.getElementById(\"dataTableRow\" + this.dataTableService.currEditIndex)\r\n if(row && this.dataTableService.currEditCol){\r\n let targRow;\r\n let bds;\r\n if(e && this.common.isDownKey(e))\r\n targRow = row.nextElementSibling\r\n\r\n if(e && this.common.isUpKey(e))\r\n targRow = row.previousElementSibling\r\n if(targRow){\r\n bds = targRow.getBoundingClientRect()\r\n this.listenToCellDraggerMouseMove = true\r\n const execDragEOnDK = (e: any) => {\r\n this.handleCellDraggerEdit(e)\r\n }\r\n targRow.addEventListener(\"mousemove\", execDragEOnDK)\r\n const mouseEvent = new MouseEvent('mousemove', {\r\n view: window,\r\n bubbles: false,\r\n cancelable: false,\r\n clientX: bds.right, // X-coordinate relative to the viewport\r\n clientY: bds.bottom, // Y-coordinate relative to the viewport\r\n });\r\n targRow.dispatchEvent(mouseEvent)\r\n targRow.removeEventListener(\"mousemove\", execDragEOnDK)\r\n setTimeout( () => {this.listenToCellDraggerMouseMove = false})\r\n if(e.target.getBoundingClientRect().bottom > (this.dataTableService.tblBot-100))\r\n this.dataTableBody.nativeElement.scrollBy(0, this.dataTableService.dTblHeight/2)\r\n }\r\n }\r\n }\r\n\r\n clearCellDEdits() {\r\n this.clearFCellDragger()\r\n this.dataTableService.clearDCellFcsd()\r\n this.clearDragEditFlag()\r\n }\r\n\r\n clearDragEditFlag() {\r\n this.rows = this.rows.map( r => {\r\n if(r.editedInDrag)\r\n r.editedInDrag = false\r\n return r\r\n })\r\n }\r\n\r\n handleCellDraggerInit() {\r\n const actEl = document.activeElement\r\n if(actEl && actEl.id === \"fCellDragger\"){\r\n this.focusCellDragger()\r\n } else {\r\n if(!actEl || (actEl && !/data-cell/g.test(actEl?.className)))\r\n this.execValClear() \r\n }\r\n }\r\n\r\n focusCellDragger() {\r\n this.currSelEditOpts = []\r\n this.validatedEditType = \"\"\r\n this.validatedEdit.nativeElement.classList.add(\"invisible\")\r\n const cell= document.querySelector(\"#dataTableRow\" + this.dataTableService.currEditIndex + \" .data-cell-\" + this.common.elifyCol(this.dataTableService.currEditCol))\r\n if(cell)\r\n cell.classList.add(\"dragger-cell-focused\")\r\n this.listenToCellDraggerMouseUp = true\r\n }\r\n\r\n focusCellDraggerFromMouseDown() {\r\n this.listenToCellDraggerMouseMove = true\r\n }\r\n\r\n handleFDragTab(e: any) {\r\n if(e && this.common.isTabKey(e)){\r\n const cell = document.getElementsByClassName(\"dragger-cell-focused\")[0]\r\n const nxtCell: HTMLElement = <HTMLElement>cell.parentElement?.nextElementSibling?.firstElementChild\r\n if(cell && nxtCell){\r\n this.dataTableService.autoScrollOnEdit = true;\r\n setTimeout( () => { nxtCell.focus() })\r\n }\r\n }\r\n }\r\n\r\n settleCellDragger() {\r\n const els = document.getElementsByClassName(\"dragger-cell-focused\")\r\n const len = els.length\r\n const cell = this.scrollDir === \"down\" ? els[(len-1)] : els[0];\r\n if(cell){\r\n const fCellDragger = <HTMLElement>document.getElementsByClassName(\"focused-cell-dragger\")[0]\r\n const par = fCellDragger?.parentElement\r\n if(fCellDragger && par){\r\n const cbds = cell.getBoundingClientRect()\r\n const rbds = par.getBoundingClientRect()\r\n fCellDragger.style.left = (Math.ceil(cbds.left-rbds.left) + cbds.width - 4) + \"px\";\r\n fCellDragger.style.top = (Math.ceil(cbds.bottom-rbds.top) - 4) + \"px\";\r\n }\r\n }\r\n }\r\n\r\n handleCellDraggerEdit(e: any) {\r\n if(e && e.target){\r\n let dragId: number = -1;\r\n const targ = e.target\r\n try{\r\n if(/dataTableRow/g.test(targ.id)){\r\n dragId = parseInt(targ.id.replace(\"dataTableRow\", \"\"))\r\n } else {\r\n if(/data-cell/g.test(targ.className))\r\n dragId = parseInt(targ.getAttribute(\"data-index\").replace(\"dataTableRow\", \"\"))\r\n }\r\n let cell;\r\n const row = this.rows.find( r => r.index === dragId)\r\n const els = document.getElementsByClassName(\"dragger-cell-focused\")\r\n if(dragId > -1 && (row && !row.editedInDrag)){\r\n const item = this.dataTableService.mainData[this.dataTableService.currEditIndex]\r\n const val = item[this.dataTableService.currEditCol]\r\n const currEInd = this.dataTableService.findObjIndxInData(item, this.dataTableService.currFilData)\r\n const currDrgInd = this.dataTableService.findObjIndxInData(this.dataTableService.mainData[dragId], this.dataTableService.currFilData)\r\n this.scrollDir = currDrgInd > currEInd ? \"down\" : \"up\";\r\n this.dataTableService.currEditIndex = dragId\r\n this.execCellEdit({ column: this.dataTableService.currEditCol, value: val }, true)\r\n row.editedInDrag = true\r\n cell = document.querySelector(\"#dataTableRow\" + dragId + \" .data-cell-\" + this.common.elifyCol(this.dataTableService.currEditCol)) \r\n }\r\n if(els.length > 1){\r\n const dir = this.scrollDir === \"down\" ? 1 : -1;\r\n const toScl = dir*(Math.ceil((e.offsetY || 20))/2)\r\n this.dataTableBody.nativeElement.scrollBy(0, toScl)\r\n }\r\n const fCellDragger = <HTMLElement>document.getElementsByClassName(\"focused-cell-dragger\")[0]\r\n const par = fCellDragger?.parentElement\r\n if(cell && fCellDragger && par){\r\n const cbds = cell.getBoundingClientRect()\r\n const rbds = par.getBoundingClientRect()\r\n fCellDragger.style.left = (Math.ceil(cbds.left-rbds.left) + cbds.width - 4) + \"px\";\r\n fCellDragger.style.top = (Math.ceil(cbds.bottom-rbds.top) - 4) + \"px\";\r\n }\r\n if(!cell){\r\n const len = els.length\r\n if(len){\r\n if(e.clientY > this.dataTableService.tblBot){\r\n cell = els[(len-1)]\r\n }\r\n if(e.clientY < this.dataTableService.tblTop){\r\n cell = els[0]\r\n }\r\n if(cell && fCellDragger && par){\r\n const cbds = cell.getBoundingClientRect()\r\n const rbds = par.getBoundingClientRect()\r\n fCellDragger.style.left = (Math.ceil(cbds.left-rbds.left) + cbds.width - 4) + \"px\";\r\n fCellDragger.style.top = (Math.ceil(cbds.bottom-rbds.top) - 4) + \"px\";\r\n }\r\n }\r\n }\r\n }catch(e){}\r\n }\r\n }\r\n\r\n validateRawText(text: string, col: string, dataType: string): string {\r\n const obj = this.dataTableService.dataFilSrtTracker[col]\r\n if(obj && obj.selDDVals){\r\n if(obj.selDDVals.map( (d: any) => d.value).includes(text))\r\n return text\r\n return \"\";\r\n }\r\n if(dataType === \"number\" && (!text || /[a-zA-Z \\/]/g.test(text)))\r\n return \"\"\r\n return text\r\n }\r\n\r\n execCellEdit(e: any, noBlur?: boolean, forceVal?: any/*from dropdown select, normally a string*/) {//{ column: this.cell.column, value: val }\r\n if(this.dataTableService.currEditIndex > -1){\r\n let cfDIdx;\r\n const valEl = <HTMLInputElement>document.getElementsByClassName(\"edit-input\")[0]\r\n let val = forceVal ? forceVal : (valEl ? valEl.value : e.value);\r\n if(val && !this.validateRawText(val, e.column, this.validatedEditType)){\r\n if(!noBlur)\r\n this.clearValidatedEdit(e)\r\n return;\r\n }\r\n if(val && typeof val === \"string\" && this.validatedEditType === \"date\")\r\n val = this.common.coerceDate(val)\r\n if(val && typeof val === \"string\" && this.validatedEditType === \"number\")\r\n val = /\\./g.test(val) ? parseFloat(val) : parseInt(val);\r\n const realProp: string = this.dataTableService.currEditCol || e.column;\r\n this.dataTableService.mainData[this.dataTableService.currEditIndex][realProp] = val;\r\n const item = this.dataTableService.mainData[this.dataTableService.currEditIndex]\r\n if(item){\r\n cfDIdx = this.dataTableService.findObjIndxInData(item, this.dataTableService.currFilData)\r\n if(cfDIdx > -1)\r\n this.dataTableService.currFilData[cfDIdx][realProp] = val\r\n }\r\n let cell;\r\n const row = this.rows.find( r => r.index === this.dataTableService.currEditIndex)\r\n if(row){\r\n cell = row.cells?.find( c => c.column === this.dataTableService.currEditCol || c.column === e.column)\r\n if(cell)\r\n cell.rawText = val\r\n }\r\n const dtType = this.dataTableService.figureFilterType(realProp)\r\n const notNum = (dtType != \"number\" || /(year|yr|fy)/g.test(realProp.toLocaleLowerCase())) ? true : false\r\n const useTxt = this.dataTableService.figureCellText(val, notNum);\r\n const cellEl = document.querySelector(\"#dataTableRow\" + this.dataTableService.currEditIndex + \" .data-cell-\" + this.common.elifyCol(realProp))\r\n if(cellEl){\r\n if(useTxt.prop === \"textContent\")\r\n cellEl.textContent = useTxt.value;\r\n else\r\n cellEl.innerHTML = useTxt.value;\r\n if(cell){\r\n cell.text = useTxt.prop === \"textContent\" ? useTxt.value : \"\"\r\n if(this.listenToCellDraggerMouseMove)\r\n cellEl.classList.add(\"dragger-cell-focused\")\r\n const colStyle = this.dataTableService.getColumnStyle(realProp)\r\n if(colStyle)\r\n cell.specialColClass = colStyle + this.common.elifyCol(useTxt.value)\r\n }\r\n }\r\n const rowKey = (this.dataTableService.primaryKey ? this.dataTableService.mainData[this.dataTableService.currEditIndex][this.dataTableService.primaryKey] : \r\n this.dataTableService.currEditIndex)\r\n const edit: CellEdit = {\r\n value: val,\r\n column: realProp,\r\n row: rowKey,\r\n }\r\n this.cellEdit.emit(edit)\r\n if(!noBlur)\r\n this.clearValidatedEdit(e)\r\n }\r\n }\r\n\r\n checkCellEditOnClick() {//for select dd edits only\r\n if(this.dataTableService.currEditIndex > -1 && this.currSelEditOpts.length){\r\n this.clearValidatedEdit()\r\n setTimeout( () => {\r\n const actEl = <HTMLElement>document.activeElement\r\n if(!this.validatedEditType && this.dataTableService.currEditIndex === -1)\r\n actEl.blur()\r\n })\r\n }\r\n }\r\n\r\n handleSingleColResize(val: any, column?: string) {\r\n if(val && (this.dataTableService.currColumnEdit || column)){\r\n const cols = this.getAllColsAtRuntime(null);\r\n const colLen = cols.length - this.getMiniColCount()\r\n const rawCol = column || this.common.replaceUniSep(this.dataTableService.currColumnEdit)\r\n const thecol = this.columnHeaders.find( c => (c && c.column === rawCol))\r\n if(thecol){\r\n thecol.width = (val + \"px\")\r\n this.dataTableService.dataFilSrtTracker[thecol.column][\"colWidth\"] = (val + \"px\")\r\n }\r\n let i = 0\r\n const toResize = this.rows.filter( r => r.cells?.length)\r\n const len = toResize.length\r\n for(i; i < len; i++){\r\n const ind = toResize[i].index\r\n const row = this.rows.find( r => r.index === ind)\r\n if(row){\r\n row.cells = row.cells?.map( c => {\r\n if(c && c.column === rawCol)\r\n c.width = (val + \"px\")\r\n return c\r\n })\r\n }\r\n }\r\n setTimeout( () => { \r\n const allColW = this.getAllColWidth(colLen)\r\n this.setDataRowWidthsOnMinimize(allColW)\r\n this.setRowSelChecksPlacement() \r\n this.testHideMinBtn()\r\n })\r\n this.clearValidatedEdit()\r\n }\r\n }\r\n\r\n testHideMinBtn() {\r\n let i = 0\r\n const els = document.getElementsByClassName(\"btn-min-col\")\r\n const len = els.length\r\n for(i; i < len; i++){\r\n const el = els[i]\r\n const col = el.id.replace(/btnMin/g, \"\")\r\n const ellf = el.getBoundingClientRect().left\r\n const srt = document.getElementById(\"btnSort\" + col)\r\n const colHd = this.columnHeaders.find( c => c.column === this.common.replaceUniSep(col)) \r\n if(colHd && srt){\r\n const srtrt = srt.getBoundingClientRect().right + 5;\r\n if(ellf < srtrt)\r\n colHd.hideMinCol = true\r\n else\r\n colHd.hideMinCol = false\r\n }\r\n }\r\n }\r\n\r\n setHeaderHeight(val: any, force?: boolean) {\r\n if(val && typeof val === \"string\")\r\n val = Math.ceil(parseInt(val))\r\n const rHgt = force ? val : Math.max(val, parseInt(this.desRowHeight))\r\n const useHgt = Math.floor(rHgt) + \"px\";\r\n const row = this.dataTableHeaders.nativeElement\r\n row[\"style\"][\"height\"] = useHgt\r\n this.columnHeaders.forEach( c => {c.height = useHgt})\r\n if(this.rowNumbers && this.rowNumHeader)\r\n this.rowNumHeader.nativeElement.style.height = useHgt;\r\n setTimeout( () => { this.setRowSelChecksPlacement() })\r\n }\r\n\r\n setSingleRowHgt(val: any, row?: any, force?: boolean) {\r\n if(val && typeof val === \"string\")\r\n val = Math.ceil(parseInt(val))\r\n const rHgt = force ? val : Math.max(val, (parseInt(this.desRowHeight) || Math.ceil(row.getBoundingClientRect().height)))\r\n const useHgt = Math.floor(rHgt) + \"px\";\r\n if(typeof row === \"string\" && this.tblDragService.colDragStartFrmCellTracker.row && this.tblDragService.colDragStartFrmCellTracker.ystart){\r\n const drow = this.rows.find( r => r.id === row)\r\n if(drow){\r\n drow.height = useHgt\r\n if(this.rowNumbers){\r\n const item = this.dataTableService.mainData[drow?.index]\r\n if(item){\r\n const indx = this.dataTableService.findObjIndxInData(item, this.dataTableService.currFilData) + 1\r\n const rNum = this.rowNos.find( r => r.number === indx)\r\n if(rNum)\r\n rNum.height = useHgt\r\n }\r\n } \r\n }\r\n }\r\n setTimeout( () => { this.setRowSelChecksPlacement() })\r\n this.clearValidatedEdit()\r\n }\r\n\r\n checkTabHorizScroll(id: string) {\r\n const colH = document.getElementById(\"columnHeader\" + id)\r\n const dtb = this.dataTableBody.nativeElement\r\n if(colH && dtb){\r\n let left = (colH.getBoundingClientRect().left-50)\r\n if(colH){\r\n if(this.currGroupValues().length){\r\n let i = 0\r\n const els = document.getElementsByClassName(\"group-panel-grid\")\r\n const len = els.length\r\n for(i; i < len; i++)\r\n els[i].scrollBy(left, 0)\r\n } else {\r\n left -= (this.rowNumbers ? 75 : 0)\r\n dtb.scrollBy(left, 0)\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleTheme(co1: string | null, co2: string | null) {\r\n try{\r\n let rule1; let rule1a; let rule2; let rule3; let rule4; let rule5; let rule6; let rule7;\r\n if(co1){\r\n this.dataTableService.themeColor1 = co1\r\n rule1 = \".col-header span, .col-header sup, .col-header button .material-icons, \" + \r\n \".row-group-panel button span, .row-group-panel button i, .data-table-footer div, .btn-fil-comp i{color: \"+co1+\" !important}\";\r\n rule1a = \".col-header select, .col-header input:not(input[type=file]), #skipTo{box-shadow:0 0 1px 1px \"+co1+\";\" +\r\n \"-webkit-box-shadow:0 0 1px 1px \"+co1+\"}\";\r\n }\r\n if(co2){\r\n this.dataTableService.themeColor2 = co2\r\n rule2 = \".col-header, .data-table-footer, .btn-fil-comp{background-color: \"+co2+\" !important}\"\r\n const tblbxSh = \"0 -1px 3px 1px \";\r\n const tblFbxSh = \"0 1px 3px -3px \";\r\n if(this.dataTableService.mainDataLen){\r\n rule2 = \".col-header, .btn-fil-comp{background-color: \"+co2+\" !important}\"\r\n rule3 = \".data-table{ box-shadow: \"+tblbxSh + co2+\"; -webkit-box-shadow: \"+tblbxSh + co2+\"; -moz-box-shadow: \"+tblbxSh + co2+\"}\"\r\n rule6 = \".data-table-footer{background-color: \"+co2+\"; box-shadow: \"+tblFbxSh + co2+\"; -webkit-box-shadow: \"+tblFbxSh + co2+\"; -moz-box-shadow: \"+tblFbxSh + co2+\"}\";\r\n }\r\n rule4 = \".row-group-panel{background: \"+co2+\"}\";\r\n if(co1)\r\n rule4 = \".row-group-panel{background: \"+co2+\"; border-bottom: 1px dotted \"+co1+\"}\"; \r\n rule5 = \".data-cell{ border-bottom: 1px solid \"+co2+\" !important; border-right: 1px solid \"+co2+\" !important}\"\r\n }\r\n if(this.altRowColor)\r\n rule7 = \".data-table-row:not(.data-row-selected):nth-of-type(even){background:\"+this.altRowColor+\"}\"\r\n let el;\r\n if(rule1 || rule1a || rule2 || rule3 || rule4 || rule5 || rule6 || rule7){\r\n el = document.createElement(\"style\")\r\n document.head.appendChild(el)\r\n if(rule1)\r\n el.sheet?.insertRule(rule1)\r\n if(rule1a)\r\n el.sheet?.insertRule(rule1a)\r\n if(rule2)\r\n el.sheet?.insertRule(rule2)\r\n if(rule3)\r\n el.sheet?.insertRule(rule3)\r\n if(rule4)\r\n el.sheet?.insertRule(rule4)\r\n if(rule5)\r\n el.sheet?.insertRule(rule5)\r\n if(rule6)\r\n el.sheet?.insertRule(rule6)\r\n if(rule7)\r\n el.sheet?.insertRule(rule7)\r\n }\r\n this.handleColumnCss(el)\r\n }catch(e){}\r\n }\r\n\r\n handleColumnCss(cssSheet: HTMLStyleElement|undefined) {\r\n const clen = this.dataTableService.columnStyles.length\r\n let i = 0;\r\n if(clen){\r\n if(!cssSheet){\r\n cssSheet = document.createElement(\"style\");\r\n document.head.appendChild(cssSheet)\r\n }\r\n if(cssSheet){\r\n for(i; i < clen; i++){\r\n let o = 0\r\n const cStyle = this.dataTableService.columnStyles[i]\r\n const col = cStyle.column\r\n const csss = cStyle.css\r\n const csslen = csss.length\r\n const elCol = this.common.elifyCol(col)\r\n for(o; o < csslen; o++){\r\n const css = csss[o]\r\n const val = css.value\r\n let rule = (\".data-cell-\" + elCol + \"-\" + this.common.elifyCol(val) + \" {\");\r\n for(const prop in css){\r\n const cval: string = css[prop as keyof ValueCss] || \"\";\r\n if(cval && prop !== \"value\")\r\n rule += (prop.replace(/_/g, \"-\") + \": \" + cval + \"; \");\r\n }\r\n rule += \"} \";\r\n if(cssSheet.sheet)\r\n cssSheet.sheet.insertRule(rule)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n renderCurrData(reset: boolean, field?: any): any {//filter val\r\n const thead = this.dataTableHeaders.nativeElement\r\n const tbody = this.dataTableBody.nativeElement\r\n const tbodyX = tbody.scrollLeft\r\n this.rows = []\r\n this.aboveHgt.set(0)\r\n this.belowHgt.set(0)\r\n this.rowNos = []\r\n this.dtChecks = []\r\n this.clearValidatedEdit(null, true)\r\n this.dataTableService.currMapping = {}\r\n if(!this.currGroupValues().length)//only if not grouped\r\n this.horizRest.set(0)\r\n tbody.scrollTop = 0\r\n this.verticalRest = 0\r\n let didXScrl = false;\r\n if(reset && !field && thead && tbody && !this.currGroupValues().length){\r\n thead.style.marginLeft = \"0px\"\r\n tbody.scrollLeft = 0\r\n this.horizRest.set(0)\r\n }\r\n this.lastElRowIndex = 0\r\n let n = 0\r\n const defNum = parseInt(this.dataTableService.defltRHgt.replace(/[ ]?px/g, \"\"))\r\n const init = Math.max(this.dataTableService.dTblHeight/defNum);\r\n const len = this.dataTableService.currFilData.length;\r\n if(!len){//always just add 1\r\n this.allFilSortInfo.set(this.dataTableService.getAllFilSrtInfo())\r\n return setTimeout( () => { this.styleEmptyFilDataRow(tbody, tbodyX) })\r\n }\r\n if(this.currGroupValues().length){//don't add to rows here\r\n if(field)\r\n this.columnOfInterest.set(field)\r\n this.allFilSortInfo.set(this.dataTableService.getAllFilSrtInfo())\r\n return this.dataTableService.gridEventWhileGrouped.next(true);\r\n }\r\n const uCols = [...this.columnHeaders]\r\n const colLen = uCols.length\r\n const addCell = (text: any, prop: string | null, row: DataRow, indx: number, visible: boolean) => {\r\n if(prop && row){\r\n const notNum = (this.dataTableService.figureFilterType(prop) != \"number\" || /(year|yr|fy)/g.test(prop.toLocaleLowerCase())) ? true : false\r\n const useTxt = this.dataTableService.figureCellText(text, notNum, this.dataTableService.dataFilSrtTracker[prop][\"colCellSymbol\"])\r\n const colStyle = this.dataTableService.getColumnStyle(prop)\r\n row.cells?.push({\r\n column: prop,\r\n rawText: text,\r\n visible: visible,\r\n editable: useTxt.prop === \"textContent\" ? this.editable : false,\r\n dataType: this.dataTableService.figureFilterType(prop),\r\n freeze: this.dataTableService.dataFilSrtTracker[prop].freeze,\r\n minimized: this.dataTableService.dataFilSrtTracker[prop].minimize,\r\n width: this.dataTableService.dataFilSrtTracker[prop].colWidth || this.dataTableService.useColWid,\r\n text: useTxt.prop === \"textContent\" ? useTxt.value : \"\",\r\n html: useTxt.prop !== \"textContent\" ? useTxt.value : \"\",\r\n specialColClass: (colStyle ? (colStyle + this.common.elifyCol(useTxt.value)) : \"\"),\r\n })\r\n }\r\n\r\n if(row && prop && row.cells && row.cells.length === 1)\r\n this.dtChecks.push(indx)\r\n if(field && field === prop && !didXScrl){\r\n setTimeout( () => {\r\n tbody.scrollLeft = tbodyX\r\n if(thead)\r\n thead.style.marginLeft = (-tbodyX + \"px\")\r\n this.horizRest.set(tbodyX)\r\n }, 100)\r\n didXScrl = true\r\n }\r\n }\r\n this.useRowWid = this.getAllColWidth(colLen - this.getMiniColCount()) + \"px\";\r\n const limit = Math.min(init, len)\r\n this.maxCols = this.setMaxCols()\r\n let horizLim = Math.min(this.maxCols, colLen)\r\n if(field && field !== \"topLevelDataFilter\"){\r\n let room = 0\r\n let offst = 3\r\n const fhead = document.getElementById(\"columnHeader\" + this.common.elifyCol(field))\r\n if(fhead){\r\n const bds = fhead.getBoundingClientRect()\r\n room = this.dataTableService.tblRight - bds.right\r\n if(room > 0)\r\n offst = Math.ceil(room/bds.width)\r\n }\r\n horizLim = Math.max(horizLim, (uCols.map( c => c.column).indexOf(field) + offst))\r\n }\r\n for(n; n < limit; n++){\r\n const item = this.dataTableService.currFilData[n]\r\n const index = !reset ? this.dataTableService.findObjIndxInData(item) : n\r\n if(index > -1){\r\n const row: DataRow = { id: \"dataTableRow\" + index, index: index, width: this.useRowWid, cells: [], height: this.dataTableService.defltRHgt }\r\n this.rows.push(row)\r\n let k = 0\r\n for(k; k < colLen; k++){\r\n const col = uCols[k]?.column\r\n if(col)\r\n addCell(item[col], col, row, index, (k <= horizLim))\r\n }\r\n this.dataTableService.currMapping[n] = index\r\n }\r\n }\r\n this.setLastRowIndex()\r\n this.allFilSortInfo.set(this.dataTableService.getAllFilSrtInfo())\r\n this.dataTableService.mapperWorkerId += 1//a reset but needs to incr so prev don't affect mapping \r\n if(len){\r\n if(len > init){\r\n let total = 0\r\n let z = this.lastElRowIndex + 1\r\n for(z; z < len; z++){\r\n total += 1\r\n if(reset)\r\n this.dataTableService.currMapping[z] = z\r\n }\r\n this.belowHgt.set(total*defNum)\r\n if(!reset){\r\n if (typeof Worker !== 'undefined') {\r\n // Create a new\r\n let worker\r\n worker = new Worker(new URL('../worker.worker.ts', import.meta.url));\r\n worker.onmessage = ({ data }) => {//{ id: data.id, map: {} }\r\n if(this.dataTableService.mapperWorkerId === data.id)\r\n this.dataTableService.currMapping = {...data.map}\r\n };\r\n if(worker)\r\n worker.postMessage({id: this.dataTableService.mapperWorkerId, pk: this.dataTableService.primaryKey, main: this.dataTableService.mainData, curr: this.dataTableService.currFilData});\r\n }\r\n }\r\n }\r\n this.dataTableService.setIdealColumnWidth.next(true)\r\n setTimeout( () => { this.setRowSelChecksPlacement(); this.setHoldingCheckCls() })\r\n }\r\n }\r\n\r\n styleEmptyFilDataRow(tbody: HTMLElement, tbodyX: number) {\r\n const row = <HTMLElement>document.getElementsByClassName(\"data-table-row-no-data\")[0]\r\n if(row){\r\n row.style.width = this.dataTableHeaders.nativeElement.scrollWidth + \"px\"\r\n setTimeout( () => tbody.scrollLeft = tbodyX, 100)\r\n }\r\n }\r\n\r\n freezeColCells(col: string) {\r\n this.rows = this.rows.map( r => {\r\n r.cells = r.cells?.map( c => {\r\n if(c && c.column === col)\r\n c.freeze = !c.freeze\r\n return c\r\n })\r\n return r\r\n })\r\n this.dataTableService.gridEventWhileGrouped.next(true)\r\n }\r\n\r\n maximizeColCells(col: string, fullClear?: boolean) {\r\n this.dataTableService.dataFilSrtTracker[col].minimize = false\r\n this.minimizeColEls(col, fullClear)\r\n }\r\n\r\n minimizeColEls(col: string, fullClear?: boolean) { \r\n this.lockVScroll = true\r\n if(!fullClear)\r\n setTimeout( () => { this.lockVScroll = false }, 1000)\r\n const thecol = this.columnHeaders.find( c => c.column === col)\r\n if(thecol){\r\n thecol.width = this.dataTableService.dataFilSrtTracker[col].colWidth || this.dataTableService.useColWid;\r\n thecol.minimized = !thecol.minimized\r\n }\r\n this.rows = this.rows.map( r => {\r\n r.cells = r.cells?.map( c => {\r\n if(c && c.column === col)\r\n c.minimized = !c.minimized\r\n return c\r\n })\r\n return r\r\n })\r\n if(this.hiddenCols.indexOf(col) < 0)\r\n this.hiddenCols.push(col)\r\n else\r\n this.hiddenCols = this.hiddenCols.filter( c => c !== col)\r\n setTimeout( () => { this.dataTableService.setTblBounds(); this.testHideMinBtn() })\r\n setTimeout( () => { \r\n if(!fullClear || (fullClear && this.hiddenCols.length === 1)){\r\n this.setTableWidthOnChange()\r\n setTimeout( () => {\r\n this.dataTableBody.nativeElement.scrollBy(1, 0)\r\n this.scrollAllGBPanels()\r\n this.setRowSelChecksPlacement()\r\n })\r\n }\r\n }, 750)\r\n }\r\n\r\n scrollAllGBPanels() {\r\n let i = 0\r\n const els = document.getElementsByClassName(\"group-panel-grid\")\r\n const len = els.length\r\n for(i; i < len; i++)\r\n els[i].scrollBy(1, 0)\r\n }\r\n\r\n setTableWidthOnChange() {\r\n const cols = this.getAllColsAtRuntime(null)\r\n this.maxCols = this.setMaxCols()\r\n const colLen = cols.length - this.getMiniColCount()\r\n setTimeout( () => { \r\n this.setDataRowWidthsOnMinimize(this.getAllColWidth(colLen))\r\n }, 375)\r\n this.setHoldingCheckCls()\r\n this.setColsOnVisScreen()\r\n setTimeout( () => { this.setColHeaderHgt() })\r\n }\r\n\r\n setHoldingCheckCls() {\r\n this.dataTableService.firstCol = this.columnHeaders.filter( c => !c.minimized)[0].column\r\n }\r\n\r\n setDataRowWidthsOnMinimize(width: number) {\r\n let i = 0;\r\n const wid = width + \"px\"\r\n const rLen = this.rows.length\r\n for(i; i < rLen; i++)\r\n this.rows[i].width = wid\r\n this.useRowWid = wid;\r\n this.dataTableService.gridEventWhileGrouped.next(true)\r\n }\r\n\r\n clearHiddenCols() {\r\n const len = this.hiddenCols.length\r\n for(var i = (len-1); i >= 0; i--)\r\n this.maximizeColCells(this.hiddenCols[i], true)\r\n setTimeout( () => { this.lockVScroll = false }, 900)\r\n }\r\n\r\n clearFilInputs() {\r\n let i = 0\r\n const els = document.querySelectorAll(\".col-header input\")\r\n const len = els.length\r\n for(i; i < len; i++){\r\n const el = <HTMLInputElement>els[i]\r\n if(el)\r\n el.value = \"\"\r\n }\r\n }\r\n\r\n clearGroupBySels() {\r\n let i = 0\r\n const len = this.canGroupBy().length\r\n for(i; i < len; i++){\r\n const el = <HTMLInputElement>document.getElementById(\"groupby\" + this.canGroupBy()[i])\r\n if(el)\r\n el.checked = false\r\n }\r\n }\r\n\r\n resetCurrentData(col?: string) {\r\n this.topLevelFilter = \"\"\r\n this.dataTableService.sortOrder = []\r\n this.clearHiddenCols()\r\n this.clearSelectedRows()\r\n this.removeAllFreezeCols()\r\n this.clearFilInputs()\r\n this.resetVisCols()\r\n this.clearGroupBySels()\r\n this.allFilSortInfo.set(\"\")\r\n this.columnOfInterest.set(\"\")\r\n this.currGroupValues.set([])\r\n this.dataTableService.currGroup = \"\"\r\n this.dataTableService.setTblBounds()\r\n this.dataTableService.resetFilSrtTracker()\r\n this.dataTableService.currFilData = this.dataTableService.mainData.filter( d => { return true })\r\n this.renderCurrData(true, col)\r\n }\r\n\r\n resetVisCols() {\r\n let i = 0\r\n this.dataTableService.visibleCols = []\r\n const len = this.columnHeaders.length\r\n for(i; i < len; i++){\r\n if(i < this.maxCols)\r\n this.dataTableService.visibleCols.push(this.columnHeaders[i].column)\r\n }\r\n }\r\n\r\n getMiniColCount() {\r\n let o = 0\r\n for(const prop in this.dataTableService.dataFilSrtTracker){\r\n if(this.dataTableService.dataFilSrtTracker[prop].minimize)\r\n o += 1\r\n }\r\n return o\r\n }\r\n\r\n handleValidation() {\r\n if(this.dataTableService.isLocalHost(true)){\r\n this.validationSettled.set(true)\r\n if(this.data().length) \r\n this.handleDataInput()\r\n } else {\r\n this.validationSub = this.dataTableService.validateLicense(this.licenseKey).pipe( \r\n finalize( () => {\r\n this.validationSettled.set(true);\r\n if(this.data().length) \r\n this.handleDataInput()\r\n } )).\r\n subscribe({\r\n next: () => { this.common.setLs() },\r\n error: e => {\r\n this.dataTableService.errorLoading = true\r\n this.dataTableService.noDataMsg = \"License validation failed. The data grid will have limited functionality.\";\r\n console.log(\"INVALID LICENSE KEY\")\r\n }\r\n })\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.validationSub)\r\n this.validationSub.unsubscribe()\r\n }\r\n}\r\n","<div class=\"deebo-data-grid-section\">\r\n <div class=\"hidden-cols\">\r\n @for (hcol of hiddenCols; track hcol) {\r\n <button type=\"button\" class=\"btn-maximize-col\" (click)=\"maximizeColCells(hcol)\">{{hcol}}</button>\r\n }\r\n </div>\r\n <div class=\"controls\" >\r\n <input type=\"text\" #topLevelDataFilter autocomplete=\"off\" name=\"topLevelDataFilter\" placeholder=\"Filter any column...\" \r\n (input)=\"topFilterOnKeyUp($event)\" (keyup)=\"topFilterOnKeyUp($event)\" maxlength=\"255\" [(ngModel)]=\"topLevelFilter\" \r\n [disabled]=\"dataTableService.showCharts() || !dataTableService.mainData.length || handlingSelRows\" autocomplete=\"off\" />\r\n @if(currGroupValues().length){\r\n <button type=\"button\" class=\"no-btn btn-clear-grp\" (click)=\"processGrouping(null)\">\r\n <i class=\"material-icons error-message heavy v-mid\" aria-hidden=\"false\">close</i> <span class=\"md-text v-mid\">Grouping</span>\r\n </button>\r\n }\r\n <button type=\"button\" class=\"no-btn btn-chart\" (click)=\"openCharts()\" [disabled]=\"dataTableService.showCharts() || !dataTableService.currFilData.length || handlingSelRows || !common.goodLs()\">\r\n <i class=\"material-icons v-mid\" aria-hidden=\"false\">bar_chart</i> <span class=\"v-mid\">Insights</span>\r\n </button>\r\n <button type=\"button\" [disabled]=\"!dataTableService.currSelRows.length || handlingSelRows\" (click)=\"clearSelectedRows()\" class=\"btn-ctrl-sel-rows\">Deselect Rows</button>\r\n <button #btnTogSelRows type=\"button\" [disabled]=\"!dataTableService.currSelRows.length || handlingSelRows\" (click)=\"toggleSelectedRows()\" class=\"btn-ctrl-sel-rows\">\r\n <i class=\"material-icons\" aria-hidden=\"false\">check_box_outline_blank</i> <span>{{togSelRows}}</span>\r\n </button>\r\n <button [disabled]=\"!topLevelFilter && dataTableService.arefilSrtTrkPropsDefault()\" \r\n class=\"btn-reset\" (click)=\"resetCurrentData()\" >Reset</button>\r\n </div>\r\n <div class=\"relly\" [ngClass]=\"{'dt-checks': rowNumbers, 'hide' : isMultiFiltering() || dataTableService.isFiltering() || \r\n dataTableService.isSorting() || currGroupValues().length || currSelEditOpts.length }\">\r\n @for (chk of dtChecks; track $index) {\r\n <input [id]=\"'checkDataTableRow' + chk\" class=\"select-row-check invisible\" \r\n [checked]=\"dataTableService.currSelRows.indexOf(chk) > -1\" type=\"checkbox\" [name]=\"'checkDataTableRow' + chk\"\r\n (click)=\"toggleSingleRowSelected(chk)\" (keyup.enter)=\"toggleSingleRowSelected(chk)\" [value]=\"'dataTableRow' + chk\" >\r\n }\r\n </div>\r\n <div #selFilContainer class=\"relly sel-fil-container\">\r\n <div class=\"selfil-opt-contain\" [ngStyle]=\"ddFilStyle\">\r\n @for (opt of currFilOpts; track opt; let i = $index) {\r\n <div class=\"selfil-div\">\r\n <label [for]=\"'selfilOpt' + currDDFilter + i\" class=\"'selfil-lbl-' + currDDFilter\"><input [id]=\"'selfilOpt' + currDDFilter + i\" \r\n [class]=\"'selfil-opt-' + currDDFilter\" (input)=\"handleMultiSelFilter(currDDFilter, opt.value, $event.target.checked)\" \r\n (click)=\"handleMultiSelFilter(currDDFilter, opt.value, $event.target.checked)\" [name]=\"'selfilOpt' + currDDFilter + i\" \r\n [checked]=\"opt.checked\" [value]=\"opt.value\" [disabled]=\"isMultiFiltering()\" type=\"checkbox\" />{{opt.value || \"(Blank)\"}}</label>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div #validatedEdit class=\"relly special-edit-container invisible\">\r\n @if (validatedEditType === 'date'){\r\n <input id=\"selEditDate\" name=\"selEditDate\" type=\"date\" class=\"edit-input\" \r\n (change)=\"execCellEdit($event, true)\" (input)=\"execCellEdit($event, true)\" (blur)=\"execCellEdit($event)\" />\r\n }\r\n @if (validatedEditType === 'number'){\r\n <input id=\"selEditNum\" name=\"selEditNum\" type=\"number\" class=\"edit-input\" \r\n (keyup)=\"execCellEdit($event, true)\" (input)=\"execCellEdit($event, true)\" (blur)=\"execCellEdit($event)\" (keyup.enter)=\"execCellEdit($event)\" />\r\n }\r\n @if (validatedEditType === 'text'){\r\n <div class=\"relly edit-input\">\r\n <div class=\"edit-input-option-cont\">\r\n <div tabindex=\"0\" (click)=\"execCellEdit($event, false, null)\" class=\"edit-input-opt\">-</div>\r\n @for (opt of currSelEditOpts; track opt.value) {\r\n <div tabindex=\"0\" class=\"edit-input-opt\" \r\n (click)=\"execCellEdit($event, false, opt.value)\">{{opt.value || \"(Blank)\"}}</div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"relly\" style=\"z-index: 6;\">\r\n <div #fCellDragger tabindex=\"0\" id=\"fCellDragger\" (focus)=\"focusCellDragger()\" (blur)=\"execValClear(true)\"\r\n (mousedown)=\"focusCellDraggerFromMouseDown()\" (keydown)=\"handleFDragTab($event)\" (keydown)=\"handleDraggerKD($event)\"\r\n [ngClass]=\"{'hide': dataTableService.currEditIndex < 0, 'focused-cell-dragger': dataTableService.currEditIndex > -1 }\"></div>\r\n </div>\r\n @if(dataTableService.showCharts() && common.goodLs()){\r\n <app-charts-and-graphs \r\n [height]=\"chartHgt\"\r\n [state]=\"chartState\"\r\n [chartColumns]=\"columnsForCharts\"\r\n (close)=\"closeCharts($event)\"\r\n ></app-charts-and-graphs>\r\n }\r\n <div [ngClass]=\"{'row-numbers': rowNumbers && !dataTableService.showCharts() && !currGroupValues().length, 'hide': !rowNumbers || dataTableService.showCharts() || currGroupValues().length}\" >\r\n <div #rowNumHeader class=\"row-num-header flex-center\"><div class=\"semi-heavy\">No.</div></div>\r\n <div style=\"overflow: hidden;\" [style.height]=\"dataTableService.dTblHeight + 'px'\">\r\n <div #rowNumBody style=\"overflow: auto\">\r\n @for (num of rowNos; track num.number) {\r\n <div [id]=\"'rn' + num.number\" class=\"flex-center num-row\" [style.height]=\"num.height || dataTableService.defltRHgt\">\r\n <div class=\"small-text\">{{num.number | number}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div><div #dataTable class=\"data-table\" [class.inline-table]=\"rowNumbers && !dataTableService.showCharts() && !currGroupValues().length\">\r\n <div #dataTableHeaders class=\"data-table-headers\">\r\n @for (col of columnHeaders; track col.column; let i = $index) {\r\n <app-data-table-header\r\n [columnHeader]=\"col\"\r\n [colWid]=\"dataTableService.useColWid\"\r\n [hideMinCol]=\"col.hideMinCol\"\r\n [canFreeze]=\"i === 0 ? true : false\"\r\n (reset)=\"resetCurrentData($event)\"\r\n (freeze)=\"freezeColCells($event)\"\r\n (minimize)=\"minimizeColEls($event)\"\r\n (filFocus)=\"handleFilFocus($event)\"\r\n (scrollOnFocus)=\"checkTabHorizScroll($event)\"\r\n (emitCompFocus)=\"killSelFilOpts(true)\"\r\n (filSelClick)=\"handleWinClickOnSelFil()\"\r\n (height)=\"setHeaderHeight($event, true)\"\r\n (render)=\"renderCurrData(false, $event.field)\"\r\n (width)=\"handleSingleColResize($event.value, $event.column)\"\r\n ></app-data-table-header>\r\n }\r\n </div>\r\n <div #dataTableBody id=\"dataTableBody\" style=\"overflow: auto;\" [style.height]=\"dataTableService.dTblHeight + 'px'\" (scroll)=\"handleScroll($event)\"\r\n [class.table-working]=\"isMultiFiltering() || dataTableService.isFiltering() || dataTableService.isSorting()\" (scrollend)=\"handleScrollEnd()\">\r\n <div #aboveArea [style.height]=\"aboveHgt() + 'px'\"></div>\r\n @for(row of rows; track row.index){\r\n <div [id]=\"row.id\" class=\"data-table-row\" [attr.data-index]=\"row.index\"\r\n [class.data-row-selected]=\"!dataTableService.displayOnlySelRows && dataTableService.currSelRows.indexOf(row.index) > -1\"\r\n [ngStyle]=\"{'width': row.width, 'height': row.height}\" >\r\n @for(cell of row.cells; track cell.column){\r\n @if (isScrolling){\r\n <div class=\"data-cell data-cell-{{common.elifyCol(cell.column)}}{{cell.specialColClass}}\" [class.data-cell-riiight]=\"cell.dataType === 'number'\"\r\n [ngClass]=\"{ 'col-item-freeze': cell.freeze, 'col-header-minimized': cell.minimized, 'holding-check': cell.column === dataTableService.firstCol }\"\r\n [ngStyle]=\"{'width': cell.width || dataTableService.useColWid, 'height': row.height}\" >{{cell.text}}@if (cell.html){<div class=\"mock-html\"></div>}</div>\r\n } @else {\r\n <app-data-cell [cell]=\"cell\" \r\n [rowId]=\"row.id\" \r\n [rawText]=\"cell.rawText\"\r\n [rowHeight]=\"row.height || ''\"\r\n (edit)=\"execCellEdit($event)\"\r\n (mousedown)=\"checkCellEditOnClick()\"\r\n [columnValClass]=\"cell.specialColClass\"\r\n (dragListen)=\"listenToCellDraggerMouseMove = $event\"\r\n [colWid]=\"cell.width || dataTableService.useColWid\"\r\n (width)=\"handleSingleColResize($event)\"\r\n (height)=\"setSingleRowHgt($event, row.id, true)\"\r\n (clearVEditFocus)=\"validatedEditType = $event\"\r\n (validateEditFocus)=\"handleValidatedCellEditFocus($event)\"\r\n ></app-data-cell>\r\n }\r\n }\r\n </div>\r\n }\r\n <div #belowArea [style.height]=\"belowHgt() + 'px'\"></div>\r\n @for(group of currGroupValues(); track group){\r\n <app-row-group-panel\r\n [groupValue]=\"group.value\"\r\n [maxCols]=\"maxCols\"\r\n [useRowWid]=\"useRowWid\"\r\n [editable]=\"editable\"\r\n [horizRest]=\"horizRest()\"\r\n [columns]=\"columnNames\"\r\n [showRowNumbers]=\"rowNumbers\"\r\n [colOfInt]=\"columnOfInterest()\"\r\n (horizPos)=\"setHorizPos($event)\"\r\n (cellEdit)=\"execCellEdit($event)\"\r\n (openEvt)=\"scrollToRowGroup($event)\"\r\n ></app-row-group-panel>\r\n }\r\n @if(!dataTableService.currFilData.length && !currGroupValues().length){\r\n <div [style.height]=\"dataTableService.dTblHeight + 'px'\" class=\"data-table-row flex-center data-table-row-no-data\" style=\"width: 100%; white-space: normal;\">\r\n <div class=\"center\">{{dataTableService.noDataMsg}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if(paginatorReady){\r\n <app-data-table-paginator\r\n [filSortStr]=\"allFilSortInfo()\"\r\n (jumpTo)=\"jumpToRow($event)\"\r\n [totalRows]=\"dataTableService.currFilData.length\"\r\n [disableJump]=\"dataTableService.showCharts() || currGroupValues().length > 0 || !dataTableService.currFilData.length || handlingSelRows\"\r\n ></app-data-table-paginator><!--not an actual paginator-->\r\n }\r\n <div class=\"pad-top-thirty right\">\r\n <div class=\"inline-b deebo-dd-contain-div\">\r\n @if(canGroupBy().length > 0){\r\n <app-row-group-menu\r\n [groups]=\"canGroupBy()\"\r\n [disableGB]=\"dataTableService.showCharts()\"\r\n [enableClear]=\"currGroupValues().length ? true : false\"\r\n ></app-row-group-menu>\r\n }\r\n </div><div class=\"inline-b deebo-dd-contain-div\">\r\n @if(dataTableService.currFilData.length > 0){\r\n <app-export-component\r\n [columns]=\"columnHeaders\"\r\n [disableExport]=\"dataTableService.showCharts()\"\r\n [count]=\"dataTableService.currFilData.length\">\r\n </app-export-component>\r\n }\r\n </div>\r\n </div>\r\n</div>","/*\r\n * Public API Surface of ngx-deebodata\r\n */\r\n\r\nexport * from './lib/data-table/data-table-module/ngx-deebodata/ngx-deebodata';\r\nexport * from './lib/interfaces/column-symbol';\r\nexport * from './lib/interfaces/cell-edit';\r\nexport * from './lib/interfaces/column-styles';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CommonService","i1.DataTableService","i2.CommonService","i2.TableDragService","i3.DataTableService","i5","i3.CommonService","i1.TableDragService","i2.DataTableService","i2","i3","i4"],"mappings":"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"}
|