ngx-deebodata-community 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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-deebodata-community.mjs","sources":["../../../projects/ngx-deebodata-community/src/lib/services/common-service.ts","../../../projects/ngx-deebodata-community/src/lib/services/data-table-service.ts","../../../projects/ngx-deebodata-community/src/lib/services/table-drag-service.ts","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/data-table-header/data-table-header.ts","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/data-table-header/data-table-header.html","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/data-table-paginator/data-table-paginator.ts","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/data-table-paginator/data-table-paginator.html","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/data-cell/data-cell.ts","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/data-cell/data-cell.html","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/ngx-deebodata-community/ngx-deebodata-community.ts","../../../projects/ngx-deebodata-community/src/lib/data-table/data-table-module/ngx-deebodata-community/ngx-deebodata-community-component.html","../../../projects/ngx-deebodata-community/src/public-api.ts","../../../projects/ngx-deebodata-community/src/ngx-deebodata-community.ts"],"sourcesContent":["import { Injectable } 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\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 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","import { Injectable } from '@angular/core';\r\nimport { CommonService } from './common-service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { catchError, Observable, of, Subject } from 'rxjs';\r\nimport { ColumnSymbol } from '../interfaces/column-symbol';\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 = false;\r\n isFiltering = 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 firstCol: string = \"\"\r\n primaryKey: string = \"\"\r\n autoScrollOnEdit: boolean = false\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 Demo...\"\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\"],\r\n number: [\"Equals\", \"Not Equal\", \"Empty\", \"Not Empty\"],\r\n date: [\"Equals\", \"Not on\", \"Empty\", \"Not Empty\"],\r\n }\r\n badStrings: string[] = [\"null\", \"NULL\", \"Null\", \"undefined\", \"UNDEFINED\", \"Undefined\"]\r\n /*numeric columns can have a predefined symbol up to 2 characters long, \r\n add these based on columns (object properties) coming from your api*/\r\n columnSymbols: ColumnSymbol[] = [\r\n { column: \"width\", symbol: \"px\" },\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 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 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 oWid = fsObj[\"colWidth\"]//keep\r\n const sym = fsObj[\"colCellSymbol\"]//keep\r\n const min = false;\r\n const compToUse = \"\";\r\n this.dataFilSrtTracker[prop] = { filter: \"\", comparator: compToUse, sort: null, type: oType, 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 }\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 oneLevelSort(data: any[], sortOrder: string[], obj: any) {\r\n let sortData = data.filter( (d: any) => true)\r\n if(sortOrder.length){\r\n const field = sortOrder[0]\r\n if(field){\r\n const dir = obj[field][\"sort\"] === \"asc\" ? 1 : -1;\r\n sortData = sortData.sort( (a, b) => { \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 }\r\n return sortData\r\n }\r\n\r\n doSortOnField(field: any) {\r\n if(!this.sortOrder.length){\r\n this.sortOrder.push(field)\r\n this.dataFilSrtTracker[field][\"sort\"] = \"asc\"\r\n } else {\r\n if(this.sortOrder.indexOf(field) > -1){//clicking already sorted field\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 } else {\r\n const currSrted = this.sortOrder[0]\r\n if(currSrted)\r\n this.dataFilSrtTracker[currSrted][\"sort\"] = null\r\n this.sortOrder = []//clear wha'ts there\r\n this.sortOrder.push(field)\r\n this.dataFilSrtTracker[field][\"sort\"] = \"asc\"\r\n }\r\n }\r\n this.currFilData = this.oneLevelSort(this.currFilData, this.sortOrder, this.dataFilSrtTracker)\r\n }\r\n\r\n nLevelFilter(data: any, filterVal: 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((!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(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 } else {\r\n if(comparator === \"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 if(comparator === \"Not Equal\" || comparator === \"Not on\"){ \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 if(comparator === \"Contains\")\r\n return colVal && ((typeof colVal === \"string\" && colVal.indexOf(filterVal) > -1) || colVal == filterVal)\r\n if(comparator === \"Not Empty\"){\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].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 || (dataObj[prop].comparator && doWithoutFilt.indexOf(dataObj[prop].comparator) > -1))\r\n dataM = this.nLevelFilter(dataM, dataObj[prop].filter, dataObj[prop].comparator, prop)\r\n }\r\n this.currFilData = this.oneLevelSort(dataM, sortOrder, dataObj)\r\n return this.currFilData\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 || (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(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 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.oneLevelSort(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)){\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 //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 { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TableDragService } from '../../../services/table-drag-service';\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 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() 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(\"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.compOpts = [...this.dataTableService.comparatorOpts[this.columnHeader.dataType]]\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.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 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 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 = 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 = 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 comp.value = \"\"\r\n this.dataTableService.dataFilSrtTracker[field].comparator = null\r\n this.filterOnKeyUp(event, field, \"\", true)\r\n }\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 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 = 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 setTimeout( () => { \r\n this.dataTableService.isFiltering = 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}\r\n","<div #colHeader [id]=\"'columnHeader' + elCol\" class=\"col-header\" (dblclick)=\"handleColResDblClick(columnHeader.column)\"\r\n[ngClass]=\"{ 'col-item-freeze': columnHeader.freeze, }\"\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(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){\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\" [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 (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\"\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\" >{{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, EventEmitter, Input, Output, SimpleChanges, } 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 constructor(public dataTableService: DataTableService,\r\n public tblDragService: TableDragService,\r\n public common: CommonService,) {\r\n\r\n }\r\n\r\n init = true\r\n isKeying = false\r\n totalRowStr = \"\";\r\n rowinating = false\r\n @Input() totalRows: number = 0;\r\n @Input() filSortStr: string = \"\";\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.totalRowStr = this.totalRows.toLocaleString(undefined, { maximumFractionDigits: 0 })\r\n }\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 <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>\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 @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)))\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, dataType: string): string {\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 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.dataType)\r\n if(this.cell.rawText && !okText)\r\n return;\r\n this.validateEditFocus.emit({type: this.cell.dataType, value: okText})\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)))\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}}\" \r\n[ngClass]=\"{ 'col-item-freeze': cell.freeze, '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, EventEmitter, HostListener, input, Input, Output, signal, 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 { FormsModule } from '@angular/forms';\r\nimport { CellEdit } from '../../../interfaces/cell-edit';\r\nimport { DataCell } from '../../../interfaces/data-cell';\r\nimport { RowNumber } from '../../../interfaces/row-number';\r\nimport { ColumnSymbol } from '../../../interfaces/column-symbol';\r\n\r\n@Component({\r\n selector: 'ngx-deebodata-community',\r\n imports: [\r\n DataTableHeader,\r\n DataCellComponent,\r\n DataTablePaginator,\r\n CommonModule,\r\n FormsModule,\r\n DecimalPipe,\r\n ],\r\n templateUrl: './ngx-deebodata-community-component.html',\r\n styleUrls: ['./ngx-deebodata-community-component.css', '../../../styles.css']\r\n})\r\nexport class NgxDeebodataCommunity {\r\n\r\n @HostListener('window:click', ['$event'])\r\n onWindowClick(e: MouseEvent) {\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 this.handleScrlBarDrag() \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.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 = 0\r\n isScrolling = false;\r\n useRowWid: string = \"\"\r\n paginatorReady = false;\r\n handlingSelRows = false\r\n columnOfInterest: string = \"\"\r\n desRowHeight: string = \"50\"\r\n listenToCellDraggerMouseMove = false\r\n listenToCellDraggerMouseUp = false\r\n topLevelFilter: string = \"\"\r\n allFilSortInfo: string = \"\"\r\n lockVScroll: boolean = false;\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 validatedEditType: string = \"\"\r\n data = input<any[]>([])\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 = \"#fafafa\";\r\n @Input() myColumnSymbols: ColumnSymbol[] = []\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 ngOnInit() {\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 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 setTimeout( () => this.setTableHeight(510), 1000)//for demo\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.dataTableBody?.nativeElement.scrollBy(0, (this.scrollDir === \"down\" ? 1 : -1))\r\n setTimeout(() => { this.setRowSelChecksPlacement() })\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).includes(col)){\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 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.includes(prop)){\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 row.cells?.push({\r\n column: prop,\r\n freeze: false,\r\n minimized: false,\r\n rawText: text,\r\n visible: initVisCols.includes(prop),\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 })\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 setTimeout( () => { \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 }\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 execFilter(field: any, val: any) {\r\n this.dataTableService.isFiltering = 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 = false }, 500)\r\n }\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 = 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 setTimeout( () => { \r\n this.dataTableService.isFiltering = 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 = 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 handleScrlBarDrag() {\r\n requestAnimationFrame( () => {\r\n if(this.dataTableBody){\r\n const tbl = this.dataTableBody.nativeElement\r\n this.execVertScroll(tbl.scrollTop)\r\n if(tbl.scrollLeft !== this.horizRest)\r\n this.execHorizScroll(tbl.scrollLeft)\r\n setTimeout( () => { this.setRowSelChecksPlacement() })\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 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 = 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 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 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 }\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.includes(col) || (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.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 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.includes(r.id))\r\n this.dtChecks = this.dtChecks.filter( c => !justindx.includes(c))\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.includes(r.id))\r\n this.dtChecks = this.dtChecks.filter( c => !justindx.includes(c))\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 this.execVertScroll(tbl.scrollTop)\r\n setTimeout( () => { this.setRowSelChecksPlacement() })\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 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.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.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, dataType: string): string {\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, 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 }\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 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\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 })\r\n this.clearValidatedEdit()\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 left -= (this.rowNumbers ? 75 : 0)\r\n dtb.scrollBy(left, 0)\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;\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 \".data-table-footer div, .btn-fil-comp i{color: \"+co1+\" !important}\";\r\n rule1a = \".col-header select, .col-header input:not(input[type=file]){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: \"+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: \"+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: \"+co2+\"; box-shadow: \"+tblFbxSh + co2+\"; -webkit-box-shadow: \"+tblFbxSh + co2+\"; -moz-box-shadow: \"+tblFbxSh + co2+\"}\";\r\n }\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 rule4 = \".data-table-row:not(.data-row-selected):nth-of-type(odd){background:\"+this.altRowColor+\"}\"\r\n if(rule1 || rule1a || rule2 || rule3 || rule4 || rule5 || rule6){\r\n const 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 }\r\n }catch(e){}\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 this.horizRest = 0\r\n tbody.scrollTop = 0\r\n this.verticalRest = 0\r\n let didXScrl = false;\r\n if(reset && !field && thead && tbody){\r\n thead.style.marginLeft = \"0px\"\r\n tbody.scrollLeft = 0\r\n this.horizRest = 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 = this.dataTableService.getAllFilSrtInfo()\r\n return setTimeout( () => { this.styleEmptyFilDataRow(tbody, tbodyX) })\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 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 })\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 = tbodyX\r\n }, 100)\r\n didXScrl = true\r\n }\r\n }\r\n this.useRowWid = this.getAllColWidth(colLen) + \"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 = 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 }\r\n\r\n setTableWidthOnChange() {\r\n const cols = this.getAllColsAtRuntime(null)\r\n this.maxCols = this.setMaxCols()\r\n const colLen = cols.length\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 }\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 resetCurrentData(col?: string) {\r\n this.topLevelFilter = \"\"\r\n this.dataTableService.sortOrder = []\r\n this.clearSelectedRows()\r\n this.removeAllFreezeCols()\r\n this.clearFilInputs()\r\n this.resetVisCols()\r\n this.allFilSortInfo = \"\"\r\n this.columnOfInterest = \"\"\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\r\n}\r\n","<div class=\"deebo-data-grid-section\">\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.mainData.length || handlingSelRows\" autocomplete=\"off\" />\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' : dataTableService.isFiltering || \r\n dataTableService.isSorting }\">\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 #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 </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 <div [ngClass]=\"{'row-numbers': rowNumbers, 'hide': !rowNumbers}\" >\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\">\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 [canFreeze]=\"i === 0 ? true : false\"\r\n (reset)=\"resetCurrentData($event)\"\r\n (freeze)=\"freezeColCells($event)\"\r\n (scrollOnFocus)=\"checkTabHorizScroll($event)\"\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]=\"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)}}\" [class.data-cell-riiight]=\"cell.dataType === 'number'\"\r\n [ngClass]=\"{ 'col-item-freeze': cell.freeze, '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 (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 @if(!dataTableService.currFilData.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 [totalRows]=\"dataTableService.currFilData.length\"\r\n ></app-data-table-paginator><!--not an actual paginator-->\r\n }\r\n</div>","/*\r\n * Public API Surface of ngx-deebodata-community\r\n */\r\n\r\nexport * from './lib/data-table/data-table-module/ngx-deebodata-community/ngx-deebodata-community';\r\nexport * from './lib/interfaces/column-symbol';\r\nexport * from './lib/interfaces/cell-edit';","/**\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","i3.CommonService","i1.TableDragService","i2.DataTableService"],"mappings":"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"}
|