@cdmx/wappler_ag_grid 0.0.1 → 0.0.3

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/README.md CHANGED
@@ -7,3 +7,7 @@ This Custom Module provides the below features:
7
7
  5. Export to CSV button
8
8
  6. Sticky header options
9
9
  7. Custom Styles (Column Data)
10
+ 8. Custom Header Names
11
+ 9. Custom min and max widths
12
+ 10. Timezone setting for Date fields
13
+ 11. Data Manipulation
@@ -165,6 +165,62 @@
165
165
  "defaultValue": 20,
166
166
  "help": "Number of rows to show per page"
167
167
  },
168
+ {
169
+ "name": "timezone",
170
+ "attribute": "timezone",
171
+ "title": "Timezone",
172
+ "type": "droplist",
173
+ "defaultValue": '',
174
+ "values": [
175
+ {title: 'Local', value: ''},
176
+ {title: 'UTC - Coordinated Universal Time', value: 'UTC'},
177
+ {title: 'GMT - Greenwich Mean Time', value: 'GMT'},
178
+ {title: 'PST - Pacific Standard Time', value: 'PST'},
179
+ {title: 'PDT - Pacific Daylight Time', value: 'PDT'},
180
+ {title: 'EST - Eastern Standard Time', value: 'EST'},
181
+ {title: 'EDT - Eastern Daylight Time', value: 'EDT'},
182
+ {title: 'CST - Central Standard Time', value: 'CST'},
183
+ {title: 'CDT - Central Daylight Time', value: 'CDT'},
184
+ {title: 'MST - Mountain Standard Time', value: 'MST'},
185
+ {title: 'MDT - Mountain Daylight Time', value: 'MDT'},
186
+ {title: 'HST - Hawaii Standard Time', value: 'HST'},
187
+ {title: 'AKST - Alaska Standard Time', value: 'AKST'},
188
+ {title: 'AKDT - Alaska Daylight Time', value: 'AKDT'},
189
+ {title: 'AEST - Australian Eastern Standard Time', value: 'AEST'},
190
+ {title: 'AEDT - Australian Eastern Daylight Time', value: 'AEDT'},
191
+ {title: 'ACST - Australian Central Standard Time', value: 'ACST'},
192
+ {title: 'ACDT - Australian Central Daylight Time', value: 'ACDT'},
193
+ {title: 'AWST - Australian Western Standard Time', value: 'AWST'},
194
+ {title: 'BST - British Summer Time', value: 'BST'},
195
+ {title: 'IST - Indian Standard Time', value: 'IST'},
196
+ {title: 'JST - Japan Standard Time', value: 'JST'},
197
+ {title: 'CET - Central European Time', value: 'CET'},
198
+ {title: 'CEST - Central European Summer Time', value: 'CEST'},
199
+ {title: 'EET - Eastern European Time', value: 'EET'},
200
+ {title: 'EEST - Eastern European Summer Time', value: 'EEST'},
201
+ {title: 'MSK - Moscow Standard Time', value: 'MSK'},
202
+ {title: 'IST - Israel Standard Time', value: 'IST'},
203
+ {title: 'NZST - New Zealand Standard Time', value: 'NZST'},
204
+ {title: 'NZDT - New Zealand Daylight Time', value: 'NZDT'},
205
+ {title: 'NST - Newfoundland Standard Time', value: 'NST'},
206
+ {title: 'NDT - Newfoundland Daylight Time', value: 'NDT'},
207
+ {title: 'AST - Atlantic Standard Time', value: 'AST'},
208
+ {title: 'ADT - Atlantic Daylight Time', value: 'ADT'},
209
+ {title: 'GMT+1 - Central European Standard Time', value: 'GMT+1'},
210
+ {title: 'GMT+2 - Eastern European Standard Time', value: 'GMT+2'},
211
+ {title: 'GMT+3 - Moscow Standard Time', value: 'GMT+3'},
212
+ {title: 'GMT+4 - Gulf Standard Time', value: 'GMT+4'},
213
+ {title: 'GMT+5 - Pakistan Standard Time', value: 'GMT+5'},
214
+ {title: 'GMT+6 - Central Asia Standard Time', value: 'GMT+6'},
215
+ {title: 'GMT+7 - Southeast Asia Standard Time', value: 'GMT+7'},
216
+ {title: 'GMT+8 - China Standard Time', value: 'GMT+8'},
217
+ {title: 'GMT+9 - Japan Standard Time', value: 'GMT+9'},
218
+ {title: 'GMT+10 - Australian Eastern Standard Time', value: 'GMT+10'},
219
+ {title: 'GMT+11 - Solomon Islands Time', value: 'GMT+11'},
220
+ {title: 'GMT+12 - New Zealand Standard Time', value: 'GMT+12'}
221
+ ],
222
+ "help": "Timezone for Date Fields"
223
+ },
168
224
  {
169
225
  "name": "fixedHeader",
170
226
  "attribute": "fixedHeader",
@@ -386,7 +442,213 @@
386
442
  ]
387
443
  }
388
444
  ]
445
+ },
446
+ {
447
+ "group": "📒 Data Manipulation",
448
+ "variables": [
449
+ {
450
+ "name": "data_changes",
451
+ "attributeStartsWith": "dmx-bind",
452
+ "attribute": "data_changes",
453
+ "title": "Configure Fields",
454
+ "type": "boolean",
455
+ "display": "fieldset",
456
+ "show": [
457
+ "dataChanges"
458
+ ],
459
+ "noChangeOnHide": true,
460
+ "groupEnabler": true,
461
+ "help": "Add custom values for the field data based on value, ex: field: status, value: false, new_value: Disabled"
462
+ "children": [
463
+ {
464
+ "name": "help",
465
+ "type": "static",
466
+ "help": "Add custom values for the field data based on value, ex: field: status, value: false, new_value: Disabled"
467
+ },
468
+ {
469
+ "name": "dataChanges",
470
+ "attribute": "dmx-bind:data_changes",
471
+ "title": "Fields Data",
472
+ "type": "grid",
473
+ "dataBindings": true,
474
+ "key": "field",
475
+ "jsonFormat": true,
476
+ "encloseBT": true,
477
+ "jsonBT": true,
478
+ "initDisplay": "none",
479
+ "columns": [
480
+ {
481
+ "field": "field",
482
+ "caption": "Field",
483
+ "size": "10%",
484
+ "editable": {
485
+ "type": "text"
486
+ }
487
+ },
488
+ {
489
+ "field": "value",
490
+ "caption": "Value",
491
+ "size": "10%",
492
+ "editable": {
493
+ "type": "text"
494
+ }
495
+ },
496
+ {
497
+ field: "new_value",
498
+ caption: "New Value",
499
+ size: "10%",
500
+ editable: {
501
+ type: "text"
502
+ }
503
+ }
504
+ ],
505
+ "newRecord": {
506
+ "name": "",
507
+ "value": "",
508
+ "field": "",
509
+ "new_value": ""
510
+ }
511
+ }
512
+ ]
513
+ }
514
+ ]
515
+ },
516
+ {
517
+ "group": "📒 Custom Headers",
518
+ "variables": [
519
+ {
520
+ "name": "cnames",
521
+ "attributeStartsWith": "dmx-bind",
522
+ "attribute": "cnames",
523
+ "title": "Configure Header Names",
524
+ "type": "boolean",
525
+ "display": "fieldset",
526
+ "show": [
527
+ "listCustomNames"
528
+ ],
529
+ "noChangeOnHide": true,
530
+ "groupEnabler": true,
531
+ "help": "Add custom headers to column"
532
+ "children": [
533
+ {
534
+ "name": "help",
535
+ "type": "static",
536
+ "help": "Add custom headers to column"
537
+ },
538
+ {
539
+ "name": "listCustomNames",
540
+ "attribute": "dmx-bind:cnames",
541
+ "title": "Header Names",
542
+ "type": "grid",
543
+ "dataBindings": true,
544
+ "key": "field",
545
+ "jsonFormat": true,
546
+ "encloseBT": true,
547
+ "jsonBT": true,
548
+ "initDisplay": "none",
549
+ "columns": [
550
+ {
551
+ "field": "field",
552
+ "caption": "Field",
553
+ "size": "20%",
554
+ "editable": {
555
+ "type": "text"
556
+ }
557
+ },
558
+ {
559
+ field: "custom_name",
560
+ caption: "Name",
561
+ size: "20%",
562
+ editable: {
563
+ type: "text"
564
+ },
565
+ help: "Identity, Name,etc"
566
+ }
567
+ ],
568
+ "newRecord": {
569
+ "name": "",
570
+ "value": "",
571
+ "field": "",
572
+ "custom_name": ""
573
+ }
574
+ }
575
+ ]
576
+ }
577
+ ]
578
+ },
579
+ {
580
+ "group": "📒 Custom Widths",
581
+ "variables": [
582
+ {
583
+ "name": "cwidths",
584
+ "attributeStartsWith": "dmx-bind",
585
+ "attribute": "cwidths",
586
+ "title": "Configure Custom Widths",
587
+ "type": "boolean",
588
+ "display": "fieldset",
589
+ "show": [
590
+ "listCustomWidths",
591
+ ],
592
+ "noChangeOnHide": true,
593
+ "groupEnabler": true,
594
+ "help": "Add custom widths for the field"
595
+ "children": [
596
+ {
597
+ "name": "help",
598
+ "type": "static",
599
+ "help": "Add custom widths for the field"
600
+ },
601
+ {
602
+ "name": "listCustomWidths",
603
+ "attribute": "dmx-bind:cwidths",
604
+ "title": "Column Name",
605
+ "type": "grid",
606
+ "dataBindings": true,
607
+ "key": "field",
608
+ "jsonFormat": true,
609
+ "encloseBT": true,
610
+ "jsonBT": true,
611
+ "initDisplay": "none",
612
+ "columns": [
613
+ {
614
+ "field": "field",
615
+ "caption": "Field",
616
+ "size": "20%",
617
+ "editable": {
618
+ "type": "text"
619
+ }
620
+ },
621
+ {
622
+ field: "min_width",
623
+ caption: "Min Width",
624
+ size: "20%",
625
+ editable: {
626
+ type: "text"
627
+ },
628
+ help: "Min Width",
629
+ },
630
+ {
631
+ field: "max_width",
632
+ caption: "Max Width",
633
+ size: "20%",
634
+ editable: {
635
+ type: "text"
636
+ },
637
+ help: "Max Width",
638
+ }
639
+ ],
640
+ "newRecord": {
641
+ "name": "",
642
+ "value": "",
643
+ "field": "",
644
+ "custom_name": ""
645
+ }
646
+ }
647
+ ]
648
+ }
649
+ ]
389
650
  }
651
+
390
652
  ],
391
653
  "actionsScheme": [],
392
654
  "children": [],
package/dmx-ag-grid.js CHANGED
@@ -4,6 +4,9 @@ dmx.Component('ag-grid', {
4
4
  rowData: [],
5
5
  column_defs: [],
6
6
  cstyles: null,
7
+ cnames: null,
8
+ cwidths: null,
9
+ data_changes: null,
7
10
  gridInstance: null,
8
11
  domLayout: 'autoHeight',
9
12
  enableCellTextSelection: true,
@@ -34,71 +37,31 @@ dmx.Component('ag-grid', {
34
37
  fixedHeader: false,
35
38
  topbarClass: null,
36
39
  fixedHeaderOffset: 100,
37
- fixedTopOffset: 80
40
+ fixedTopOffset: 80,
41
+ fixedHorizonatalScroll: false,
42
+ timezone: null
38
43
  },
39
44
 
40
45
  attributes: {
41
- id: {
42
- default: null
43
- },
44
- rowData: {
45
- type: Array,
46
- default: []
47
- },
48
- column_defs: {
49
- type: Array,
50
- default: []
51
- },
52
- cstyles: {
53
- type: Object,
54
- default: {}
55
- },
56
- data: {
57
- type: Array,
58
- default: []
59
- },
60
- domLayout: {
61
- default: 'autoHeight'
62
- },
63
- enableCellTextSelection: {
64
- type: Boolean,
65
- default: true
66
- },
67
- rowSelection: {
68
- type: Boolean,
69
- default: false
70
- },
71
- suppressRowDeselection: {
72
- type: Boolean,
73
- default: false
74
- },
75
- pagination: {
76
- type: Boolean,
77
- default: true
78
- },
79
- paginationPageSize: {
80
- default: 20
81
- },
82
- rowHeight: {
83
- type: Number,
84
- default: null
85
- },
86
- headerHeight: {
87
- type: Number,
88
- default: null
89
- },
90
- suppressRowClickSelection: {
91
- type: Boolean,
92
- default: false
93
- },
94
- suppressMenuHide: {
95
- type: Boolean,
96
- default: false
97
- },
98
- suppressMovableColumns: {
99
- type: Boolean,
100
- default: false
101
- },
46
+ id: { default: null },
47
+ rowData: { type: Array, default: [] },
48
+ column_defs: { type: Array, default: [] },
49
+ cstyles: { type: Object, default: {} },
50
+ cnames: { type: Object, default: {} },
51
+ cwidths: { type: Object, default: {} },
52
+ data_changes: { type: Object, default: {} },
53
+ data: { type: Array, default: [] },
54
+ domLayout: { default: 'autoHeight' },
55
+ enableCellTextSelection: { type: Boolean, default: true },
56
+ rowSelection: { type: Boolean, default: false },
57
+ suppressRowDeselection: { type: Boolean, default: false },
58
+ pagination: { type: Boolean, default: true },
59
+ paginationPageSize: { default: 20 },
60
+ rowHeight: { type: Number, default: null },
61
+ headerHeight: { type: Number, default: null },
62
+ suppressRowClickSelection: { type: Boolean, default: false },
63
+ suppressMenuHide: { type: Boolean, default: false },
64
+ suppressMovableColumns: { type: Boolean, default: false },
102
65
  enableCellExpressions: {
103
66
  type: Boolean,
104
67
  default: false
@@ -173,7 +136,9 @@ dmx.Component('ag-grid', {
173
136
  fixedTopOffset: {
174
137
  type: Number,
175
138
  default: 80
176
- }
139
+ },
140
+ fixedHorizonatalScroll: { type: Boolean, default: false },
141
+ timezone: {type: Text, default: '' }
177
142
  },
178
143
 
179
144
  methods: {
@@ -190,7 +155,9 @@ dmx.Component('ag-grid', {
190
155
  const fixedHeader = this.props.fixedHeader;
191
156
  const fixedHeaderOffset = this.props.fixedHeaderOffset;
192
157
  const topbarClass = this.props.topbarClass;
193
- const fixedTopOffset = this.props.fixedTopOffset
158
+ const fixedTopOffset = this.props.fixedTopOffset;
159
+ const timezone = this.props.timezone || false;
160
+ const dataChanges = this.props.data_changes;
194
161
  let columnDefs = [];
195
162
  let exportToCSV = this.props.exportToCSV;
196
163
  if (!rowData || rowData.length === 0) {
@@ -238,9 +205,9 @@ dmx.Component('ag-grid', {
238
205
  hour: 'numeric',
239
206
  minute: 'numeric',
240
207
  hour12: true,
241
- timeZone: 'UTC'
208
+ timeZone: timezone
242
209
  };
243
- return date.toLocaleString('en-GB', options).toUpperCase();
210
+ return date.toLocaleString('en-IN', options).toUpperCase();
244
211
  } else {
245
212
  const options = {
246
213
  day: '2-digit',
@@ -250,7 +217,7 @@ dmx.Component('ag-grid', {
250
217
  minute: 'numeric',
251
218
  hour12: true
252
219
  };
253
- return date.toLocaleString('en-GB', options).toUpperCase();
220
+ return date.toLocaleString('en-IN', options).toUpperCase();
254
221
  }
255
222
  }
256
223
  }
@@ -280,7 +247,16 @@ dmx.Component('ag-grid', {
280
247
  return 'text';
281
248
  }
282
249
  }
283
- console.log(this.props.cstyles)
250
+ function getValueGetter(key, dataChanges) {
251
+ return function(params) {
252
+ let value = params.data[key];
253
+ if (dataChanges.hasOwnProperty(key)) {
254
+ const change = dataChanges[key];
255
+ value = change.new_value;
256
+ }
257
+ return value;
258
+ };
259
+ }
284
260
  if (Array.isArray(this.props.column_defs) && this.props.column_defs.length > 0) {
285
261
  columnDefs = this.props.column_defs;
286
262
  } else {
@@ -314,7 +290,7 @@ dmx.Component('ag-grid', {
314
290
  }
315
291
  } else if (dataType === 'date') {
316
292
  filter = 'agDateColumnFilter';
317
- valueFormatter = (params) => formatTime(params, false);
293
+ valueFormatter = (params) => formatTime(params, timezone);
318
294
  } else {
319
295
  filter = 'agTextColumnFilter';
320
296
  valueFormatter = blankOrNullValueFormatter;
@@ -329,6 +305,9 @@ dmx.Component('ag-grid', {
329
305
  filterValueGetter = eval(`(params) => ${definition.filterGetter}`);
330
306
  }
331
307
  }
308
+ else {
309
+ valueGetter = getValueGetter(key, dataChanges);
310
+ }
332
311
  function extractConditionParts(condition) {
333
312
  const parts = condition.match(/(.+?)(===|==|!=|>|<|>=|<=)(.+)/);
334
313
  if (parts) {
@@ -373,14 +352,28 @@ const cstyles = this.props.cstyles
373
352
  }
374
353
  return null;
375
354
  }
355
+ cnames = this.props.cnames
356
+ cwidths = this.props.cwidths
357
+ if (cnames.hasOwnProperty(key)) {
358
+ console.log(key)
359
+ const cname = cnames[key]
360
+ headerName = cname ? cname.custom_name : humanize(key);
361
+ }
362
+ else {
363
+ headerName = humanize(key);
364
+ }
376
365
  return {
377
- headerName: humanize(key),
366
+ headerName: headerName,
378
367
  field: key,
379
368
  filter: filter,
380
369
  valueFormatter: valueFormatter,
381
370
  valueGetter: valueGetter,
382
371
  filterValueGetter: filterValueGetter,
383
- cellStyle: applyCellStyle
372
+ cellStyle: applyCellStyle,
373
+ ...(cwidths.hasOwnProperty(key) && {
374
+ minWidth: parseInt(cwidths[key].min_width),
375
+ maxWidth: parseInt(cwidths[key].max_width),
376
+ }),
384
377
  };
385
378
  });
386
379
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdmx/wappler_ag_grid",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "description": "App Connect module for AG Grid Table Generation",
6
6
  "license": "MIT",