@nixweb/nixloc-ui 0.0.270 → 0.0.272
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/package.json +1 -1
- package/src/component/forms/CheckboxServer.vue +5 -0
- package/src/component/shared/Search.vue +12 -5
- package/src/component/shared/filter-builder/FilterBuilder.vue +19 -14
- package/src/component/shared/filter-builder/FilterQuery.vue +7 -1
- package/src/component/template/ViewTemplateWithTable.vue +14 -12
- package/src/store/modules/generic.js +18 -0
package/package.json
CHANGED
|
@@ -22,10 +22,8 @@
|
|
|
22
22
|
</b-row>
|
|
23
23
|
</div>
|
|
24
24
|
</div>
|
|
25
|
-
<div v-if="
|
|
26
|
-
<div
|
|
27
|
-
|| getFilterStorage($route.name).baseParams.search !== ''
|
|
28
|
-
|| getFilterStorage($route.name).baseParams.currentPage !== 1">
|
|
25
|
+
<div v-if="hasActiveFilter">
|
|
26
|
+
<div>
|
|
29
27
|
<div class="div-filter">
|
|
30
28
|
Filtro Ativo
|
|
31
29
|
<span class="icon-close" @click="removeFilter()">
|
|
@@ -34,7 +32,6 @@
|
|
|
34
32
|
</div>
|
|
35
33
|
</div>
|
|
36
34
|
</div>
|
|
37
|
-
|
|
38
35
|
</b-col>
|
|
39
36
|
<b-col xs="4" sm="4" md="4" lg="4" xl="4">
|
|
40
37
|
<div class="div-button">
|
|
@@ -63,6 +60,7 @@ export default {
|
|
|
63
60
|
}
|
|
64
61
|
},
|
|
65
62
|
computed: {
|
|
63
|
+
...mapState("generic", ["queryTags"]),
|
|
66
64
|
...mapGetters("generic", ["getFilterStorage"]),
|
|
67
65
|
search: {
|
|
68
66
|
get() {
|
|
@@ -72,6 +70,14 @@ export default {
|
|
|
72
70
|
this.updateSearch(value);
|
|
73
71
|
},
|
|
74
72
|
},
|
|
73
|
+
hasActiveFilter() {
|
|
74
|
+
const filterStorage = this.getFilterStorage(this.$route.name);
|
|
75
|
+
return filterStorage && (
|
|
76
|
+
filterStorage.baseParams.search !== '' ||
|
|
77
|
+
filterStorage.baseParams.currentPage !== 1 ||
|
|
78
|
+
this.queryTags.length > 0
|
|
79
|
+
);
|
|
80
|
+
},
|
|
75
81
|
},
|
|
76
82
|
methods: {
|
|
77
83
|
...mapMutations("generic", [
|
|
@@ -93,6 +99,7 @@ export default {
|
|
|
93
99
|
},
|
|
94
100
|
removeFilter() {
|
|
95
101
|
this.addEvent({ name: "filterStorageRemoved" });
|
|
102
|
+
this.executeClean();
|
|
96
103
|
}
|
|
97
104
|
},
|
|
98
105
|
};
|
|
@@ -5,12 +5,6 @@
|
|
|
5
5
|
<SelectStatic title="Tipo" :onlyQuery="true" :data="options" :markFormDirty="true"
|
|
6
6
|
v-model="filterSelected" />
|
|
7
7
|
</b-col>
|
|
8
|
-
<b-col sm="3">
|
|
9
|
-
<div class="div-btn">
|
|
10
|
-
<Button _key="btnAddFilter" backGroundColor="#017AFF" color="white"
|
|
11
|
-
classIcon="fa-regular fa-plus-large" size="small" :clicked="add" />
|
|
12
|
-
</div>
|
|
13
|
-
</b-col>
|
|
14
8
|
</b-row>
|
|
15
9
|
<div>
|
|
16
10
|
<div v-for="item in filtersAdded">
|
|
@@ -19,13 +13,11 @@
|
|
|
19
13
|
<b-col sm="11">
|
|
20
14
|
<CheckboxGroup v-if="item.type == 'options'" :title="item.title" :options="item.options"
|
|
21
15
|
:initialValue="item.value" v-model="item.value" />
|
|
22
|
-
|
|
23
16
|
<div class="div-date">
|
|
24
17
|
<DateTime v-if="item.type == 'date' || item.type == 'dateRange'" :title="item.title"
|
|
25
18
|
format="DD/MM/YYYY" type="date" :range="true" :confirm="true" confirmText="Ok"
|
|
26
19
|
placeholder v-model="item.value" />
|
|
27
20
|
</div>
|
|
28
|
-
|
|
29
21
|
<div v-if="item.type == 'decimal'">
|
|
30
22
|
<b-row>
|
|
31
23
|
<b-col sm="6">
|
|
@@ -36,12 +28,10 @@
|
|
|
36
28
|
</b-col>
|
|
37
29
|
</b-row>
|
|
38
30
|
</div>
|
|
39
|
-
|
|
40
31
|
<div v-if="item.type == 'multiOptions'">
|
|
41
32
|
<div class="div-multi-options">
|
|
42
33
|
<CheckboxServer :title="item.title" :url="item.url" v-model="item.value" />
|
|
43
34
|
</div>
|
|
44
|
-
|
|
45
35
|
</div>
|
|
46
36
|
<InputText v-if="item.type == 'text'" :title="item.title" v-model="item.value" />
|
|
47
37
|
</b-col>
|
|
@@ -72,7 +62,7 @@ import CheckboxServer from "@nixweb/nixloc-ui/src/component/forms/CheckboxServer
|
|
|
72
62
|
import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
|
|
73
63
|
import DateTime from "@nixweb/nixloc-ui/src/component/forms/DateTime";
|
|
74
64
|
|
|
75
|
-
import { mapMutations, mapGetters } from "vuex";
|
|
65
|
+
import { mapMutations, mapState, mapGetters } from "vuex";
|
|
76
66
|
|
|
77
67
|
export default {
|
|
78
68
|
name: "FilterBuilder",
|
|
@@ -81,14 +71,17 @@ export default {
|
|
|
81
71
|
data() {
|
|
82
72
|
return {
|
|
83
73
|
filterSelected: {},
|
|
84
|
-
filtersAdded: [
|
|
74
|
+
filtersAdded: [],
|
|
85
75
|
}
|
|
86
76
|
},
|
|
87
77
|
mounted() {
|
|
78
|
+
var filterStorage = this.getQueryFilter(this.$route.name);
|
|
79
|
+
this.filtersAdded = filterStorage.filtersAdded;
|
|
88
80
|
this.addEvent({ name: "stringFilter", data: this.filterFinal });
|
|
89
81
|
},
|
|
90
82
|
computed: {
|
|
91
|
-
...mapGetters("generic", ["event"]),
|
|
83
|
+
...mapGetters("generic", ["event", "getQueryFilter"]),
|
|
84
|
+
...mapState("generic", ["filterQuery"]),
|
|
92
85
|
options() {
|
|
93
86
|
let options = [];
|
|
94
87
|
this.filters.forEach(filter => {
|
|
@@ -117,7 +110,7 @@ export default {
|
|
|
117
110
|
},
|
|
118
111
|
},
|
|
119
112
|
methods: {
|
|
120
|
-
...mapMutations("generic", ["addEvent", "hideModal", "removeLoading"]),
|
|
113
|
+
...mapMutations("generic", ["addEvent", "hideModal", "removeLoading", "addFilterQuery"]),
|
|
121
114
|
add() {
|
|
122
115
|
if (this.filterSelected.id && !this.contentExists(this.filterSelected.field)) {
|
|
123
116
|
this.filtersAdded.push(this.filterSelected);
|
|
@@ -144,12 +137,24 @@ export default {
|
|
|
144
137
|
this.removeItem(event.data.field);
|
|
145
138
|
this.addEvent({ name: "stringFilter" });
|
|
146
139
|
}
|
|
140
|
+
|
|
141
|
+
if (event.name == "filterStorageRemoved") {
|
|
142
|
+
this.filtersAdded = [];
|
|
143
|
+
this.addEvent({ name: "stringFilter", data: this.filterFinal });
|
|
144
|
+
}
|
|
147
145
|
},
|
|
148
146
|
deep: true,
|
|
149
147
|
},
|
|
150
148
|
filterFinal: {
|
|
151
149
|
handler(filterFinal) {
|
|
152
150
|
this.$emit("input", filterFinal);
|
|
151
|
+
this.addFilterQuery({ routeName: this.$route.name, filtersAdded: this.filtersAdded });
|
|
152
|
+
},
|
|
153
|
+
deep: true,
|
|
154
|
+
},
|
|
155
|
+
filterSelected: {
|
|
156
|
+
handler(filterSelected) {
|
|
157
|
+
this.add();
|
|
153
158
|
},
|
|
154
159
|
deep: true,
|
|
155
160
|
},
|
|
@@ -44,7 +44,7 @@ export default {
|
|
|
44
44
|
...mapGetters("generic", ["showModal", "event"]),
|
|
45
45
|
},
|
|
46
46
|
methods: {
|
|
47
|
-
...mapMutations("generic", ["openModal", "addEvent", "removeLoading"]),
|
|
47
|
+
...mapMutations("generic", ["openModal", "addEvent", "removeLoading", "updateQueryTags"]),
|
|
48
48
|
openFilter() {
|
|
49
49
|
this.openModal("filter");
|
|
50
50
|
this.removeLoading(["btnFilter"]);
|
|
@@ -70,6 +70,12 @@ export default {
|
|
|
70
70
|
},
|
|
71
71
|
deep: true,
|
|
72
72
|
},
|
|
73
|
+
tags: {
|
|
74
|
+
handler(tags) {
|
|
75
|
+
this.updateQueryTags(tags);
|
|
76
|
+
},
|
|
77
|
+
deep: true,
|
|
78
|
+
},
|
|
73
79
|
},
|
|
74
80
|
|
|
75
81
|
}
|
|
@@ -10,12 +10,11 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
<div slot="content-main">
|
|
12
12
|
<slot name="content-between-search-table"></slot>
|
|
13
|
-
<
|
|
14
|
-
<div class="side-by-side" v-for="tag in tags">
|
|
15
|
-
<Tag :_key="tag.key" :disabled="propsParam.showAll" :title="tag.tag" />
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
13
|
+
<!-- <FilterQuery v-if="filters.length > 0" :filters="filters" v-model="stringFilter" />-->
|
|
18
14
|
<Molded>
|
|
15
|
+
<!-- <ListViewWithDataHandler :templateList="templateList"
|
|
16
|
+
:propsParam="{ stringFilter: JSON.stringify(stringFilter) }" :isFilterStorage="true"
|
|
17
|
+
:buttonRemove="buttonRemove">-->
|
|
19
18
|
<ListViewWithDataHandler :templateList="templateList" :propsParam="propsParam" :isFilterStorage="true"
|
|
20
19
|
:buttonRemove="buttonRemove">
|
|
21
20
|
<div slot="content-buttons-table-header">
|
|
@@ -37,26 +36,29 @@
|
|
|
37
36
|
<script>
|
|
38
37
|
import Panel from "@nixweb/nixloc-ui/src/component/layout/Panel.vue";
|
|
39
38
|
import Molded from "@nixweb/nixloc-ui/src/component/layout/Molded";
|
|
40
|
-
import Tag from "@nixweb/nixloc-ui/src/component/layout/Tag.vue";
|
|
41
|
-
|
|
42
39
|
import ListViewWithDataHandler from "@nixweb/nixloc-ui/src/component/template/ListViewWithDataHandler.vue";
|
|
43
|
-
|
|
44
|
-
import { mapState } from "vuex";
|
|
40
|
+
import FilterQuery from '@nixweb/nixloc-ui/src/component/shared/filter-builder/FilterQuery.vue'
|
|
45
41
|
|
|
46
42
|
export default {
|
|
47
43
|
name: "TemplateView",
|
|
48
|
-
components: { Panel, Molded,
|
|
44
|
+
components: { Panel, Molded, ListViewWithDataHandler, FilterQuery },
|
|
49
45
|
props: {
|
|
50
46
|
panel: Object,
|
|
51
47
|
templateList: Object,
|
|
52
48
|
propsParam: Object,
|
|
49
|
+
filters: {
|
|
50
|
+
type: Array,
|
|
51
|
+
default: [],
|
|
52
|
+
},
|
|
53
53
|
buttonRemove: {
|
|
54
54
|
type: Boolean,
|
|
55
55
|
default: true,
|
|
56
56
|
},
|
|
57
57
|
},
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
data() {
|
|
59
|
+
return {
|
|
60
|
+
stringFilter: [],
|
|
61
|
+
}
|
|
60
62
|
},
|
|
61
63
|
};
|
|
62
64
|
</script>
|
|
@@ -41,6 +41,8 @@ export default {
|
|
|
41
41
|
clearedSearch: false,
|
|
42
42
|
methodExecutedApi: undefined,
|
|
43
43
|
filterStorage: [],
|
|
44
|
+
filterQuery: [],
|
|
45
|
+
queryTags: [],
|
|
44
46
|
},
|
|
45
47
|
getters: {
|
|
46
48
|
tip: (state) => (tipId) => {
|
|
@@ -69,6 +71,9 @@ export default {
|
|
|
69
71
|
getFilterStorage: (state) => (key) => {
|
|
70
72
|
return state.filterStorage.find(x => x.key === key);
|
|
71
73
|
},
|
|
74
|
+
getQueryFilter: (state) => (routeName) => {
|
|
75
|
+
return state.filterQuery.find(x => x.routeName === routeName);
|
|
76
|
+
},
|
|
72
77
|
paramsFilterStorage: (state) => (route, key, returnIfNull) => {
|
|
73
78
|
var filter = state.filterStorage.find(x => x.key === route);
|
|
74
79
|
|
|
@@ -360,6 +365,19 @@ export default {
|
|
|
360
365
|
let filter = state.filterStorage.filter(x => x.key != key);
|
|
361
366
|
state.filterStorage = filter;
|
|
362
367
|
},
|
|
368
|
+
addFilterQuery: (state, obj) => {
|
|
369
|
+
// função abaixo é para não deixar duplicidade
|
|
370
|
+
const index = state.filterQuery.findIndex(x => x.routeName === obj.routeName);
|
|
371
|
+
if (index !== -1) {
|
|
372
|
+
state.filterQuery[index] = obj;
|
|
373
|
+
|
|
374
|
+
} else {
|
|
375
|
+
state.filterQuery.push(obj);
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
updateQueryTags: (state, tags) => {
|
|
379
|
+
state.queryTags = tags;
|
|
380
|
+
},
|
|
363
381
|
},
|
|
364
382
|
actions: {
|
|
365
383
|
postApi: async function (context, params) {
|