@nixweb/nixloc-ui 1.17.0 → 1.20.0

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 (181) hide show
  1. package/.github/workflows/publish-npm.yml +32 -32
  2. package/@nixweb/nixloc-ui/.github/workflows/publish-npm.yml +32 -32
  3. package/@nixweb/nixloc-ui/README.md +24 -24
  4. package/@nixweb/nixloc-ui/babel.config.js +5 -5
  5. package/@nixweb/nixloc-ui/config/dev.env.js +8 -8
  6. package/@nixweb/nixloc-ui/config/index.js +69 -69
  7. package/@nixweb/nixloc-ui/config/prod.env.js +5 -5
  8. package/@nixweb/nixloc-ui/docs/src/component/template/ViewTemplateReportPreview.drawio +209 -209
  9. package/@nixweb/nixloc-ui/docs/src/store/modulos/relatorio.drawio +36 -36
  10. package/@nixweb/nixloc-ui/package.json +88 -88
  11. package/@nixweb/nixloc-ui/public/index.html +19 -19
  12. package/@nixweb/nixloc-ui/public/styles/app.css +52 -52
  13. package/@nixweb/nixloc-ui/src/App.vue +13 -13
  14. package/@nixweb/nixloc-ui/src/component/forms/Button.vue +163 -163
  15. package/@nixweb/nixloc-ui/src/component/forms/ButtonFilter.vue +74 -74
  16. package/@nixweb/nixloc-ui/src/component/forms/ButtonGroup.vue +66 -66
  17. package/@nixweb/nixloc-ui/src/component/forms/ButtonSub.vue +97 -97
  18. package/@nixweb/nixloc-ui/src/component/forms/ButtonToggle.vue +76 -76
  19. package/@nixweb/nixloc-ui/src/component/forms/CheckboxGroup.vue +69 -69
  20. package/@nixweb/nixloc-ui/src/component/forms/CheckboxServer.vue +192 -192
  21. package/@nixweb/nixloc-ui/src/component/forms/CheckboxSimple.vue +60 -60
  22. package/@nixweb/nixloc-ui/src/component/forms/Color.vue +38 -38
  23. package/@nixweb/nixloc-ui/src/component/forms/DateTime.vue +170 -170
  24. package/@nixweb/nixloc-ui/src/component/forms/DateYearMonth.vue +193 -193
  25. package/@nixweb/nixloc-ui/src/component/forms/Dropdown.vue +236 -236
  26. package/@nixweb/nixloc-ui/src/component/forms/EditorHtml.vue +132 -132
  27. package/@nixweb/nixloc-ui/src/component/forms/FileUpload.vue +170 -170
  28. package/@nixweb/nixloc-ui/src/component/forms/ImageUpload.vue +214 -214
  29. package/@nixweb/nixloc-ui/src/component/forms/IncrementDecrement.vue +148 -148
  30. package/@nixweb/nixloc-ui/src/component/forms/InputAddressGoogle.vue +171 -171
  31. package/@nixweb/nixloc-ui/src/component/forms/InputCallToAction.vue +135 -135
  32. package/@nixweb/nixloc-ui/src/component/forms/InputDecimal.vue +153 -153
  33. package/@nixweb/nixloc-ui/src/component/forms/InputDecimalDiscount.vue +77 -77
  34. package/@nixweb/nixloc-ui/src/component/forms/InputNumber.vue +160 -160
  35. package/@nixweb/nixloc-ui/src/component/forms/InputPassword.vue +148 -148
  36. package/@nixweb/nixloc-ui/src/component/forms/InputTag.vue +124 -124
  37. package/@nixweb/nixloc-ui/src/component/forms/InputText.vue +174 -174
  38. package/@nixweb/nixloc-ui/src/component/forms/InputTextEdit.vue +69 -69
  39. package/@nixweb/nixloc-ui/src/component/forms/InputWhatsApp.vue +47 -47
  40. package/@nixweb/nixloc-ui/src/component/forms/Modal.vue +57 -57
  41. package/@nixweb/nixloc-ui/src/component/forms/RadioGroup.vue +91 -91
  42. package/@nixweb/nixloc-ui/src/component/forms/Select.vue +378 -378
  43. package/@nixweb/nixloc-ui/src/component/forms/SelectStatic.vue +198 -198
  44. package/@nixweb/nixloc-ui/src/component/forms/SideBar.vue +99 -99
  45. package/@nixweb/nixloc-ui/src/component/forms/Slider.vue +18 -18
  46. package/@nixweb/nixloc-ui/src/component/forms/TextArea.vue +138 -138
  47. package/@nixweb/nixloc-ui/src/component/forms/Toggle.vue +72 -72
  48. package/@nixweb/nixloc-ui/src/component/layout/Account.vue +131 -131
  49. package/@nixweb/nixloc-ui/src/component/layout/Alert.vue +88 -88
  50. package/@nixweb/nixloc-ui/src/component/layout/Badge.vue +111 -111
  51. package/@nixweb/nixloc-ui/src/component/layout/BarFloating.vue +67 -67
  52. package/@nixweb/nixloc-ui/src/component/layout/FixedBar.vue +103 -103
  53. package/@nixweb/nixloc-ui/src/component/layout/Gantt.vue +128 -128
  54. package/@nixweb/nixloc-ui/src/component/layout/Header.vue +56 -56
  55. package/@nixweb/nixloc-ui/src/component/layout/HideShow.vue +61 -61
  56. package/@nixweb/nixloc-ui/src/component/layout/IconMolded.vue +58 -58
  57. package/@nixweb/nixloc-ui/src/component/layout/LoadingFullPage.vue +27 -27
  58. package/@nixweb/nixloc-ui/src/component/layout/Menu.vue +287 -287
  59. package/@nixweb/nixloc-ui/src/component/layout/Molded.vue +30 -30
  60. package/@nixweb/nixloc-ui/src/component/layout/NewAccount.vue +136 -136
  61. package/@nixweb/nixloc-ui/src/component/layout/NewHeader.vue +59 -59
  62. package/@nixweb/nixloc-ui/src/component/layout/NewIconMolded.vue +70 -70
  63. package/@nixweb/nixloc-ui/src/component/layout/NewMenu.vue +455 -455
  64. package/@nixweb/nixloc-ui/src/component/layout/Panel.vue +185 -185
  65. package/@nixweb/nixloc-ui/src/component/layout/Popover.vue +126 -126
  66. package/@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue +57 -57
  67. package/@nixweb/nixloc-ui/src/component/layout/Tab.vue +135 -135
  68. package/@nixweb/nixloc-ui/src/component/layout/Tag.vue +97 -97
  69. package/@nixweb/nixloc-ui/src/component/layout/Wizard.vue +211 -211
  70. package/@nixweb/nixloc-ui/src/component/rental/DisplayCalculatePeriod.vue +48 -48
  71. package/@nixweb/nixloc-ui/src/component/rental/DisplayPeriodRent.vue +55 -55
  72. package/@nixweb/nixloc-ui/src/component/rental/DisplayTotalization.vue +86 -86
  73. package/@nixweb/nixloc-ui/src/component/report/Fields.vue +108 -108
  74. package/@nixweb/nixloc-ui/src/component/report/Report.vue +313 -313
  75. package/@nixweb/nixloc-ui/src/component/report/ReportTable.vue +111 -111
  76. package/@nixweb/nixloc-ui/src/component/report/Totalization.vue +33 -33
  77. package/@nixweb/nixloc-ui/src/component/shared/CodeEditor.vue +128 -128
  78. package/@nixweb/nixloc-ui/src/component/shared/Collapse.vue +131 -131
  79. package/@nixweb/nixloc-ui/src/component/shared/Confirmation.vue +74 -74
  80. package/@nixweb/nixloc-ui/src/component/shared/DocumentEditor.vue +99 -99
  81. package/@nixweb/nixloc-ui/src/component/shared/DocumentPreview.vue +81 -81
  82. package/@nixweb/nixloc-ui/src/component/shared/DocumentPublic.vue +33 -33
  83. package/@nixweb/nixloc-ui/src/component/shared/ExportExcel.vue +56 -56
  84. package/@nixweb/nixloc-ui/src/component/shared/ExportPDF.vue +116 -116
  85. package/@nixweb/nixloc-ui/src/component/shared/FullCalendar.vue +173 -173
  86. package/@nixweb/nixloc-ui/src/component/shared/HeaderReport.vue +47 -47
  87. package/@nixweb/nixloc-ui/src/component/shared/HorizontalFilter.vue +64 -64
  88. package/@nixweb/nixloc-ui/src/component/shared/ListNotifications.vue +70 -70
  89. package/@nixweb/nixloc-ui/src/component/shared/Loading.vue +107 -107
  90. package/@nixweb/nixloc-ui/src/component/shared/LoadingCard.vue +64 -64
  91. package/@nixweb/nixloc-ui/src/component/shared/LoadingMoreButton.vue +23 -23
  92. package/@nixweb/nixloc-ui/src/component/shared/Messages.vue +109 -109
  93. package/@nixweb/nixloc-ui/src/component/shared/PDFViewer.vue +24 -24
  94. package/@nixweb/nixloc-ui/src/component/shared/Pagination.vue +108 -108
  95. package/@nixweb/nixloc-ui/src/component/shared/ParameterLegend.vue +169 -169
  96. package/@nixweb/nixloc-ui/src/component/shared/ProgressBar.vue +25 -25
  97. package/@nixweb/nixloc-ui/src/component/shared/QueryButton.vue +66 -66
  98. package/@nixweb/nixloc-ui/src/component/shared/Report.vue +200 -200
  99. package/@nixweb/nixloc-ui/src/component/shared/SaveCancel.vue +99 -99
  100. package/@nixweb/nixloc-ui/src/component/shared/Search.vue +174 -174
  101. package/@nixweb/nixloc-ui/src/component/shared/SelectOption.vue +162 -162
  102. package/@nixweb/nixloc-ui/src/component/shared/Table.vue +174 -174
  103. package/@nixweb/nixloc-ui/src/component/shared/TableButton.vue +36 -36
  104. package/@nixweb/nixloc-ui/src/component/shared/TableDraggable.vue +117 -117
  105. package/@nixweb/nixloc-ui/src/component/shared/TableImport.vue +93 -93
  106. package/@nixweb/nixloc-ui/src/component/shared/TableItem.vue +214 -214
  107. package/@nixweb/nixloc-ui/src/component/shared/TableTotalPerPage.vue +77 -77
  108. package/@nixweb/nixloc-ui/src/component/shared/TableTotalRecords.vue +44 -44
  109. package/@nixweb/nixloc-ui/src/component/shared/TableTotalization.vue +47 -47
  110. package/@nixweb/nixloc-ui/src/component/shared/TimeLine.vue +41 -41
  111. package/@nixweb/nixloc-ui/src/component/shared/Timer.vue +77 -77
  112. package/@nixweb/nixloc-ui/src/component/shared/Tip.vue +42 -42
  113. package/@nixweb/nixloc-ui/src/component/shared/Toast.vue +69 -69
  114. package/@nixweb/nixloc-ui/src/component/shared/ToggleTheme.vue +127 -127
  115. package/@nixweb/nixloc-ui/src/component/shared/TotalizationReport.vue +86 -86
  116. package/@nixweb/nixloc-ui/src/component/shared/VerticalFilter.vue +97 -97
  117. package/@nixweb/nixloc-ui/src/component/shared/automation/ActivitiesList.vue +43 -43
  118. package/@nixweb/nixloc-ui/src/component/shared/automation/AddRule.vue +60 -60
  119. package/@nixweb/nixloc-ui/src/component/shared/automation/AutomationBuilder.vue +26 -26
  120. package/@nixweb/nixloc-ui/src/component/shared/automation/DynamicComponentList.vue +85 -85
  121. package/@nixweb/nixloc-ui/src/component/shared/automation/SelectRule.vue +97 -97
  122. package/@nixweb/nixloc-ui/src/component/shared/automation/components/BillingByRent.vue +97 -97
  123. package/@nixweb/nixloc-ui/src/component/shared/automation/components/SendEmail.vue +93 -93
  124. package/@nixweb/nixloc-ui/src/component/shared/file-manager/FileManager.vue +390 -390
  125. package/@nixweb/nixloc-ui/src/component/shared/filter-builder/FilterBuilder.vue +220 -220
  126. package/@nixweb/nixloc-ui/src/component/shared/filter-builder/FilterQuery.vue +94 -94
  127. package/@nixweb/nixloc-ui/src/component/shared/query-builder/AddRule.vue +203 -203
  128. package/@nixweb/nixloc-ui/src/component/shared/query-builder/ConvertToOdata.js +86 -86
  129. package/@nixweb/nixloc-ui/src/component/shared/query-builder/DynamicComponent.vue +161 -161
  130. package/@nixweb/nixloc-ui/src/component/shared/query-builder/DynamicComponentList.vue +70 -70
  131. package/@nixweb/nixloc-ui/src/component/shared/query-builder/Fields.vue +93 -93
  132. package/@nixweb/nixloc-ui/src/component/shared/query-builder/QueryBuilder.vue +69 -69
  133. package/@nixweb/nixloc-ui/src/component/shared/query-builder/Rules.vue +68 -68
  134. package/@nixweb/nixloc-ui/src/component/shared/query-builder/SelectRule.vue +97 -97
  135. package/@nixweb/nixloc-ui/src/component/shared/query-builder/Tags.vue +59 -59
  136. package/@nixweb/nixloc-ui/src/component/shared/query-builder/utilities.js +21 -21
  137. package/@nixweb/nixloc-ui/src/component/signature/Payment.vue +160 -160
  138. package/@nixweb/nixloc-ui/src/component/signature/Warning.vue +75 -75
  139. package/@nixweb/nixloc-ui/src/component/template/ListViewWithDataHandler.vue +429 -429
  140. package/@nixweb/nixloc-ui/src/component/template/ReportCreateUpdate.vue +110 -110
  141. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateConfiguration.vue +64 -64
  142. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateDocumentView.vue +213 -213
  143. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateImportFile.vue +347 -347
  144. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateReportList.vue +217 -217
  145. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateReportPreview.vue +432 -432
  146. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateSelectOption.vue +46 -46
  147. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateWithSalveCancel.vue +32 -32
  148. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateWithTable.vue +62 -62
  149. package/@nixweb/nixloc-ui/src/component/template/model/Report.js +5 -5
  150. package/@nixweb/nixloc-ui/src/component/training/Course.vue +343 -343
  151. package/@nixweb/nixloc-ui/src/component/training/CourseView.vue +189 -189
  152. package/@nixweb/nixloc-ui/src/component/value-objects/Address.js +10 -10
  153. package/@nixweb/nixloc-ui/src/component/value-objects/Address.vue +157 -157
  154. package/@nixweb/nixloc-ui/src/component/value-objects/Contact.js +6 -6
  155. package/@nixweb/nixloc-ui/src/component/value-objects/Contact.vue +106 -106
  156. package/@nixweb/nixloc-ui/src/component/value-objects/Person.js +10 -10
  157. package/@nixweb/nixloc-ui/src/component/value-objects/Person.vue +129 -129
  158. package/@nixweb/nixloc-ui/src/config/axios.js +9 -9
  159. package/@nixweb/nixloc-ui/src/config/dicas.js +14 -14
  160. package/@nixweb/nixloc-ui/src/config/router.js +13 -13
  161. package/@nixweb/nixloc-ui/src/config/token.js +14 -14
  162. package/@nixweb/nixloc-ui/src/main.js +23 -23
  163. package/@nixweb/nixloc-ui/src/store/modules/automation.js +30 -30
  164. package/@nixweb/nixloc-ui/src/store/modules/generic.js +815 -815
  165. package/@nixweb/nixloc-ui/src/store/modules/report.js +277 -277
  166. package/@nixweb/nixloc-ui/src/store/modules/user.js +66 -66
  167. package/@nixweb/nixloc-ui/src/store/modules/util.js +25 -25
  168. package/@nixweb/nixloc-ui/src/store/modules/validation.js +38 -38
  169. package/@nixweb/nixloc-ui/src/store/store.js +13 -13
  170. package/README.md +24 -24
  171. package/babel.config.js +5 -5
  172. package/config/dev.env.js +8 -8
  173. package/config/index.js +69 -69
  174. package/config/prod.env.js +5 -5
  175. package/docs/src/component/template/ViewTemplateReportPreview.drawio +209 -209
  176. package/docs/src/store/modulos/relatorio.drawio +36 -36
  177. package/package.json +88 -88
  178. package/public/index.html +19 -19
  179. package/public/styles/app.css +52 -52
  180. package/src/component/layout/ScrollBar.vue +21 -8
  181. package/src/store/modules/generic.js +15 -1
@@ -1,278 +1,278 @@
1
- import ConvertToOdata from "@nixweb/nixloc-ui/src/component/shared/query-builder/ConvertToOdata.js";
2
-
3
- export default {
4
- namespaced: true,
5
- state: {
6
- report: { id: "", fields: [], rules: [], },
7
- selectedFields: {},
8
- selectedRules: [],
9
- finalQueryFormatOData: {
10
- fields: [], totalization: [],
11
- },
12
- tags: []
13
- },
14
- getters: {
15
- headerTable: (state) => {
16
- let list = [];
17
- state.report.fields.forEach(function (field) {
18
- if (field.selected) list.push(field);
19
- });
20
- return list;
21
- },
22
- fields: (state) => {
23
- // esse getter serve somente para carregar informações no component Fields
24
- var fields = { selected: [], options: [], sort: { content: "", id: "asc" }, orderBy: "" };
25
-
26
- state.report.fields.forEach(function (value) {
27
- let option = { text: value.title, value: value.field };
28
- fields.options.push(option);
29
-
30
- // se o relatório for o padrão, carrega as info default
31
- if (state.report.id == undefined) {
32
- if (value.selected)
33
- fields.selected.push(value.field);
34
-
35
- if (value.orderBy) {
36
- fields.sort = { content: value.title, id: value.field };
37
- fields.orderBy = value.orderBy;
38
- }
39
- }
40
- else {
41
- fields.selected = state.selectedFields.selected;
42
- fields.sort = state.selectedFields.sort;
43
- fields.orderBy = state.selectedFields.orderBy;
44
- }
45
-
46
- });
47
- return fields;
48
- },
49
- oDataOrderBy: (state) => {
50
- let orderBy = "";
51
- if (state.selectedFields.sort != undefined)
52
- orderBy = `$orderby=${state.selectedFields.sort.id} ${state.selectedFields.orderBy}`;
53
- return orderBy;
54
- },
55
- oDataSelect: (state) => {
56
- let selectedFields = [];
57
-
58
- // verifica os campos obrigatórios por default "requiredOData"
59
- state.report.fields.forEach(value => {
60
- if (value.requiredOData)
61
- selectedFields.push(value.field);
62
- });
63
-
64
- // verifica os campos selecionados pelo usuário
65
- if (state.selectedFields.selected != undefined) {
66
- state.selectedFields.selected.forEach(function (field) {
67
- selectedFields.push(field);
68
- });
69
- }
70
-
71
- let query = "";
72
- let indexQuery = 0;
73
-
74
- // remove itens duplicados e monta a query select
75
- [...new Set(selectedFields)].forEach(field => {
76
- if (indexQuery == 0) query += `$select=${field}`;
77
- if (indexQuery > 0) query += `,${field}`;
78
- indexQuery++;
79
- });
80
-
81
- return query;
82
- },
83
- oDataFilter: (state) => {
84
- let query = "";
85
- let totalization = "";
86
- let indexQuery = 0;
87
- let indexTotalization = 0;
88
- var sizeFields = state.finalQueryFormatOData.fields.length;
89
- var sizeTotalization = state.finalQueryFormatOData.totalization.length;
90
- var andOr = [];
91
-
92
-
93
- state.finalQueryFormatOData.fields.forEach(function (rule) {
94
-
95
- if (rule.type == "field") {
96
- if (indexQuery == 0 && sizeFields > 0) query += `$filter=${rule.formatOdata}`;
97
-
98
- if (indexQuery > 0 && sizeFields > 0) {
99
- query += ` ${rule.andOr} ${rule.formatOdata}`;
100
- andOr.push(rule.andOr);
101
- }
102
- indexQuery++;
103
-
104
- // verifica no array se o último item é o "and", se sim será necessário inserir "(" depois do filter = e ")" antes do "and"
105
- // para que o oData consiga efetuar a query corretamente
106
- if (andOr[andOr.length - 1] == "and") {
107
-
108
- let initIndex = query.indexOf("=");
109
- let lastIndex = query.indexOf("and");
110
-
111
- var query1 = [query.slice(0, initIndex + 1), "(", query.slice(initIndex)].join('').replace("=(=", "=(");
112
- var query2 = [query1.slice(0, lastIndex + 1), ")", query1.slice(lastIndex)].join('');
113
- query = query2;
114
- }
115
-
116
- } else {
117
- if (indexTotalization == 0 && size > 0) totalization += `${rule.formatOdata}`;
118
- if (indexTotalization > 0 && size > 0) totalization += `,${rule.formatOdata}`;
119
- indexTotalization++;
120
- }
121
- });
122
-
123
- state.finalQueryFormatOData.totalization.forEach(function (rule) {
124
-
125
- if (indexTotalization == 0 && sizeTotalization > 0) totalization = `${rule.formatOdata}`;
126
- if (indexTotalization > 0 && sizeTotalization > 0) totalization = `,${rule.formatOdata}`;
127
- indexTotalization++;
128
- });
129
-
130
- return { query, totalization };
131
- },
132
- tags: (state) => {
133
- state.tags = [];
134
- let description = "";
135
-
136
- state.finalQueryFormatOData.fields.forEach(function (rule) {
137
- description = "";
138
-
139
- if (rule.typeField == "dateTime") {
140
- description = `${rule.value[0]} - ${rule.value[1]}`;
141
- }
142
-
143
- if (rule.typeField == "select") {
144
- description = rule.value.content;
145
- }
146
-
147
- if (rule.typeField == "text" || rule.typeField == "numeric") {
148
- description = `${rule.operator} "${rule.value}"`;
149
- }
150
-
151
- if (rule.typeField == "checkbox") {
152
- rule.options.forEach(function (option) {
153
- rule.value.forEach(function (value) {
154
- if (option.value == value) {
155
- description += `${option.title},`;
156
- }
157
- });
158
- });
159
- }
160
-
161
- let tag = { id: rule.id, title: rule.title, value: description };
162
- state.tags.push(tag);
163
-
164
- });
165
- return state.tags;
166
-
167
- },
168
- rulesIsValid: (state) => {
169
- let isValid = false;
170
- let rulesRequired = state.report.rules.filter(x => x.isRequired);
171
- let rulesRequiredSelected = state.selectedRules.filter(x => x.isRequired);
172
-
173
- if (rulesRequired.length == rulesRequiredSelected.length)
174
- isValid = true;
175
-
176
- return isValid;
177
- },
178
- rulesRequired: (state) => {
179
- return state.report.rules.filter(x => x.isRequired);
180
- },
181
- },
182
- mutations: {
183
- updateSelectedFields: (state, selectedFields) => {
184
- state.selectedFields = selectedFields;
185
- // após selecionar o campo, atualiza tambem quais campos deverão aparecer no report
186
- // se foi selecionado é marcado como selected = true
187
- state.report.fields.forEach(function (value) {
188
- var hasSelected = selectedFields.selected.find((selected) => {
189
- if (value.field == selected) return true;
190
- });
191
- if (value.field === hasSelected) {
192
- value.selected = true;
193
- } else {
194
- value.selected = false;
195
- }
196
- });
197
- },
198
- addSelectedRules: (state, selectedRule) => {
199
- state.selectedRules.push(selectedRule);
200
- },
201
- removeSelectedRule: (state, id) => {
202
- var filter = state.selectedRules.filter((item) => {
203
- return id != item.id;
204
- })
205
- state.selectedRules = filter;
206
- },
207
- mountFinalQueryFormatOData: (state, selectedRules) => {
208
- // aqui faz a conversão das regras selecionadas no padrão do query-builder para o formato oData carregando no objeto finalQueryFormatOData
209
- // para ser consumido nos getters oDataSelect e oDataFilter
210
-
211
- state.finalQueryFormatOData = { fields: [], totalization: [] };
212
- var convertToOdata = new ConvertToOdata();
213
-
214
- selectedRules.forEach(function (rule) {
215
-
216
- if (rule.value != null && rule.value != "" && rule.value != undefined && rule.type == "totalization") {
217
- let formatOdata = convertToOdata.convertRule(rule);
218
-
219
- rule.value.forEach(value => {
220
- // adiciona no array somente a opção da regra selecionada
221
- var ruleSelected = rule.options.filter(x => x.value == value);
222
-
223
- let ruleOdata = {
224
- title: ruleSelected[0].aggregate.title,
225
- value: ruleSelected[0].aggregate.value,
226
- classCss: ruleSelected[0].aggregate.classCss,
227
- type: ruleSelected[0].aggregate.type,
228
- formatOdata: formatOdata,
229
- };
230
-
231
- state.finalQueryFormatOData.totalization.push(ruleOdata);
232
- });
233
- }
234
-
235
- if (rule.value != null && rule.value != "" && rule.value != undefined && rule.type == "field") {
236
-
237
- let formatOdata = convertToOdata.convertRule(rule);
238
-
239
- let ruleOdata = {
240
- id: rule.id,
241
- title: rule.title,
242
- type: rule.type,
243
- typeField: rule.typeField,
244
- options: rule.options,
245
- operator: rule.operator,
246
- selected: rule.selected,
247
- isRequired: rule.isRequired,
248
- formatOdata: formatOdata,
249
- andOr: rule.andOr,
250
- value: rule.value,
251
- };
252
-
253
- state.finalQueryFormatOData.fields.push(ruleOdata);
254
- }
255
- });
256
- },
257
- clearTotalization: (state) => {
258
- state.finalQueryFormatOData.totalization = [];
259
- }
260
- },
261
- actions: {
262
- addReport: async function (context, report) {
263
- context.state.report = report;
264
- context.state.selectedFields = context.getters.fields;
265
- },
266
- addInitialReportCustom: async function (context, report) {
267
- context.state.selectedFields = report.selectedFields;
268
- context.state.selectedRules = report.selectedRules;
269
- context.commit('mountFinalQueryFormatOData', report.selectedRules);
270
- context.commit('updateSelectedFields', report.selectedFields);
271
- },
272
- removeInitialReportCustom: async function (context) {
273
- context.state.selectedFields = {};
274
- context.state.selectedRules = [];
275
- context.state.finalQueryFormatOData.fields = [];
276
- }
277
- }
1
+ import ConvertToOdata from "@nixweb/nixloc-ui/src/component/shared/query-builder/ConvertToOdata.js";
2
+
3
+ export default {
4
+ namespaced: true,
5
+ state: {
6
+ report: { id: "", fields: [], rules: [], },
7
+ selectedFields: {},
8
+ selectedRules: [],
9
+ finalQueryFormatOData: {
10
+ fields: [], totalization: [],
11
+ },
12
+ tags: []
13
+ },
14
+ getters: {
15
+ headerTable: (state) => {
16
+ let list = [];
17
+ state.report.fields.forEach(function (field) {
18
+ if (field.selected) list.push(field);
19
+ });
20
+ return list;
21
+ },
22
+ fields: (state) => {
23
+ // esse getter serve somente para carregar informações no component Fields
24
+ var fields = { selected: [], options: [], sort: { content: "", id: "asc" }, orderBy: "" };
25
+
26
+ state.report.fields.forEach(function (value) {
27
+ let option = { text: value.title, value: value.field };
28
+ fields.options.push(option);
29
+
30
+ // se o relatório for o padrão, carrega as info default
31
+ if (state.report.id == undefined) {
32
+ if (value.selected)
33
+ fields.selected.push(value.field);
34
+
35
+ if (value.orderBy) {
36
+ fields.sort = { content: value.title, id: value.field };
37
+ fields.orderBy = value.orderBy;
38
+ }
39
+ }
40
+ else {
41
+ fields.selected = state.selectedFields.selected;
42
+ fields.sort = state.selectedFields.sort;
43
+ fields.orderBy = state.selectedFields.orderBy;
44
+ }
45
+
46
+ });
47
+ return fields;
48
+ },
49
+ oDataOrderBy: (state) => {
50
+ let orderBy = "";
51
+ if (state.selectedFields.sort != undefined)
52
+ orderBy = `$orderby=${state.selectedFields.sort.id} ${state.selectedFields.orderBy}`;
53
+ return orderBy;
54
+ },
55
+ oDataSelect: (state) => {
56
+ let selectedFields = [];
57
+
58
+ // verifica os campos obrigatórios por default "requiredOData"
59
+ state.report.fields.forEach(value => {
60
+ if (value.requiredOData)
61
+ selectedFields.push(value.field);
62
+ });
63
+
64
+ // verifica os campos selecionados pelo usuário
65
+ if (state.selectedFields.selected != undefined) {
66
+ state.selectedFields.selected.forEach(function (field) {
67
+ selectedFields.push(field);
68
+ });
69
+ }
70
+
71
+ let query = "";
72
+ let indexQuery = 0;
73
+
74
+ // remove itens duplicados e monta a query select
75
+ [...new Set(selectedFields)].forEach(field => {
76
+ if (indexQuery == 0) query += `$select=${field}`;
77
+ if (indexQuery > 0) query += `,${field}`;
78
+ indexQuery++;
79
+ });
80
+
81
+ return query;
82
+ },
83
+ oDataFilter: (state) => {
84
+ let query = "";
85
+ let totalization = "";
86
+ let indexQuery = 0;
87
+ let indexTotalization = 0;
88
+ var sizeFields = state.finalQueryFormatOData.fields.length;
89
+ var sizeTotalization = state.finalQueryFormatOData.totalization.length;
90
+ var andOr = [];
91
+
92
+
93
+ state.finalQueryFormatOData.fields.forEach(function (rule) {
94
+
95
+ if (rule.type == "field") {
96
+ if (indexQuery == 0 && sizeFields > 0) query += `$filter=${rule.formatOdata}`;
97
+
98
+ if (indexQuery > 0 && sizeFields > 0) {
99
+ query += ` ${rule.andOr} ${rule.formatOdata}`;
100
+ andOr.push(rule.andOr);
101
+ }
102
+ indexQuery++;
103
+
104
+ // verifica no array se o último item é o "and", se sim será necessário inserir "(" depois do filter = e ")" antes do "and"
105
+ // para que o oData consiga efetuar a query corretamente
106
+ if (andOr[andOr.length - 1] == "and") {
107
+
108
+ let initIndex = query.indexOf("=");
109
+ let lastIndex = query.indexOf("and");
110
+
111
+ var query1 = [query.slice(0, initIndex + 1), "(", query.slice(initIndex)].join('').replace("=(=", "=(");
112
+ var query2 = [query1.slice(0, lastIndex + 1), ")", query1.slice(lastIndex)].join('');
113
+ query = query2;
114
+ }
115
+
116
+ } else {
117
+ if (indexTotalization == 0 && size > 0) totalization += `${rule.formatOdata}`;
118
+ if (indexTotalization > 0 && size > 0) totalization += `,${rule.formatOdata}`;
119
+ indexTotalization++;
120
+ }
121
+ });
122
+
123
+ state.finalQueryFormatOData.totalization.forEach(function (rule) {
124
+
125
+ if (indexTotalization == 0 && sizeTotalization > 0) totalization = `${rule.formatOdata}`;
126
+ if (indexTotalization > 0 && sizeTotalization > 0) totalization = `,${rule.formatOdata}`;
127
+ indexTotalization++;
128
+ });
129
+
130
+ return { query, totalization };
131
+ },
132
+ tags: (state) => {
133
+ state.tags = [];
134
+ let description = "";
135
+
136
+ state.finalQueryFormatOData.fields.forEach(function (rule) {
137
+ description = "";
138
+
139
+ if (rule.typeField == "dateTime") {
140
+ description = `${rule.value[0]} - ${rule.value[1]}`;
141
+ }
142
+
143
+ if (rule.typeField == "select") {
144
+ description = rule.value.content;
145
+ }
146
+
147
+ if (rule.typeField == "text" || rule.typeField == "numeric") {
148
+ description = `${rule.operator} "${rule.value}"`;
149
+ }
150
+
151
+ if (rule.typeField == "checkbox") {
152
+ rule.options.forEach(function (option) {
153
+ rule.value.forEach(function (value) {
154
+ if (option.value == value) {
155
+ description += `${option.title},`;
156
+ }
157
+ });
158
+ });
159
+ }
160
+
161
+ let tag = { id: rule.id, title: rule.title, value: description };
162
+ state.tags.push(tag);
163
+
164
+ });
165
+ return state.tags;
166
+
167
+ },
168
+ rulesIsValid: (state) => {
169
+ let isValid = false;
170
+ let rulesRequired = state.report.rules.filter(x => x.isRequired);
171
+ let rulesRequiredSelected = state.selectedRules.filter(x => x.isRequired);
172
+
173
+ if (rulesRequired.length == rulesRequiredSelected.length)
174
+ isValid = true;
175
+
176
+ return isValid;
177
+ },
178
+ rulesRequired: (state) => {
179
+ return state.report.rules.filter(x => x.isRequired);
180
+ },
181
+ },
182
+ mutations: {
183
+ updateSelectedFields: (state, selectedFields) => {
184
+ state.selectedFields = selectedFields;
185
+ // após selecionar o campo, atualiza tambem quais campos deverão aparecer no report
186
+ // se foi selecionado é marcado como selected = true
187
+ state.report.fields.forEach(function (value) {
188
+ var hasSelected = selectedFields.selected.find((selected) => {
189
+ if (value.field == selected) return true;
190
+ });
191
+ if (value.field === hasSelected) {
192
+ value.selected = true;
193
+ } else {
194
+ value.selected = false;
195
+ }
196
+ });
197
+ },
198
+ addSelectedRules: (state, selectedRule) => {
199
+ state.selectedRules.push(selectedRule);
200
+ },
201
+ removeSelectedRule: (state, id) => {
202
+ var filter = state.selectedRules.filter((item) => {
203
+ return id != item.id;
204
+ })
205
+ state.selectedRules = filter;
206
+ },
207
+ mountFinalQueryFormatOData: (state, selectedRules) => {
208
+ // aqui faz a conversão das regras selecionadas no padrão do query-builder para o formato oData carregando no objeto finalQueryFormatOData
209
+ // para ser consumido nos getters oDataSelect e oDataFilter
210
+
211
+ state.finalQueryFormatOData = { fields: [], totalization: [] };
212
+ var convertToOdata = new ConvertToOdata();
213
+
214
+ selectedRules.forEach(function (rule) {
215
+
216
+ if (rule.value != null && rule.value != "" && rule.value != undefined && rule.type == "totalization") {
217
+ let formatOdata = convertToOdata.convertRule(rule);
218
+
219
+ rule.value.forEach(value => {
220
+ // adiciona no array somente a opção da regra selecionada
221
+ var ruleSelected = rule.options.filter(x => x.value == value);
222
+
223
+ let ruleOdata = {
224
+ title: ruleSelected[0].aggregate.title,
225
+ value: ruleSelected[0].aggregate.value,
226
+ classCss: ruleSelected[0].aggregate.classCss,
227
+ type: ruleSelected[0].aggregate.type,
228
+ formatOdata: formatOdata,
229
+ };
230
+
231
+ state.finalQueryFormatOData.totalization.push(ruleOdata);
232
+ });
233
+ }
234
+
235
+ if (rule.value != null && rule.value != "" && rule.value != undefined && rule.type == "field") {
236
+
237
+ let formatOdata = convertToOdata.convertRule(rule);
238
+
239
+ let ruleOdata = {
240
+ id: rule.id,
241
+ title: rule.title,
242
+ type: rule.type,
243
+ typeField: rule.typeField,
244
+ options: rule.options,
245
+ operator: rule.operator,
246
+ selected: rule.selected,
247
+ isRequired: rule.isRequired,
248
+ formatOdata: formatOdata,
249
+ andOr: rule.andOr,
250
+ value: rule.value,
251
+ };
252
+
253
+ state.finalQueryFormatOData.fields.push(ruleOdata);
254
+ }
255
+ });
256
+ },
257
+ clearTotalization: (state) => {
258
+ state.finalQueryFormatOData.totalization = [];
259
+ }
260
+ },
261
+ actions: {
262
+ addReport: async function (context, report) {
263
+ context.state.report = report;
264
+ context.state.selectedFields = context.getters.fields;
265
+ },
266
+ addInitialReportCustom: async function (context, report) {
267
+ context.state.selectedFields = report.selectedFields;
268
+ context.state.selectedRules = report.selectedRules;
269
+ context.commit('mountFinalQueryFormatOData', report.selectedRules);
270
+ context.commit('updateSelectedFields', report.selectedFields);
271
+ },
272
+ removeInitialReportCustom: async function (context) {
273
+ context.state.selectedFields = {};
274
+ context.state.selectedRules = [];
275
+ context.state.finalQueryFormatOData.fields = [];
276
+ }
277
+ }
278
278
  }