json-renderers-build-table 1.17.3 → 1.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +197 -14
  2. package/package.json +3 -3
  3. package/src/index.js +2 -2
  4. package/src/v17/index.js +5 -5
  5. package/src/v17/simple/index.js +55 -55
  6. package/src/v17/spec.json +85 -85
  7. package/src/v18/bodyOnly/base.json +1 -0
  8. package/src/v18/bodyOnly/index.js +36 -0
  9. package/src/{v14/buildSpec/config/rowInstructions.json → v18/bodyOnly/instructions/double.json} +4 -6
  10. package/src/{v16 → v18/bodyOnly}/spec.json +86 -65
  11. package/src/{v16/common/writePath.js → v18/bodyOnly/writePath/index.js} +47 -55
  12. package/src/v18/headerOnly/index.js +42 -0
  13. package/src/{v15/simpleTable/config/instructions.json → v18/headerOnly/instructions/single.json} +8 -8
  14. package/src/{v14 → v18/headerOnly}/spec.json +22 -1
  15. package/src/{v14/buildSpec → v18/headerOnly}/writePath/index.js +8 -16
  16. package/src/v18/index.js +5 -0
  17. package/src/v18/simple/index.js +57 -0
  18. package/src/{v15/buildSpec/config/rowInstructions.json → v18/simple/instructions/double.json} +4 -5
  19. package/src/{v16/simpleTable/config/instructions.json → v18/simple/instructions/single.json} +38 -38
  20. package/src/{v15 → v18/simple}/spec.json +22 -1
  21. package/src/{v15/buildSpec → v18/simple}/writePath/index.js +8 -16
  22. package/src/v18/spec.json +86 -0
  23. package/src/v19/bodyOnly/base.json +1 -0
  24. package/src/v19/bodyOnly/index.js +36 -0
  25. package/src/v19/bodyOnly/instructions/double.json +18 -0
  26. package/src/v19/bodyOnly/spec.json +86 -0
  27. package/src/v19/headerOnly/index.js +42 -0
  28. package/src/{v15/buildSpec/config/columnInstructions.json → v19/headerOnly/instructions/single.json} +2 -20
  29. package/src/v19/headerOnly/spec.json +86 -0
  30. package/src/v19/index.js +5 -0
  31. package/src/v19/simple/index.js +57 -0
  32. package/src/{v15/tableHeadless/config/instructions.json → v19/simple/instructions/double.json} +4 -5
  33. package/src/{v14/buildSpec/config/columnInstructions.json → v19/simple/instructions/single.json} +2 -20
  34. package/src/v19/simple/spec.json +86 -0
  35. package/src/v19/spec.json +86 -0
  36. package/src/{v15/common/writePath.js → v19/writePath/index.js} +8 -16
  37. package/src/v14/buildSpec/config/optionsInstructions.json +0 -82
  38. package/src/v14/buildSpec/config/serialInstructions.json +0 -82
  39. package/src/v14/buildSpec/index.js +0 -147
  40. package/src/v14/index.js +0 -56
  41. package/src/v14/register/index.js +0 -30
  42. package/src/v14/register/meta.js +0 -6
  43. package/src/v15/buildSpec/config/optionsInstructions.json +0 -82
  44. package/src/v15/buildSpec/config/serialInstructions.json +0 -82
  45. package/src/v15/buildSpec/index.js +0 -147
  46. package/src/v15/common/runner.js +0 -33
  47. package/src/v15/index.js +0 -85
  48. package/src/v15/register/index.js +0 -30
  49. package/src/v15/register/meta.js +0 -6
  50. package/src/v15/simpleTable/config/base.json +0 -31
  51. package/src/v15/simpleTable/index.js +0 -58
  52. package/src/v15/tableFullGrid/config/instructions.json +0 -234
  53. package/src/v15/tableFullGrid/index.js +0 -76
  54. package/src/v15/tableHeadless/config/base.json +0 -15
  55. package/src/v15/tableHeadless/index.js +0 -58
  56. package/src/v15/tableWithButtonCell/config/base.json +0 -38
  57. package/src/v15/tableWithButtonCell/config/instructions.json +0 -56
  58. package/src/v15/tableWithButtonCell/index.js +0 -57
  59. package/src/v15/tableWithFooter/config/instructions.json +0 -74
  60. package/src/v15/tableWithFooter/index.js +0 -58
  61. package/src/v15/tableWithOptions/config/base.json +0 -38
  62. package/src/v15/tableWithOptions/config/instructions.json +0 -116
  63. package/src/v15/tableWithOptions/index.js +0 -66
  64. package/src/v15/tableWithSerial/config/base.json +0 -38
  65. package/src/v15/tableWithSerial/config/instructions.json +0 -116
  66. package/src/v15/tableWithSerial/index.js +0 -66
  67. package/src/v15/tableWithWidths/config/base.json +0 -38
  68. package/src/v15/tableWithWidths/config/instructions.json +0 -56
  69. package/src/v15/tableWithWidths/index.js +0 -58
  70. package/src/v16/common/runner.js +0 -33
  71. package/src/v16/index.js +0 -7
  72. package/src/v16/simpleTable/config/base.json +0 -31
  73. package/src/v16/simpleTable/index.js +0 -58
  74. package/src/v16/tableWithOptions/config/base.json +0 -38
  75. package/src/v16/tableWithOptions/config/instructions.json +0 -116
  76. package/src/v16/tableWithOptions/index.js +0 -66
  77. package/src/v16/tableWithSerial/config/base.json +0 -38
  78. package/src/v16/tableWithSerial/config/instructions.json +0 -116
  79. package/src/v16/tableWithSerial/index.js +0 -66
  80. /package/src/{v14/buildSpec/config → v18/headerOnly}/base.json +0 -0
  81. /package/src/{v15/buildSpec/config → v18/simple}/base.json +0 -0
  82. /package/src/{v15/tableFullGrid/config → v19/headerOnly}/base.json +0 -0
  83. /package/src/{v15/tableWithFooter/config → v19/simple}/base.json +0 -0
@@ -0,0 +1,86 @@
1
+ {
2
+ "buildBodyTr": {
3
+ "tagName": "tr",
4
+ "attributes": {
5
+ "class": "align-middle"
6
+ },
7
+ "children": []
8
+ },
9
+ "buildColGroup": {
10
+ "tagName": "col",
11
+ "attributes": {
12
+ "width": "${width}"
13
+ }
14
+ },
15
+ "buildHeader": {
16
+ "tagName": "th",
17
+ "textContent": "${columnName}",
18
+ "attributes": {
19
+ "class": "py-3 px-3 fw-semibold text-uppercase small"
20
+ }
21
+ },
22
+ "buildFooter": {
23
+ "tagName": "td",
24
+ "children": [
25
+ {
26
+ "tagName": "input",
27
+ "attributes": {
28
+ "type": "text",
29
+ "placeholder": "enter ${columnName}",
30
+ "name": "${columnName}",
31
+ "class": "form-control"
32
+ }
33
+ }
34
+ ]
35
+ },
36
+ "buildBodyCell": {
37
+ "tagName": "td",
38
+ "textContent": "${rowValue}",
39
+ "attributes": {
40
+ "class": "py-3 px-3 text-secondary"
41
+ }
42
+ },
43
+ "button": {
44
+ "tagName": "button",
45
+ "textContent": "${columnName}",
46
+ "attributes": {
47
+ "class": "btn btn-primary btn-sm"
48
+ }
49
+ },
50
+ "buttonCell": {
51
+ "tagName": "td",
52
+ "attributes": {
53
+ "class": "py-2 px-3 text-center"
54
+ },
55
+ "children": [
56
+ {
57
+ "tagName": "button",
58
+ "textContent": "${agg:count}",
59
+ "attributes": {
60
+ "class": "btn btn-primary btn-sm"
61
+ }
62
+ }
63
+ ]
64
+ },
65
+ "buildOption": {
66
+ "tagName": "option",
67
+ "textContent": "${rowValue}",
68
+ "attributes": {
69
+ "value": "${rowValue}"
70
+ }
71
+ },
72
+ "buildSelect": {
73
+ "tagName": "select",
74
+ "attributes": {
75
+ "id": "LedgerName"
76
+ },
77
+ "children": []
78
+ },
79
+ "buildDataList": {
80
+ "tagName": "datalist",
81
+ "attributes": {
82
+ "data-name": "${columnName}"
83
+ },
84
+ "children": []
85
+ }
86
+ }
@@ -0,0 +1 @@
1
+ { "children": [] }
@@ -0,0 +1,36 @@
1
+ import twoDimensional from "json-transformer-funcs-two-dimensions";
2
+
3
+ import spec from "../spec.json" with { type: "json" };
4
+ import base from "./base.json" with { type: "json" };
5
+
6
+ import twoDimensionalInstructions from "./instructions/double.json" with { type: "json" };
7
+
8
+ import writePath from "../writePath/index.js";
9
+
10
+ // 1. Keep the input, table structure, and templates together as the build context.
11
+ const registry = { data: {}, base, spec };
12
+ const functions = {
13
+ twoDimensional
14
+ };
15
+
16
+ const runInstructions2 = instructions => {
17
+ instructions.forEach(instruction => {
18
+ const result = functions[instruction.func](
19
+ registry.data.columns,
20
+ registry.data.data,
21
+ spec
22
+ );
23
+ writePath(registry, instruction.destinationPath, result);
24
+ });
25
+ };
26
+
27
+ // 3. Complete the table and return its JSON specification.
28
+ const startFunc = data => {
29
+ registry.data = data;
30
+
31
+ runInstructions2(twoDimensionalInstructions);
32
+
33
+ return base.children;
34
+ };
35
+
36
+ export default startFunc;
@@ -0,0 +1,18 @@
1
+ [
2
+ {
3
+ "narration": "Build the table body rows for the table using the configured columns and data.",
4
+ "destinationPath": {
5
+ "fileName": "base",
6
+ "filePath": [
7
+ "children"
8
+ ]
9
+ },
10
+ "sourcePath": {
11
+ "fileName": "data",
12
+ "filePath": [
13
+ "columns"
14
+ ]
15
+ },
16
+ "func": "twoDimensional"
17
+ }
18
+ ]
@@ -0,0 +1,86 @@
1
+ {
2
+ "buildBodyTr": {
3
+ "tagName": "tr",
4
+ "attributes": {
5
+ "class": "align-middle"
6
+ },
7
+ "children": []
8
+ },
9
+ "buildColGroup": {
10
+ "tagName": "col",
11
+ "attributes": {
12
+ "width": "${width}"
13
+ }
14
+ },
15
+ "buildHeader": {
16
+ "tagName": "th",
17
+ "textContent": "${columnName}",
18
+ "attributes": {
19
+ "class": "py-3 px-3 fw-semibold text-uppercase small"
20
+ }
21
+ },
22
+ "buildFooter": {
23
+ "tagName": "td",
24
+ "children": [
25
+ {
26
+ "tagName": "input",
27
+ "attributes": {
28
+ "type": "text",
29
+ "placeholder": "enter ${columnName}",
30
+ "name": "${columnName}",
31
+ "class": "form-control"
32
+ }
33
+ }
34
+ ]
35
+ },
36
+ "buildBodyCell": {
37
+ "tagName": "td",
38
+ "textContent": "${rowValue}",
39
+ "attributes": {
40
+ "class": "py-3 px-3 text-secondary"
41
+ }
42
+ },
43
+ "button": {
44
+ "tagName": "button",
45
+ "textContent": "${columnName}",
46
+ "attributes": {
47
+ "class": "btn btn-primary btn-sm"
48
+ }
49
+ },
50
+ "buttonCell": {
51
+ "tagName": "td",
52
+ "attributes": {
53
+ "class": "py-2 px-3 text-center"
54
+ },
55
+ "children": [
56
+ {
57
+ "tagName": "button",
58
+ "textContent": "${agg:count}",
59
+ "attributes": {
60
+ "class": "btn btn-primary btn-sm"
61
+ }
62
+ }
63
+ ]
64
+ },
65
+ "buildOption": {
66
+ "tagName": "option",
67
+ "textContent": "${rowValue}",
68
+ "attributes": {
69
+ "value": "${rowValue}"
70
+ }
71
+ },
72
+ "buildSelect": {
73
+ "tagName": "select",
74
+ "attributes": {
75
+ "id": "LedgerName"
76
+ },
77
+ "children": []
78
+ },
79
+ "buildDataList": {
80
+ "tagName": "datalist",
81
+ "attributes": {
82
+ "data-name": "${columnName}"
83
+ },
84
+ "children": []
85
+ }
86
+ }
@@ -0,0 +1,42 @@
1
+ import fromCollection from "json-transformer-funcs-one-dimension";
2
+
3
+ import { resolvePath } from "json-transformer-funcs";
4
+
5
+ import spec from "../spec.json" with { type: "json" };
6
+ import base from "./base.json" with { type: "json" };
7
+
8
+ import singleInstructions from "./instructions/single.json" with { type: "json" };
9
+
10
+ import writePath from "../writePath/index.js";
11
+
12
+ // 1. Keep the input, table structure, and templates together as the build context.
13
+ const registry = { data: {}, base, spec };
14
+ const functions = {
15
+ fromCollection
16
+ };
17
+
18
+ // 2. Apply each instruction: read source, build result, write destination.
19
+ const runInstructions = instructions => {
20
+ instructions.forEach(instruction => {
21
+ const source = resolvePath(registry, instruction.sourcePath);
22
+
23
+ if (source) {
24
+ const result = functions[instruction.func](source, spec[instruction.templateKey]);
25
+ writePath(registry, instruction.destinationPath, result);
26
+ } else {
27
+ console.log(" !instruction : ", instruction);
28
+ console.log(" !source : ", source);
29
+ };
30
+ });
31
+ };
32
+
33
+ // 3. Complete the table and return its JSON specification.
34
+ const startFunc = data => {
35
+ registry.data = data;
36
+
37
+ runInstructions(singleInstructions);
38
+
39
+ return base;
40
+ };
41
+
42
+ export default startFunc;
@@ -18,7 +18,7 @@
18
18
  "func": "fromCollection"
19
19
  },
20
20
  {
21
- "narration": "Build the table header row from the column metadata.",
21
+ "narration": "Build the header row for the table using the configured columns.",
22
22
  "destinationPath": {
23
23
  "fileName": "base",
24
24
  "dataRole": "table-header-row",
@@ -34,23 +34,5 @@
34
34
  },
35
35
  "templateKey": "buildHeader",
36
36
  "func": "fromCollection"
37
- },
38
- {
39
- "narration": "Build the table footer row from the column metadata.",
40
- "destinationPath": {
41
- "fileName": "base",
42
- "dataRole": "table-footer-row",
43
- "filePath": [
44
- "children"
45
- ]
46
- },
47
- "sourcePath": {
48
- "fileName": "data",
49
- "filePath": [
50
- "columns"
51
- ]
52
- },
53
- "templateKey": "buildFooter",
54
- "func": "fromCollection"
55
37
  }
56
- ]
38
+ ]
@@ -0,0 +1,86 @@
1
+ {
2
+ "buildBodyTr": {
3
+ "tagName": "tr",
4
+ "attributes": {
5
+ "class": "align-middle"
6
+ },
7
+ "children": []
8
+ },
9
+ "buildColGroup": {
10
+ "tagName": "col",
11
+ "attributes": {
12
+ "width": "${width}"
13
+ }
14
+ },
15
+ "buildHeader": {
16
+ "tagName": "th",
17
+ "textContent": "${columnName}",
18
+ "attributes": {
19
+ "class": "py-3 px-3 fw-semibold text-uppercase small"
20
+ }
21
+ },
22
+ "buildFooter": {
23
+ "tagName": "td",
24
+ "children": [
25
+ {
26
+ "tagName": "input",
27
+ "attributes": {
28
+ "type": "text",
29
+ "placeholder": "enter ${columnName}",
30
+ "name": "${columnName}",
31
+ "class": "form-control"
32
+ }
33
+ }
34
+ ]
35
+ },
36
+ "buildBodyCell": {
37
+ "tagName": "td",
38
+ "textContent": "${rowValue}",
39
+ "attributes": {
40
+ "class": "py-3 px-3 text-secondary"
41
+ }
42
+ },
43
+ "button": {
44
+ "tagName": "button",
45
+ "textContent": "${columnName}",
46
+ "attributes": {
47
+ "class": "btn btn-primary btn-sm"
48
+ }
49
+ },
50
+ "buttonCell": {
51
+ "tagName": "td",
52
+ "attributes": {
53
+ "class": "py-2 px-3 text-center"
54
+ },
55
+ "children": [
56
+ {
57
+ "tagName": "button",
58
+ "textContent": "${agg:count}",
59
+ "attributes": {
60
+ "class": "btn btn-primary btn-sm"
61
+ }
62
+ }
63
+ ]
64
+ },
65
+ "buildOption": {
66
+ "tagName": "option",
67
+ "textContent": "${rowValue}",
68
+ "attributes": {
69
+ "value": "${rowValue}"
70
+ }
71
+ },
72
+ "buildSelect": {
73
+ "tagName": "select",
74
+ "attributes": {
75
+ "id": "LedgerName"
76
+ },
77
+ "children": []
78
+ },
79
+ "buildDataList": {
80
+ "tagName": "datalist",
81
+ "attributes": {
82
+ "data-name": "${columnName}"
83
+ },
84
+ "children": []
85
+ }
86
+ }
@@ -0,0 +1,5 @@
1
+ import simple from "./simple/index.js";
2
+ import headerOnly from "./headerOnly/index.js";
3
+ import bodyOnly from "./bodyOnly/index.js";
4
+
5
+ export { simple, headerOnly, bodyOnly };
@@ -0,0 +1,57 @@
1
+ import fromCollection from "json-transformer-funcs-one-dimension";
2
+ import twoDimensional from "json-transformer-funcs-two-dimensions";
3
+
4
+ import { resolvePath } from "json-transformer-funcs";
5
+
6
+ import spec from "../spec.json" with { type: "json" };
7
+ import base from "./base.json" with { type: "json" };
8
+
9
+ import singleInstructions from "./instructions/single.json" with { type: "json" };
10
+ import twoDimensionalInstructions from "./instructions/double.json" with { type: "json" };
11
+
12
+ import writePath from "../writePath/index.js";
13
+
14
+ // 1. Keep the input, table structure, and templates together as the build context.
15
+ const registry = { data: {}, base, spec };
16
+ const functions = {
17
+ fromCollection, twoDimensional
18
+ };
19
+
20
+ // 2. Apply each instruction: read source, build result, write destination.
21
+ const runInstructions = instructions => {
22
+ instructions.forEach(instruction => {
23
+ const source = resolvePath(registry, instruction.sourcePath);
24
+
25
+ if (source) {
26
+ const result = functions[instruction.func](source, spec[instruction.templateKey]);
27
+ writePath(registry, instruction.destinationPath, result);
28
+ } else {
29
+ console.log(" !instruction : ", instruction);
30
+ console.log(" !source : ", source);
31
+ };
32
+ });
33
+ };
34
+
35
+ const runInstructions2 = instructions => {
36
+ instructions.forEach(instruction => {
37
+ const result = functions[instruction.func](
38
+ registry.data.columns,
39
+ registry.data.data,
40
+ spec
41
+ );
42
+ writePath(registry, instruction.destinationPath, result);
43
+ });
44
+ };
45
+
46
+ // 3. Complete the table and return its JSON specification.
47
+ const startFunc = data => {
48
+ registry.data = data;
49
+ console.log("registry : ", registry);
50
+
51
+ runInstructions(singleInstructions);
52
+ runInstructions2(twoDimensionalInstructions);
53
+
54
+ return base;
55
+ };
56
+
57
+ export default startFunc;
@@ -1,6 +1,6 @@
1
1
  [
2
2
  {
3
- "narration": "Create one table row for each record and place it into the table body container.",
3
+ "narration": "Build the table body rows for the table using the configured columns and data.",
4
4
  "destinationPath": {
5
5
  "fileName": "base",
6
6
  "dataRole": "table-body",
@@ -11,10 +11,9 @@
11
11
  "sourcePath": {
12
12
  "fileName": "data",
13
13
  "filePath": [
14
- "data"
14
+ "columns"
15
15
  ]
16
16
  },
17
- "templateKey": "buildBodyTr",
18
- "func": "fromCollection"
17
+ "func": "twoDimensional"
19
18
  }
20
- ]
19
+ ]
@@ -18,7 +18,7 @@
18
18
  "func": "fromCollection"
19
19
  },
20
20
  {
21
- "narration": "Build the table header row from the column metadata.",
21
+ "narration": "Build the header row for the table using the configured columns.",
22
22
  "destinationPath": {
23
23
  "fileName": "base",
24
24
  "dataRole": "table-header-row",
@@ -34,23 +34,5 @@
34
34
  },
35
35
  "templateKey": "buildHeader",
36
36
  "func": "fromCollection"
37
- },
38
- {
39
- "narration": "Build the table footer row from the column metadata.",
40
- "destinationPath": {
41
- "fileName": "base",
42
- "dataRole": "table-footer-row",
43
- "filePath": [
44
- "children"
45
- ]
46
- },
47
- "sourcePath": {
48
- "fileName": "data",
49
- "filePath": [
50
- "columns"
51
- ]
52
- },
53
- "templateKey": "buildFooter",
54
- "func": "fromCollection"
55
37
  }
56
- ]
38
+ ]
@@ -0,0 +1,86 @@
1
+ {
2
+ "buildBodyTr": {
3
+ "tagName": "tr",
4
+ "attributes": {
5
+ "class": "align-middle"
6
+ },
7
+ "children": []
8
+ },
9
+ "buildColGroup": {
10
+ "tagName": "col",
11
+ "attributes": {
12
+ "width": "${width}"
13
+ }
14
+ },
15
+ "buildHeader": {
16
+ "tagName": "th",
17
+ "textContent": "${columnName}",
18
+ "attributes": {
19
+ "class": "py-3 px-3 fw-semibold text-uppercase small"
20
+ }
21
+ },
22
+ "buildFooter": {
23
+ "tagName": "td",
24
+ "children": [
25
+ {
26
+ "tagName": "input",
27
+ "attributes": {
28
+ "type": "text",
29
+ "placeholder": "enter ${columnName}",
30
+ "name": "${columnName}",
31
+ "class": "form-control"
32
+ }
33
+ }
34
+ ]
35
+ },
36
+ "buildBodyCell": {
37
+ "tagName": "td",
38
+ "textContent": "${rowValue}",
39
+ "attributes": {
40
+ "class": "py-3 px-3 text-secondary"
41
+ }
42
+ },
43
+ "button": {
44
+ "tagName": "button",
45
+ "textContent": "${columnName}",
46
+ "attributes": {
47
+ "class": "btn btn-primary btn-sm"
48
+ }
49
+ },
50
+ "buttonCell": {
51
+ "tagName": "td",
52
+ "attributes": {
53
+ "class": "py-2 px-3 text-center"
54
+ },
55
+ "children": [
56
+ {
57
+ "tagName": "button",
58
+ "textContent": "${agg:count}",
59
+ "attributes": {
60
+ "class": "btn btn-primary btn-sm"
61
+ }
62
+ }
63
+ ]
64
+ },
65
+ "buildOption": {
66
+ "tagName": "option",
67
+ "textContent": "${rowValue}",
68
+ "attributes": {
69
+ "value": "${rowValue}"
70
+ }
71
+ },
72
+ "buildSelect": {
73
+ "tagName": "select",
74
+ "attributes": {
75
+ "id": "LedgerName"
76
+ },
77
+ "children": []
78
+ },
79
+ "buildDataList": {
80
+ "tagName": "datalist",
81
+ "attributes": {
82
+ "data-name": "${columnName}"
83
+ },
84
+ "children": []
85
+ }
86
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "buildBodyTr": {
3
+ "tagName": "tr",
4
+ "attributes": {
5
+ "class": "align-middle"
6
+ },
7
+ "children": []
8
+ },
9
+ "buildColGroup": {
10
+ "tagName": "col",
11
+ "attributes": {
12
+ "width": "${width}"
13
+ }
14
+ },
15
+ "buildHeader": {
16
+ "tagName": "th",
17
+ "textContent": "${columnName}",
18
+ "attributes": {
19
+ "class": "py-3 px-3 fw-semibold text-uppercase small"
20
+ }
21
+ },
22
+ "buildFooter": {
23
+ "tagName": "td",
24
+ "children": [
25
+ {
26
+ "tagName": "input",
27
+ "attributes": {
28
+ "type": "text",
29
+ "placeholder": "enter ${columnName}",
30
+ "name": "${columnName}",
31
+ "class": "form-control"
32
+ }
33
+ }
34
+ ]
35
+ },
36
+ "buildBodyCell": {
37
+ "tagName": "td",
38
+ "textContent": "${rowValue}",
39
+ "attributes": {
40
+ "class": "py-3 px-3 text-secondary"
41
+ }
42
+ },
43
+ "button": {
44
+ "tagName": "button",
45
+ "textContent": "${columnName}",
46
+ "attributes": {
47
+ "class": "btn btn-primary btn-sm"
48
+ }
49
+ },
50
+ "buttonCell": {
51
+ "tagName": "td",
52
+ "attributes": {
53
+ "class": "py-2 px-3 text-center"
54
+ },
55
+ "children": [
56
+ {
57
+ "tagName": "button",
58
+ "textContent": "${agg:count}",
59
+ "attributes": {
60
+ "class": "btn btn-primary btn-sm"
61
+ }
62
+ }
63
+ ]
64
+ },
65
+ "buildOption": {
66
+ "tagName": "option",
67
+ "textContent": "${rowValue}",
68
+ "attributes": {
69
+ "value": "${rowValue}"
70
+ }
71
+ },
72
+ "buildSelect": {
73
+ "tagName": "select",
74
+ "attributes": {
75
+ "id": "LedgerName"
76
+ },
77
+ "children": []
78
+ },
79
+ "buildDataList": {
80
+ "tagName": "datalist",
81
+ "attributes": {
82
+ "data-name": "${columnName}"
83
+ },
84
+ "children": []
85
+ }
86
+ }