@hpcc-js/dgrid 3.5.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["column: ColumnType","formattedRow: any","retVal: any","column: ColumnType","formattedRow: any","cellText: any"],"sources":["../src/__package__.ts","../src/dgrid-shim.ts","../src/RowFormatter.ts","../src/DBStore.ts","../src/Common.ts","../src/DatasourceStore.ts","../src/DatasourceTable.ts","../src/Table.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\n\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n console.error(\"dgrid-shim not loaded, please add `<script src=\\\"https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js\\\"></script>` or similar to your HTML file\");\n}\n\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\n","function entitiesEncode(str) {\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n switch (Object.prototype.toString.call(item)) {\n case \"[object Undefined]\":\n case \"[object Boolean]\":\n case \"[object Number]\":\n return item;\n case \"[object String]\":\n return entitiesEncode(item);\n default:\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item));\n }\n return item;\n}\n\nfunction isArray(obj: any): obj is any[] {\n return obj instanceof Array;\n}\n\nconst LINE_SPLITTER = \"<br><hr class='dgrid-fakeline'>\";\nconst LINE_SPLITTER2 = \"<br><hr class='dgrid-fakeline' style='visibility: hidden'>\";\n\nexport interface ColumnType {\n field: string;\n leafID: string;\n label: string;\n idx: number;\n className: string;\n sortable: boolean;\n isSet: boolean;\n width?: number;\n formatter?: CellFormatter;\n renderCell?: CellRenderer;\n children?: ColumnType[];\n}\nexport interface RowType {\n __hpcc_id: number;\n __origRow: any[];\n [colIdx: number]: any;\n}\nexport type CellFormatter = (this: ColumnType, cell: any, row: RowType) => string;\nexport type CellRenderer = (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement) => HTMLElement | void;\n\nexport class RowFormatter {\n private _columns: ColumnType[];\n private _flattenedColumns = [];\n private _columnIdx = {};\n private _formattedRow = {};\n\n constructor(columns: ColumnType[], protected _renderHtml) {\n this._columns = columns;\n this.flattenColumns(columns);\n }\n\n flattenColumns(columns: ColumnType[]) {\n for (const column of columns) {\n this.flattenColumn(column);\n }\n }\n\n flattenColumn(column: ColumnType) {\n if (column.children) {\n for (const childColumn of column.children) this.flattenColumn(childColumn);\n } else {\n this._columnIdx[column.field] = this._flattenedColumns.length;\n this._flattenedColumns.push(column.field);\n }\n }\n\n format(row) {\n this._formattedRow = {};\n this.formatRow(this._columns, row);\n return this.row();\n }\n\n calcDepth(columns: ColumnType[], row) {\n let maxChildDepth = 1;\n for (const column of columns) {\n if (column.children && row[column.leafID]) {\n let childDepth = 0;\n let childRows = [];\n if (isArray(row[column.leafID])) {\n childRows = row[column.leafID];\n } else if (isArray(row[column.leafID].Row)) {\n childRows = row[column.leafID].Row;\n }\n for (const childRow of childRows) {\n childDepth += this.calcDepth(column.children, childRow);\n }\n maxChildDepth = Math.max(maxChildDepth, childDepth);\n }\n }\n return maxChildDepth;\n }\n\n formatCell(column: ColumnType, cell, maxChildDepth) {\n if (column.children) {\n let childDepth = 0;\n if (!isArray(cell)) {\n if (isArray(cell.Row)) {\n cell = cell.Row;\n } else {\n cell = [cell];\n }\n }\n for (const row of cell) {\n childDepth = Math.max(childDepth, this.formatRow(column.children, row));\n }\n } else {\n if (column.isSet) {\n cell = JSON.stringify(cell.Item);\n }\n if (this._formattedRow[column.field] === undefined) {\n this._formattedRow[column.field] = \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n } else {\n this._formattedRow[column.field] += LINE_SPLITTER;\n this._formattedRow[column.field] += \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n }\n if (maxChildDepth > 1) {\n const paddingArr = [];\n paddingArr.length = maxChildDepth;\n const padding = paddingArr.join(LINE_SPLITTER2);\n this._formattedRow[column.field] += padding;\n }\n }\n }\n\n formatRow(columns: ColumnType[], row: { [key: string]: any } = [], rowIdx: number = 0) {\n const maxChildDepth = this.calcDepth(columns, row);\n for (const column of columns) {\n this.formatCell(column, row[column.leafID], maxChildDepth);\n }\n return maxChildDepth;\n }\n\n row() {\n const retVal = {};\n for (const column of this._flattenedColumns) {\n retVal[column] = this._formattedRow[column];\n }\n return retVal;\n }\n}\n","import { Database } from \"@hpcc-js/common\";\nimport { Deferred } from \"./dgrid-shim.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport class DBStore {\n private _db: Database.Grid;\n\n Model: null;\n idProperty: \"__hpcc_id\";\n\n constructor(db: Database.Grid) {\n this._db = db;\n }\n\n protected _renderHtml = true;\n renderHtml(_: boolean) {\n this._renderHtml = _;\n }\n\n db2Columns(sortable: boolean, fields: Database.Field[], prefix = \"\", formatter?: CellFormatter, renderCell?: CellRenderer): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const label = field.label();\n const column: ColumnType = {\n label,\n leafID: \"\" + idx,\n field: prefix + idx,\n idx,\n className: \"resultGridCell\",\n sortable,\n isSet: false\n };\n switch (field.type()) {\n case \"nested\":\n column.children = this.db2Columns(false, field.children(), prefix + idx + \"_\", formatter);\n column.sortable = false;\n break;\n default:\n column.formatter = formatter;\n column.renderCell = renderCell;\n }\n return column;\n });\n }\n\n columns(sortable: boolean, formatter?: CellFormatter, renderCell?: CellRenderer) {\n return this.db2Columns(sortable, this._db.fields(), \"\", formatter, renderCell);\n }\n\n getIdentity(object) {\n return object.__hpcc_id;\n }\n\n get(row: number) {\n return this._db.row(row + 1);\n }\n\n _fetchRange(opts: { start: number, end: number }): object[] {\n const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);\n return this._db.data().slice(opts.start, opts.end).map((row, idx) => {\n const formattedRow: any = rowFormatter.format(row);\n return {\n ...formattedRow,\n __hpcc_id: opts.start + idx,\n __origRow: row\n };\n });\n }\n\n fetchRange(opts: { start: number, end: number }): Promise<object[]> {\n const data = this._fetchRange(opts);\n const retVal: any = new Deferred();\n retVal.totalLength = new Deferred();\n retVal.resolve(data);\n retVal.totalLength.resolve(this._db.length() - 1);\n return retVal;\n }\n\n sort(opts) {\n this._db.data().sort((l, r) => {\n for (const item of opts) {\n const idx = item.property;\n if ((l[idx] === undefined && r[idx] !== undefined) || l[idx] < r[idx]) return item.descending ? 1 : -1;\n if ((l[idx] !== undefined && r[idx] === undefined) || l[idx] > r[idx]) return item.descending ? -1 : 1;\n }\n return 0;\n });\n return this;\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { Grid, PagingGrid } from \"./dgrid-shim.ts\";\nimport { DBStore } from \"./DBStore.ts\";\n\nimport \"../src/Common.css\";\n\nexport class Common extends HTMLWidget {\n protected _columns = [];\n protected _store = new DBStore(this._db);\n protected _dgridDiv;\n protected _dgrid;\n protected _prevPaging;\n private _prevSortBy: string;\n private _prevSortByDescending: boolean;\n private _prevMultiSelect: boolean;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n protected formatSortBy(): [{ property: string, descending: boolean }] | undefined {\n const idx = this.columns().indexOf(this.sortBy());\n return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : undefined;\n }\n\n protected _supressEvents;\n selection(): any[];\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const id in this._dgrid.selection) {\n if (this._dgrid.selection[id]) {\n const storeItem = this._store.get(+id);\n retVal.push(this.rowToObj(storeItem));\n }\n }\n return retVal;\n }\n this._supressEvents = true;\n this._dgrid?.clearSelection();\n let first = true;\n this.data().forEach((row, idx) => {\n if (_.indexOf(row) >= 0) {\n const row = this._dgrid?.row(idx);\n if (row.element && first) {\n first = false;\n row.element.scrollIntoView();\n }\n this._dgrid?.select(idx);\n }\n });\n this._supressEvents = false;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._store.renderHtml(this.renderHtml());\n\n if (!this._dgrid || this._prevPaging !== this.pagination() ||\n this._prevSortBy !== this.sortBy() ||\n this._prevSortByDescending !== this.sortByDescending() ||\n this._prevMultiSelect !== this.multiSelect()) {\n\n this._prevPaging = this.pagination();\n this._prevSortBy = this.sortBy();\n this._prevSortByDescending = this.sortByDescending();\n this._prevMultiSelect = this.multiSelect();\n if (this._dgrid) {\n this._dgrid.destroy();\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({\n columns: this._columns,\n collection: this._store,\n sort: this.formatSortBy(),\n selectionMode: this.multiSelect() ? \"extended\" : \"single\",\n deselectOnRefresh: true,\n cellNavigation: false,\n pagingLinks: 1,\n pagingTextBox: true,\n previousNextArrows: true,\n firstLastArrows: true,\n rowsPerPage: this.pageSize(),\n pageSizeOptions: [1, 10, 25, 50, 100, 1000]\n }, this._dgridDiv.node());\n this._dgrid.on(\"dgrid-select\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", true, { selection: this.selection() });\n }\n });\n this._dgrid.on(\"dgrid-deselect\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", false, { selection: this.selection() });\n }\n });\n this._dgrid.refresh({});\n }\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;\n this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;\n\n this._dgridDiv\n .style(\"width\", this.width() + \"px\")\n .style(\"height\", this.height() - 2 + \"px\")\n ;\n this._dgrid.resize();\n }\n\n exit(domNode, element) {\n delete this._prevPaging;\n if (this._dgrid) {\n this._dgrid.destroy();\n delete this._dgrid;\n }\n super.exit(domNode, element);\n }\n\n click(row, col, sel, more) {\n }\n}\nCommon.prototype._class += \" dgrid_Common\";\n\nexport interface Common {\n noDataMessage(): string;\n noDataMessage(_: string): this;\n loadingMessage(): string;\n loadingMessage(_: string): this;\n pagination(): boolean;\n pagination(_: boolean): this;\n pageSize(): number;\n pageSize(_: number): this;\n sortable(): boolean;\n sortable(_: boolean): this;\n sortBy(): string;\n sortBy(_: string): this;\n sortByDescending(): boolean;\n sortByDescending(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n renderHtml(): boolean;\n renderHtml(_: boolean): this;\n}\n\nCommon.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\nCommon.prototype.publish(\"loadingMessage\", \"loading...\", \"string\", \"Loading Message\");\nCommon.prototype.publish(\"pagination\", false, \"boolean\", \"Enable paging\");\nCommon.prototype.publish(\"pageSize\", 25, \"number\", \"Page size\");\nCommon.prototype.publish(\"sortable\", false, \"boolean\", \"Enable sorting by column\");\nCommon.prototype.publish(\"sortBy\", null, \"set\", \"Default 'sort by' Column ID\", function (this: Common) { return this.columns(); }, { optional: true });\nCommon.prototype.publish(\"sortByDescending\", false, \"boolean\", \"Default 'sort by' descending\", undefined, { disable: self => !self.sortBy() });\nCommon.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\nCommon.prototype.publish(\"renderHtml\", true, \"boolean\", \"Render HTML\");\n\n","import type { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Deferred, QueryResults } from \"./dgrid-shim.ts\";\nimport { ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport interface IDatasource {\n id: () => string;\n hash: () => string;\n label: () => string;\n\n outFields: () => DDL2.IField[];\n total: () => number;\n fetch: (from: number, count: number) => Promise<ReadonlyArray<object>>;\n}\n\nexport class DatasourceCache implements IDatasource {\n protected _datasource: IDatasource;\n _prevHash: string;\n _fetchCache: { [key: string]: Promise<ReadonlyArray<object>> } = {};\n\n constructor(datasource: IDatasource) {\n this._datasource = datasource;\n }\n\n validateCache() {\n const hash = this.hash();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._fetchCache = {};\n }\n }\n\n id() { return this._datasource.id(); }\n hash() { return this._datasource.hash(); }\n label() { return this._datasource.label(); }\n\n outFields() { return this._datasource.outFields(); }\n total() { return this._datasource.total(); }\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n this.validateCache();\n const cacheID = `${from}->${count}`;\n let retVal = this._fetchCache[cacheID];\n if (!retVal) {\n retVal = this._datasource.fetch(from, count);\n this._fetchCache[cacheID] = retVal;\n }\n return retVal;\n }\n}\n\nexport class DatasourceStore {\n _datasource: DatasourceCache;\n _columnsIdx: { [key: string]: number } = {};\n _columns;\n\n private rowFormatter: RowFormatter;\n\n constructor(datasource: IDatasource, renderHtml: boolean) {\n this._datasource = new DatasourceCache(datasource);\n\n this._columnsIdx = {};\n this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {\n this._columnsIdx[column.field] = idx;\n return column;\n });\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n }\n\n columns() {\n return this._columns;\n }\n\n db2Columns(fields: DDL2.IField[], prefix = \"\"): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const column: ColumnType = {\n field: prefix + field.id,\n leafID: field.id,\n label: field.id,\n idx,\n className: \"resultGridCell\",\n sortable: true,\n isSet: false\n };\n if (field.type === \"dataset\") {\n column.children = this.db2Columns(field.children, prefix + field.id + \"_\");\n } else {\n column.formatter = (cell, row) => {\n switch (typeof cell) {\n case \"string\":\n return cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\");\n }\n return cell;\n };\n }\n return column;\n });\n }\n\n getIdentity(row) {\n return row.__hpcc_id;\n }\n\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });\n const retVal = this._datasource.fetch(start, end - start).then(response => {\n return {\n totalLength: this._datasource.total(),\n data: response.map((row, idx) => {\n const formattedRow: any = this.rowFormatter.format(row);\n formattedRow.__hpcc_id = start + idx;\n formattedRow.__origRow = row;\n return formattedRow;\n })\n };\n });\n return retVal;\n }\n\n fetchRange(options): Promise<any[]> {\n const retVal = new Deferred();\n this._request(options.start, options.end).then(response => retVal.resolve(response));\n return new QueryResults(retVal.then(response => response.data), {\n totalLength: retVal.then(response => response.totalLength)\n });\n }\n}\n","import { Widget } from \"@hpcc-js/common\";\nimport { Memory } from \"./dgrid-shim.ts\";\nimport { Common } from \"./Common.ts\";\nimport { DatasourceStore, IDatasource } from \"./DatasourceStore.ts\";\n\nexport class DatasourceTable extends Common {\n _prevDatasource?: IDatasource;\n\n constructor() {\n super();\n }\n\n invalidate(): this {\n delete this._prevDatasource;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n render(callback?: (w: Widget) => void): this {\n return super.render(w => {\n if (this._prevDatasource !== this.datasource()) {\n this._dgrid.set(\"collection\", new Memory());\n this._dgrid.set(\"columns\", []);\n this._prevDatasource = this.datasource();\n if (this._prevDatasource) {\n const store = new DatasourceStore(this._prevDatasource, this.renderHtml());\n this._dgrid.set(\"columns\", store.columns());\n this._dgrid.set(\"collection\", store);\n if (callback) {\n callback(w);\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n });\n }\n\n click(row, col, sel) {\n }\n}\nDatasourceTable.prototype._class += \" dgrid_DatasourceTable\";\n\nexport interface DatasourceTable {\n datasource(): IDatasource;\n datasource(_: IDatasource): this;\n}\n\nDatasourceTable.prototype.publish(\"datasource\", null, \"object\", \"Datasource\");\n\n","import { Palette, PropertyExt, Field } from \"@hpcc-js/common\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Common } from \"./Common.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowType } from \"./RowFormatter.ts\";\n\n// ColumnPalette ---\nexport class ColumnFormat extends PropertyExt {\n _owner: Table;\n\n constructor() {\n super();\n }\n\n owner(): Table;\n owner(_: Table): this;\n owner(_?: Table): Table | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.column();\n }\n\n formatterFunc(): CellFormatter | undefined {\n const defaultFormatter = this._owner.formatterFunc();\n if (this.valid() && this.format()) {\n const numberFormatter = d3Format(this.format());\n\n return function (this: ColumnType, cell: any, row: RowType): string {\n if (typeof cell === \"number\")\n return numberFormatter(cell);\n return defaultFormatter.call(this, cell, row);\n };\n }\n return defaultFormatter;\n }\n\n renderCellFunc(): CellRenderer | undefined {\n const defaultRenderCell = this._owner.renderCellFunc();\n const defaultFormatter = this.formatterFunc();\n if (this.valid() && this.paletteID()) {\n const columns = this._owner.columns();\n const palette = Palette.rainbow(this.paletteID());\n const min = this.min();\n const max = this.max();\n const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : undefined;\n return function (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement): HTMLElement | void {\n if (defaultRenderCell) {\n defaultRenderCell.call(this, row, cell, cellElement);\n }\n const value = valueColIdx ? row.__origRow[valueColIdx] : cell;\n const background = palette(value, min, max);\n const cellText: any = defaultFormatter.call(this, cell, row);\n d3Select(cellElement)\n .style(\"background\", background)\n .style(\"color\", background && Palette.textColor(background))\n .text(cellText?.html ?? cellText ?? cell)\n ;\n };\n }\n return defaultRenderCell;\n }\n}\nColumnFormat.prototype._class += \" dgrid_Table.ColumnFormat\";\n\nexport interface ColumnFormat {\n column(): string;\n column(_: string): this;\n width(): number;\n width(_: number): this;\n format(): string;\n format(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n min(): number;\n min(_: number): this;\n max(): number;\n max(_: number): this;\n valueColumn(): string;\n valueColumn(_: string): this;\n}\nColumnFormat.prototype.publish(\"column\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true });\nColumnFormat.prototype.publish(\"width\", null, \"number\", \"Width\", null, { optional: true });\nColumnFormat.prototype.publish(\"format\", null, \"string\", \"Format (d3-format)\", null, { optional: true });\nColumnFormat.prototype.publish(\"paletteID\", null, \"set\", \"Color palette for this widget\", [\"\", ...Palette.rainbow(\"default\").switch()], { optional: true });\nColumnFormat.prototype.publish(\"min\", 0, \"number\", \"Min Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"max\", 100, \"number\", \"Max Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"valueColumn\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true, disable: (cf: ColumnFormat) => !cf.paletteID() });\n\n// Table ---\nexport class Table extends Common {\n private _prevColsHash;\n private _prevFieldsHash;\n _colsRefresh = false;\n _dataRefresh = false;\n\n constructor() {\n super();\n }\n\n fields(): Field[];\n fields(_: Field[]): this;\n fields(_?: Field[]): Field[] | this {\n const retVal = super.fields.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevFieldsHash !== hash) {\n this._prevFieldsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n const retVal = super.columns.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevColsHash !== hash) {\n this._prevColsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n const retVal = super.data.apply(this, arguments as any);\n if (arguments.length) {\n this._dataRefresh = true;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n guessWidth(columns, data) {\n const sortablePadding = this.sortable() ? 12 : 0;\n for (const column of columns) {\n if (column.children) {\n let sampleData = [];\n for (let i = 0; i < Math.min(3, data.length); ++i) {\n sampleData = sampleData.concat(data[i][column.idx]);\n }\n this.guessWidth(column.children, sampleData);\n } else {\n column.width = data.reduce((prevVal: number, row) => {\n const cell = (\"\" + row[column.idx]).trim();\n return Math.max(prevVal, this.textSize(cell).width);\n }, this.textSize(\"\" + column.label, undefined, undefined, true).width + sortablePadding) + 8; // +12 for the sort icon, +8 for the cell padding.\n }\n }\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._colsRefresh = true;\n }\n if (this._colsRefresh) {\n this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());\n switch (this.columnWidth()) {\n case \"auto\":\n const tenRows = this.data().filter((row, idx) => idx < 10);\n this.guessWidth(this._columns, tenRows);\n break;\n }\n const columns = this.columns();\n for (const columnFormat of this.columnFormats()) {\n if (columnFormat.valid()) {\n const colIdx = columns.indexOf(columnFormat.column());\n if (this._columns[colIdx]) {\n this._columns[colIdx].hidden = columnFormat.width() === 0;\n this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;\n this._columns[colIdx].formatter = columnFormat.formatterFunc();\n this._columns[colIdx].renderCell = columnFormat.renderCellFunc();\n }\n }\n }\n this._dgrid.set(\"columns\", this._columns.filter(col => !col.hidden));\n this._colsRefresh = false;\n }\n if (this._colsRefresh || this._dataRefresh) {\n if (this._colsRefresh) {\n this._dgrid.refresh({});\n } else {\n this._dgrid.refresh();\n }\n this._colsRefresh = false;\n this._dataRefresh = false;\n }\n }\n\n exit(domNode, element) {\n delete this._prevColsHash;\n delete this._prevFieldsHash;\n super.exit(domNode, element);\n }\n\n // Cell ---\n formatterFunc(): CellFormatter | undefined {\n return function (this: ColumnType, cell: any, row: RowType): string | any {\n switch (typeof cell) {\n case \"string\":\n return {\n html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n };\n case \"undefined\":\n return \"\";\n }\n return cell;\n };\n }\n\n renderCellFunc(): CellRenderer | undefined {\n return undefined; // Undefined will defualt to formatter ---\n }\n\n // Events ---\n click(row, col, sel) {\n }\n}\nTable.prototype._class += \" dgrid_Table\";\n\nexport interface Table {\n columnWidth(): \"auto\" | \"none\";\n columnWidth(_: \"auto\" | \"none\"): this;\n columnFormats(): ColumnFormat[];\n columnFormats(_: ColumnFormat[]): this;\n}\n\nTable.prototype.publish(\"columnWidth\", \"auto\", \"set\", \"Default column width\", [\"auto\", \"none\"]);\nTable.prototype.publish(\"columnFormats\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: ColumnFormat });\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/dgrid-shim.ts","../src/RowFormatter.ts","../src/DBStore.ts","../src/Common.ts","../src/DatasourceStore.ts","../src/DatasourceTable.ts","../src/Table.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\n\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n console.error(\"dgrid-shim not loaded, please add `<script src=\\\"https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js\\\"></script>` or similar to your HTML file\");\n}\n\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\n","function entitiesEncode(str) {\n return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n switch (Object.prototype.toString.call(item)) {\n case \"[object Undefined]\":\n case \"[object Boolean]\":\n case \"[object Number]\":\n return item;\n case \"[object String]\":\n return entitiesEncode(item);\n default:\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item));\n }\n return item;\n}\n\nfunction isArray(obj: any): obj is any[] {\n return obj instanceof Array;\n}\n\nconst LINE_SPLITTER = \"<br><hr class='dgrid-fakeline'>\";\nconst LINE_SPLITTER2 = \"<br><hr class='dgrid-fakeline' style='visibility: hidden'>\";\n\nexport interface ColumnType {\n field: string;\n leafID: string;\n label: string;\n idx: number;\n className: string;\n sortable: boolean;\n isSet: boolean;\n width?: number;\n formatter?: CellFormatter;\n renderCell?: CellRenderer;\n children?: ColumnType[];\n}\nexport interface RowType {\n __hpcc_id: number;\n __origRow: any[];\n [colIdx: number]: any;\n}\nexport type CellFormatter = (this: ColumnType, cell: any, row: RowType) => string;\nexport type CellRenderer = (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement) => HTMLElement | void;\n\nexport class RowFormatter {\n private _columns: ColumnType[];\n private _flattenedColumns = [];\n private _columnIdx = {};\n private _formattedRow = {};\n\n constructor(columns: ColumnType[], protected _renderHtml) {\n this._columns = columns;\n this.flattenColumns(columns);\n }\n\n flattenColumns(columns: ColumnType[]) {\n for (const column of columns) {\n this.flattenColumn(column);\n }\n }\n\n flattenColumn(column: ColumnType) {\n if (column.children) {\n for (const childColumn of column.children) this.flattenColumn(childColumn);\n } else {\n this._columnIdx[column.field] = this._flattenedColumns.length;\n this._flattenedColumns.push(column.field);\n }\n }\n\n format(row) {\n this._formattedRow = {};\n this.formatRow(this._columns, row);\n return this.row();\n }\n\n calcDepth(columns: ColumnType[], row) {\n let maxChildDepth = 1;\n for (const column of columns) {\n if (column.children && row[column.leafID]) {\n let childDepth = 0;\n let childRows = [];\n if (isArray(row[column.leafID])) {\n childRows = row[column.leafID];\n } else if (isArray(row[column.leafID].Row)) {\n childRows = row[column.leafID].Row;\n }\n for (const childRow of childRows) {\n childDepth += this.calcDepth(column.children, childRow);\n }\n maxChildDepth = Math.max(maxChildDepth, childDepth);\n }\n }\n return maxChildDepth;\n }\n\n formatCell(column: ColumnType, cell, maxChildDepth) {\n if (column.children) {\n let childDepth = 0;\n if (!isArray(cell)) {\n if (isArray(cell.Row)) {\n cell = cell.Row;\n } else {\n cell = [cell];\n }\n }\n for (const row of cell) {\n childDepth = Math.max(childDepth, this.formatRow(column.children, row));\n }\n } else {\n if (column.isSet) {\n cell = JSON.stringify(cell.Item);\n }\n if (this._formattedRow[column.field] === undefined) {\n this._formattedRow[column.field] = \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n } else {\n this._formattedRow[column.field] += LINE_SPLITTER;\n this._formattedRow[column.field] += \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n }\n if (maxChildDepth > 1) {\n const paddingArr = [];\n paddingArr.length = maxChildDepth;\n const padding = paddingArr.join(LINE_SPLITTER2);\n this._formattedRow[column.field] += padding;\n }\n }\n }\n\n formatRow(columns: ColumnType[], row: { [key: string]: any } = [], rowIdx: number = 0) {\n const maxChildDepth = this.calcDepth(columns, row);\n for (const column of columns) {\n this.formatCell(column, row[column.leafID], maxChildDepth);\n }\n return maxChildDepth;\n }\n\n row() {\n const retVal = {};\n for (const column of this._flattenedColumns) {\n retVal[column] = this._formattedRow[column];\n }\n return retVal;\n }\n}\n","import { Database } from \"@hpcc-js/common\";\nimport { Deferred } from \"./dgrid-shim.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport class DBStore {\n private _db: Database.Grid;\n\n Model: null;\n idProperty: \"__hpcc_id\";\n\n constructor(db: Database.Grid) {\n this._db = db;\n }\n\n protected _renderHtml = true;\n renderHtml(_: boolean) {\n this._renderHtml = _;\n }\n\n db2Columns(sortable: boolean, fields: Database.Field[], prefix = \"\", formatter?: CellFormatter, renderCell?: CellRenderer): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const label = field.label();\n const column: ColumnType = {\n label,\n leafID: \"\" + idx,\n field: prefix + idx,\n idx,\n className: \"resultGridCell\",\n sortable,\n isSet: false\n };\n switch (field.type()) {\n case \"nested\":\n column.children = this.db2Columns(false, field.children(), prefix + idx + \"_\", formatter);\n column.sortable = false;\n break;\n default:\n column.formatter = formatter;\n column.renderCell = renderCell;\n }\n return column;\n });\n }\n\n columns(sortable: boolean, formatter?: CellFormatter, renderCell?: CellRenderer) {\n return this.db2Columns(sortable, this._db.fields(), \"\", formatter, renderCell);\n }\n\n getIdentity(object) {\n return object.__hpcc_id;\n }\n\n get(row: number) {\n return this._db.row(row + 1);\n }\n\n _fetchRange(opts: { start: number, end: number }): object[] {\n const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);\n return this._db.data().slice(opts.start, opts.end).map((row, idx) => {\n const formattedRow: any = rowFormatter.format(row);\n return {\n ...formattedRow,\n __hpcc_id: opts.start + idx,\n __origRow: row\n };\n });\n }\n\n fetchRange(opts: { start: number, end: number }): Promise<object[]> {\n const data = this._fetchRange(opts);\n const retVal: any = new Deferred();\n retVal.totalLength = new Deferred();\n retVal.resolve(data);\n retVal.totalLength.resolve(this._db.length() - 1);\n return retVal;\n }\n\n sort(opts) {\n this._db.data().sort((l, r) => {\n for (const item of opts) {\n const idx = item.property;\n if ((l[idx] === undefined && r[idx] !== undefined) || l[idx] < r[idx]) return item.descending ? 1 : -1;\n if ((l[idx] !== undefined && r[idx] === undefined) || l[idx] > r[idx]) return item.descending ? -1 : 1;\n }\n return 0;\n });\n return this;\n }\n}\n","import { HTMLWidget } from \"@hpcc-js/common\";\nimport { Grid, PagingGrid } from \"./dgrid-shim.ts\";\nimport { DBStore } from \"./DBStore.ts\";\n\nimport \"../src/Common.css\";\n\nexport class Common extends HTMLWidget {\n protected _columns = [];\n protected _store = new DBStore(this._db);\n protected _dgridDiv;\n protected _dgrid;\n protected _prevPaging;\n private _prevSortBy: string;\n private _prevSortByDescending: boolean;\n private _prevMultiSelect: boolean;\n\n constructor() {\n super();\n this._tag = \"div\";\n }\n\n protected formatSortBy(): [{ property: string, descending: boolean }] | undefined {\n const idx = this.columns().indexOf(this.sortBy());\n return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : undefined;\n }\n\n protected _supressEvents;\n selection(): any[];\n selection(_: any[]): this;\n selection(_?: any[]): any[] | this {\n if (!arguments.length) {\n const retVal = [];\n for (const id in this._dgrid.selection) {\n if (this._dgrid.selection[id]) {\n const storeItem = this._store.get(+id);\n retVal.push(this.rowToObj(storeItem));\n }\n }\n return retVal;\n }\n this._supressEvents = true;\n this._dgrid?.clearSelection();\n let first = true;\n this.data().forEach((row, idx) => {\n if (_.indexOf(row) >= 0) {\n const row = this._dgrid?.row(idx);\n if (row.element && first) {\n first = false;\n row.element.scrollIntoView();\n }\n this._dgrid?.select(idx);\n }\n });\n this._supressEvents = false;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._store.renderHtml(this.renderHtml());\n\n if (!this._dgrid || this._prevPaging !== this.pagination() ||\n this._prevSortBy !== this.sortBy() ||\n this._prevSortByDescending !== this.sortByDescending() ||\n this._prevMultiSelect !== this.multiSelect()) {\n\n this._prevPaging = this.pagination();\n this._prevSortBy = this.sortBy();\n this._prevSortByDescending = this.sortByDescending();\n this._prevMultiSelect = this.multiSelect();\n if (this._dgrid) {\n this._dgrid.destroy();\n this._dgridDiv = element.append(\"div\")\n .attr(\"class\", \"flat\")\n ;\n }\n this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({\n columns: this._columns,\n collection: this._store,\n sort: this.formatSortBy(),\n selectionMode: this.multiSelect() ? \"extended\" : \"single\",\n deselectOnRefresh: true,\n cellNavigation: false,\n pagingLinks: 1,\n pagingTextBox: true,\n previousNextArrows: true,\n firstLastArrows: true,\n rowsPerPage: this.pageSize(),\n pageSizeOptions: [1, 10, 25, 50, 100, 1000]\n }, this._dgridDiv.node());\n this._dgrid.on(\"dgrid-select\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", true, { selection: this.selection() });\n }\n });\n this._dgrid.on(\"dgrid-deselect\", (evt) => {\n if (this._supressEvents) return;\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", false, { selection: this.selection() });\n }\n });\n this._dgrid.refresh({});\n }\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;\n this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;\n\n this._dgridDiv\n .style(\"width\", this.width() + \"px\")\n .style(\"height\", this.height() - 2 + \"px\")\n ;\n this._dgrid.resize();\n }\n\n exit(domNode, element) {\n delete this._prevPaging;\n if (this._dgrid) {\n this._dgrid.destroy();\n delete this._dgrid;\n }\n super.exit(domNode, element);\n }\n\n click(row, col, sel, more) {\n }\n}\nCommon.prototype._class += \" dgrid_Common\";\n\nexport interface Common {\n noDataMessage(): string;\n noDataMessage(_: string): this;\n loadingMessage(): string;\n loadingMessage(_: string): this;\n pagination(): boolean;\n pagination(_: boolean): this;\n pageSize(): number;\n pageSize(_: number): this;\n sortable(): boolean;\n sortable(_: boolean): this;\n sortBy(): string;\n sortBy(_: string): this;\n sortByDescending(): boolean;\n sortByDescending(_: boolean): this;\n multiSelect(): boolean;\n multiSelect(_: boolean): this;\n renderHtml(): boolean;\n renderHtml(_: boolean): this;\n}\n\nCommon.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\nCommon.prototype.publish(\"loadingMessage\", \"loading...\", \"string\", \"Loading Message\");\nCommon.prototype.publish(\"pagination\", false, \"boolean\", \"Enable paging\");\nCommon.prototype.publish(\"pageSize\", 25, \"number\", \"Page size\");\nCommon.prototype.publish(\"sortable\", false, \"boolean\", \"Enable sorting by column\");\nCommon.prototype.publish(\"sortBy\", null, \"set\", \"Default 'sort by' Column ID\", function (this: Common) { return this.columns(); }, { optional: true });\nCommon.prototype.publish(\"sortByDescending\", false, \"boolean\", \"Default 'sort by' descending\", undefined, { disable: self => !self.sortBy() });\nCommon.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\nCommon.prototype.publish(\"renderHtml\", true, \"boolean\", \"Render HTML\");\n\n","import type { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Deferred, QueryResults } from \"./dgrid-shim.ts\";\nimport { ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport interface IDatasource {\n id: () => string;\n hash: () => string;\n label: () => string;\n\n outFields: () => DDL2.IField[];\n total: () => number;\n fetch: (from: number, count: number) => Promise<ReadonlyArray<object>>;\n}\n\nexport class DatasourceCache implements IDatasource {\n protected _datasource: IDatasource;\n _prevHash: string;\n _fetchCache: { [key: string]: Promise<ReadonlyArray<object>> } = {};\n\n constructor(datasource: IDatasource) {\n this._datasource = datasource;\n }\n\n validateCache() {\n const hash = this.hash();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._fetchCache = {};\n }\n }\n\n id() { return this._datasource.id(); }\n hash() { return this._datasource.hash(); }\n label() { return this._datasource.label(); }\n\n outFields() { return this._datasource.outFields(); }\n total() { return this._datasource.total(); }\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n this.validateCache();\n const cacheID = `${from}->${count}`;\n let retVal = this._fetchCache[cacheID];\n if (!retVal) {\n retVal = this._datasource.fetch(from, count);\n this._fetchCache[cacheID] = retVal;\n }\n return retVal;\n }\n}\n\nexport class DatasourceStore {\n _datasource: DatasourceCache;\n _columnsIdx: { [key: string]: number } = {};\n _columns;\n\n private rowFormatter: RowFormatter;\n\n constructor(datasource: IDatasource, renderHtml: boolean) {\n this._datasource = new DatasourceCache(datasource);\n\n this._columnsIdx = {};\n this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {\n this._columnsIdx[column.field] = idx;\n return column;\n });\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n }\n\n columns() {\n return this._columns;\n }\n\n db2Columns(fields: DDL2.IField[], prefix = \"\"): ColumnType[] {\n if (!fields) return [];\n return fields.map((field, idx) => {\n const column: ColumnType = {\n field: prefix + field.id,\n leafID: field.id,\n label: field.id,\n idx,\n className: \"resultGridCell\",\n sortable: true,\n isSet: false\n };\n if (field.type === \"dataset\") {\n column.children = this.db2Columns(field.children, prefix + field.id + \"_\");\n } else {\n column.formatter = (cell, row) => {\n switch (typeof cell) {\n case \"string\":\n return cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\");\n }\n return cell;\n };\n }\n return column;\n });\n }\n\n getIdentity(row) {\n return row.__hpcc_id;\n }\n\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });\n const retVal = this._datasource.fetch(start, end - start).then(response => {\n return {\n totalLength: this._datasource.total(),\n data: response.map((row, idx) => {\n const formattedRow: any = this.rowFormatter.format(row);\n formattedRow.__hpcc_id = start + idx;\n formattedRow.__origRow = row;\n return formattedRow;\n })\n };\n });\n return retVal;\n }\n\n fetchRange(options): Promise<any[]> {\n const retVal = new Deferred();\n this._request(options.start, options.end).then(response => retVal.resolve(response));\n return new QueryResults(retVal.then(response => response.data), {\n totalLength: retVal.then(response => response.totalLength)\n });\n }\n}\n","import { Widget } from \"@hpcc-js/common\";\nimport { Memory } from \"./dgrid-shim.ts\";\nimport { Common } from \"./Common.ts\";\nimport { DatasourceStore, IDatasource } from \"./DatasourceStore.ts\";\n\nexport class DatasourceTable extends Common {\n _prevDatasource?: IDatasource;\n\n constructor() {\n super();\n }\n\n invalidate(): this {\n delete this._prevDatasource;\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n render(callback?: (w: Widget) => void): this {\n return super.render(w => {\n if (this._prevDatasource !== this.datasource()) {\n this._dgrid.set(\"collection\", new Memory());\n this._dgrid.set(\"columns\", []);\n this._prevDatasource = this.datasource();\n if (this._prevDatasource) {\n const store = new DatasourceStore(this._prevDatasource, this.renderHtml());\n this._dgrid.set(\"columns\", store.columns());\n this._dgrid.set(\"collection\", store);\n if (callback) {\n callback(w);\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n } else {\n if (callback) {\n callback(w);\n }\n }\n });\n }\n\n click(row, col, sel) {\n }\n}\nDatasourceTable.prototype._class += \" dgrid_DatasourceTable\";\n\nexport interface DatasourceTable {\n datasource(): IDatasource;\n datasource(_: IDatasource): this;\n}\n\nDatasourceTable.prototype.publish(\"datasource\", null, \"object\", \"Datasource\");\n\n","import { Palette, PropertyExt, Field } from \"@hpcc-js/common\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Common } from \"./Common.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowType } from \"./RowFormatter.ts\";\n\n// ColumnPalette ---\nexport class ColumnFormat extends PropertyExt {\n _owner: Table;\n\n constructor() {\n super();\n }\n\n owner(): Table;\n owner(_: Table): this;\n owner(_?: Table): Table | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.column();\n }\n\n formatterFunc(): CellFormatter | undefined {\n const defaultFormatter = this._owner.formatterFunc();\n if (this.valid() && this.format()) {\n const numberFormatter = d3Format(this.format());\n\n return function (this: ColumnType, cell: any, row: RowType): string {\n if (typeof cell === \"number\")\n return numberFormatter(cell);\n return defaultFormatter.call(this, cell, row);\n };\n }\n return defaultFormatter;\n }\n\n renderCellFunc(): CellRenderer | undefined {\n const defaultRenderCell = this._owner.renderCellFunc();\n const defaultFormatter = this.formatterFunc();\n if (this.valid() && this.paletteID()) {\n const columns = this._owner.columns();\n const palette = Palette.rainbow(this.paletteID());\n const min = this.min();\n const max = this.max();\n const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : undefined;\n return function (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement): HTMLElement | void {\n if (defaultRenderCell) {\n defaultRenderCell.call(this, row, cell, cellElement);\n }\n const value = valueColIdx ? row.__origRow[valueColIdx] : cell;\n const background = palette(value, min, max);\n const cellText: any = defaultFormatter.call(this, cell, row);\n d3Select(cellElement)\n .style(\"background\", background)\n .style(\"color\", background && Palette.textColor(background))\n .text(cellText?.html ?? cellText ?? cell)\n ;\n };\n }\n return defaultRenderCell;\n }\n}\nColumnFormat.prototype._class += \" dgrid_Table.ColumnFormat\";\n\nexport interface ColumnFormat {\n column(): string;\n column(_: string): this;\n width(): number;\n width(_: number): this;\n format(): string;\n format(_: string): this;\n paletteID(): string;\n paletteID(_: string): this;\n min(): number;\n min(_: number): this;\n max(): number;\n max(_: number): this;\n valueColumn(): string;\n valueColumn(_: string): this;\n}\nColumnFormat.prototype.publish(\"column\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true });\nColumnFormat.prototype.publish(\"width\", null, \"number\", \"Width\", null, { optional: true });\nColumnFormat.prototype.publish(\"format\", null, \"string\", \"Format (d3-format)\", null, { optional: true });\nColumnFormat.prototype.publish(\"paletteID\", null, \"set\", \"Color palette for this widget\", [\"\", ...Palette.rainbow(\"default\").switch()], { optional: true });\nColumnFormat.prototype.publish(\"min\", 0, \"number\", \"Min Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"max\", 100, \"number\", \"Max Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"valueColumn\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true, disable: (cf: ColumnFormat) => !cf.paletteID() });\n\n// Table ---\nexport class Table extends Common {\n private _prevColsHash;\n private _prevFieldsHash;\n _colsRefresh = false;\n _dataRefresh = false;\n\n constructor() {\n super();\n }\n\n fields(): Field[];\n fields(_: Field[]): this;\n fields(_?: Field[]): Field[] | this {\n const retVal = super.fields.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevFieldsHash !== hash) {\n this._prevFieldsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n const retVal = super.columns.apply(this, arguments as any);\n if (arguments.length) {\n const hash = hashSum({ _ });\n if (this._prevColsHash !== hash) {\n this._prevColsHash = hash;\n this._colsRefresh = true;\n }\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n const retVal = super.data.apply(this, arguments as any);\n if (arguments.length) {\n this._dataRefresh = true;\n }\n return retVal;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n guessWidth(columns, data) {\n const sortablePadding = this.sortable() ? 12 : 0;\n for (const column of columns) {\n if (column.children) {\n let sampleData = [];\n for (let i = 0; i < Math.min(3, data.length); ++i) {\n sampleData = sampleData.concat(data[i][column.idx]);\n }\n this.guessWidth(column.children, sampleData);\n } else {\n column.width = data.reduce((prevVal: number, row) => {\n const cell = (\"\" + row[column.idx]).trim();\n return Math.max(prevVal, this.textSize(cell).width);\n }, this.textSize(\"\" + column.label, undefined, undefined, true).width + sortablePadding) + 8; // +12 for the sort icon, +8 for the cell padding.\n }\n }\n }\n\n _prevHash;\n update(domNode, element) {\n super.update(domNode, element);\n const hash = this.hashSum();\n if (this._prevHash !== hash) {\n this._prevHash = hash;\n this._colsRefresh = true;\n }\n if (this._colsRefresh) {\n this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());\n switch (this.columnWidth()) {\n case \"auto\":\n const tenRows = this.data().filter((row, idx) => idx < 10);\n this.guessWidth(this._columns, tenRows);\n break;\n }\n const columns = this.columns();\n for (const columnFormat of this.columnFormats()) {\n if (columnFormat.valid()) {\n const colIdx = columns.indexOf(columnFormat.column());\n if (this._columns[colIdx]) {\n this._columns[colIdx].hidden = columnFormat.width() === 0;\n this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;\n this._columns[colIdx].formatter = columnFormat.formatterFunc();\n this._columns[colIdx].renderCell = columnFormat.renderCellFunc();\n }\n }\n }\n this._dgrid.set(\"columns\", this._columns.filter(col => !col.hidden));\n this._colsRefresh = false;\n }\n if (this._colsRefresh || this._dataRefresh) {\n if (this._colsRefresh) {\n this._dgrid.refresh({});\n } else {\n this._dgrid.refresh();\n }\n this._colsRefresh = false;\n this._dataRefresh = false;\n }\n }\n\n exit(domNode, element) {\n delete this._prevColsHash;\n delete this._prevFieldsHash;\n super.exit(domNode, element);\n }\n\n // Cell ---\n formatterFunc(): CellFormatter | undefined {\n return function (this: ColumnType, cell: any, row: RowType): string | any {\n switch (typeof cell) {\n case \"string\":\n return {\n html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n };\n case \"undefined\":\n return \"\";\n }\n return cell;\n };\n }\n\n renderCellFunc(): CellRenderer | undefined {\n return undefined; // Undefined will defualt to formatter ---\n }\n\n // Events ---\n click(row, col, sel) {\n }\n}\nTable.prototype._class += \" dgrid_Table\";\n\nexport interface Table {\n columnWidth(): \"auto\" | \"none\";\n columnWidth(_: \"auto\" | \"none\"): this;\n columnFormats(): ColumnFormat[];\n columnFormats(_: ColumnFormat[]): this;\n}\n\nTable.prototype.publish(\"columnWidth\", \"auto\", \"set\", \"Default column width\", [\"auto\", \"none\"]);\nTable.prototype.publish(\"columnFormats\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: ColumnFormat });\n"],"names":["row","d3Format","d3Select"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@hpcc-js/common"),require("@hpcc-js/util")):"function"==typeof define&&define.amd?define(["exports","@hpcc-js/common","@hpcc-js/util"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["@hpcc-js/dgrid"]={},t["@hpcc-js/common"],t["@hpcc-js/util"])}(this,function(t,e,s){var r=Object.create,i=Object.defineProperty,o=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,l=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,h=(t,e,s)=>(s=null!=t?r(l(t)):{},((t,e,s,r)=>{if(e&&"object"==typeof e||"function"==typeof e)for(var l,h=n(e),d=0,c=h.length;d<c;d++)l=h[d],a.call(t,l)||l===s||i(t,l,{get:(t=>e[t]).bind(null,l),enumerable:!(r=o(e,l))||r.enumerable});return t})(!e&&t&&t.__esModule?s:i(s,"default",{value:t,enumerable:!0}),t));e=h(e),s=h(s);globalThis["@hpcc-js/dgrid-shim"]||console.error('dgrid-shim not loaded, please add `<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"><\/script>` or similar to your HTML file');const d=globalThis["@hpcc-js/dgrid-shim"].Deferred,c=globalThis["@hpcc-js/dgrid-shim"].Memory,u=globalThis["@hpcc-js/dgrid-shim"].QueryResults,p=globalThis["@hpcc-js/dgrid-shim"].Grid,_=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,m=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function f(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function g(t){return t instanceof Array}var b=class{_columns;_flattenedColumns=[];_columnIdx={};_formattedRow={};constructor(t,e){this._renderHtml=e,this._columns=t,this.flattenColumns(t)}flattenColumns(t){for(const e of t)this.flattenColumn(e)}flattenColumn(t){if(t.children)for(const e of t.children)this.flattenColumn(e);else this._columnIdx[t.field]=this._flattenedColumns.length,this._flattenedColumns.push(t.field)}format(t){return this._formattedRow={},this.formatRow(this._columns,t),this.row()}calcDepth(t,e){let s=1;for(const r of t)if(r.children&&e[r.leafID]){let t=0,i=[];g(e[r.leafID])?i=e[r.leafID]:g(e[r.leafID].Row)&&(i=e[r.leafID].Row);for(const e of i)t+=this.calcDepth(r.children,e);s=Math.max(s,t)}return s}formatCell(t,e,s){if(t.children){let s=0;g(e)||(e=g(e.Row)?e.Row:[e]);for(const r of e)s=Math.max(s,this.formatRow(t.children,r))}else if(t.isSet&&(e=JSON.stringify(e.Item)),void 0===this._formattedRow[t.field]?this._formattedRow[t.field]=""+(void 0===e?"":this._renderHtml?e:f(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:f(e))),s>1){const e=[];e.length=s;const r=e.join("<br><hr class='dgrid-fakeline' style='visibility: hidden'>");this._formattedRow[t.field]+=r}}formatRow(t,e=[],s=0){const r=this.calcDepth(t,e);for(const i of t)this.formatCell(i,e[i.leafID],r);return r}row(){const t={};for(const e of this._flattenedColumns)t[e]=this._formattedRow[e];return t}},y=class{_db;Model;idProperty;constructor(t){this._db=t}_renderHtml=!0;renderHtml(t){this._renderHtml=t}db2Columns(t,e,s="",r,i){return e?e.map((e,o)=>{const n={label:e.label(),leafID:""+o,field:s+o,idx:o,className:"resultGridCell",sortable:t,isSet:!1};if("nested"===e.type())n.children=this.db2Columns(!1,e.children(),s+o+"_",r),n.sortable=!1;else n.formatter=r,n.renderCell=i;return n}):[]}columns(t,e,s){return this.db2Columns(t,this._db.fields(),"",e,s)}getIdentity(t){return t.__hpcc_id}get(t){return this._db.row(t+1)}_fetchRange(t){const e=new b(this.columns(!1),this._renderHtml);return this._db.data().slice(t.start,t.end).map((s,r)=>({...e.format(s),__hpcc_id:t.start+r,__origRow:s}))}fetchRange(t){const e=this._fetchRange(t),s=new d;return s.totalLength=new d,s.resolve(e),s.totalLength.resolve(this._db.length()-1),s}sort(t){return this._db.data().sort((e,s)=>{for(const r of t){const t=r.property;if(void 0===e[t]&&void 0!==s[t]||e[t]<s[t])return r.descending?1:-1;if(void 0!==e[t]&&void 0===s[t]||e[t]>s[t])return r.descending?-1:1}return 0}),this}},w=class extends e.HTMLWidget{_columns=[];_store=new y(this._db);_dgridDiv;_dgrid;_prevPaging;_prevSortBy;_prevSortByDescending;_prevMultiSelect;constructor(){super(),this._tag="div"}formatSortBy(){const t=this.columns().indexOf(this.sortBy());return t>=0?[{property:t.toString(),descending:this.sortByDescending()}]:void 0}_supressEvents;selection(t){if(!arguments.length){const t=[];for(const e in this._dgrid.selection)if(this._dgrid.selection[e]){const s=this._store.get(+e);t.push(this.rowToObj(s))}return t}this._supressEvents=!0,this._dgrid?.clearSelection();let e=!0;this.data().forEach((s,r)=>{if(t.indexOf(s)>=0){const t=this._dgrid?.row(r);t.element&&e&&(e=!1,t.element.scrollIntoView()),this._dgrid?.select(r)}}),this._supressEvents=!1}enter(t,e){super.enter(t,e),this._dgridDiv=e.append("div").attr("class","flat")}update(t,e){super.update(t,e),this._store.renderHtml(this.renderHtml()),this._dgrid&&this._prevPaging===this.pagination()&&this._prevSortBy===this.sortBy()&&this._prevSortByDescending===this.sortByDescending()&&this._prevMultiSelect===this.multiSelect()||(this._prevPaging=this.pagination(),this._prevSortBy=this.sortBy(),this._prevSortByDescending=this.sortByDescending(),this._prevMultiSelect=this.multiSelect(),this._dgrid&&(this._dgrid.destroy(),this._dgridDiv=e.append("div").attr("class","flat")),this._dgrid=new(this._prevPaging?_:p)({columns:this._columns,collection:this._store,sort:this.formatSortBy(),selectionMode:this.multiSelect()?"extended":"single",deselectOnRefresh:!0,cellNavigation:!1,pagingLinks:1,pagingTextBox:!0,previousNextArrows:!0,firstLastArrows:!0,rowsPerPage:this.pageSize(),pageSizeOptions:[1,10,25,50,100,1e3]},this._dgridDiv.node()),this._dgrid.on("dgrid-select",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!0,{selection:this.selection()})}),this._dgrid.on("dgrid-deselect",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!1,{selection:this.selection()})}),this._dgrid.refresh({})),this._dgrid.noDataMessage=`<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`,this._dgrid.loadingMessage=`<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`,this._dgridDiv.style("width",this.width()+"px").style("height",this.height()-2+"px"),this._dgrid.resize()}exit(t,e){delete this._prevPaging,this._dgrid&&(this._dgrid.destroy(),delete this._dgrid),super.exit(t,e)}click(t,e,s,r){}};w.prototype._class+=" dgrid_Common",w.prototype.publish("noDataMessage","...empty...","string","No Data Message"),w.prototype.publish("loadingMessage","loading...","string","Loading Message"),w.prototype.publish("pagination",!1,"boolean","Enable paging"),w.prototype.publish("pageSize",25,"number","Page size"),w.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),w.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),w.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:t=>!t.sortBy()}),w.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),w.prototype.publish("renderHtml",!0,"boolean","Render HTML");var v=class{_datasource;_prevHash;_fetchCache={};constructor(t){this._datasource=t}validateCache(){const t=this.hash();this._prevHash!==t&&(this._prevHash=t,this._fetchCache={})}id(){return this._datasource.id()}hash(){return this._datasource.hash()}label(){return this._datasource.label()}outFields(){return this._datasource.outFields()}total(){return this._datasource.total()}fetch(t,e){this.validateCache();const s=`${t}->${e}`;let r=this._fetchCache[s];return r||(r=this._datasource.fetch(t,e),this._fetchCache[s]=r),r}},D=class{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new v(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new b(this._columns,e)}columns(){return this._columns}db2Columns(t,e=""){return t?t.map((t,s)=>{const r={field:e+t.id,leafID:t.id,label:t.id,idx:s,className:"resultGridCell",sortable:!0,isSet:!1};return"dataset"===t.type?r.children=this.db2Columns(t.children,e+t.id+"_"):r.formatter=(t,e)=>"string"==typeof t?t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"):t,r}):[]}getIdentity(t){return t.__hpcc_id}_request(t,e){return this._datasource?this._datasource.fetch(t,e-t).then(e=>({totalLength:this._datasource.total(),data:e.map((e,s)=>{const r=this.rowFormatter.format(e);return r.__hpcc_id=t+s,r.__origRow=e,r})})):Promise.resolve({totalLength:0,data:[]})}fetchRange(t){const e=new d;return this._request(t.start,t.end).then(t=>e.resolve(t)),new u(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}},C=class extends w{_prevDatasource;constructor(){super()}invalidate(){return delete this._prevDatasource,this}enter(t,e){super.enter(t,e)}update(t,e){super.update(t,e)}render(t){return super.render(e=>{if(this._prevDatasource!==this.datasource())if(this._dgrid.set("collection",new c),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new D(this._prevDatasource,this.renderHtml());this._dgrid.set("columns",s.columns()),this._dgrid.set("collection",s),t&&t(e)}else t&&t(e);else t&&t(e)})}click(t,e,s){}};C.prototype._class+=" dgrid_DatasourceTable",C.prototype.publish("datasource",null,"object","Datasource");var x=class extends e.PropertyExt{_owner;constructor(){super()}owner(t){return arguments.length?(this._owner=t,this):this._owner}valid(){return!!this.column()}formatterFunc(){const t=this._owner.formatterFunc();if(this.valid()&&this.format()){const s=(0,e.format)(this.format());return function(e,r){return"number"==typeof e?s(e):t.call(this,e,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),s=this.formatterFunc();if(this.valid()&&this.paletteID()){const r=this._owner.columns(),i=e.Palette.rainbow(this.paletteID()),o=this.min(),n=this.max(),l=this.valueColumn()?r.indexOf(this.valueColumn()):void 0;return function(r,a,h){t&&t.call(this,r,a,h);const d=i(l?r.__origRow[l]:a,o,n),c=s.call(this,a,r);(0,e.select)(h).style("background",d).style("color",d&&e.Palette.textColor(d)).text(c?.html??c??a)}}return t}};x.prototype._class+=" dgrid_Table.ColumnFormat",x.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),x.prototype.publish("width",null,"number","Width",null,{optional:!0}),x.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),x.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...e.Palette.rainbow("default").switch()],{optional:!0}),x.prototype.publish("min",0,"number","Min Value",null,{disable:t=>!t.paletteID()}),x.prototype.publish("max",100,"number","Max Value",null,{disable:t=>!t.paletteID()}),x.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:t=>!t.paletteID()});var R=class extends w{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=(0,s.hashSum)({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const r=super.columns.apply(this,arguments);if(arguments.length){const e=(0,s.hashSum)({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return r}data(t){const e=super.data.apply(this,arguments);return arguments.length&&(this._dataRefresh=!0),e}enter(t,e){super.enter(t,e)}guessWidth(t,e){const s=this.sortable()?12:0;for(const r of t)if(r.children){let t=[];for(let s=0;s<Math.min(3,e.length);++s)t=t.concat(e[s][r.idx]);this.guessWidth(r.children,t)}else r.width=e.reduce((t,e)=>{const s=(""+e[r.idx]).trim();return Math.max(t,this.textSize(s).width)},this.textSize(""+r.label,void 0,void 0,!0).width+s)+8}_prevHash;update(t,e){super.update(t,e);const s=this.hashSum();if(this._prevHash!==s&&(this._prevHash=s,this._colsRefresh=!0),this._colsRefresh){if(this._columns=this._store.columns(this.sortable(),this.formatterFunc(),this.renderCellFunc()),"auto"===this.columnWidth()){const t=this.data().filter((t,e)=>e<10);this.guessWidth(this._columns,t)}const t=this.columns();for(const e of this.columnFormats())if(e.valid()){const s=t.indexOf(e.column());this._columns[s]&&(this._columns[s].hidden=0===e.width(),this._columns[s].width=e.width()||this._columns[s].width,this._columns[s].formatter=e.formatterFunc(),this._columns[s].renderCell=e.renderCellFunc())}this._dgrid.set("columns",this._columns.filter(t=>!t.hidden)),this._colsRefresh=!1}(this._colsRefresh||this._dataRefresh)&&(this._colsRefresh?this._dgrid.refresh({}):this._dgrid.refresh(),this._colsRefresh=!1,this._dataRefresh=!1)}exit(t,e){delete this._prevColsHash,delete this._prevFieldsHash,super.exit(t,e)}formatterFunc(){return function(t,e){switch(typeof t){case"string":return{html:t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").trim()};case"undefined":return""}return t}}renderCellFunc(){}click(t,e,s){}};R.prototype._class+=" dgrid_Table",R.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),R.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:x}),t.BUILD_VERSION="3.15.0",t.ColumnFormat=x,t.Common=w,t.DBStore=y,t.DatasourceCache=v,t.DatasourceStore=D,t.DatasourceTable=C,t.Deferred=d,t.Grid=p,t.Memory=c,t.PKG_NAME="@hpcc-js/dgrid",t.PKG_VERSION="3.5.0",t.PagingGrid=_,t.QueryResults=u,t.RowFormatter=b,t.Table=R,t.domConstruct=m});
2
- //# sourceMappingURL=index.umd.cjs.map!function(){try{if("undefined"!=typeof document){var i=document.createElement("style");i.appendChild(document.createTextNode(".dijitTooltip{z-index:2000;font-family:Verdana,Geneva,sans-serif;font-size:12px;display:block;position:absolute;top:-10000px;left:0;overflow:visible}.dijitTooltipContainer{color:#000;background:#b8b5b5;border:2px solid #000;font-size:small}.dijitTooltipFocusNode{padding:2px}.dijitTooltipConnector{position:absolute}.dj_a11y .dijitTooltipConnector,.dijitTooltipData{display:none}.dijitTooltip{background:0 0}.dijitTooltipContainer{opacity:1;-ms-filter:none;filter:none;background-color:#424242;border-radius:3px;padding:4px 8px}.dijitTooltip .dijitTooltipContainer{color:#fff;border:0}.dijitTooltipConnector{z-index:2;opacity:1;-ms-filter:none;filter:none;width:auto;height:auto}.dijitTooltipABRight .dijitTooltipConnector{right:8px;left:auto!important}.dijitTooltipBelow{padding-top:4px}.dijitTooltipBelow .dijitTooltipConnector{border:4px solid #0000;border-top:0;border-bottom-color:#424242;top:0;left:8px}.dijitTooltipAbove{padding-bottom:4px}.dijitTooltipAbove .dijitTooltipConnector{border:4px solid #0000;border-top-color:#424242;border-bottom:0;bottom:0;left:8px}.dijitTooltipLeft{padding-right:4px}.dijitTooltipLeft .dijitTooltipConnector{border:4px solid #0000;border-left-color:#424242;border-right:0;right:0}.dijitTooltipRight{padding-left:4px}.dijitTooltipRight .dijitTooltipConnector{border-top:4px solid #0000;border-bottom:4px solid #0000;border-right:4px solid #424242;left:0}.dgrid{border:1px solid #ddd;height:30em;display:block;position:relative;overflow:hidden}.dgrid-header{background-color:#eee}.dgrid-header-row{position:absolute;left:0;right:17px}.dgrid-header-scroll{position:absolute;top:0;right:0}.dgrid-footer{width:100%;position:absolute;bottom:0}.dgrid-header-hidden{font-size:0;border-top:none!important;border-bottom:none!important;height:0!important;margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important}.dgrid-footer-hidden{display:none}.dgrid-sortable{cursor:pointer}.dgrid-header,.dgrid-header-row,.dgrid-footer{background-color:#eee;overflow:hidden}.dgrid-row-table{border-collapse:collapse;table-layout:fixed;empty-cells:show;border:none;width:100%;height:100%}.dgrid-cell{text-align:left;vertical-align:top;box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;border:1px solid #ddd;border-top-style:none;padding:3px;overflow:hidden}.dgrid-content{height:99%;position:relative}.dgrid-scroller{width:100%;margin-top:25px;position:absolute;top:0;bottom:0;overflow:auto scroll}.dgrid-preload{font-size:0;line-height:0}.dgrid-loading{height:100%;position:relative}.dgrid-above{position:absolute;bottom:0}.ui-icon{background-image:url(data:image/png;base64,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);width:12px;height:16px}.dgrid-sort-arrow{float:right;background-position:-64px -16px;height:12px;margin:0 4px 0 5px;display:block}.dgrid-sort-up .dgrid-sort-arrow{background-position:0 -16px}.dgrid-selected{background-color:#bbb}.dgrid-input{width:99%}html.has-mozilla .dgrid .dgrid-row:focus,html.has-mozilla .dgrid .dgrid-cell:focus{outline:1px dotted}html.has-mozilla .dgrid-focus{outline-offset:-1px}.dgrid-scrollbar-measure{width:100px;height:100px;position:absolute;top:-9999px;overflow:scroll}.dgrid-autoheight{height:auto}.dgrid-autoheight .dgrid-scroller{position:relative;overflow-y:hidden}.dgrid-autoheight .dgrid-header-scroll{display:none}.dgrid-autoheight .dgrid-header{right:0}.dgrid-column-set{-ms-touch-action:pan-y;touch-action:pan-y;width:100%;height:100%;position:relative;overflow:hidden}.dgrid-column-set-cell{vertical-align:top;height:100%}.dgrid-column-set-scroller-container{font-size:0;position:absolute;bottom:0}.dgrid-autoheight .dgrid-column-set-scroller-container{position:relative}.dgrid-column-set-scroller{display:inline-block;overflow:auto hidden}.dgrid-column-set-scroller-content{height:1px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.dgrid-expando-icon{width:16px;height:16px}.dgrid-tree-container{-o-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.dgrid-tree-container.dgrid-tree-resetting{-webkit-transition-duration:0;-moz-transition-duration:0;-o-transition-duration:0;-ms-transition-duration:0;transition-duration:0}.dgrid-hider-toggle{cursor:pointer;background-color:#0000;background-position:0 -192px;border:none;position:absolute;top:0;right:0}.dgrid-rtl-swap .dgrid-hider-toggle{left:0;right:auto}.dgrid-hider-menu{z-index:99999;background-color:#fff;border:1px solid #000;width:184px;padding:4px;position:absolute;top:0;right:17px;overflow:hidden auto}.dgrid-rtl-swap .dgrid-hider-menu{left:17px;right:auto}.dgrid-hider-menu-row{padding:2px;position:relative}.dgrid-hider-menu-check{padding:0;position:absolute;top:2px;left:2px}.dgrid-hider-menu-label{padding-left:20px;display:block}.dgrid-header .dojoDndTarget .dgrid-cell{display:table-cell}.dgrid-header .dojoDndItemBefore{border-left:2px dotted #000!important}.dgrid-header .dojoDndItemAfter{border-right:2px dotted #000!important}.dgrid-column-resizer{cursor:col-resize;z-index:1000;background-color:#666;width:2px;position:absolute}.dgrid-resize-handle{cursor:col-resize;z-index:999;border-left:5px solid #0000;outline:none;width:0;height:100px;position:absolute;top:-4px;right:-4px}.dgrid-resize-header-container{height:100%}.dgrid-resize-guard{cursor:col-resize;position:absolute;inset:0}html.has-touch .dgrid-resize-handle{border-left:20px solid #0000}html.has-touch .dgrid-column-resizer{width:2px}.dgrid-resize-header-container{position:relative}.dgrid-header .dgrid-cell{overflow:hidden}.dgrid-spacer-row{height:0}.dgrid-spacer-row th{border-top:none;border-bottom:none;padding-top:0;padding-bottom:0}.dgrid-status{padding:2px}.dgrid-pagination .dgrid-status{float:left}.dgrid-pagination .dgrid-navigation,.dgrid-pagination .dgrid-page-size{float:right}.dgrid-navigation .dgrid-page-link{cursor:pointer;color:inherit;padding:0 4px;font-weight:700;text-decoration:none}.dgrid-first,.dgrid-last,.dgrid-next,.dgrid-previous{font-size:130%}.dgrid-pagination .dgrid-page-disabled{color:#aaa;cursor:default}.dgrid-page-input{text-align:center;width:2em;margin-top:1px}.dgrid-page-size{margin:1px 4px 0}.dgrid-rtl-swap .dgrid-header-row{left:17px;right:0}.dgrid-rtl-swap .dgrid-header-scroll{left:0;right:auto}.dgrid-rtl .dgrid-cell{text-align:right}.dgrid-rtl .dgrid-sort-arrow{float:left;margin:0 5px 0 4px}.dgrid-rtl .ui-icon-triangle-1-e{background-position:-96px -16px}.dgrid-rtl .ui-icon-triangle-1-se{background-position:-80px -16px}.dgrid-rtl .dgrid-pagination .dgrid-status,.dgrid-rtl .dgrid-pagination .dgrid-page-size{float:right}.dgrid-rtl .dgrid-pagination .dgrid-navigation{float:left}.dgrid-rtl.dgrid-autoheight .dgrid-header{left:0}.dgrid_Table .placeholder{border:none;padding:0;overflow:hidden}.dgrid_Table .dgrid-fakeline{border:0;border-bottom:1px solid #ddd;margin:2px -3px}.dgrid_Table .dgrid-sortable .dgrid-sort-arrow.ui-icon{margin:0}\n/*$vite$:1*/")),document.head.appendChild(i)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}();
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@hpcc-js/common"),require("@hpcc-js/util")):"function"==typeof define&&define.amd?define(["exports","@hpcc-js/common","@hpcc-js/util"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["@hpcc-js/dgrid"]={},t["@hpcc-js/common"],t["@hpcc-js/util"])}(this,function(t,e,s){"use strict";var r=Object.defineProperty,i=(t,e)=>r(t,"name",{value:e,configurable:!0});globalThis["@hpcc-js/dgrid-shim"]||console.error('dgrid-shim not loaded, please add `<script src="https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js"><\/script>` or similar to your HTML file');const o=globalThis["@hpcc-js/dgrid-shim"].Deferred,n=globalThis["@hpcc-js/dgrid-shim"].Memory,l=globalThis["@hpcc-js/dgrid-shim"].QueryResults,a=globalThis["@hpcc-js/dgrid-shim"].Grid,h=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,c=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function d(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function u(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return d(t);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function p(t){return t instanceof Array}i(d,"entitiesEncode"),i(u,"safeEncode"),i(p,"isArray");const _=class _RowFormatter{constructor(t,e){this._renderHtml=e,this._columns=t,this.flattenColumns(t)}_columns;_flattenedColumns=[];_columnIdx={};_formattedRow={};flattenColumns(t){for(const e of t)this.flattenColumn(e)}flattenColumn(t){if(t.children)for(const e of t.children)this.flattenColumn(e);else this._columnIdx[t.field]=this._flattenedColumns.length,this._flattenedColumns.push(t.field)}format(t){return this._formattedRow={},this.formatRow(this._columns,t),this.row()}calcDepth(t,e){let s=1;for(const r of t)if(r.children&&e[r.leafID]){let t=0,i=[];p(e[r.leafID])?i=e[r.leafID]:p(e[r.leafID].Row)&&(i=e[r.leafID].Row);for(const e of i)t+=this.calcDepth(r.children,e);s=Math.max(s,t)}return s}formatCell(t,e,s){if(t.children){let s=0;p(e)||(e=p(e.Row)?e.Row:[e]);for(const r of e)s=Math.max(s,this.formatRow(t.children,r))}else if(t.isSet&&(e=JSON.stringify(e.Item)),void 0===this._formattedRow[t.field]?this._formattedRow[t.field]=""+(void 0===e?"":this._renderHtml?e:u(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:u(e))),s>1){const e=[];e.length=s;const r=e.join("<br><hr class='dgrid-fakeline' style='visibility: hidden'>");this._formattedRow[t.field]+=r}}formatRow(t,e=[],s=0){const r=this.calcDepth(t,e);for(const i of t)this.formatCell(i,e[i.leafID],r);return r}row(){const t={};for(const e of this._flattenedColumns)t[e]=this._formattedRow[e];return t}};i(_,"RowFormatter");let m=_;const f=class _DBStore{_db;Model;idProperty;constructor(t){this._db=t}_renderHtml=!0;renderHtml(t){this._renderHtml=t}db2Columns(t,e,s="",r,i){return e?e.map((e,o)=>{const n={label:e.label(),leafID:""+o,field:s+o,idx:o,className:"resultGridCell",sortable:t,isSet:!1};if("nested"===e.type())n.children=this.db2Columns(!1,e.children(),s+o+"_",r),n.sortable=!1;else n.formatter=r,n.renderCell=i;return n}):[]}columns(t,e,s){return this.db2Columns(t,this._db.fields(),"",e,s)}getIdentity(t){return t.__hpcc_id}get(t){return this._db.row(t+1)}_fetchRange(t){const e=new m(this.columns(!1),this._renderHtml);return this._db.data().slice(t.start,t.end).map((s,r)=>({...e.format(s),__hpcc_id:t.start+r,__origRow:s}))}fetchRange(t){const e=this._fetchRange(t),s=new o;return s.totalLength=new o,s.resolve(e),s.totalLength.resolve(this._db.length()-1),s}sort(t){return this._db.data().sort((e,s)=>{for(const r of t){const t=r.property;if(void 0===e[t]&&void 0!==s[t]||e[t]<s[t])return r.descending?1:-1;if(void 0!==e[t]&&void 0===s[t]||e[t]>s[t])return r.descending?-1:1}return 0}),this}};i(f,"DBStore");let g=f;const b=class _Common extends e.HTMLWidget{_columns=[];_store=new g(this._db);_dgridDiv;_dgrid;_prevPaging;_prevSortBy;_prevSortByDescending;_prevMultiSelect;constructor(){super(),this._tag="div"}formatSortBy(){const t=this.columns().indexOf(this.sortBy());return t>=0?[{property:t.toString(),descending:this.sortByDescending()}]:void 0}_supressEvents;selection(t){if(!arguments.length){const t=[];for(const e in this._dgrid.selection)if(this._dgrid.selection[e]){const s=this._store.get(+e);t.push(this.rowToObj(s))}return t}this._supressEvents=!0,this._dgrid?.clearSelection();let e=!0;this.data().forEach((s,r)=>{if(t.indexOf(s)>=0){const t=this._dgrid?.row(r);t.element&&e&&(e=!1,t.element.scrollIntoView()),this._dgrid?.select(r)}}),this._supressEvents=!1}enter(t,e){super.enter(t,e),this._dgridDiv=e.append("div").attr("class","flat")}update(t,e){super.update(t,e),this._store.renderHtml(this.renderHtml()),this._dgrid&&this._prevPaging===this.pagination()&&this._prevSortBy===this.sortBy()&&this._prevSortByDescending===this.sortByDescending()&&this._prevMultiSelect===this.multiSelect()||(this._prevPaging=this.pagination(),this._prevSortBy=this.sortBy(),this._prevSortByDescending=this.sortByDescending(),this._prevMultiSelect=this.multiSelect(),this._dgrid&&(this._dgrid.destroy(),this._dgridDiv=e.append("div").attr("class","flat")),this._dgrid=new(this._prevPaging?h:a)({columns:this._columns,collection:this._store,sort:this.formatSortBy(),selectionMode:this.multiSelect()?"extended":"single",deselectOnRefresh:!0,cellNavigation:!1,pagingLinks:1,pagingTextBox:!0,previousNextArrows:!0,firstLastArrows:!0,rowsPerPage:this.pageSize(),pageSizeOptions:[1,10,25,50,100,1e3]},this._dgridDiv.node()),this._dgrid.on("dgrid-select",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!0,{selection:this.selection()})}),this._dgrid.on("dgrid-deselect",t=>{this._supressEvents||t.rows&&t.rows.length&&t.rows[0].data&&this.click(this.rowToObj(t.rows[0].data.__origRow),"",!1,{selection:this.selection()})}),this._dgrid.refresh({})),this._dgrid.noDataMessage=`<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`,this._dgrid.loadingMessage=`<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`,this._dgridDiv.style("width",this.width()+"px").style("height",this.height()-2+"px"),this._dgrid.resize()}exit(t,e){delete this._prevPaging,this._dgrid&&(this._dgrid.destroy(),delete this._dgrid),super.exit(t,e)}click(t,e,s,r){}};i(b,"Common");let y=b;y.prototype._class+=" dgrid_Common",y.prototype.publish("noDataMessage","...empty...","string","No Data Message"),y.prototype.publish("loadingMessage","loading...","string","Loading Message"),y.prototype.publish("pagination",!1,"boolean","Enable paging"),y.prototype.publish("pageSize",25,"number","Page size"),y.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),y.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),y.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:i(t=>!t.sortBy(),"disable")}),y.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),y.prototype.publish("renderHtml",!0,"boolean","Render HTML");const w=class _DatasourceCache{_datasource;_prevHash;_fetchCache={};constructor(t){this._datasource=t}validateCache(){const t=this.hash();this._prevHash!==t&&(this._prevHash=t,this._fetchCache={})}id(){return this._datasource.id()}hash(){return this._datasource.hash()}label(){return this._datasource.label()}outFields(){return this._datasource.outFields()}total(){return this._datasource.total()}fetch(t,e){this.validateCache();const s=`${t}->${e}`;let r=this._fetchCache[s];return r||(r=this._datasource.fetch(t,e),this._fetchCache[s]=r),r}};i(w,"DatasourceCache");let v=w;const D=class _DatasourceStore{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new v(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new m(this._columns,e)}columns(){return this._columns}db2Columns(t,e=""){return t?t.map((t,s)=>{const r={field:e+t.id,leafID:t.id,label:t.id,idx:s,className:"resultGridCell",sortable:!0,isSet:!1};return"dataset"===t.type?r.children=this.db2Columns(t.children,e+t.id+"_"):r.formatter=(t,e)=>"string"==typeof t?t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"):t,r}):[]}getIdentity(t){return t.__hpcc_id}_request(t,e){if(!this._datasource)return Promise.resolve({totalLength:0,data:[]});return this._datasource.fetch(t,e-t).then(e=>({totalLength:this._datasource.total(),data:e.map((e,s)=>{const r=this.rowFormatter.format(e);return r.__hpcc_id=t+s,r.__origRow=e,r})}))}fetchRange(t){const e=new o;return this._request(t.start,t.end).then(t=>e.resolve(t)),new l(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}};i(D,"DatasourceStore");let C=D;const R=class _DatasourceTable extends y{_prevDatasource;constructor(){super()}invalidate(){return delete this._prevDatasource,this}enter(t,e){super.enter(t,e)}update(t,e){super.update(t,e)}render(t){return super.render(e=>{if(this._prevDatasource!==this.datasource())if(this._dgrid.set("collection",new n),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new C(this._prevDatasource,this.renderHtml());this._dgrid.set("columns",s.columns()),this._dgrid.set("collection",s),t&&t(e)}else t&&t(e);else t&&t(e)})}click(t,e,s){}};i(R,"DatasourceTable");let x=R;x.prototype._class+=" dgrid_DatasourceTable",x.prototype.publish("datasource",null,"object","Datasource");const S=class _ColumnFormat extends e.PropertyExt{_owner;constructor(){super()}owner(t){return arguments.length?(this._owner=t,this):this._owner}valid(){return!!this.column()}formatterFunc(){const t=this._owner.formatterFunc();if(this.valid()&&this.format()){const s=e.format(this.format());return function(e,r){return"number"==typeof e?s(e):t.call(this,e,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),s=this.formatterFunc();if(this.valid()&&this.paletteID()){const r=this._owner.columns(),i=e.Palette.rainbow(this.paletteID()),o=this.min(),n=this.max(),l=this.valueColumn()?r.indexOf(this.valueColumn()):void 0;return function(r,a,h){t&&t.call(this,r,a,h);const c=l?r.__origRow[l]:a,d=i(c,o,n),u=s.call(this,a,r);e.select(h).style("background",d).style("color",d&&e.Palette.textColor(d)).text(u?.html??u??a)}}return t}};i(S,"ColumnFormat");let j=S;j.prototype._class+=" dgrid_Table.ColumnFormat",j.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),j.prototype.publish("width",null,"number","Width",null,{optional:!0}),j.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),j.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...e.Palette.rainbow("default").switch()],{optional:!0}),j.prototype.publish("min",0,"number","Min Value",null,{disable:i(t=>!t.paletteID(),"disable")}),j.prototype.publish("max",100,"number","Max Value",null,{disable:i(t=>!t.paletteID(),"disable")}),j.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:i(t=>!t.paletteID(),"disable")});const F=class _Table extends y{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=s.hashSum({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const r=super.columns.apply(this,arguments);if(arguments.length){const e=s.hashSum({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return r}data(t){const e=super.data.apply(this,arguments);return arguments.length&&(this._dataRefresh=!0),e}enter(t,e){super.enter(t,e)}guessWidth(t,e){const s=this.sortable()?12:0;for(const r of t)if(r.children){let t=[];for(let s=0;s<Math.min(3,e.length);++s)t=t.concat(e[s][r.idx]);this.guessWidth(r.children,t)}else r.width=e.reduce((t,e)=>{const s=(""+e[r.idx]).trim();return Math.max(t,this.textSize(s).width)},this.textSize(""+r.label,void 0,void 0,!0).width+s)+8}_prevHash;update(t,e){super.update(t,e);const s=this.hashSum();if(this._prevHash!==s&&(this._prevHash=s,this._colsRefresh=!0),this._colsRefresh){if(this._columns=this._store.columns(this.sortable(),this.formatterFunc(),this.renderCellFunc()),"auto"===this.columnWidth()){const t=this.data().filter((t,e)=>e<10);this.guessWidth(this._columns,t)}const t=this.columns();for(const e of this.columnFormats())if(e.valid()){const s=t.indexOf(e.column());this._columns[s]&&(this._columns[s].hidden=0===e.width(),this._columns[s].width=e.width()||this._columns[s].width,this._columns[s].formatter=e.formatterFunc(),this._columns[s].renderCell=e.renderCellFunc())}this._dgrid.set("columns",this._columns.filter(t=>!t.hidden)),this._colsRefresh=!1}(this._colsRefresh||this._dataRefresh)&&(this._colsRefresh?this._dgrid.refresh({}):this._dgrid.refresh(),this._colsRefresh=!1,this._dataRefresh=!1)}exit(t,e){delete this._prevColsHash,delete this._prevFieldsHash,super.exit(t,e)}formatterFunc(){return function(t,e){switch(typeof t){case"string":return{html:t.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").trim()};case"undefined":return""}return t}}renderCellFunc(){}click(t,e,s){}};i(F,"Table");let H=F;H.prototype._class+=" dgrid_Table",H.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),H.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:j}),t.BUILD_VERSION="3.15.1",t.ColumnFormat=j,t.Common=y,t.DBStore=g,t.DatasourceCache=v,t.DatasourceStore=C,t.DatasourceTable=x,t.Deferred=o,t.Grid=a,t.Memory=n,t.PKG_NAME="@hpcc-js/dgrid",t.PKG_VERSION="3.5.1",t.PagingGrid=h,t.QueryResults=l,t.RowFormatter=m,t.Table=H,t.domConstruct=c,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
2
+ //# sourceMappingURL=index.umd.cjs.map
3
+ !function(){"use strict";try{if("undefined"!=typeof document){var i=document.createElement("style");i.appendChild(document.createTextNode(".dijitTooltip{position:absolute;z-index:2000;display:block;left:0;top:-10000px;overflow:visible;font-family:Verdana,Geneva,sans-serif;font-size:12px}.dijitTooltipContainer{border:solid black 2px;background:#b8b5b5;color:#000;font-size:small}.dijitTooltipFocusNode{padding:2px}.dijitTooltipConnector{position:absolute}.dj_a11y .dijitTooltipConnector,.dijitTooltipData{display:none}.dijitTooltip{background:transparent}.dijitTooltipContainer{background-color:#424242;opacity:1;-ms-filter:none;filter:none;padding:4px 8px;border-radius:3px}.dijitTooltip .dijitTooltipContainer{color:#fff;border:0 none}.dijitTooltipConnector{z-index:2;width:auto;height:auto;opacity:1;-ms-filter:none;filter:none}.dijitTooltipABRight .dijitTooltipConnector{left:auto!important;right:8px}.dijitTooltipBelow{padding-top:4px}.dijitTooltipBelow .dijitTooltipConnector{top:0;left:8px;border-bottom:4px solid #424242;border-left:4px solid transparent;border-right:4px solid transparent;border-top:0}.dijitTooltipAbove{padding-bottom:4px}.dijitTooltipAbove .dijitTooltipConnector{bottom:0;left:8px;border-top:4px solid #424242;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:0}.dijitTooltipLeft{padding-right:4px}.dijitTooltipLeft .dijitTooltipConnector{right:0;border-left:4px solid #424242;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:0}.dijitTooltipRight{padding-left:4px}.dijitTooltipRight .dijitTooltipConnector{left:0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:4px solid #424242}.dgrid{position:relative;overflow:hidden;border:1px solid #ddd;height:30em;display:block}.dgrid-header{background-color:#eee}.dgrid-header-row{position:absolute;right:17px;left:0}.dgrid-header-scroll{position:absolute;top:0;right:0}.dgrid-footer{position:absolute;bottom:0;width:100%}.dgrid-header-hidden{font-size:0;height:0!important;border-top:none!important;border-bottom:none!important;margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important}.dgrid-footer-hidden{display:none}.dgrid-sortable{cursor:pointer}.dgrid-header,.dgrid-header-row,.dgrid-footer{overflow:hidden;background-color:#eee}.dgrid-row-table{border-collapse:collapse;border:none;table-layout:fixed;empty-cells:show;width:100%;height:100%}.dgrid-cell{padding:3px;text-align:left;overflow:hidden;vertical-align:top;border:1px solid #ddd;border-top-style:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap}.dgrid-content{position:relative;height:99%}.dgrid-scroller{overflow-x:auto;overflow-y:scroll;position:absolute;top:0;margin-top:25px;bottom:0;width:100%}.dgrid-preload{font-size:0;line-height:0}.dgrid-loading{position:relative;height:100%}.dgrid-above{position:absolute;bottom:0}.ui-icon{width:12px;height:16px;background-image:url(data:image/png;base64,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)}.dgrid-sort-arrow{background-position:-64px -16px;display:block;float:right;margin:0 4px 0 5px;height:12px}.dgrid-sort-up .dgrid-sort-arrow{background-position:0px -16px}.dgrid-selected{background-color:#bbb}.dgrid-input{width:99%}html.has-mozilla .dgrid .dgrid-row:focus,html.has-mozilla .dgrid .dgrid-cell:focus{outline:1px dotted}html.has-mozilla .dgrid-focus{outline-offset:-1px}.dgrid-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.dgrid-autoheight{height:auto}.dgrid-autoheight .dgrid-scroller{position:relative;overflow-y:hidden}.dgrid-autoheight .dgrid-header-scroll{display:none}.dgrid-autoheight .dgrid-header{right:0}.dgrid-column-set{overflow:hidden;width:100%;position:relative;height:100%;-ms-touch-action:pan-y;touch-action:pan-y}.dgrid-column-set-cell{vertical-align:top;height:100%}.dgrid-column-set-scroller-container{font-size:0;position:absolute;bottom:0}.dgrid-autoheight .dgrid-column-set-scroller-container{position:relative}.dgrid-column-set-scroller{display:inline-block;overflow-x:auto;overflow-y:hidden}.dgrid-column-set-scroller-content{height:1px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.dgrid-expando-icon{width:16px;height:16px}.dgrid-tree-container{-webkit-transition-duration:.3s;-moz-transition-duration:.3s;-o-transition-duration:.3s;-ms-transition-duration:.3s;transition-duration:.3s;overflow:hidden}.dgrid-tree-container.dgrid-tree-resetting{-webkit-transition-duration:0;-moz-transition-duration:0;-o-transition-duration:0;-ms-transition-duration:0;transition-duration:0}.dgrid-hider-toggle{background-position:0 -192px;background-color:transparent;border:none;cursor:pointer;position:absolute;right:0;top:0}.dgrid-rtl-swap .dgrid-hider-toggle{right:auto;left:0}.dgrid-hider-menu{position:absolute;top:0;right:17px;width:184px;background-color:#fff;border:1px solid #000;z-index:99999;padding:4px;overflow-x:hidden;overflow-y:auto}.dgrid-rtl-swap .dgrid-hider-menu{right:auto;left:17px}.dgrid-hider-menu-row{position:relative;padding:2px}.dgrid-hider-menu-check{position:absolute;top:2px;left:2px;padding:0}.dgrid-hider-menu-label{display:block;padding-left:20px}.dgrid-header .dojoDndTarget .dgrid-cell{display:table-cell}.dgrid-header .dojoDndItemBefore{border-left:2px dotted #000!important}.dgrid-header .dojoDndItemAfter{border-right:2px dotted #000!important}.dgrid-column-resizer{cursor:col-resize;position:absolute;width:2px;background-color:#666;z-index:1000}.dgrid-resize-handle{height:100px;width:0;position:absolute;right:-4px;top:-4px;cursor:col-resize;z-index:999;border-left:5px solid transparent;outline:none}.dgrid-resize-header-container{height:100%}.dgrid-resize-guard{cursor:col-resize;position:absolute;inset:0}html.has-touch .dgrid-resize-handle{border-left:20px solid transparent}html.has-touch .dgrid-column-resizer{width:2px}.dgrid-resize-header-container{position:relative}.dgrid-header .dgrid-cell{overflow:hidden}.dgrid-spacer-row{height:0}.dgrid-spacer-row th{padding-top:0;padding-bottom:0;border-top:none;border-bottom:none}.dgrid-status{padding:2px}.dgrid-pagination .dgrid-status{float:left}.dgrid-pagination .dgrid-navigation,.dgrid-pagination .dgrid-page-size{float:right}.dgrid-navigation .dgrid-page-link{cursor:pointer;font-weight:700;text-decoration:none;color:inherit;padding:0 4px}.dgrid-first,.dgrid-last,.dgrid-next,.dgrid-previous{font-size:130%}.dgrid-pagination .dgrid-page-disabled{color:#aaa;cursor:default}.dgrid-page-input{margin-top:1px;width:2em;text-align:center}.dgrid-page-size{margin:1px 4px 0}.dgrid-rtl-swap .dgrid-header-row{right:0;left:17px}.dgrid-rtl-swap .dgrid-header-scroll{left:0;right:auto}.dgrid-rtl .dgrid-cell{text-align:right}.dgrid-rtl .dgrid-sort-arrow{float:left;margin:0 5px 0 4px}.dgrid-rtl .ui-icon-triangle-1-e{background-position:-96px -16px}.dgrid-rtl .ui-icon-triangle-1-se{background-position:-80px -16px}.dgrid-rtl .dgrid-pagination .dgrid-status,.dgrid-rtl .dgrid-pagination .dgrid-page-size{float:right}.dgrid-rtl .dgrid-pagination .dgrid-navigation{float:left}.dgrid-rtl.dgrid-autoheight .dgrid-header{left:0}.dgrid_Table .placeholder{border:none;padding:0;overflow:hidden}.dgrid_Table .dgrid-fakeline{border:0px;border-bottom:1px solid rgb(221,221,221);margin:2px -3px}.dgrid_Table .dgrid-sortable .dgrid-sort-arrow.ui-icon{margin:0}")),document.head.appendChild(i)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}();