bways-grid 0.0.25 → 0.0.26
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/fesm2022/bways-grid.mjs +47 -6
- package/fesm2022/bways-grid.mjs.map +1 -1
- package/lib/components/ultra-grid/ultra-grid.component.d.ts +7 -2
- package/lib/models/grid-config.model.d.ts +3 -0
- package/lib/workers/generated/sorting.worker.code.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/workers/generated/sorting.worker.code.ts +1 -1
- package/src/lib/workers/sorting.worker.ts +30 -4
package/fesm2022/bways-grid.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import { FormsModule } from '@angular/forms';
|
|
|
14
14
|
|
|
15
15
|
// AUTO-GENERATED FILE. DO NOT EDIT.
|
|
16
16
|
// Built from src/lib/workers/sorting.worker.ts
|
|
17
|
-
const SORTING_WORKER_CODE = `"use strict";(()=>{var
|
|
17
|
+
const SORTING_WORKER_CODE = `"use strict";(()=>{var v=[],m=[];addEventListener("message",t=>{let{action:o,rows:a,sortModel:r,filterModel:i,conditionFilters:e,groupModel:n,aggregations:l,groupStateMap:d}=t.data;if(o==="INIT"){v=(a||[]).map(f=>({...f,type:"leaf",level:0})),postMessage({action:"INIT_DONE"});return}if(o==="FLATTEN_ONLY"){let s=L(m,d||{},t.data.groupIncludeFooter);postMessage({flatList:s});return}if(o==="EXECUTE"){let s=v,{pivotMode:f,pivotColumns:u}=t.data;if(i&&Object.keys(i).length>0){let g={};for(let p of Object.keys(i))g[p]=new Set(i[p]);s=s.filter(p=>{for(let y of Object.keys(g)){let h=g[y],S=p.data?p.data[y]:null;if(!h.has(S))return!1}return!0})}e&&Object.keys(e).length>0&&(s=\$(s,e));let c={...l||{}},G=[];if(f&&u&&u.length>0){if(Object.keys(c).length===0){let g=new Set;s.slice(0,20).forEach(p=>{p.data&&Object.keys(p.data).forEach(y=>{let h=p.data[y];(typeof h=="number"||typeof h=="string"&&h.trim()!==""&&!isNaN(Number(h)))&&g.add(y)})}),u.forEach(p=>g.delete(p)),n&&n.forEach(p=>g.delete(p)),g.forEach(p=>{c[p]="sum"})}if(Object.keys(c).length>0){let{virtualAggrs:g,dynamicColumns:p}=D(s,u,c);c=g,G=p}}let N=s;if(n&&n.length>0?N=M(s,n,c):f&&u&&u.length>0&&Object.keys(c).length>0?N=[{id:"pivot-root",type:"leaf",level:0,data:U(s,c)}]:s.forEach(g=>g.level=0),r&&r.length>0&&F(N,r),m=N,n&&n.length>0&&t.data.groupIncludeFooter&&Object.keys(c).length>0){let p={id:"grand-total-footer",type:"group-footer",level:0,groupField:"Grand Total",groupKey:"Grand Total",data:U(s,c)};m.push(p)}let b=L(m,d||{},t.data.groupIncludeFooter),O=E(m);postMessage({flatList:b,resultTree:O,pivotColumns:G})}});function E(t){return t.map(o=>{if(o.type==="leaf")return{id:o.id,type:"leaf",level:o.level,data:o.id==="pivot-root"?o.data:void 0};if(o.type==="group"){let a=o;return{...a,children:a.children?E(a.children):void 0}}return o})}function L(t,o,a=!1){let r=[],i=[];for(let e=t.length-1;e>=0;e--)i.push(t[e]);for(;i.length>0;){let e=i.pop();if(e.type==="group"){let n=e;if(r.push({id:n.id,type:"group",level:n.level,groupField:n.groupField,groupKey:n.groupKey,data:n.data,childCount:n.children?n.children.length:0}),!!o[n.id]&&(a&&i.push({id:\`\${n.id}-footer\`,type:"group-footer",level:n.level,groupField:n.groupField,groupKey:n.groupKey,data:{...n.data}}),n.children))for(let d=n.children.length-1;d>=0;d--)i.push(n.children[d])}else e.type==="group-footer"?r.push({id:e.id,type:"group-footer",level:e.level,groupField:e.groupField,groupKey:e.groupKey,data:e.data}):r.push({id:e.id,type:"leaf",level:e.level,data:e.id==="pivot-root"?e.data:void 0})}return r}function j(t){let o=[],a=[...t];for(;a.length>0;){let r=a.pop();if(C(r))o.push(r);else if(I(r)&&r.children)for(let i=r.children.length-1;i>=0;i--)a.push(r.children[i])}return o}function C(t){return t.type==="leaf"}function I(t){return t.type==="group"}function A(t){if(typeof t=="number")return t;if(typeof t!="string")return t==null?0:Number(t);let o=t.trim();if(!o)return 0;let a=o.startsWith("(")&&o.endsWith(")"),r=o.replace(/[\\u2212\\u2013\\u2014]/g,"-");r.includes("-")&&(a=!0),r=r.replace(/[^0-9.]/g,"");let i=r?Number(r):0;return isNaN(i)?0:a?-i:i}function M(t,o,a){return k(t,o,0,a,"root")}function k(t,o,a,r,i){let e=o[a],n=a===o.length-1,l=new Map;for(let s of t){let f=s.data?s.data[e]:null;l.has(f)||l.set(f,[]),l.get(f).push(s)}let d=[];for(let[s,f]of l.entries()){let u=\`\${i}-\${e}-\${s}\`,c={id:u,type:"group",level:a,groupField:e,groupKey:s,data:{[e]:s},children:[]},G=j(f),N=U(G,r);Object.assign(c.data,N),n?(f.forEach(b=>b.level=a+1),c.children=f):c.children=k(f,o,a+1,r,u),d.push(c)}return d}function U(t,o){let a={};for(let r of Object.keys(o)){let i=o[r],e=0;if(i==="count")e=t.length;else{let n=!0,l=0,d=0;for(let s of t){let f=s.data?s.data[r]:null,u=A(f);i==="sum"?e=Number(e)+u:i==="min"?n?e=u:e=Math.min(e,u):i==="max"?n?e=u:e=Math.max(e,u):i==="avg"&&(l=Number(l)+u,d++),n=!1}i==="avg"&&(e=d>0?l/d:0)}a[r]=e}return a}function F(t,o){t.sort((a,r)=>{for(let i of o){let{field:e,direction:n}=i,l=a.data?a.data[e]:null,d=r.data?r.data[e]:null;if(l===d)continue;let s=l>d?1:-1;return n==="asc"?s:-s}return 0});for(let a of t)a.type==="group"&&a.children&&F(a.children,o)}function \$(t,o){let a=Object.keys(o);return a.length===0?t:t.filter(r=>{for(let i of a){let e=o[i];if(!e||!e.condition1)continue;let n=r.data?r.data[i]:null,l=T(n,e.condition1);if(e.condition2&&e.condition2.type){let d=T(n,e.condition2);if(!(e.operator==="OR"?l||d:l&&d))return!1}else if(!l)return!1}return!0})}function T(t,o){let{type:a,value:r,valueTo:i}=o;if(a==="blank")return t==null||t==="";if(a==="notBlank")return t!=null&&t!=="";if(r==null||r==="")return!0;let e=String(t??"").toLowerCase(),n=String(r).toLowerCase();switch(a){case"contains":return e.includes(n);case"notContains":return!e.includes(n);case"equals":return!isNaN(Number(t))&&!isNaN(Number(r))?Number(t)===Number(r):e===n;case"notEqual":return!isNaN(Number(t))&&!isNaN(Number(r))?Number(t)!==Number(r):e!==n;case"startsWith":return e.startsWith(n);case"endsWith":return e.endsWith(n);case"greaterThan":return Number(t)>Number(r);case"greaterThanOrEqual":return Number(t)>=Number(r);case"lessThan":return Number(t)<Number(r);case"lessThanOrEqual":return Number(t)<=Number(r);case"inRange":if(i==null||i==="")return!0;let l=Number(t);return l>=Number(r)&&l<=Number(i);default:return!0}}function D(t,o,a){let r={};o.forEach(d=>r[d]=new Set),t.forEach(d=>{o.forEach(s=>{let f=d.data[s];f!=null&&r[s].add(f)})});let i={},e=[],n=o[0];return Array.from(r[n]).sort().forEach(d=>{Object.keys(a).forEach(s=>{let f=a[s],u=\`pivot_\${n}_\${d}_\${s}\`;i[u]=f,e.push({field:u,headerName:\`\${d} (\${s})\`,pivotValue:d,originalField:s,isPivotColumn:!0}),t.forEach(c=>{String(c.data[n])===String(d)?c.data[u]=c.data[s]:c.data[u]=null})})}),{virtualAggrs:i,dynamicColumns:e}}})();
|
|
18
18
|
`;
|
|
19
19
|
|
|
20
20
|
class InfiniteScrollDataSource extends DataSource {
|
|
@@ -3005,14 +3005,55 @@ class UltraGridComponent {
|
|
|
3005
3005
|
_workerInitialized = false;
|
|
3006
3006
|
headerElement;
|
|
3007
3007
|
viewport;
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
serverDataSource;
|
|
3011
|
-
config = {
|
|
3008
|
+
_columns = [];
|
|
3009
|
+
_config = {
|
|
3012
3010
|
rowHeight: 40,
|
|
3013
3011
|
theme: 'ag-theme-alpine',
|
|
3014
3012
|
sideBarDefaultTab: null
|
|
3015
3013
|
};
|
|
3014
|
+
set columns(val) {
|
|
3015
|
+
this._columns = this.processColumnsWithDefaults(val);
|
|
3016
|
+
this.hasCheckboxSelection = this._columns.some(c => c.checkboxSelection);
|
|
3017
|
+
this.hasHeaderCheckboxSelection = this._columns.some(c => c.headerCheckboxSelection);
|
|
3018
|
+
this.updateVisibleColumns();
|
|
3019
|
+
}
|
|
3020
|
+
get columns() {
|
|
3021
|
+
return this._columns;
|
|
3022
|
+
}
|
|
3023
|
+
rowData = [];
|
|
3024
|
+
serverDataSource;
|
|
3025
|
+
set config(val) {
|
|
3026
|
+
this._config = val || {};
|
|
3027
|
+
if (this._columns && this._columns.length > 0) {
|
|
3028
|
+
this._columns = this.processColumnsWithDefaults(this._columns);
|
|
3029
|
+
this.updateVisibleColumns();
|
|
3030
|
+
}
|
|
3031
|
+
}
|
|
3032
|
+
get config() {
|
|
3033
|
+
return this._config;
|
|
3034
|
+
}
|
|
3035
|
+
processColumnsWithDefaults(cols) {
|
|
3036
|
+
if (!cols)
|
|
3037
|
+
return [];
|
|
3038
|
+
return cols.map(c => {
|
|
3039
|
+
const merged = { ...c };
|
|
3040
|
+
// 1. Merge defaultColDef if present
|
|
3041
|
+
const defaultDef = this._config && this._config.defaultColDef;
|
|
3042
|
+
if (defaultDef) {
|
|
3043
|
+
Object.keys(defaultDef).forEach(key => {
|
|
3044
|
+
const k = key;
|
|
3045
|
+
if (merged[k] === undefined) {
|
|
3046
|
+
merged[k] = defaultDef[k];
|
|
3047
|
+
}
|
|
3048
|
+
});
|
|
3049
|
+
}
|
|
3050
|
+
// 2. Merge defaultNumberFormat if present
|
|
3051
|
+
if (merged.numberFormat === undefined && this._config && this._config.defaultNumberFormat) {
|
|
3052
|
+
merged.numberFormat = this._config.defaultNumberFormat;
|
|
3053
|
+
}
|
|
3054
|
+
return merged;
|
|
3055
|
+
});
|
|
3056
|
+
}
|
|
3016
3057
|
pagination = false;
|
|
3017
3058
|
pageSize = 100;
|
|
3018
3059
|
rowClicked = new EventEmitter();
|
|
@@ -3364,7 +3405,7 @@ class UltraGridComponent {
|
|
|
3364
3405
|
}
|
|
3365
3406
|
}
|
|
3366
3407
|
}
|
|
3367
|
-
if (hasFilter || hasSort || this.groupModel.length > 0 || this.conditionFilters.size > 0) {
|
|
3408
|
+
if (hasFilter || hasSort || this.groupModel.length > 0 || this.conditionFilters.size > 0 || (this.config.pivotMode && this.pivotColumns.length > 0)) {
|
|
3368
3409
|
if (this.sortingWorker) {
|
|
3369
3410
|
this.sortingWorker.postMessage({
|
|
3370
3411
|
action: 'EXECUTE',
|