@hpcc-js/dgrid 3.2.10 → 3.3.0
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 +380 -182
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +2 -2
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 = \"@hpcc-js/dgrid\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"3.2.1\";\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, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\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, \" \");\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, \" \").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","_a","d3Format","d3Select"],"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 = \"@hpcc-js/dgrid\";\nexport const PKG_VERSION = \"3.1.0\";\nexport const BUILD_VERSION = \"3.2.1\";\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, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\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, \" \");\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, \" \").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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"}
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@hpcc-js/common"),require("@hpcc-js/util")):typeof define=="function"&&define.amd?define(["exports","@hpcc-js/common","@hpcc-js/util"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global["@hpcc-js/dgrid"]={},global["@hpcc-js/common"],global["@hpcc-js/util"]))})(this,function(exports2,common,util){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);const PKG_NAME="@hpcc-js/dgrid",PKG_VERSION="3.1.0",BUILD_VERSION="3.2.1";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 Deferred=globalThis["@hpcc-js/dgrid-shim"].Deferred,Memory=globalThis["@hpcc-js/dgrid-shim"].Memory,QueryResults=globalThis["@hpcc-js/dgrid-shim"].QueryResults,Grid=globalThis["@hpcc-js/dgrid-shim"].Grid,PagingGrid=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,domConstruct=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function entitiesEncode(str){return String(str).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function safeEncode(item){switch(Object.prototype.toString.call(item)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return item;case"[object String]":return entitiesEncode(item);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(item))}return item}function isArray(obj){return obj instanceof Array}const LINE_SPLITTER="<br><hr class='dgrid-fakeline'>",LINE_SPLITTER2="<br><hr class='dgrid-fakeline' style='visibility: hidden'>";class RowFormatter{constructor(columns,_renderHtml){__publicField(this,"_columns");__publicField(this,"_flattenedColumns",[]);__publicField(this,"_columnIdx",{});__publicField(this,"_formattedRow",{});this._renderHtml=_renderHtml,this._columns=columns,this.flattenColumns(columns)}flattenColumns(columns){for(const column of columns)this.flattenColumn(column)}flattenColumn(column){if(column.children)for(const childColumn of column.children)this.flattenColumn(childColumn);else this._columnIdx[column.field]=this._flattenedColumns.length,this._flattenedColumns.push(column.field)}format(row){return this._formattedRow={},this.formatRow(this._columns,row),this.row()}calcDepth(columns,row){let maxChildDepth=1;for(const column of columns)if(column.children&&row[column.leafID]){let childDepth=0,childRows=[];isArray(row[column.leafID])?childRows=row[column.leafID]:isArray(row[column.leafID].Row)&&(childRows=row[column.leafID].Row);for(const childRow of childRows)childDepth+=this.calcDepth(column.children,childRow);maxChildDepth=Math.max(maxChildDepth,childDepth)}return maxChildDepth}formatCell(column,cell,maxChildDepth){if(column.children){let childDepth=0;isArray(cell)||(isArray(cell.Row)?cell=cell.Row:cell=[cell]);for(const row of cell)childDepth=Math.max(childDepth,this.formatRow(column.children,row))}else if(column.isSet&&(cell=JSON.stringify(cell.Item)),this._formattedRow[column.field]===void 0?this._formattedRow[column.field]=""+(cell===void 0?"":this._renderHtml?cell:safeEncode(cell)):(this._formattedRow[column.field]+=LINE_SPLITTER,this._formattedRow[column.field]+=""+(cell===void 0?"":this._renderHtml?cell:safeEncode(cell))),maxChildDepth>1){const paddingArr=[];paddingArr.length=maxChildDepth;const padding=paddingArr.join(LINE_SPLITTER2);this._formattedRow[column.field]+=padding}}formatRow(columns,row=[],rowIdx=0){const maxChildDepth=this.calcDepth(columns,row);for(const column of columns)this.formatCell(column,row[column.leafID],maxChildDepth);return maxChildDepth}row(){const retVal={};for(const column of this._flattenedColumns)retVal[column]=this._formattedRow[column];return retVal}}class DBStore{constructor(db){__publicField(this,"_db");__publicField(this,"Model");__publicField(this,"idProperty");__publicField(this,"_renderHtml",!0);this._db=db}renderHtml(_){this._renderHtml=_}db2Columns(sortable,fields,prefix="",formatter,renderCell){return fields?fields.map((field,idx)=>{const column={label:field.label(),leafID:""+idx,field:prefix+idx,idx,className:"resultGridCell",sortable,isSet:!1};switch(field.type()){case"nested":column.children=this.db2Columns(!1,field.children(),prefix+idx+"_",formatter),column.sortable=!1;break;default:column.formatter=formatter,column.renderCell=renderCell}return column}):[]}columns(sortable,formatter,renderCell){return this.db2Columns(sortable,this._db.fields(),"",formatter,renderCell)}getIdentity(object){return object.__hpcc_id}get(row){return this._db.row(row+1)}_fetchRange(opts){const rowFormatter=new RowFormatter(this.columns(!1),this._renderHtml);return this._db.data().slice(opts.start,opts.end).map((row,idx)=>({...rowFormatter.format(row),__hpcc_id:opts.start+idx,__origRow:row}))}fetchRange(opts){const data=this._fetchRange(opts),retVal=new Deferred;return retVal.totalLength=new Deferred,retVal.resolve(data),retVal.totalLength.resolve(this._db.length()-1),retVal}sort(opts){return this._db.data().sort((l,r)=>{for(const item of opts){const idx=item.property;if(l[idx]===void 0&&r[idx]!==void 0||l[idx]<r[idx])return item.descending?1:-1;if(l[idx]!==void 0&&r[idx]===void 0||l[idx]>r[idx])return item.descending?-1:1}return 0}),this}}class Common extends common.HTMLWidget{constructor(){super();__publicField(this,"_columns",[]);__publicField(this,"_store",new DBStore(this._db));__publicField(this,"_dgridDiv");__publicField(this,"_dgrid");__publicField(this,"_prevPaging");__publicField(this,"_prevSortBy");__publicField(this,"_prevSortByDescending");__publicField(this,"_prevMultiSelect");__publicField(this,"_supressEvents");this._tag="div"}formatSortBy(){const idx=this.columns().indexOf(this.sortBy());return idx>=0?[{property:idx.toString(),descending:this.sortByDescending()}]:void 0}selection(_){var _a;if(!arguments.length){const retVal=[];for(const id in this._dgrid.selection)if(this._dgrid.selection[id]){const storeItem=this._store.get(+id);retVal.push(this.rowToObj(storeItem))}return retVal}this._supressEvents=!0,(_a=this._dgrid)==null||_a.clearSelection();let first=!0;this.data().forEach((row,idx)=>{var _a2,_b;if(_.indexOf(row)>=0){const row2=(_a2=this._dgrid)==null?void 0:_a2.row(idx);row2.element&&first&&(first=!1,row2.element.scrollIntoView()),(_b=this._dgrid)==null||_b.select(idx)}}),this._supressEvents=!1}enter(domNode,element){super.enter(domNode,element),this._dgridDiv=element.append("div").attr("class","flat")}update(domNode,element){super.update(domNode,element),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=element.append("div").attr("class","flat")),this._dgrid=new(this._prevPaging?PagingGrid:Grid)({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",evt=>{this._supressEvents||evt.rows&&evt.rows.length&&evt.rows[0].data&&this.click(this.rowToObj(evt.rows[0].data.__origRow),"",!0,{selection:this.selection()})}),this._dgrid.on("dgrid-deselect",evt=>{this._supressEvents||evt.rows&&evt.rows.length&&evt.rows[0].data&&this.click(this.rowToObj(evt.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(domNode,element){delete this._prevPaging,this._dgrid&&(this._dgrid.destroy(),delete this._dgrid),super.exit(domNode,element)}click(row,col,sel,more){}}Common.prototype._class+=" dgrid_Common",Common.prototype.publish("noDataMessage","...empty...","string","No Data Message"),Common.prototype.publish("loadingMessage","loading...","string","Loading Message"),Common.prototype.publish("pagination",!1,"boolean","Enable paging"),Common.prototype.publish("pageSize",25,"number","Page size"),Common.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),Common.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),Common.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:self2=>!self2.sortBy()}),Common.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),Common.prototype.publish("renderHtml",!0,"boolean","Render HTML");class DatasourceCache{constructor(datasource){__publicField(this,"_datasource");__publicField(this,"_prevHash");__publicField(this,"_fetchCache",{});this._datasource=datasource}validateCache(){const hash=this.hash();this._prevHash!==hash&&(this._prevHash=hash,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(from,count){this.validateCache();const cacheID=`${from}->${count}`;let retVal=this._fetchCache[cacheID];return retVal||(retVal=this._datasource.fetch(from,count),this._fetchCache[cacheID]=retVal),retVal}}class DatasourceStore{constructor(datasource,renderHtml){__publicField(this,"_datasource");__publicField(this,"_columnsIdx",{});__publicField(this,"_columns");__publicField(this,"rowFormatter");this._datasource=new DatasourceCache(datasource),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((column,idx)=>(this._columnsIdx[column.field]=idx,column)),this.rowFormatter=new RowFormatter(this._columns,renderHtml)}columns(){return this._columns}db2Columns(fields,prefix=""){return fields?fields.map((field,idx)=>{const column={field:prefix+field.id,leafID:field.id,label:field.id,idx,className:"resultGridCell",sortable:!0,isSet:!1};return field.type==="dataset"?column.children=this.db2Columns(field.children,prefix+field.id+"_"):column.formatter=(cell,row)=>{switch(typeof cell){case"string":return cell.replace(/\t/g," ")}return cell},column}):[]}getIdentity(row){return row.__hpcc_id}_request(start,end){return this._datasource?this._datasource.fetch(start,end-start).then(response=>({totalLength:this._datasource.total(),data:response.map((row,idx)=>{const formattedRow=this.rowFormatter.format(row);return formattedRow.__hpcc_id=start+idx,formattedRow.__origRow=row,formattedRow})})):Promise.resolve({totalLength:0,data:[]})}fetchRange(options){const retVal=new Deferred;return this._request(options.start,options.end).then(response=>retVal.resolve(response)),new QueryResults(retVal.then(response=>response.data),{totalLength:retVal.then(response=>response.totalLength)})}}class DatasourceTable extends Common{constructor(){super();__publicField(this,"_prevDatasource")}invalidate(){return delete this._prevDatasource,this}enter(domNode,element){super.enter(domNode,element)}update(domNode,element){super.update(domNode,element)}render(callback){return super.render(w=>{if(this._prevDatasource!==this.datasource())if(this._dgrid.set("collection",new Memory),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const store=new DatasourceStore(this._prevDatasource,this.renderHtml());this._dgrid.set("columns",store.columns()),this._dgrid.set("collection",store),callback&&callback(w)}else callback&&callback(w);else callback&&callback(w)})}click(row,col,sel){}}DatasourceTable.prototype._class+=" dgrid_DatasourceTable",DatasourceTable.prototype.publish("datasource",null,"object","Datasource");class ColumnFormat extends common.PropertyExt{constructor(){super();__publicField(this,"_owner")}owner(_){return arguments.length?(this._owner=_,this):this._owner}valid(){return!!this.column()}formatterFunc(){const defaultFormatter=this._owner.formatterFunc();if(this.valid()&&this.format()){const numberFormatter=common.format(this.format());return function(cell,row){return typeof cell=="number"?numberFormatter(cell):defaultFormatter.call(this,cell,row)}}return defaultFormatter}renderCellFunc(){const defaultRenderCell=this._owner.renderCellFunc(),defaultFormatter=this.formatterFunc();if(this.valid()&&this.paletteID()){const columns=this._owner.columns(),palette=common.Palette.rainbow(this.paletteID()),min=this.min(),max=this.max(),valueColIdx=this.valueColumn()?columns.indexOf(this.valueColumn()):void 0;return function(row,cell,cellElement){defaultRenderCell&&defaultRenderCell.call(this,row,cell,cellElement);const value=valueColIdx?row.__origRow[valueColIdx]:cell,background=palette(value,min,max),cellText=defaultFormatter.call(this,cell,row);common.select(cellElement).style("background",background).style("color",background&&common.Palette.textColor(background)).text((cellText==null?void 0:cellText.html)??cellText??cell)}}return defaultRenderCell}}ColumnFormat.prototype._class+=" dgrid_Table.ColumnFormat",ColumnFormat.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),ColumnFormat.prototype.publish("width",null,"number","Width",null,{optional:!0}),ColumnFormat.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),ColumnFormat.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...common.Palette.rainbow("default").switch()],{optional:!0}),ColumnFormat.prototype.publish("min",0,"number","Min Value",null,{disable:cf=>!cf.paletteID()}),ColumnFormat.prototype.publish("max",100,"number","Max Value",null,{disable:cf=>!cf.paletteID()}),ColumnFormat.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:cf=>!cf.paletteID()});class Table extends Common{constructor(){super();__publicField(this,"_prevColsHash");__publicField(this,"_prevFieldsHash");__publicField(this,"_colsRefresh",!1);__publicField(this,"_dataRefresh",!1);__publicField(this,"_prevHash")}fields(_){const retVal=super.fields.apply(this,arguments);if(arguments.length){const hash=util.hashSum({_});this._prevFieldsHash!==hash&&(this._prevFieldsHash=hash,this._colsRefresh=!0)}return retVal}columns(_,asDefault){const retVal=super.columns.apply(this,arguments);if(arguments.length){const hash=util.hashSum({_});this._prevColsHash!==hash&&(this._prevColsHash=hash,this._colsRefresh=!0)}return retVal}data(_){const retVal=super.data.apply(this,arguments);return arguments.length&&(this._dataRefresh=!0),retVal}enter(domNode,element){super.enter(domNode,element)}guessWidth(columns,data){const sortablePadding=this.sortable()?12:0;for(const column of columns)if(column.children){let sampleData=[];for(let i=0;i<Math.min(3,data.length);++i)sampleData=sampleData.concat(data[i][column.idx]);this.guessWidth(column.children,sampleData)}else column.width=data.reduce((prevVal,row)=>{const cell=(""+row[column.idx]).trim();return Math.max(prevVal,this.textSize(cell).width)},this.textSize(""+column.label,void 0,void 0,!0).width+sortablePadding)+8}update(domNode,element){super.update(domNode,element);const hash=this.hashSum();if(this._prevHash!==hash&&(this._prevHash=hash,this._colsRefresh=!0),this._colsRefresh){switch(this._columns=this._store.columns(this.sortable(),this.formatterFunc(),this.renderCellFunc()),this.columnWidth()){case"auto":const tenRows=this.data().filter((row,idx)=>idx<10);this.guessWidth(this._columns,tenRows);break}const columns=this.columns();for(const columnFormat of this.columnFormats())if(columnFormat.valid()){const colIdx=columns.indexOf(columnFormat.column());this._columns[colIdx]&&(this._columns[colIdx].hidden=columnFormat.width()===0,this._columns[colIdx].width=columnFormat.width()||this._columns[colIdx].width,this._columns[colIdx].formatter=columnFormat.formatterFunc(),this._columns[colIdx].renderCell=columnFormat.renderCellFunc())}this._dgrid.set("columns",this._columns.filter(col=>!col.hidden)),this._colsRefresh=!1}(this._colsRefresh||this._dataRefresh)&&(this._colsRefresh?this._dgrid.refresh({}):this._dgrid.refresh(),this._colsRefresh=!1,this._dataRefresh=!1)}exit(domNode,element){delete this._prevColsHash,delete this._prevFieldsHash,super.exit(domNode,element)}formatterFunc(){return function(cell,row){switch(typeof cell){case"string":return{html:cell.replace(/\t/g," ").trim()};case"undefined":return""}return cell}}renderCellFunc(){}click(row,col,sel){}}Table.prototype._class+=" dgrid_Table",Table.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),Table.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:ColumnFormat}),exports2.BUILD_VERSION=BUILD_VERSION,exports2.ColumnFormat=ColumnFormat,exports2.Common=Common,exports2.DBStore=DBStore,exports2.DatasourceCache=DatasourceCache,exports2.DatasourceStore=DatasourceStore,exports2.DatasourceTable=DatasourceTable,exports2.Deferred=Deferred,exports2.Grid=Grid,exports2.Memory=Memory,exports2.PKG_NAME=PKG_NAME,exports2.PKG_VERSION=PKG_VERSION,exports2.PagingGrid=PagingGrid,exports2.QueryResults=QueryResults,exports2.RowFormatter=RowFormatter,exports2.Table=Table,exports2.domConstruct=domConstruct,Object.defineProperty(exports2,Symbol.toStringTag,{value:"Module"})});
|
|
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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}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," "):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," ").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.2.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.1.0",t.PagingGrid=h,t.QueryResults=l,t.RowFormatter=m,t.Table=H,t.domConstruct=c,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=index.umd.cjs.map
|
|
3
|
-
(function(){"use strict";try{if(typeof document<"u"){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;bottom:0;left:0;right:0;top: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)}})();
|
|
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)}}();
|