@hpcc-js/dgrid 3.5.6 → 3.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +43 -43
- package/README.md +31 -31
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +6 -6
- package/src/Common.css +494 -494
- package/src/Common.ts +166 -166
- package/src/DBStore.ts +90 -90
- package/src/DatasourceStore.ts +126 -126
- package/src/DatasourceTable.ts +62 -62
- package/src/RowFormatter.ts +146 -146
- package/src/Table.ts +246 -246
- package/src/__package__.ts +3 -3
- package/src/__tests__/index.ts +1 -1
- package/src/__tests__/test1.ts +50 -50
- package/src/dgrid-shim.ts +12 -12
- package/src/i18n.js +11 -11
- package/src/index.ts +10 -10
package/LICENSE
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
|
|
2
|
-
|
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
you may not use this file except in compliance with the License.
|
|
5
|
-
You may obtain a copy of the License at
|
|
6
|
-
|
|
7
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
|
|
9
|
-
Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
See the License for the specific language governing permissions and
|
|
13
|
-
limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Intersection Algorithms Provided by Kevin Lindsey
|
|
17
|
-
Copyright (c) 2000-2011, Kevin Lindsey
|
|
18
|
-
All rights reserved.
|
|
19
|
-
|
|
20
|
-
Redistribution and use in source and binary forms, with or without
|
|
21
|
-
modification, are permitted provided that the following conditions are met:
|
|
22
|
-
|
|
23
|
-
- Redistributions of source code must retain the above copyright notice,
|
|
24
|
-
this list of conditions and the following disclaimer.
|
|
25
|
-
|
|
26
|
-
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
-
notice, this list of conditions and the following disclaimer in the
|
|
28
|
-
documentation and/or other materials provided with the distribution.
|
|
29
|
-
|
|
30
|
-
- Neither the name of this software nor the names of its contributors
|
|
31
|
-
may be used to endorse or promote products derived from this software
|
|
32
|
-
without specific prior written permission.
|
|
33
|
-
|
|
34
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
35
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
36
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
37
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
38
|
-
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
39
|
-
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
40
|
-
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
41
|
-
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
42
|
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
43
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1
|
+
HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Intersection Algorithms Provided by Kevin Lindsey
|
|
17
|
+
Copyright (c) 2000-2011, Kevin Lindsey
|
|
18
|
+
All rights reserved.
|
|
19
|
+
|
|
20
|
+
Redistribution and use in source and binary forms, with or without
|
|
21
|
+
modification, are permitted provided that the following conditions are met:
|
|
22
|
+
|
|
23
|
+
- Redistributions of source code must retain the above copyright notice,
|
|
24
|
+
this list of conditions and the following disclaimer.
|
|
25
|
+
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
|
|
30
|
+
- Neither the name of this software nor the names of its contributors
|
|
31
|
+
may be used to endorse or promote products derived from this software
|
|
32
|
+
without specific prior written permission.
|
|
33
|
+
|
|
34
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
35
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
36
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
37
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
38
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
39
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
40
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
41
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
42
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
43
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# @hpcc-js/dgrid
|
|
2
|
-
|
|
3
|
-
This package is part of the mono repository "@hpcc-js" (aka Visualization Framework), for more information including quick start, demos and tutorials, please visit the main page on GitHub: [hpcc-systems/Visualization](https://github.com/hpcc-systems/Visualization).
|
|
4
|
-
|
|
5
|
-
## Details
|
|
6
|
-
The **dgrid** package contains the following visualizations:
|
|
7
|
-
|
|
8
|
-
## Note for Rollup.js users
|
|
9
|
-
**dgrid** is dependent on **dgrid-shim** which requires some special configuration when bundling with Rollup.js - please see [dgrid-shim](../dgrid-shim/README.md) for more information.
|
|
10
|
-
|
|
11
|
-
<ClientOnly>
|
|
12
|
-
<hpcc-vitepress style="width:100%;height:600px">
|
|
13
|
-
<div id="target" style="height:600px">
|
|
14
|
-
</div>
|
|
15
|
-
<script type="module">
|
|
16
|
-
// Note: dgrid does not support "import" - this will fail
|
|
17
|
-
import { Table } from "@hpcc-js/dgrid";
|
|
18
|
-
|
|
19
|
-
new Table()
|
|
20
|
-
.target("target")
|
|
21
|
-
.columns(["Mother", "Father", { label: "Children", columns: ["Name", "sex", "age"] }, { label: "Pets", columns: ["Name", "type"] }])
|
|
22
|
-
.data([
|
|
23
|
-
["<b>Jane</b>", "John", [["Mary", "f", 4], ["Bob", "m", 6], ["Tim", "m", 1]], [["Spot", "dog"], ["Smelly", "cat"], ["Goldie", "Fish"], ["Hammy", "Hamster"]]],
|
|
24
|
-
["Penelope", "Alex", [["Bill", "m", 1]], []],
|
|
25
|
-
["Jill", "Marcus", [], [["Flappy", "parrot"], ["Stinky", "cat"], ["Rolf", "dog"]]],
|
|
26
|
-
["Susan", "Robert", [["Jack", "m", 4], ["Alice", "f", 6]], []]
|
|
27
|
-
])
|
|
28
|
-
.render()
|
|
29
|
-
;
|
|
30
|
-
</script>
|
|
31
|
-
</hpcc-vitepress>
|
|
1
|
+
# @hpcc-js/dgrid
|
|
2
|
+
|
|
3
|
+
This package is part of the mono repository "@hpcc-js" (aka Visualization Framework), for more information including quick start, demos and tutorials, please visit the main page on GitHub: [hpcc-systems/Visualization](https://github.com/hpcc-systems/Visualization).
|
|
4
|
+
|
|
5
|
+
## Details
|
|
6
|
+
The **dgrid** package contains the following visualizations:
|
|
7
|
+
|
|
8
|
+
## Note for Rollup.js users
|
|
9
|
+
**dgrid** is dependent on **dgrid-shim** which requires some special configuration when bundling with Rollup.js - please see [dgrid-shim](../dgrid-shim/README.md) for more information.
|
|
10
|
+
|
|
11
|
+
<ClientOnly>
|
|
12
|
+
<hpcc-vitepress style="width:100%;height:600px">
|
|
13
|
+
<div id="target" style="height:600px">
|
|
14
|
+
</div>
|
|
15
|
+
<script type="module">
|
|
16
|
+
// Note: dgrid does not support "import" - this will fail
|
|
17
|
+
import { Table } from "@hpcc-js/dgrid";
|
|
18
|
+
|
|
19
|
+
new Table()
|
|
20
|
+
.target("target")
|
|
21
|
+
.columns(["Mother", "Father", { label: "Children", columns: ["Name", "sex", "age"] }, { label: "Pets", columns: ["Name", "type"] }])
|
|
22
|
+
.data([
|
|
23
|
+
["<b>Jane</b>", "John", [["Mary", "f", 4], ["Bob", "m", 6], ["Tim", "m", 1]], [["Spot", "dog"], ["Smelly", "cat"], ["Goldie", "Fish"], ["Hammy", "Hamster"]]],
|
|
24
|
+
["Penelope", "Alex", [["Bill", "m", 1]], []],
|
|
25
|
+
["Jill", "Marcus", [], [["Flappy", "parrot"], ["Stinky", "cat"], ["Rolf", "dog"]]],
|
|
26
|
+
["Susan", "Robert", [["Jack", "m", 4], ["Alice", "f", 6]], []]
|
|
27
|
+
])
|
|
28
|
+
.render()
|
|
29
|
+
;
|
|
30
|
+
</script>
|
|
31
|
+
</hpcc-vitepress>
|
|
32
32
|
</ClientOnly>
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var t=Object.defineProperty,e=(e,s)=>t(e,"name",{value:s,configurable:!0});import{HTMLWidget as s,Palette as r,PropertyExt as i,format as o,select as n}from"@hpcc-js/common";import{hashSum as l}from"@hpcc-js/util";const a="@hpcc-js/dgrid",h="3.5.6",d="3.19.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 c=globalThis["@hpcc-js/dgrid-shim"].Deferred,u=globalThis["@hpcc-js/dgrid-shim"].Memory,p=globalThis["@hpcc-js/dgrid-shim"].QueryResults,_=globalThis["@hpcc-js/dgrid-shim"].Grid,m=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,f=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function g(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function b(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return g(t);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function w(t){return t instanceof Array}e(g,"entitiesEncode"),e(b,"safeEncode"),e(w,"isArray");const v=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=[];w(e[r.leafID])?i=e[r.leafID]:w(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;w(e)||(e=w(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:b(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:b(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}};e(v,"RowFormatter");let y=v;const D=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 y(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 c;return s.totalLength=new c,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}};e(D,"DBStore");let C=D;const x=class _Common extends s{_columns=[];_store=new C(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?m:_)({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){}};e(x,"Common");let R=x;R.prototype._class+=" dgrid_Common",R.prototype.publish("noDataMessage","...empty...","string","No Data Message"),R.prototype.publish("loadingMessage","loading...","string","Loading Message"),R.prototype.publish("pagination",!1,"boolean","Enable paging"),R.prototype.publish("pageSize",25,"number","Page size"),R.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),R.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),R.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:/* @__PURE__ */e(t=>!t.sortBy(),"disable")}),R.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),R.prototype.publish("renderHtml",!0,"boolean","Render HTML");const S=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}};e(S,"DatasourceCache");let F=S;const j=class _DatasourceStore{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new F(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new y(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 c;return this._request(t.start,t.end).then(t=>e.resolve(t)),new p(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}};e(j,"DatasourceStore");let H=j;const I=class _DatasourceTable extends R{_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 u),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new H(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){}};e(I,"DatasourceTable");let M=I;M.prototype._class+=" dgrid_DatasourceTable",M.prototype.publish("datasource",null,"object","Datasource");const B=class _ColumnFormat extends i{_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 e=o(this.format());return function(s,r){return"number"==typeof s?e(s):t.call(this,s,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),e=this.formatterFunc();if(this.valid()&&this.paletteID()){const s=this._owner.columns(),i=r.rainbow(this.paletteID()),o=this.min(),l=this.max(),a=this.valueColumn()?s.indexOf(this.valueColumn()):void 0;return function(s,h,d){t&&t.call(this,s,h,d);const c=a?s.__origRow[a]:h,u=i(c,o,l),p=e.call(this,h,s);n(d).style("background",u).style("color",u&&r.textColor(u)).text(p?.html??p??h)}}return t}};e(B,"ColumnFormat");let T=B;T.prototype._class+=" dgrid_Table.ColumnFormat",T.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),T.prototype.publish("width",null,"number","Width",null,{optional:!0}),T.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),T.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...r.rainbow("default").switch()],{optional:!0}),T.prototype.publish("min",0,"number","Min Value",null,{disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")}),T.prototype.publish("max",100,"number","Max Value",null,{disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")}),T.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")});const O=class _Table extends R{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=l({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const s=super.columns.apply(this,arguments);if(arguments.length){const e=l({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return s}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){}};e(O,"Table");let P=O;P.prototype._class+=" dgrid_Table",P.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),P.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:T});export{d as BUILD_VERSION,T as ColumnFormat,R as Common,C as DBStore,F as DatasourceCache,H as DatasourceStore,M as DatasourceTable,c as Deferred,_ as Grid,u as Memory,a as PKG_NAME,h as PKG_VERSION,m as PagingGrid,p as QueryResults,y as RowFormatter,P as Table,f as domConstruct};
|
|
1
|
+
var t=Object.defineProperty,e=(e,s)=>t(e,"name",{value:s,configurable:!0});import{HTMLWidget as s,Palette as r,PropertyExt as i,format as o,select as n}from"@hpcc-js/common";import{hashSum as l}from"@hpcc-js/util";const a="@hpcc-js/dgrid",h="3.5.9",d="3.19.3";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 c=globalThis["@hpcc-js/dgrid-shim"].Deferred,u=globalThis["@hpcc-js/dgrid-shim"].Memory,p=globalThis["@hpcc-js/dgrid-shim"].QueryResults,_=globalThis["@hpcc-js/dgrid-shim"].Grid,m=globalThis["@hpcc-js/dgrid-shim"].PagingGrid,f=globalThis["@hpcc-js/dgrid-shim"].domConstruct;function g(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function b(t){switch(Object.prototype.toString.call(t)){case"[object Undefined]":case"[object Boolean]":case"[object Number]":return t;case"[object String]":return g(t);default:console.warn("Unknown cell type: "+Object.prototype.toString.call(t))}return t}function w(t){return t instanceof Array}e(g,"entitiesEncode"),e(b,"safeEncode"),e(w,"isArray");const v=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=[];w(e[r.leafID])?i=e[r.leafID]:w(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;w(e)||(e=w(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:b(e)):(this._formattedRow[t.field]+="<br><hr class='dgrid-fakeline'>",this._formattedRow[t.field]+=""+(void 0===e?"":this._renderHtml?e:b(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}};e(v,"RowFormatter");let y=v;const D=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 y(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 c;return s.totalLength=new c,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}};e(D,"DBStore");let C=D;const x=class _Common extends s{_columns=[];_store=new C(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?m:_)({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){}};e(x,"Common");let R=x;R.prototype._class+=" dgrid_Common",R.prototype.publish("noDataMessage","...empty...","string","No Data Message"),R.prototype.publish("loadingMessage","loading...","string","Loading Message"),R.prototype.publish("pagination",!1,"boolean","Enable paging"),R.prototype.publish("pageSize",25,"number","Page size"),R.prototype.publish("sortable",!1,"boolean","Enable sorting by column"),R.prototype.publish("sortBy",null,"set","Default 'sort by' Column ID",function(){return this.columns()},{optional:!0}),R.prototype.publish("sortByDescending",!1,"boolean","Default 'sort by' descending",void 0,{disable:/* @__PURE__ */e(t=>!t.sortBy(),"disable")}),R.prototype.publish("multiSelect",!1,"boolean","Multiple Selection"),R.prototype.publish("renderHtml",!0,"boolean","Render HTML");const S=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}};e(S,"DatasourceCache");let F=S;const j=class _DatasourceStore{_datasource;_columnsIdx={};_columns;rowFormatter;constructor(t,e){this._datasource=new F(t),this._columnsIdx={},this._columns=this.db2Columns(this._datasource.outFields()).map((t,e)=>(this._columnsIdx[t.field]=e,t)),this.rowFormatter=new y(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 c;return this._request(t.start,t.end).then(t=>e.resolve(t)),new p(e.then(t=>t.data),{totalLength:e.then(t=>t.totalLength)})}};e(j,"DatasourceStore");let H=j;const I=class _DatasourceTable extends R{_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 u),this._dgrid.set("columns",[]),this._prevDatasource=this.datasource(),this._prevDatasource){const s=new H(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){}};e(I,"DatasourceTable");let M=I;M.prototype._class+=" dgrid_DatasourceTable",M.prototype.publish("datasource",null,"object","Datasource");const B=class _ColumnFormat extends i{_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 e=o(this.format());return function(s,r){return"number"==typeof s?e(s):t.call(this,s,r)}}return t}renderCellFunc(){const t=this._owner.renderCellFunc(),e=this.formatterFunc();if(this.valid()&&this.paletteID()){const s=this._owner.columns(),i=r.rainbow(this.paletteID()),o=this.min(),l=this.max(),a=this.valueColumn()?s.indexOf(this.valueColumn()):void 0;return function(s,h,d){t&&t.call(this,s,h,d);const c=a?s.__origRow[a]:h,u=i(c,o,l),p=e.call(this,h,s);n(d).style("background",u).style("color",u&&r.textColor(u)).text(p?.html??p??h)}}return t}};e(B,"ColumnFormat");let T=B;T.prototype._class+=" dgrid_Table.ColumnFormat",T.prototype.publish("column",null,"set","Column",function(){return this._owner.columns()},{optional:!0}),T.prototype.publish("width",null,"number","Width",null,{optional:!0}),T.prototype.publish("format",null,"string","Format (d3-format)",null,{optional:!0}),T.prototype.publish("paletteID",null,"set","Color palette for this widget",["",...r.rainbow("default").switch()],{optional:!0}),T.prototype.publish("min",0,"number","Min Value",null,{disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")}),T.prototype.publish("max",100,"number","Max Value",null,{disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")}),T.prototype.publish("valueColumn",null,"set","Column",function(){return this._owner.columns()},{optional:!0,disable:/* @__PURE__ */e(t=>!t.paletteID(),"disable")});const O=class _Table extends R{_prevColsHash;_prevFieldsHash;_colsRefresh=!1;_dataRefresh=!1;constructor(){super()}fields(t){const e=super.fields.apply(this,arguments);if(arguments.length){const e=l({_:t});this._prevFieldsHash!==e&&(this._prevFieldsHash=e,this._colsRefresh=!0)}return e}columns(t,e){const s=super.columns.apply(this,arguments);if(arguments.length){const e=l({_:t});this._prevColsHash!==e&&(this._prevColsHash=e,this._colsRefresh=!0)}return s}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){}};e(O,"Table");let P=O;P.prototype._class+=" dgrid_Table",P.prototype.publish("columnWidth","auto","set","Default column width",["auto","none"]),P.prototype.publish("columnFormats",[],"propertyArray","Source Columns",null,{autoExpand:T});export{d as BUILD_VERSION,T as ColumnFormat,R as Common,C as DBStore,F as DatasourceCache,H as DatasourceStore,M as DatasourceTable,c as Deferred,_ as Grid,u as Memory,a as PKG_NAME,h as PKG_VERSION,m as PagingGrid,p as QueryResults,y as RowFormatter,P as Table,f as domConstruct};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
3
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)}}();
|
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 = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\n\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n console.error(\"dgrid-shim not loaded, please add `<script src=\\\"https://cdn.jsdelivr.net/npm/@hpcc-js/dgrid-shim/dist/index.min.js\\\"></script>` or similar to your HTML file\");\n}\n\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\n","function entitiesEncode(str) {\n return String(str).replace(/&/g, \"&\").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":["PKG_NAME","PKG_VERSION","BUILD_VERSION","globalThis","console","error","Deferred","Memory","QueryResults","Grid","PagingGrid","domConstruct","entitiesEncode","str","String","replace","safeEncode","item","Object","prototype","toString","call","warn","isArray","obj","Array","__name","_RowFormatter","constructor","columns","_renderHtml","this","_columns","flattenColumns","_flattenedColumns","_columnIdx","_formattedRow","column","flattenColumn","children","childColumn","field","length","push","format","row","formatRow","calcDepth","maxChildDepth","leafID","childDepth","childRows","Row","childRow","Math","max","formatCell","cell","isSet","JSON","stringify","Item","paddingArr","padding","join","rowIdx","retVal","RowFormatter","_DBStore","_db","Model","idProperty","db","renderHtml","_","db2Columns","sortable","fields","prefix","formatter","renderCell","map","idx","label","className","type","getIdentity","object","__hpcc_id","get","_fetchRange","opts","rowFormatter","data","slice","start","end","__origRow","fetchRange","totalLength","resolve","sort","l","r","property","descending","DBStore","_Common","HTMLWidget","_store","_dgridDiv","_dgrid","_prevPaging","_prevSortBy","_prevSortByDescending","_prevMultiSelect","super","_tag","formatSortBy","indexOf","sortBy","sortByDescending","_supressEvents","selection","arguments","id","storeItem","rowToObj","clearSelection","first","forEach","element","scrollIntoView","select","enter","domNode","append","attr","update","pagination","multiSelect","destroy","collection","selectionMode","deselectOnRefresh","cellNavigation","pagingLinks","pagingTextBox","previousNextArrows","firstLastArrows","rowsPerPage","pageSize","pageSizeOptions","node","on","evt","rows","click","refresh","noDataMessage","loadingMessage","style","width","height","resize","exit","col","sel","more","Common","_class","publish","optional","disable","self","_DatasourceCache","_datasource","_prevHash","_fetchCache","datasource","validateCache","hash","outFields","total","fetch","from","count","cacheID","DatasourceCache","_DatasourceStore","_columnsIdx","_request","Promise","then","response","formattedRow","options","DatasourceStore","_DatasourceTable","_prevDatasource","invalidate","render","callback","w","set","store","DatasourceTable","_ColumnFormat","PropertyExt","_owner","owner","valid","formatterFunc","defaultFormatter","numberFormatter","d3Format","renderCellFunc","defaultRenderCell","paletteID","palette","Palette","rainbow","min","valueColIdx","valueColumn","cellElement","value","background","cellText","d3Select","textColor","text","html","ColumnFormat","switch","cf","_Table","_prevColsHash","_prevFieldsHash","_colsRefresh","_dataRefresh","apply","hashSum","asDefault","guessWidth","sortablePadding","sampleData","i","concat","reduce","prevVal","trim","textSize","columnWidth","tenRows","filter","columnFormat","columnFormats","colIdx","hidden","Table","autoExpand"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/dgrid-shim.ts","../src/RowFormatter.ts","../src/DBStore.ts","../src/Common.ts","../src/DatasourceStore.ts","../src/DatasourceTable.ts","../src/Table.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\r\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\r\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\r\n","import * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\r\n\r\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\r\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\");\r\n}\r\n\r\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\r\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\r\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\r\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\r\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\r\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\r\n","function entitiesEncode(str) {\r\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\r\n}\r\n\r\nfunction safeEncode(item) {\r\n switch (Object.prototype.toString.call(item)) {\r\n case \"[object Undefined]\":\r\n case \"[object Boolean]\":\r\n case \"[object Number]\":\r\n return item;\r\n case \"[object String]\":\r\n return entitiesEncode(item);\r\n default:\r\n console.warn(\"Unknown cell type: \" + Object.prototype.toString.call(item));\r\n }\r\n return item;\r\n}\r\n\r\nfunction isArray(obj: any): obj is any[] {\r\n return obj instanceof Array;\r\n}\r\n\r\nconst LINE_SPLITTER = \"<br><hr class='dgrid-fakeline'>\";\r\nconst LINE_SPLITTER2 = \"<br><hr class='dgrid-fakeline' style='visibility: hidden'>\";\r\n\r\nexport interface ColumnType {\r\n field: string;\r\n leafID: string;\r\n label: string;\r\n idx: number;\r\n className: string;\r\n sortable: boolean;\r\n isSet: boolean;\r\n width?: number;\r\n formatter?: CellFormatter;\r\n renderCell?: CellRenderer;\r\n children?: ColumnType[];\r\n}\r\nexport interface RowType {\r\n __hpcc_id: number;\r\n __origRow: any[];\r\n [colIdx: number]: any;\r\n}\r\nexport type CellFormatter = (this: ColumnType, cell: any, row: RowType) => string;\r\nexport type CellRenderer = (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement) => HTMLElement | void;\r\n\r\nexport class RowFormatter {\r\n private _columns: ColumnType[];\r\n private _flattenedColumns = [];\r\n private _columnIdx = {};\r\n private _formattedRow = {};\r\n\r\n constructor(columns: ColumnType[], protected _renderHtml) {\r\n this._columns = columns;\r\n this.flattenColumns(columns);\r\n }\r\n\r\n flattenColumns(columns: ColumnType[]) {\r\n for (const column of columns) {\r\n this.flattenColumn(column);\r\n }\r\n }\r\n\r\n flattenColumn(column: ColumnType) {\r\n if (column.children) {\r\n for (const childColumn of column.children) this.flattenColumn(childColumn);\r\n } else {\r\n this._columnIdx[column.field] = this._flattenedColumns.length;\r\n this._flattenedColumns.push(column.field);\r\n }\r\n }\r\n\r\n format(row) {\r\n this._formattedRow = {};\r\n this.formatRow(this._columns, row);\r\n return this.row();\r\n }\r\n\r\n calcDepth(columns: ColumnType[], row) {\r\n let maxChildDepth = 1;\r\n for (const column of columns) {\r\n if (column.children && row[column.leafID]) {\r\n let childDepth = 0;\r\n let childRows = [];\r\n if (isArray(row[column.leafID])) {\r\n childRows = row[column.leafID];\r\n } else if (isArray(row[column.leafID].Row)) {\r\n childRows = row[column.leafID].Row;\r\n }\r\n for (const childRow of childRows) {\r\n childDepth += this.calcDepth(column.children, childRow);\r\n }\r\n maxChildDepth = Math.max(maxChildDepth, childDepth);\r\n }\r\n }\r\n return maxChildDepth;\r\n }\r\n\r\n formatCell(column: ColumnType, cell, maxChildDepth) {\r\n if (column.children) {\r\n let childDepth = 0;\r\n if (!isArray(cell)) {\r\n if (isArray(cell.Row)) {\r\n cell = cell.Row;\r\n } else {\r\n cell = [cell];\r\n }\r\n }\r\n for (const row of cell) {\r\n childDepth = Math.max(childDepth, this.formatRow(column.children, row));\r\n }\r\n } else {\r\n if (column.isSet) {\r\n cell = JSON.stringify(cell.Item);\r\n }\r\n if (this._formattedRow[column.field] === undefined) {\r\n this._formattedRow[column.field] = \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\r\n } else {\r\n this._formattedRow[column.field] += LINE_SPLITTER;\r\n this._formattedRow[column.field] += \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\r\n }\r\n if (maxChildDepth > 1) {\r\n const paddingArr = [];\r\n paddingArr.length = maxChildDepth;\r\n const padding = paddingArr.join(LINE_SPLITTER2);\r\n this._formattedRow[column.field] += padding;\r\n }\r\n }\r\n }\r\n\r\n formatRow(columns: ColumnType[], row: { [key: string]: any } = [], rowIdx: number = 0) {\r\n const maxChildDepth = this.calcDepth(columns, row);\r\n for (const column of columns) {\r\n this.formatCell(column, row[column.leafID], maxChildDepth);\r\n }\r\n return maxChildDepth;\r\n }\r\n\r\n row() {\r\n const retVal = {};\r\n for (const column of this._flattenedColumns) {\r\n retVal[column] = this._formattedRow[column];\r\n }\r\n return retVal;\r\n }\r\n}\r\n","import { Database } from \"@hpcc-js/common\";\r\nimport { Deferred } from \"./dgrid-shim.ts\";\r\nimport { CellFormatter, CellRenderer, ColumnType, RowFormatter } from \"./RowFormatter.ts\";\r\n\r\nexport class DBStore {\r\n private _db: Database.Grid;\r\n\r\n Model: null;\r\n idProperty: \"__hpcc_id\";\r\n\r\n constructor(db: Database.Grid) {\r\n this._db = db;\r\n }\r\n\r\n protected _renderHtml = true;\r\n renderHtml(_: boolean) {\r\n this._renderHtml = _;\r\n }\r\n\r\n db2Columns(sortable: boolean, fields: Database.Field[], prefix = \"\", formatter?: CellFormatter, renderCell?: CellRenderer): ColumnType[] {\r\n if (!fields) return [];\r\n return fields.map((field, idx) => {\r\n const label = field.label();\r\n const column: ColumnType = {\r\n label,\r\n leafID: \"\" + idx,\r\n field: prefix + idx,\r\n idx,\r\n className: \"resultGridCell\",\r\n sortable,\r\n isSet: false\r\n };\r\n switch (field.type()) {\r\n case \"nested\":\r\n column.children = this.db2Columns(false, field.children(), prefix + idx + \"_\", formatter);\r\n column.sortable = false;\r\n break;\r\n default:\r\n column.formatter = formatter;\r\n column.renderCell = renderCell;\r\n }\r\n return column;\r\n });\r\n }\r\n\r\n columns(sortable: boolean, formatter?: CellFormatter, renderCell?: CellRenderer) {\r\n return this.db2Columns(sortable, this._db.fields(), \"\", formatter, renderCell);\r\n }\r\n\r\n getIdentity(object) {\r\n return object.__hpcc_id;\r\n }\r\n\r\n get(row: number) {\r\n return this._db.row(row + 1);\r\n }\r\n\r\n _fetchRange(opts: { start: number, end: number }): object[] {\r\n const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);\r\n return this._db.data().slice(opts.start, opts.end).map((row, idx) => {\r\n const formattedRow: any = rowFormatter.format(row);\r\n return {\r\n ...formattedRow,\r\n __hpcc_id: opts.start + idx,\r\n __origRow: row\r\n };\r\n });\r\n }\r\n\r\n fetchRange(opts: { start: number, end: number }): Promise<object[]> {\r\n const data = this._fetchRange(opts);\r\n const retVal: any = new Deferred();\r\n retVal.totalLength = new Deferred();\r\n retVal.resolve(data);\r\n retVal.totalLength.resolve(this._db.length() - 1);\r\n return retVal;\r\n }\r\n\r\n sort(opts) {\r\n this._db.data().sort((l, r) => {\r\n for (const item of opts) {\r\n const idx = item.property;\r\n if ((l[idx] === undefined && r[idx] !== undefined) || l[idx] < r[idx]) return item.descending ? 1 : -1;\r\n if ((l[idx] !== undefined && r[idx] === undefined) || l[idx] > r[idx]) return item.descending ? -1 : 1;\r\n }\r\n return 0;\r\n });\r\n return this;\r\n }\r\n}\r\n","import { HTMLWidget } from \"@hpcc-js/common\";\r\nimport { Grid, PagingGrid } from \"./dgrid-shim.ts\";\r\nimport { DBStore } from \"./DBStore.ts\";\r\n\r\nimport \"../src/Common.css\";\r\n\r\nexport class Common extends HTMLWidget {\r\n protected _columns = [];\r\n protected _store = new DBStore(this._db);\r\n protected _dgridDiv;\r\n protected _dgrid;\r\n protected _prevPaging;\r\n private _prevSortBy: string;\r\n private _prevSortByDescending: boolean;\r\n private _prevMultiSelect: boolean;\r\n\r\n constructor() {\r\n super();\r\n this._tag = \"div\";\r\n }\r\n\r\n protected formatSortBy(): [{ property: string, descending: boolean }] | undefined {\r\n const idx = this.columns().indexOf(this.sortBy());\r\n return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : undefined;\r\n }\r\n\r\n protected _supressEvents;\r\n selection(): any[];\r\n selection(_: any[]): this;\r\n selection(_?: any[]): any[] | this {\r\n if (!arguments.length) {\r\n const retVal = [];\r\n for (const id in this._dgrid.selection) {\r\n if (this._dgrid.selection[id]) {\r\n const storeItem = this._store.get(+id);\r\n retVal.push(this.rowToObj(storeItem));\r\n }\r\n }\r\n return retVal;\r\n }\r\n this._supressEvents = true;\r\n this._dgrid?.clearSelection();\r\n let first = true;\r\n this.data().forEach((row, idx) => {\r\n if (_.indexOf(row) >= 0) {\r\n const row = this._dgrid?.row(idx);\r\n if (row.element && first) {\r\n first = false;\r\n row.element.scrollIntoView();\r\n }\r\n this._dgrid?.select(idx);\r\n }\r\n });\r\n this._supressEvents = false;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n this._dgridDiv = element.append(\"div\")\r\n .attr(\"class\", \"flat\")\r\n ;\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n\r\n this._store.renderHtml(this.renderHtml());\r\n\r\n if (!this._dgrid || this._prevPaging !== this.pagination() ||\r\n this._prevSortBy !== this.sortBy() ||\r\n this._prevSortByDescending !== this.sortByDescending() ||\r\n this._prevMultiSelect !== this.multiSelect()) {\r\n\r\n this._prevPaging = this.pagination();\r\n this._prevSortBy = this.sortBy();\r\n this._prevSortByDescending = this.sortByDescending();\r\n this._prevMultiSelect = this.multiSelect();\r\n if (this._dgrid) {\r\n this._dgrid.destroy();\r\n this._dgridDiv = element.append(\"div\")\r\n .attr(\"class\", \"flat\")\r\n ;\r\n }\r\n this._dgrid = new (this._prevPaging ? PagingGrid : Grid)({\r\n columns: this._columns,\r\n collection: this._store,\r\n sort: this.formatSortBy(),\r\n selectionMode: this.multiSelect() ? \"extended\" : \"single\",\r\n deselectOnRefresh: true,\r\n cellNavigation: false,\r\n pagingLinks: 1,\r\n pagingTextBox: true,\r\n previousNextArrows: true,\r\n firstLastArrows: true,\r\n rowsPerPage: this.pageSize(),\r\n pageSizeOptions: [1, 10, 25, 50, 100, 1000]\r\n }, this._dgridDiv.node());\r\n this._dgrid.on(\"dgrid-select\", (evt) => {\r\n if (this._supressEvents) return;\r\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\r\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", true, { selection: this.selection() });\r\n }\r\n });\r\n this._dgrid.on(\"dgrid-deselect\", (evt) => {\r\n if (this._supressEvents) return;\r\n if (evt.rows && evt.rows.length && evt.rows[0].data) {\r\n this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", false, { selection: this.selection() });\r\n }\r\n });\r\n this._dgrid.refresh({});\r\n }\r\n this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;\r\n this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;\r\n\r\n this._dgridDiv\r\n .style(\"width\", this.width() + \"px\")\r\n .style(\"height\", this.height() - 2 + \"px\")\r\n ;\r\n this._dgrid.resize();\r\n }\r\n\r\n exit(domNode, element) {\r\n delete this._prevPaging;\r\n if (this._dgrid) {\r\n this._dgrid.destroy();\r\n delete this._dgrid;\r\n }\r\n super.exit(domNode, element);\r\n }\r\n\r\n click(row, col, sel, more) {\r\n }\r\n}\r\nCommon.prototype._class += \" dgrid_Common\";\r\n\r\nexport interface Common {\r\n noDataMessage(): string;\r\n noDataMessage(_: string): this;\r\n loadingMessage(): string;\r\n loadingMessage(_: string): this;\r\n pagination(): boolean;\r\n pagination(_: boolean): this;\r\n pageSize(): number;\r\n pageSize(_: number): this;\r\n sortable(): boolean;\r\n sortable(_: boolean): this;\r\n sortBy(): string;\r\n sortBy(_: string): this;\r\n sortByDescending(): boolean;\r\n sortByDescending(_: boolean): this;\r\n multiSelect(): boolean;\r\n multiSelect(_: boolean): this;\r\n renderHtml(): boolean;\r\n renderHtml(_: boolean): this;\r\n}\r\n\r\nCommon.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\r\nCommon.prototype.publish(\"loadingMessage\", \"loading...\", \"string\", \"Loading Message\");\r\nCommon.prototype.publish(\"pagination\", false, \"boolean\", \"Enable paging\");\r\nCommon.prototype.publish(\"pageSize\", 25, \"number\", \"Page size\");\r\nCommon.prototype.publish(\"sortable\", false, \"boolean\", \"Enable sorting by column\");\r\nCommon.prototype.publish(\"sortBy\", null, \"set\", \"Default 'sort by' Column ID\", function (this: Common) { return this.columns(); }, { optional: true });\r\nCommon.prototype.publish(\"sortByDescending\", false, \"boolean\", \"Default 'sort by' descending\", undefined, { disable: self => !self.sortBy() });\r\nCommon.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\r\nCommon.prototype.publish(\"renderHtml\", true, \"boolean\", \"Render HTML\");\r\n\r\n","import type { DDL2 } from \"@hpcc-js/ddl-shim\";\r\nimport { Deferred, QueryResults } from \"./dgrid-shim.ts\";\r\nimport { ColumnType, RowFormatter } from \"./RowFormatter.ts\";\r\n\r\nexport interface IDatasource {\r\n id: () => string;\r\n hash: () => string;\r\n label: () => string;\r\n\r\n outFields: () => DDL2.IField[];\r\n total: () => number;\r\n fetch: (from: number, count: number) => Promise<ReadonlyArray<object>>;\r\n}\r\n\r\nexport class DatasourceCache implements IDatasource {\r\n protected _datasource: IDatasource;\r\n _prevHash: string;\r\n _fetchCache: { [key: string]: Promise<ReadonlyArray<object>> } = {};\r\n\r\n constructor(datasource: IDatasource) {\r\n this._datasource = datasource;\r\n }\r\n\r\n validateCache() {\r\n const hash = this.hash();\r\n if (this._prevHash !== hash) {\r\n this._prevHash = hash;\r\n this._fetchCache = {};\r\n }\r\n }\r\n\r\n id() { return this._datasource.id(); }\r\n hash() { return this._datasource.hash(); }\r\n label() { return this._datasource.label(); }\r\n\r\n outFields() { return this._datasource.outFields(); }\r\n total() { return this._datasource.total(); }\r\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\r\n this.validateCache();\r\n const cacheID = `${from}->${count}`;\r\n let retVal = this._fetchCache[cacheID];\r\n if (!retVal) {\r\n retVal = this._datasource.fetch(from, count);\r\n this._fetchCache[cacheID] = retVal;\r\n }\r\n return retVal;\r\n }\r\n}\r\n\r\nexport class DatasourceStore {\r\n _datasource: DatasourceCache;\r\n _columnsIdx: { [key: string]: number } = {};\r\n _columns;\r\n\r\n private rowFormatter: RowFormatter;\r\n\r\n constructor(datasource: IDatasource, renderHtml: boolean) {\r\n this._datasource = new DatasourceCache(datasource);\r\n\r\n this._columnsIdx = {};\r\n this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {\r\n this._columnsIdx[column.field] = idx;\r\n return column;\r\n });\r\n this.rowFormatter = new RowFormatter(this._columns, renderHtml);\r\n }\r\n\r\n columns() {\r\n return this._columns;\r\n }\r\n\r\n db2Columns(fields: DDL2.IField[], prefix = \"\"): ColumnType[] {\r\n if (!fields) return [];\r\n return fields.map((field, idx) => {\r\n const column: ColumnType = {\r\n field: prefix + field.id,\r\n leafID: field.id,\r\n label: field.id,\r\n idx,\r\n className: \"resultGridCell\",\r\n sortable: true,\r\n isSet: false\r\n };\r\n if (field.type === \"dataset\") {\r\n column.children = this.db2Columns(field.children, prefix + field.id + \"_\");\r\n } else {\r\n column.formatter = (cell, row) => {\r\n switch (typeof cell) {\r\n case \"string\":\r\n return cell.replace(/\\t/g, \" \");\r\n }\r\n return cell;\r\n };\r\n }\r\n return column;\r\n });\r\n }\r\n\r\n getIdentity(row) {\r\n return row.__hpcc_id;\r\n }\r\n\r\n _request(start, end): Promise<{ totalLength: number, data: any[] }> {\r\n if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });\r\n const retVal = this._datasource.fetch(start, end - start).then(response => {\r\n return {\r\n totalLength: this._datasource.total(),\r\n data: response.map((row, idx) => {\r\n const formattedRow: any = this.rowFormatter.format(row);\r\n formattedRow.__hpcc_id = start + idx;\r\n formattedRow.__origRow = row;\r\n return formattedRow;\r\n })\r\n };\r\n });\r\n return retVal;\r\n }\r\n\r\n fetchRange(options): Promise<any[]> {\r\n const retVal = new Deferred();\r\n this._request(options.start, options.end).then(response => retVal.resolve(response));\r\n return new QueryResults(retVal.then(response => response.data), {\r\n totalLength: retVal.then(response => response.totalLength)\r\n });\r\n }\r\n}\r\n","import { Widget } from \"@hpcc-js/common\";\r\nimport { Memory } from \"./dgrid-shim.ts\";\r\nimport { Common } from \"./Common.ts\";\r\nimport { DatasourceStore, IDatasource } from \"./DatasourceStore.ts\";\r\n\r\nexport class DatasourceTable extends Common {\r\n _prevDatasource?: IDatasource;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n invalidate(): this {\r\n delete this._prevDatasource;\r\n return this;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n }\r\n\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n }\r\n render(callback?: (w: Widget) => void): this {\r\n return super.render(w => {\r\n if (this._prevDatasource !== this.datasource()) {\r\n this._dgrid.set(\"collection\", new Memory());\r\n this._dgrid.set(\"columns\", []);\r\n this._prevDatasource = this.datasource();\r\n if (this._prevDatasource) {\r\n const store = new DatasourceStore(this._prevDatasource, this.renderHtml());\r\n this._dgrid.set(\"columns\", store.columns());\r\n this._dgrid.set(\"collection\", store);\r\n if (callback) {\r\n callback(w);\r\n }\r\n } else {\r\n if (callback) {\r\n callback(w);\r\n }\r\n }\r\n } else {\r\n if (callback) {\r\n callback(w);\r\n }\r\n }\r\n });\r\n }\r\n\r\n click(row, col, sel) {\r\n }\r\n}\r\nDatasourceTable.prototype._class += \" dgrid_DatasourceTable\";\r\n\r\nexport interface DatasourceTable {\r\n datasource(): IDatasource;\r\n datasource(_: IDatasource): this;\r\n}\r\n\r\nDatasourceTable.prototype.publish(\"datasource\", null, \"object\", \"Datasource\");\r\n\r\n","import { Palette, PropertyExt, Field } from \"@hpcc-js/common\";\r\nimport { hashSum } from \"@hpcc-js/util\";\r\nimport { format as d3Format } from \"d3-format\";\r\nimport { select as d3Select } from \"d3-selection\";\r\nimport { Common } from \"./Common.ts\";\r\nimport { CellFormatter, CellRenderer, ColumnType, RowType } from \"./RowFormatter.ts\";\r\n\r\n// ColumnPalette ---\r\nexport class ColumnFormat extends PropertyExt {\r\n _owner: Table;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n owner(): Table;\r\n owner(_: Table): this;\r\n owner(_?: Table): Table | this {\r\n if (!arguments.length) return this._owner;\r\n this._owner = _;\r\n return this;\r\n }\r\n\r\n valid(): boolean {\r\n return !!this.column();\r\n }\r\n\r\n formatterFunc(): CellFormatter | undefined {\r\n const defaultFormatter = this._owner.formatterFunc();\r\n if (this.valid() && this.format()) {\r\n const numberFormatter = d3Format(this.format());\r\n\r\n return function (this: ColumnType, cell: any, row: RowType): string {\r\n if (typeof cell === \"number\")\r\n return numberFormatter(cell);\r\n return defaultFormatter.call(this, cell, row);\r\n };\r\n }\r\n return defaultFormatter;\r\n }\r\n\r\n renderCellFunc(): CellRenderer | undefined {\r\n const defaultRenderCell = this._owner.renderCellFunc();\r\n const defaultFormatter = this.formatterFunc();\r\n if (this.valid() && this.paletteID()) {\r\n const columns = this._owner.columns();\r\n const palette = Palette.rainbow(this.paletteID());\r\n const min = this.min();\r\n const max = this.max();\r\n const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : undefined;\r\n return function (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement): HTMLElement | void {\r\n if (defaultRenderCell) {\r\n defaultRenderCell.call(this, row, cell, cellElement);\r\n }\r\n const value = valueColIdx ? row.__origRow[valueColIdx] : cell;\r\n const background = palette(value, min, max);\r\n const cellText: any = defaultFormatter.call(this, cell, row);\r\n d3Select(cellElement)\r\n .style(\"background\", background)\r\n .style(\"color\", background && Palette.textColor(background))\r\n .text(cellText?.html ?? cellText ?? cell)\r\n ;\r\n };\r\n }\r\n return defaultRenderCell;\r\n }\r\n}\r\nColumnFormat.prototype._class += \" dgrid_Table.ColumnFormat\";\r\n\r\nexport interface ColumnFormat {\r\n column(): string;\r\n column(_: string): this;\r\n width(): number;\r\n width(_: number): this;\r\n format(): string;\r\n format(_: string): this;\r\n paletteID(): string;\r\n paletteID(_: string): this;\r\n min(): number;\r\n min(_: number): this;\r\n max(): number;\r\n max(_: number): this;\r\n valueColumn(): string;\r\n valueColumn(_: string): this;\r\n}\r\nColumnFormat.prototype.publish(\"column\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true });\r\nColumnFormat.prototype.publish(\"width\", null, \"number\", \"Width\", null, { optional: true });\r\nColumnFormat.prototype.publish(\"format\", null, \"string\", \"Format (d3-format)\", null, { optional: true });\r\nColumnFormat.prototype.publish(\"paletteID\", null, \"set\", \"Color palette for this widget\", [\"\", ...Palette.rainbow(\"default\").switch()], { optional: true });\r\nColumnFormat.prototype.publish(\"min\", 0, \"number\", \"Min Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\r\nColumnFormat.prototype.publish(\"max\", 100, \"number\", \"Max Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\r\nColumnFormat.prototype.publish(\"valueColumn\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true, disable: (cf: ColumnFormat) => !cf.paletteID() });\r\n\r\n// Table ---\r\nexport class Table extends Common {\r\n private _prevColsHash;\r\n private _prevFieldsHash;\r\n _colsRefresh = false;\r\n _dataRefresh = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n fields(): Field[];\r\n fields(_: Field[]): this;\r\n fields(_?: Field[]): Field[] | this {\r\n const retVal = super.fields.apply(this, arguments as any);\r\n if (arguments.length) {\r\n const hash = hashSum({ _ });\r\n if (this._prevFieldsHash !== hash) {\r\n this._prevFieldsHash = hash;\r\n this._colsRefresh = true;\r\n }\r\n }\r\n return retVal;\r\n }\r\n\r\n columns(): string[];\r\n columns(_: string[], asDefault?: boolean): this;\r\n columns(_?: string[], asDefault?: boolean): string[] | this {\r\n const retVal = super.columns.apply(this, arguments as any);\r\n if (arguments.length) {\r\n const hash = hashSum({ _ });\r\n if (this._prevColsHash !== hash) {\r\n this._prevColsHash = hash;\r\n this._colsRefresh = true;\r\n }\r\n }\r\n return retVal;\r\n }\r\n\r\n data(): any;\r\n data(_: any): this;\r\n data(_?: any): any | this {\r\n const retVal = super.data.apply(this, arguments as any);\r\n if (arguments.length) {\r\n this._dataRefresh = true;\r\n }\r\n return retVal;\r\n }\r\n\r\n enter(domNode, element) {\r\n super.enter(domNode, element);\r\n }\r\n\r\n guessWidth(columns, data) {\r\n const sortablePadding = this.sortable() ? 12 : 0;\r\n for (const column of columns) {\r\n if (column.children) {\r\n let sampleData = [];\r\n for (let i = 0; i < Math.min(3, data.length); ++i) {\r\n sampleData = sampleData.concat(data[i][column.idx]);\r\n }\r\n this.guessWidth(column.children, sampleData);\r\n } else {\r\n column.width = data.reduce((prevVal: number, row) => {\r\n const cell = (\"\" + row[column.idx]).trim();\r\n return Math.max(prevVal, this.textSize(cell).width);\r\n }, this.textSize(\"\" + column.label, undefined, undefined, true).width + sortablePadding) + 8; // +12 for the sort icon, +8 for the cell padding.\r\n }\r\n }\r\n }\r\n\r\n _prevHash;\r\n update(domNode, element) {\r\n super.update(domNode, element);\r\n const hash = this.hashSum();\r\n if (this._prevHash !== hash) {\r\n this._prevHash = hash;\r\n this._colsRefresh = true;\r\n }\r\n if (this._colsRefresh) {\r\n this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());\r\n switch (this.columnWidth()) {\r\n case \"auto\":\r\n const tenRows = this.data().filter((row, idx) => idx < 10);\r\n this.guessWidth(this._columns, tenRows);\r\n break;\r\n }\r\n const columns = this.columns();\r\n for (const columnFormat of this.columnFormats()) {\r\n if (columnFormat.valid()) {\r\n const colIdx = columns.indexOf(columnFormat.column());\r\n if (this._columns[colIdx]) {\r\n this._columns[colIdx].hidden = columnFormat.width() === 0;\r\n this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;\r\n this._columns[colIdx].formatter = columnFormat.formatterFunc();\r\n this._columns[colIdx].renderCell = columnFormat.renderCellFunc();\r\n }\r\n }\r\n }\r\n this._dgrid.set(\"columns\", this._columns.filter(col => !col.hidden));\r\n this._colsRefresh = false;\r\n }\r\n if (this._colsRefresh || this._dataRefresh) {\r\n if (this._colsRefresh) {\r\n this._dgrid.refresh({});\r\n } else {\r\n this._dgrid.refresh();\r\n }\r\n this._colsRefresh = false;\r\n this._dataRefresh = false;\r\n }\r\n }\r\n\r\n exit(domNode, element) {\r\n delete this._prevColsHash;\r\n delete this._prevFieldsHash;\r\n super.exit(domNode, element);\r\n }\r\n\r\n // Cell ---\r\n formatterFunc(): CellFormatter | undefined {\r\n return function (this: ColumnType, cell: any, row: RowType): string | any {\r\n switch (typeof cell) {\r\n case \"string\":\r\n return {\r\n html: cell.replace(/\\t/g, \" \").trim()\r\n };\r\n case \"undefined\":\r\n return \"\";\r\n }\r\n return cell;\r\n };\r\n }\r\n\r\n renderCellFunc(): CellRenderer | undefined {\r\n return undefined; // Undefined will defualt to formatter ---\r\n }\r\n\r\n // Events ---\r\n click(row, col, sel) {\r\n }\r\n}\r\nTable.prototype._class += \" dgrid_Table\";\r\n\r\nexport interface Table {\r\n columnWidth(): \"auto\" | \"none\";\r\n columnWidth(_: \"auto\" | \"none\"): this;\r\n columnFormats(): ColumnFormat[];\r\n columnFormats(_: ColumnFormat[]): this;\r\n}\r\n\r\nTable.prototype.publish(\"columnWidth\", \"auto\", \"set\", \"Default column width\", [\"auto\", \"none\"]);\r\nTable.prototype.publish(\"columnFormats\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: ColumnFormat });\r\n"],"names":["PKG_NAME","PKG_VERSION","BUILD_VERSION","globalThis","console","error","Deferred","Memory","QueryResults","Grid","PagingGrid","domConstruct","entitiesEncode","str","String","replace","safeEncode","item","Object","prototype","toString","call","warn","isArray","obj","Array","__name","_RowFormatter","constructor","columns","_renderHtml","this","_columns","flattenColumns","_flattenedColumns","_columnIdx","_formattedRow","column","flattenColumn","children","childColumn","field","length","push","format","row","formatRow","calcDepth","maxChildDepth","leafID","childDepth","childRows","Row","childRow","Math","max","formatCell","cell","isSet","JSON","stringify","Item","paddingArr","padding","join","rowIdx","retVal","RowFormatter","_DBStore","_db","Model","idProperty","db","renderHtml","_","db2Columns","sortable","fields","prefix","formatter","renderCell","map","idx","label","className","type","getIdentity","object","__hpcc_id","get","_fetchRange","opts","rowFormatter","data","slice","start","end","__origRow","fetchRange","totalLength","resolve","sort","l","r","property","descending","DBStore","_Common","HTMLWidget","_store","_dgridDiv","_dgrid","_prevPaging","_prevSortBy","_prevSortByDescending","_prevMultiSelect","super","_tag","formatSortBy","indexOf","sortBy","sortByDescending","_supressEvents","selection","arguments","id","storeItem","rowToObj","clearSelection","first","forEach","element","scrollIntoView","select","enter","domNode","append","attr","update","pagination","multiSelect","destroy","collection","selectionMode","deselectOnRefresh","cellNavigation","pagingLinks","pagingTextBox","previousNextArrows","firstLastArrows","rowsPerPage","pageSize","pageSizeOptions","node","on","evt","rows","click","refresh","noDataMessage","loadingMessage","style","width","height","resize","exit","col","sel","more","Common","_class","publish","optional","disable","self","_DatasourceCache","_datasource","_prevHash","_fetchCache","datasource","validateCache","hash","outFields","total","fetch","from","count","cacheID","DatasourceCache","_DatasourceStore","_columnsIdx","_request","Promise","then","response","formattedRow","options","DatasourceStore","_DatasourceTable","_prevDatasource","invalidate","render","callback","w","set","store","DatasourceTable","_ColumnFormat","PropertyExt","_owner","owner","valid","formatterFunc","defaultFormatter","numberFormatter","d3Format","renderCellFunc","defaultRenderCell","paletteID","palette","Palette","rainbow","min","valueColIdx","valueColumn","cellElement","value","background","cellText","d3Select","textColor","text","html","ColumnFormat","switch","cf","_Table","_prevColsHash","_prevFieldsHash","_colsRefresh","_dataRefresh","apply","hashSum","asDefault","guessWidth","sortablePadding","sampleData","i","concat","reduce","prevVal","trim","textSize","columnWidth","tenRows","filter","columnFormat","columnFormats","colIdx","hidden","Table","autoExpand"],"mappings":"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"}
|