@genesislcap/pbc-reporting-ui 1.0.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 (210) hide show
  1. package/README.md +47 -0
  2. package/dist/dts/assets/images/index.d.ts +11 -0
  3. package/dist/dts/assets/images/index.d.ts.map +1 -0
  4. package/dist/dts/components/components.d.ts +5 -0
  5. package/dist/dts/components/components.d.ts.map +1 -0
  6. package/dist/dts/components/create-edit/create-edit.d.ts +17 -0
  7. package/dist/dts/components/create-edit/create-edit.d.ts.map +1 -0
  8. package/dist/dts/components/create-edit/create-edit.styles.d.ts +2 -0
  9. package/dist/dts/components/create-edit/create-edit.styles.d.ts.map +1 -0
  10. package/dist/dts/components/create-edit/create-edit.template.d.ts +3 -0
  11. package/dist/dts/components/create-edit/create-edit.template.d.ts.map +1 -0
  12. package/dist/dts/components/create-edit/index.d.ts +4 -0
  13. package/dist/dts/components/create-edit/index.d.ts.map +1 -0
  14. package/dist/dts/components/index.d.ts +2 -0
  15. package/dist/dts/components/index.d.ts.map +1 -0
  16. package/dist/dts/components/list/columns.d.ts +14 -0
  17. package/dist/dts/components/list/columns.d.ts.map +1 -0
  18. package/dist/dts/components/list/index.d.ts +4 -0
  19. package/dist/dts/components/list/index.d.ts.map +1 -0
  20. package/dist/dts/components/list/list.d.ts +19 -0
  21. package/dist/dts/components/list/list.d.ts.map +1 -0
  22. package/dist/dts/components/list/list.styles.d.ts +2 -0
  23. package/dist/dts/components/list/list.styles.d.ts.map +1 -0
  24. package/dist/dts/components/list/list.template.d.ts +3 -0
  25. package/dist/dts/components/list/list.template.d.ts.map +1 -0
  26. package/dist/dts/components/preview/columns.d.ts +15 -0
  27. package/dist/dts/components/preview/columns.d.ts.map +1 -0
  28. package/dist/dts/components/preview/index.d.ts +4 -0
  29. package/dist/dts/components/preview/index.d.ts.map +1 -0
  30. package/dist/dts/components/preview/preview.d.ts +28 -0
  31. package/dist/dts/components/preview/preview.d.ts.map +1 -0
  32. package/dist/dts/components/preview/preview.styles.d.ts +2 -0
  33. package/dist/dts/components/preview/preview.styles.d.ts.map +1 -0
  34. package/dist/dts/components/preview/preview.template.d.ts +3 -0
  35. package/dist/dts/components/preview/preview.template.d.ts.map +1 -0
  36. package/dist/dts/components/select-fields/columns.d.ts +65 -0
  37. package/dist/dts/components/select-fields/columns.d.ts.map +1 -0
  38. package/dist/dts/components/select-fields/data.d.ts +49 -0
  39. package/dist/dts/components/select-fields/data.d.ts.map +1 -0
  40. package/dist/dts/components/select-fields/index.d.ts +3 -0
  41. package/dist/dts/components/select-fields/index.d.ts.map +1 -0
  42. package/dist/dts/components/select-fields/select-fields.d.ts +57 -0
  43. package/dist/dts/components/select-fields/select-fields.d.ts.map +1 -0
  44. package/dist/dts/components/select-fields/select-fields.styles.d.ts +2 -0
  45. package/dist/dts/components/select-fields/select-fields.styles.d.ts.map +1 -0
  46. package/dist/dts/components/select-fields/select-fields.template.d.ts +4 -0
  47. package/dist/dts/components/select-fields/select-fields.template.d.ts.map +1 -0
  48. package/dist/dts/components/select-filters/columns.d.ts +88 -0
  49. package/dist/dts/components/select-filters/columns.d.ts.map +1 -0
  50. package/dist/dts/components/select-filters/index.d.ts +4 -0
  51. package/dist/dts/components/select-filters/index.d.ts.map +1 -0
  52. package/dist/dts/components/select-filters/select-filters.d.ts +46 -0
  53. package/dist/dts/components/select-filters/select-filters.d.ts.map +1 -0
  54. package/dist/dts/components/select-filters/select-filters.styles.d.ts +2 -0
  55. package/dist/dts/components/select-filters/select-filters.styles.d.ts.map +1 -0
  56. package/dist/dts/components/select-filters/select-filters.template.d.ts +4 -0
  57. package/dist/dts/components/select-filters/select-filters.template.d.ts.map +1 -0
  58. package/dist/dts/components/wizard/debug.d.ts +3 -0
  59. package/dist/dts/components/wizard/debug.d.ts.map +1 -0
  60. package/dist/dts/components/wizard/index.d.ts +3 -0
  61. package/dist/dts/components/wizard/index.d.ts.map +1 -0
  62. package/dist/dts/components/wizard/steps/filters.d.ts +3 -0
  63. package/dist/dts/components/wizard/steps/filters.d.ts.map +1 -0
  64. package/dist/dts/components/wizard/steps/index.d.ts +5 -0
  65. package/dist/dts/components/wizard/steps/index.d.ts.map +1 -0
  66. package/dist/dts/components/wizard/steps/name.d.ts +4 -0
  67. package/dist/dts/components/wizard/steps/name.d.ts.map +1 -0
  68. package/dist/dts/components/wizard/steps/run.d.ts +3 -0
  69. package/dist/dts/components/wizard/steps/run.d.ts.map +1 -0
  70. package/dist/dts/components/wizard/steps/select.d.ts +3 -0
  71. package/dist/dts/components/wizard/steps/select.d.ts.map +1 -0
  72. package/dist/dts/components/wizard/wizard.d.ts +83 -0
  73. package/dist/dts/components/wizard/wizard.d.ts.map +1 -0
  74. package/dist/dts/components/wizard/wizard.styles.d.ts +2 -0
  75. package/dist/dts/components/wizard/wizard.styles.d.ts.map +1 -0
  76. package/dist/dts/components/wizard/wizard.template.d.ts +4 -0
  77. package/dist/dts/components/wizard/wizard.template.d.ts.map +1 -0
  78. package/dist/dts/components/wizard/wizard.types.d.ts +41 -0
  79. package/dist/dts/components/wizard/wizard.types.d.ts.map +1 -0
  80. package/dist/dts/constants/grid-config.d.ts +17 -0
  81. package/dist/dts/constants/grid-config.d.ts.map +1 -0
  82. package/dist/dts/index.d.ts +3 -0
  83. package/dist/dts/index.d.ts.map +1 -0
  84. package/dist/dts/index.federated.d.ts +1 -0
  85. package/dist/dts/index.federated.d.ts.map +1 -0
  86. package/dist/dts/layouts/default.d.ts +3 -0
  87. package/dist/dts/layouts/default.d.ts.map +1 -0
  88. package/dist/dts/layouts/index.d.ts +3 -0
  89. package/dist/dts/layouts/index.d.ts.map +1 -0
  90. package/dist/dts/layouts/two-pane-horizontal.d.ts +6 -0
  91. package/dist/dts/layouts/two-pane-horizontal.d.ts.map +1 -0
  92. package/dist/dts/main/index.d.ts +3 -0
  93. package/dist/dts/main/index.d.ts.map +1 -0
  94. package/dist/dts/main/main.d.ts +18 -0
  95. package/dist/dts/main/main.d.ts.map +1 -0
  96. package/dist/dts/main/main.styles.d.ts +2 -0
  97. package/dist/dts/main/main.styles.d.ts.map +1 -0
  98. package/dist/dts/main/main.template.d.ts +6 -0
  99. package/dist/dts/main/main.template.d.ts.map +1 -0
  100. package/dist/dts/routes/config.d.ts +25 -0
  101. package/dist/dts/routes/config.d.ts.map +1 -0
  102. package/dist/dts/routes/index.d.ts +2 -0
  103. package/dist/dts/routes/index.d.ts.map +1 -0
  104. package/dist/dts/routes/not-found/not-found.d.ts +4 -0
  105. package/dist/dts/routes/not-found/not-found.d.ts.map +1 -0
  106. package/dist/dts/routes/protected/protected.d.ts +8 -0
  107. package/dist/dts/routes/protected/protected.d.ts.map +1 -0
  108. package/dist/dts/routes/protected/protected.styles.d.ts +2 -0
  109. package/dist/dts/routes/protected/protected.styles.d.ts.map +1 -0
  110. package/dist/dts/routes/protected/protected.template.d.ts +3 -0
  111. package/dist/dts/routes/protected/protected.template.d.ts.map +1 -0
  112. package/dist/dts/routes/reporting-home/reporting-home-styles.d.ts +2 -0
  113. package/dist/dts/routes/reporting-home/reporting-home-styles.d.ts.map +1 -0
  114. package/dist/dts/routes/reporting-home/reporting-home-template.d.ts +4 -0
  115. package/dist/dts/routes/reporting-home/reporting-home-template.d.ts.map +1 -0
  116. package/dist/dts/routes/reporting-home/reporting-home.d.ts +26 -0
  117. package/dist/dts/routes/reporting-home/reporting-home.d.ts.map +1 -0
  118. package/dist/dts/routes/reporting-home/types.d.ts +13 -0
  119. package/dist/dts/routes/reporting-home/types.d.ts.map +1 -0
  120. package/dist/dts/styles/colors.d.ts +17 -0
  121. package/dist/dts/styles/colors.d.ts.map +1 -0
  122. package/dist/dts/styles/helpers.d.ts +5 -0
  123. package/dist/dts/styles/helpers.d.ts.map +1 -0
  124. package/dist/dts/styles/index.d.ts +5 -0
  125. package/dist/dts/styles/index.d.ts.map +1 -0
  126. package/dist/dts/styles/normalize.d.ts +5 -0
  127. package/dist/dts/styles/normalize.d.ts.map +1 -0
  128. package/dist/dts/styles/styles.d.ts +4 -0
  129. package/dist/dts/styles/styles.d.ts.map +1 -0
  130. package/dist/dts/utils/filterObjectArray.d.ts +12 -0
  131. package/dist/dts/utils/filterObjectArray.d.ts.map +1 -0
  132. package/dist/dts/utils/getFiltersByType.d.ts +12 -0
  133. package/dist/dts/utils/getFiltersByType.d.ts.map +1 -0
  134. package/dist/dts/utils/getSelectedFields.d.ts +5 -0
  135. package/dist/dts/utils/getSelectedFields.d.ts.map +1 -0
  136. package/dist/dts/utils/index.d.ts +5 -0
  137. package/dist/dts/utils/index.d.ts.map +1 -0
  138. package/dist/dts/utils/logger.d.ts +2 -0
  139. package/dist/dts/utils/logger.d.ts.map +1 -0
  140. package/dist/esm/assets/images/index.js +60 -0
  141. package/dist/esm/components/components.js +51 -0
  142. package/dist/esm/components/create-edit/create-edit.js +70 -0
  143. package/dist/esm/components/create-edit/create-edit.styles.js +18 -0
  144. package/dist/esm/components/create-edit/create-edit.template.js +13 -0
  145. package/dist/esm/components/create-edit/index.js +3 -0
  146. package/dist/esm/components/index.js +1 -0
  147. package/dist/esm/components/list/columns.js +105 -0
  148. package/dist/esm/components/list/index.js +3 -0
  149. package/dist/esm/components/list/list.js +127 -0
  150. package/dist/esm/components/list/list.styles.js +28 -0
  151. package/dist/esm/components/list/list.template.js +25 -0
  152. package/dist/esm/components/preview/columns.js +21 -0
  153. package/dist/esm/components/preview/index.js +3 -0
  154. package/dist/esm/components/preview/preview.js +111 -0
  155. package/dist/esm/components/preview/preview.styles.js +21 -0
  156. package/dist/esm/components/preview/preview.template.js +30 -0
  157. package/dist/esm/components/select-fields/columns.js +51 -0
  158. package/dist/esm/components/select-fields/data.js +218 -0
  159. package/dist/esm/components/select-fields/index.js +3 -0
  160. package/dist/esm/components/select-fields/select-fields.js +197 -0
  161. package/dist/esm/components/select-fields/select-fields.styles.js +21 -0
  162. package/dist/esm/components/select-fields/select-fields.template.js +49 -0
  163. package/dist/esm/components/select-filters/columns.js +43 -0
  164. package/dist/esm/components/select-filters/index.js +3 -0
  165. package/dist/esm/components/select-filters/select-filters.js +192 -0
  166. package/dist/esm/components/select-filters/select-filters.styles.js +20 -0
  167. package/dist/esm/components/select-filters/select-filters.template.js +51 -0
  168. package/dist/esm/components/wizard/debug.js +34 -0
  169. package/dist/esm/components/wizard/index.js +2 -0
  170. package/dist/esm/components/wizard/steps/filters.js +9 -0
  171. package/dist/esm/components/wizard/steps/index.js +4 -0
  172. package/dist/esm/components/wizard/steps/name.js +58 -0
  173. package/dist/esm/components/wizard/steps/run.js +11 -0
  174. package/dist/esm/components/wizard/steps/select.js +11 -0
  175. package/dist/esm/components/wizard/wizard.js +363 -0
  176. package/dist/esm/components/wizard/wizard.styles.js +193 -0
  177. package/dist/esm/components/wizard/wizard.template.js +113 -0
  178. package/dist/esm/components/wizard/wizard.types.js +7 -0
  179. package/dist/esm/constants/grid-config.js +19 -0
  180. package/dist/esm/index.federated.js +1 -0
  181. package/dist/esm/index.js +2 -0
  182. package/dist/esm/layouts/default.js +27 -0
  183. package/dist/esm/layouts/index.js +2 -0
  184. package/dist/esm/layouts/two-pane-horizontal.js +86 -0
  185. package/dist/esm/main/index.js +2 -0
  186. package/dist/esm/main/main.js +80 -0
  187. package/dist/esm/main/main.styles.js +15 -0
  188. package/dist/esm/main/main.template.js +12 -0
  189. package/dist/esm/routes/config.js +84 -0
  190. package/dist/esm/routes/index.js +1 -0
  191. package/dist/esm/routes/not-found/not-found.js +29 -0
  192. package/dist/esm/routes/protected/protected.js +32 -0
  193. package/dist/esm/routes/protected/protected.styles.js +18 -0
  194. package/dist/esm/routes/protected/protected.template.js +7 -0
  195. package/dist/esm/routes/reporting-home/reporting-home-styles.js +74 -0
  196. package/dist/esm/routes/reporting-home/reporting-home-template.js +85 -0
  197. package/dist/esm/routes/reporting-home/reporting-home.js +103 -0
  198. package/dist/esm/routes/reporting-home/types.js +7 -0
  199. package/dist/esm/styles/colors.js +17 -0
  200. package/dist/esm/styles/helpers.js +179 -0
  201. package/dist/esm/styles/index.js +4 -0
  202. package/dist/esm/styles/normalize.js +13 -0
  203. package/dist/esm/styles/styles.js +22 -0
  204. package/dist/esm/utils/filterObjectArray.js +13 -0
  205. package/dist/esm/utils/getFiltersByType.js +62 -0
  206. package/dist/esm/utils/getSelectedFields.js +13 -0
  207. package/dist/esm/utils/index.js +4 -0
  208. package/dist/esm/utils/logger.js +2 -0
  209. package/index.html +26 -0
  210. package/package.json +79 -0
@@ -0,0 +1,49 @@
1
+ import { html, ref } from '@microsoft/fast-element';
2
+ const availableFieldsTemplate = html `
3
+ <section class="available-fields" slot="left-section">
4
+ <h3 class="mt-1 section-title dark-grey">Select fields</h3>
5
+ <zero-card class="card">
6
+ <div class="flex space-between">
7
+ <h5 class="card-title">All fields</h5>
8
+ </div>
9
+
10
+ <div class="w-full h-90pc">
11
+ <zero-grid-pro
12
+ ${ref('allFieldsGrid')}
13
+ rowSelection="multiple"
14
+ data-test-id="select-fields-available"
15
+ ></zero-grid-pro>
16
+ </div>
17
+ </zero-card>
18
+ </section>
19
+ `;
20
+ const selectedFieldsTemplate = html `
21
+ <section class="selected-fields" slot="right-section">
22
+ <div class="spacer-3"></div>
23
+ <zero-card class="card">
24
+ <div class="flex space-between">
25
+ <h5 class="card-title">Selected fields</h5>
26
+ <zero-button
27
+ @click=${(x) => x.removeSelectedFields()}
28
+ ?disabled=${(x) => !x.fieldsToRemove.length}
29
+ appearance="primary-gradient"
30
+ >
31
+ Remove fields
32
+ </zero-button>
33
+ </div>
34
+ <div class="w-full h-90pc">
35
+ <zero-grid-pro
36
+ ${ref('selectedFieldsGrid')}
37
+ rowSelection="multiple"
38
+ data-test-id="select-fields-selected"
39
+ ></zero-grid-pro>
40
+ </div>
41
+ </zero-card>
42
+ </section>
43
+ `;
44
+ // TODO: review classes from merge conflict
45
+ export const SelectFieldsTemplate = html `
46
+ <layout-two-pane-horizontal splitRatio="right-main">
47
+ ${availableFieldsTemplate} ${selectedFieldsTemplate}
48
+ </layout-two-pane-horizontal>
49
+ `;
@@ -0,0 +1,43 @@
1
+ import { defaultCellConfig, defaultRowConfig } from '../../constants/grid-config';
2
+ /**
3
+ * Field selection grid config
4
+ */
5
+ export const AVAILABLE_FIELDS_CONFIG = {
6
+ colDefs: [
7
+ {
8
+ checkboxSelection: true,
9
+ filter: false,
10
+ headerCheckboxSelection: true,
11
+ sortable: false,
12
+ width: 60,
13
+ },
14
+ {
15
+ field: 'displayName',
16
+ headerName: 'Field Name',
17
+ },
18
+ ],
19
+ gridOptions: Object.assign(Object.assign({}, defaultRowConfig), { defaultColDef: {
20
+ filter: false,
21
+ floatingFilter: false,
22
+ sortable: false,
23
+ suppressMenu: false,
24
+ resizable: false,
25
+ }, debug: true }),
26
+ };
27
+ /**
28
+ * Columns main dummy data
29
+ */
30
+ export const SELECTED_FILTERS_CONFIG = {
31
+ colDefs: [
32
+ {
33
+ checkboxSelection: true,
34
+ headerCheckboxSelection: true,
35
+ width: 60,
36
+ },
37
+ {
38
+ field: 'displayName',
39
+ headerName: 'Field Name',
40
+ },
41
+ ],
42
+ gridOptions: Object.assign(Object.assign({}, defaultRowConfig), { defaultColDef: Object.assign(Object.assign({}, defaultCellConfig), { filter: false, resizable: false, sortable: false, suppressMenu: true }), suppressContextMenu: true, suppressRowTransform: true, debug: true }),
43
+ };
@@ -0,0 +1,3 @@
1
+ export * from './select-filters';
2
+ export * from './select-filters.template';
3
+ export * from './select-filters.styles';
@@ -0,0 +1,192 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Connect } from '@genesislcap/foundation-comms';
3
+ import { ZeroAgSelectRenderer, ZeroAgTextRenderer } from '@genesislcap/foundation-zero-grid-pro';
4
+ import { customElement, FASTElement, observable } from '@microsoft/fast-element';
5
+ import { filterObjectArray, getFiltersByFieldType } from '../../utils';
6
+ import { AVAILABLE_FIELDS_CONFIG, SELECTED_FILTERS_CONFIG } from './columns';
7
+ import { SelectFiltersStyles } from './select-filters.styles';
8
+ import { SelectFiltersTemplate } from './select-filters.template';
9
+ let SelectFilters = class SelectFilters extends FASTElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.filtersToRemove = [];
13
+ this.selectedFields = [];
14
+ this.selectedFilters = [];
15
+ this.filterGridReady = false;
16
+ // TODO: extract to util
17
+ this.makeSureFieldValueIsNotLost = (array) => {
18
+ return array.map((field) => {
19
+ var _a;
20
+ const matchingField = (_a = this.selectedFilters) === null || _a === void 0 ? void 0 : _a.find((f) => (f === null || f === void 0 ? void 0 : f.name) === (field === null || field === void 0 ? void 0 : field.name));
21
+ return Object.assign(Object.assign({}, field), matchingField);
22
+ });
23
+ };
24
+ this.onFilterSelect = (value, params) => {
25
+ const newFields = this.selectedFilters.map((field) => {
26
+ if (field.name === params.node.data.name) {
27
+ field.filter.conditional = value;
28
+ }
29
+ return field;
30
+ });
31
+ this.setSelectedFilters(newFields);
32
+ };
33
+ this.onFilterValueChange = (value, params) => {
34
+ const newFields = this.selectedFilters.map((field) => {
35
+ if (field.name === params.node.data.name) {
36
+ field.filter.value = value;
37
+ }
38
+ return field;
39
+ });
40
+ this.setSelectedFilters(newFields);
41
+ };
42
+ /**
43
+ * Remove fields from selected filters grid and deselect them from the available fields grid
44
+ */
45
+ this.removeSelectedFilters = () => {
46
+ // filter fields from selected list
47
+ const filters = filterObjectArray('name', this.selectedFilters, this.filtersToRemove);
48
+ this.setSelectedFilters(filters);
49
+ // reset removal array
50
+ this.filtersToRemove = [];
51
+ // deselect available fieldgrid
52
+ this.availableFieldsGrid.gridApi.deselectAll();
53
+ // reselect
54
+ this.availableFieldsGrid.gridApi.forEachNode((node) => {
55
+ filters.find((field) => field.name === node.data.name) && node.setSelected(true);
56
+ });
57
+ };
58
+ }
59
+ connectedCallback() {
60
+ super.connectedCallback();
61
+ this.loadAvailableFieldsGrid();
62
+ this.loadSelectedFiltersGrid();
63
+ }
64
+ selectedFiltersChanged() {
65
+ if (this.filterGridReady) {
66
+ this.selectedFiltersGrid.gridApi.setRowData(this.selectedFilters);
67
+ this.selectedFiltersGrid.gridApi.refreshCells();
68
+ }
69
+ }
70
+ /**
71
+ * Update selected filters on parent component
72
+ */
73
+ setSelectedFilters(filters) {
74
+ this.$emit('setSelectedFilters', { filters });
75
+ }
76
+ /**
77
+ * Get a simplified / normalized version of the filters
78
+ * e.g. ['REPORT_ID', 'REPORT_NAME']
79
+ * @returns Array of string
80
+ */
81
+ getNormalizedFilters() {
82
+ var _a;
83
+ return (_a = this.selectedFilters) === null || _a === void 0 ? void 0 : _a.map(({ FIELD_NAME }) => FIELD_NAME);
84
+ }
85
+ /**
86
+ * Loads availableFieldsGrid with data from the field selection step
87
+ */
88
+ loadAvailableFieldsGrid() {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ this.availableFieldsGrid.gridOptions = Object.assign(Object.assign({}, AVAILABLE_FIELDS_CONFIG.gridOptions), { columnDefs: AVAILABLE_FIELDS_CONFIG.colDefs, rowData: [...this.selectedFields], onGridReady: () => {
91
+ window.addEventListener('resize', () => {
92
+ setTimeout(() => {
93
+ var _a, _b;
94
+ (_b = (_a = this.availableFieldsGrid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.sizeColumnsToFit();
95
+ });
96
+ });
97
+ }, onFirstDataRendered: () => {
98
+ var _a, _b;
99
+ (_b = (_a = this.availableFieldsGrid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.sizeColumnsToFit();
100
+ this.selectDefaultFilters();
101
+ }, onSelectionChanged: () => {
102
+ this.setSelectedFilters([
103
+ ...this.makeSureFieldValueIsNotLost(this.availableFieldsGrid.gridApi.getSelectedRows()),
104
+ ]);
105
+ } });
106
+ });
107
+ }
108
+ /**
109
+ * Loads the selectedFiltersGrid
110
+ */
111
+ loadSelectedFiltersGrid() {
112
+ this.selectedFiltersGrid.gridOptions = Object.assign(Object.assign({}, SELECTED_FILTERS_CONFIG.gridOptions), { columnDefs: [
113
+ ...SELECTED_FILTERS_CONFIG.colDefs,
114
+ {
115
+ field: 'TYPE',
116
+ headerName: 'Filter',
117
+ maxWidth: 170,
118
+ cellStyle: {
119
+ overflow: 'visible',
120
+ paddingLeft: 0,
121
+ paddingRight: 0,
122
+ },
123
+ cellRenderer: ZeroAgSelectRenderer,
124
+ cellRendererParams: {
125
+ accessor: 'filter.conditional',
126
+ defaultValue: 'Select filter',
127
+ onSelect: this.onFilterSelect,
128
+ options: (data) => getFiltersByFieldType(data.type),
129
+ },
130
+ },
131
+ {
132
+ cellRenderer: ZeroAgTextRenderer,
133
+ cellRendererParams: {
134
+ onChange: this.onFilterValueChange,
135
+ accessor: 'filter.value',
136
+ },
137
+ field: 'filter.value',
138
+ headerName: 'Value',
139
+ },
140
+ ], rowData: [...this.filtersToRemove, ...this.selectedFilters], onGridReady: () => {
141
+ this.filterGridReady = true;
142
+ window.addEventListener('resize', () => {
143
+ setTimeout(() => {
144
+ var _a, _b;
145
+ (_b = (_a = this.selectedFiltersGrid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.sizeColumnsToFit();
146
+ });
147
+ });
148
+ }, onFirstDataRendered: () => {
149
+ var _a, _b;
150
+ (_b = (_a = this.selectedFiltersGrid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.sizeColumnsToFit();
151
+ }, onSelectionChanged: () => {
152
+ this.filtersToRemove = this.selectedFiltersGrid.gridApi.getSelectedRows();
153
+ } });
154
+ }
155
+ /**
156
+ * Select default filters
157
+ */
158
+ selectDefaultFilters() {
159
+ if (this.selectedFilters.length) {
160
+ this.availableFieldsGrid.gridApi.forEachNode((node) => {
161
+ this.selectedFilters.find((field) => field.name === node.data.name) &&
162
+ node.setSelected(true);
163
+ });
164
+ this.setSelectedFilters([
165
+ ...this.makeSureFieldValueIsNotLost(this.availableFieldsGrid.gridApi.getSelectedRows()),
166
+ ]);
167
+ }
168
+ }
169
+ };
170
+ __decorate([
171
+ Connect
172
+ ], SelectFilters.prototype, "connect", void 0);
173
+ __decorate([
174
+ observable
175
+ ], SelectFilters.prototype, "filtersToRemove", void 0);
176
+ __decorate([
177
+ observable
178
+ ], SelectFilters.prototype, "selectedFields", void 0);
179
+ __decorate([
180
+ observable
181
+ ], SelectFilters.prototype, "selectedFilters", void 0);
182
+ __decorate([
183
+ observable
184
+ ], SelectFilters.prototype, "filterGridReady", void 0);
185
+ SelectFilters = __decorate([
186
+ customElement({
187
+ name: 'reporting-select-filters',
188
+ template: SelectFiltersTemplate,
189
+ styles: SelectFiltersStyles,
190
+ })
191
+ ], SelectFilters);
192
+ export { SelectFilters };
@@ -0,0 +1,20 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { helperStyles, normalizeStyles } from '../../styles';
3
+ export const SelectFiltersStyles = css `
4
+ ${helperStyles}
5
+ ${normalizeStyles}
6
+ :host {
7
+ --select-renderer-max-width: 150px;
8
+ }
9
+
10
+ .select-filters {
11
+ display: flex;
12
+ width: 100%;
13
+ height: 100%;
14
+ }
15
+
16
+ .all-fields,
17
+ .selected-filters {
18
+ height: 100%;
19
+ }
20
+ `;
@@ -0,0 +1,51 @@
1
+ import { html, ref } from '@microsoft/fast-element';
2
+ const allFieldsTemplate = html `
3
+ <section class="all-fields" slot="left-section" data-test-id="all-fields-section">
4
+ <h3 class="mt-1 section-title dark-grey">Apply filters</h3>
5
+ <zero-card class="card">
6
+ <div class="flex space-between">
7
+ <h5 class="card-title">All fields</h5>
8
+ </div>
9
+
10
+ <div class="w-full h-90pc">
11
+ <zero-grid-pro
12
+ ${ref('availableFieldsGrid')}
13
+ rowSelection="multiple"
14
+ suppressRowClickSelection
15
+ data-test-id="available-fields-grid"
16
+ ></zero-grid-pro>
17
+ </div>
18
+ </zero-card>
19
+ </section>
20
+ `;
21
+ const selectedFiltersTemplate = html `
22
+ <section class="selected-filters" slot="right-section" data-test-id="selected-filters-section">
23
+ <div class="spacer-3"></div>
24
+ <zero-card class="card">
25
+ <div class="flex space-between">
26
+ <h5 class="card-title">Fields to Apply Filters</h5>
27
+ <zero-button
28
+ @click=${(x) => x.removeSelectedFilters()}
29
+ ?disabled=${(x) => !x.filtersToRemove.length}
30
+ appearance="primary-gradient"
31
+ data-test-id="remove-filters-button"
32
+ >
33
+ Remove filters
34
+ </zero-button>
35
+ </div>
36
+ <div class="w-full h-90pc">
37
+ <zero-grid-pro
38
+ ${ref('selectedFiltersGrid')}
39
+ rowSelection="multiple"
40
+ suppressRowClickSelection
41
+ data-test-id="selected-filters-grid"
42
+ ></zero-grid-pro>
43
+ </div>
44
+ </zero-card>
45
+ </section>
46
+ `;
47
+ export const SelectFiltersTemplate = html `
48
+ <layout-two-pane-horizontal splitRatio="right-main">
49
+ ${allFieldsTemplate} ${selectedFiltersTemplate}
50
+ </layout-two-pane-horizontal>
51
+ `;
@@ -0,0 +1,34 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ export const Debug = html `
3
+ <div class="flex flex-column gap-1 overflow-auto">
4
+ <div>
5
+ <h5>Report Name</h5>
6
+ <div>${(x) => x.reportName}</div>
7
+ </div>
8
+
9
+ <div>
10
+ <h5>Report Description</h5>
11
+ <div>${(x) => x.reportDescription}</div>
12
+ </div>
13
+
14
+ <div>
15
+ <h5>Selected Datasource</h5>
16
+ <div>${(x) => x.selectedDatasource}</div>
17
+ </div>
18
+
19
+ <div>
20
+ <h5>Selected Fields</h5>
21
+ <div><pre>${(x) => JSON.stringify(x.selectedFields, undefined, 2)}</pre></div>
22
+ </div>
23
+
24
+ <div>
25
+ <h5>Selected Filters</h5>
26
+ <div><pre>${(x) => JSON.stringify(x.selectedFilters, undefined, 2)}</pre></div>
27
+ </div>
28
+
29
+ <div>
30
+ <h5>Field Data</h5>
31
+ <div><pre>${(x) => JSON.stringify(x.fieldData, undefined, 2)}</pre></div>
32
+ </div>
33
+ </div>
34
+ `;
@@ -0,0 +1,2 @@
1
+ export * from './wizard';
2
+ export * from './wizard.styles';
@@ -0,0 +1,9 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ export const FiltersStep = html `
3
+ <div class="step h-90pc">
4
+ <reporting-select-filters
5
+ :selectedFields=${(x) => x.selectedFields}
6
+ :selectedFilters=${(x) => x.selectedFilters}
7
+ ></reporting-select-filters>
8
+ </div>
9
+ `;
@@ -0,0 +1,4 @@
1
+ export * from './name';
2
+ export * from './select';
3
+ export * from './filters';
4
+ export * from './run';
@@ -0,0 +1,58 @@
1
+ import { sync } from '@genesislcap/foundation-utils';
2
+ import { html, repeat } from '@microsoft/fast-element';
3
+ const reportDescriptionTemplate = html `
4
+ <section class="report-details" slot="left-section" data-test-id="report-details-section">
5
+ <h3 class="mt-1 section-title dark-grey" data-test-id="report-name-title">Name Report</h3>
6
+ <zero-card class="card">
7
+ <h5 class="card-title">Report Set up</h5>
8
+ <zero-text-field
9
+ :value=${sync((x) => x.reportName)}
10
+ class="w-full"
11
+ placeholder="Enter report name..."
12
+ data-test-id="report-name-input"
13
+ >
14
+ Report Name
15
+ </zero-text-field>
16
+ <zero-text-area
17
+ :value=${sync((x) => x.reportDescription)}
18
+ class="w-full mt-2"
19
+ placeholder="Enter report description..."
20
+ data-test-id="report-description-input"
21
+ >
22
+ Report Description
23
+ </zero-text-area>
24
+ </zero-card>
25
+ </section>
26
+ `;
27
+ const dataSourceTemplate = html `
28
+ <section class="data-sources" slot="right-section" data-test-id="data-sources-section">
29
+ <h3 class="mt-1 section-title dark-grey" data-test-id="select-datasource-title">
30
+ Select Datasource
31
+ </h3>
32
+ <zero-card class="card">
33
+ <h5 class="card-title">Data Sources</h5>
34
+ <div class="card-description">You have selected ${(x) => x.selectedDatasource}</div>
35
+ <div class="divider"></div>
36
+ <div class="radio-buttons" data-test-id="datasource-options">
37
+ <zero-radio-group :value=${(x) => x.selectedDatasource}>
38
+ ${repeat((x) => x.datasourceOptions, html `
39
+ <zero-radio
40
+ @click=${(x, c) => c.parent.onDatasourceChange(x.name)}
41
+ :checked=${(x, c) => c.parent.selectedDatasource === x.name}
42
+ :value=${(x) => x.name}
43
+ class="radio-button${(x, c) => c.parent.selectedDatasource === x.name ? ' active' : ''}"
44
+ data-test-id=${(x) => `datasource-option-${x.name}`}
45
+ >
46
+ ${(x) => x.name}
47
+ </zero-radio>
48
+ `)}
49
+ </zero-radio-group>
50
+ </div>
51
+ </zero-card>
52
+ </section>
53
+ `;
54
+ export const NameStep = html `
55
+ <layout-two-pane-horizontal hideDivider splitRatio="right-main">
56
+ ${reportDescriptionTemplate} ${dataSourceTemplate}
57
+ </layout-two-pane-horizontal>
58
+ `;
@@ -0,0 +1,11 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ export const RunStep = html `
3
+ <div class="step h-90pc mt-15px" data-test-id="run-report-step">
4
+ <h3 class="mt-1 section-title dark-grey" data-test-id="run-report-step-title">Run Report</h3>
5
+ <reporting-preview
6
+ :report=${(x) => x.getData()}
7
+ :datasourceSettings=${(x) => x.datasourceSettings}
8
+ data-test-id="report-preview-component"
9
+ />
10
+ </div>
11
+ `;
@@ -0,0 +1,11 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ export const SelectStep = html `
3
+ <div class="step h-90pc" data-test-id="select-fields-step">
4
+ <reporting-select-fields
5
+ :selectedFields=${(x) => x.selectedFields}
6
+ :fieldData=${(x) => x.fieldData}
7
+ selectedDatasource=${(x) => x.selectedDatasource}
8
+ data-test-id="select-fields-component"
9
+ ></reporting-select-fields>
10
+ </div>
11
+ `;