@dative-gpi/foundation-core-components 0.0.11 → 0.0.13
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.
|
@@ -1,107 +1,172 @@
|
|
|
1
1
|
<template>
|
|
2
|
+
<FSLoadDataTable
|
|
3
|
+
v-if="getting"
|
|
4
|
+
/>
|
|
2
5
|
<FSDataTableUI
|
|
3
|
-
v-
|
|
4
|
-
:
|
|
6
|
+
v-else
|
|
7
|
+
:headers="innerHeaders"
|
|
8
|
+
:mode="innerMode"
|
|
9
|
+
:sortBy="innerSortBy"
|
|
10
|
+
:rowsPerPage="innerRowsPerPage"
|
|
11
|
+
:filters="innerFilters"
|
|
12
|
+
:page="innerPage"
|
|
13
|
+
@update:headers="updateHeaders"
|
|
14
|
+
@update:mode="updateMode"
|
|
15
|
+
@update:sortBy="updateSortBy"
|
|
16
|
+
@update:rowsPerPage="updateRowsPerPage"
|
|
5
17
|
@update:filters="updateFilters"
|
|
6
|
-
|
|
7
|
-
v-model:headers="innerHeaders"
|
|
8
|
-
v-model:sortBy="innerSortBy"
|
|
9
|
-
v-model:page="innerPage"
|
|
10
|
-
v-model:mode="innerMode"
|
|
18
|
+
@update:page="updatePage"
|
|
11
19
|
v-bind="$attrs"
|
|
12
20
|
/>
|
|
13
21
|
</template>
|
|
14
22
|
|
|
15
23
|
<script lang="ts">
|
|
16
|
-
import { defineComponent, onMounted, onUnmounted,
|
|
24
|
+
import { defineComponent, onMounted, onUnmounted, ref, Ref, watch } from "vue";
|
|
25
|
+
import { useRouter } from "vue-router";
|
|
17
26
|
|
|
18
|
-
import {
|
|
27
|
+
import { FSDataTableColumn, FSDataTableFilter, FSDataTableOrder } from "@dative-gpi/foundation-shared-components/models";
|
|
19
28
|
import { useTable, useUpdateTable } from "@dative-gpi/foundation-core-services/composables";
|
|
20
|
-
import {
|
|
29
|
+
import { useDebounce } from "@dative-gpi/foundation-shared-components/composables";
|
|
21
30
|
|
|
31
|
+
import FSLoadDataTable from "@dative-gpi/foundation-shared-components/components/lists/FSLoadDataTable.vue";
|
|
22
32
|
import FSDataTableUI from "@dative-gpi/foundation-shared-components/components/lists/FSDataTableUI.vue";
|
|
23
33
|
|
|
24
34
|
export default defineComponent({
|
|
25
35
|
name: "FSDataTable",
|
|
26
36
|
components: {
|
|
37
|
+
FSLoadDataTable,
|
|
27
38
|
FSDataTableUI
|
|
28
39
|
},
|
|
29
40
|
props: {
|
|
30
41
|
tableCode: {
|
|
31
42
|
type: String,
|
|
32
43
|
required: true
|
|
33
|
-
},
|
|
34
|
-
mode: {
|
|
35
|
-
type: String as PropType<"table" | "iterator">,
|
|
36
|
-
required: false,
|
|
37
|
-
default: "table"
|
|
38
44
|
}
|
|
39
45
|
},
|
|
40
46
|
setup(props) {
|
|
41
|
-
const {
|
|
42
|
-
const {
|
|
47
|
+
const { get, getting, entity } = useTable();
|
|
48
|
+
const { debounce, cancel } = useDebounce();
|
|
49
|
+
const { update } = useUpdateTable();
|
|
50
|
+
const router = useRouter();
|
|
43
51
|
|
|
44
|
-
const innerHeaders: Ref<
|
|
45
|
-
const
|
|
52
|
+
const innerHeaders: Ref<FSDataTableColumn[]> = ref([]);
|
|
53
|
+
const innerSortBy: Ref<FSDataTableOrder | null> = ref(null);
|
|
54
|
+
const innerMode: Ref<"table" | "iterator"> = ref("table");
|
|
46
55
|
const innerRowsPerPage = ref(10);
|
|
47
|
-
const
|
|
48
|
-
const innerMode = ref(props.mode);
|
|
56
|
+
const innerFilters = ref<{ [key: string]: FSDataTableFilter[] }>({});
|
|
49
57
|
const innerPage = ref(1);
|
|
50
58
|
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
const reset = (): void => {
|
|
60
|
+
if (router && router.currentRoute.value.query[props.tableCode]) {
|
|
61
|
+
const query = JSON.parse(router.currentRoute.value.query[props.tableCode] as string);
|
|
62
|
+
innerHeaders.value = query.columns;
|
|
63
|
+
innerRowsPerPage.value = query.rowsPerPage;
|
|
64
|
+
innerSortBy.value = query.sortBy;
|
|
65
|
+
innerMode.value = query.mode;
|
|
66
|
+
innerFilters.value = query.filters;
|
|
67
|
+
innerPage.value = query.page;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
innerHeaders.value = entity.value.columns;
|
|
71
|
+
innerRowsPerPage.value = entity.value.rowsPerPage;
|
|
72
|
+
innerSortBy.value = entity.value.sortBy;
|
|
73
|
+
innerMode.value = entity.value.mode;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const updateHeaders = (value: FSDataTableColumn[]): void => {
|
|
78
|
+
innerHeaders.value = value;
|
|
79
|
+
debounce(updateTable, 5000);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const updateMode = (value: "table" | "iterator"): void => {
|
|
83
|
+
innerMode.value = value;
|
|
84
|
+
debounce(updateTable, 5000);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const updateSortBy = (value: FSDataTableOrder | null): void => {
|
|
88
|
+
innerSortBy.value = value;
|
|
89
|
+
debounce(updateTable, 5000);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const updateRowsPerPage = (value: -1 | 10 | 30): void => {
|
|
93
|
+
innerRowsPerPage.value = value;
|
|
94
|
+
debounce(updateTable, 5000);
|
|
95
|
+
};
|
|
60
96
|
|
|
61
97
|
const updateFilters = (value: { [key: string]: FSDataTableFilter[] }): void => {
|
|
62
|
-
innerFilters.value =
|
|
63
|
-
|
|
64
|
-
value: filter.value,
|
|
65
|
-
hidden: filter.hidden
|
|
66
|
-
}))).reduce((acc, filters) => acc.concat(filters), []);
|
|
98
|
+
innerFilters.value = value;
|
|
99
|
+
updateRouter();
|
|
67
100
|
};
|
|
68
101
|
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
102
|
+
const updatePage = (value: number): void => {
|
|
103
|
+
innerPage.value = value;
|
|
104
|
+
updateRouter();
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const updateTable = (): void => {
|
|
108
|
+
updateRouter();
|
|
109
|
+
update(props.tableCode, {
|
|
110
|
+
columns: innerHeaders.value.map(column => ({
|
|
111
|
+
columnId: column.columnId,
|
|
112
|
+
hidden: column.hidden,
|
|
113
|
+
index: column.index
|
|
114
|
+
})),
|
|
115
|
+
rowsPerPage: innerRowsPerPage.value,
|
|
116
|
+
sortBy: innerSortBy.value,
|
|
117
|
+
mode: innerMode.value
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const updateRouter = (): void => {
|
|
122
|
+
if (router) {
|
|
123
|
+
router.replace({
|
|
124
|
+
query: {
|
|
125
|
+
...router.currentRoute.value.query,
|
|
126
|
+
[props.tableCode]: JSON.stringify({
|
|
127
|
+
columns: innerHeaders.value,
|
|
128
|
+
rowsPerPage: innerRowsPerPage.value,
|
|
129
|
+
sortBy: innerSortBy.value,
|
|
130
|
+
mode: innerMode.value,
|
|
131
|
+
filters: innerFilters.value,
|
|
132
|
+
page: innerPage.value
|
|
133
|
+
})
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
74
137
|
};
|
|
75
138
|
|
|
76
139
|
onMounted(() => {
|
|
77
|
-
|
|
140
|
+
get(props.tableCode);
|
|
78
141
|
});
|
|
79
142
|
|
|
80
143
|
onUnmounted(() => {
|
|
81
|
-
|
|
144
|
+
cancel();
|
|
145
|
+
updateTable();
|
|
82
146
|
});
|
|
83
147
|
|
|
84
148
|
watch(() => props.tableCode, () => {
|
|
85
|
-
|
|
149
|
+
get(props.tableCode);
|
|
86
150
|
});
|
|
87
151
|
|
|
88
152
|
watch(entity, () => {
|
|
89
153
|
reset();
|
|
90
154
|
});
|
|
91
155
|
|
|
92
|
-
watch([innerHeaders, innerFilters, innerRowsPerPage, innerSortBy, innerMode, ], () => {
|
|
93
|
-
// update();
|
|
94
|
-
});
|
|
95
|
-
|
|
96
156
|
return {
|
|
97
157
|
getting,
|
|
98
158
|
innerHeaders,
|
|
99
159
|
innerRowsPerPage,
|
|
100
|
-
innerPage,
|
|
101
160
|
innerSortBy,
|
|
102
161
|
innerMode,
|
|
103
|
-
|
|
104
|
-
|
|
162
|
+
innerFilters,
|
|
163
|
+
innerPage,
|
|
164
|
+
updateHeaders,
|
|
165
|
+
updateMode,
|
|
166
|
+
updateSortBy,
|
|
167
|
+
updateRowsPerPage,
|
|
168
|
+
updateFilters,
|
|
169
|
+
updatePage
|
|
105
170
|
};
|
|
106
171
|
},
|
|
107
172
|
});
|
|
@@ -27,7 +27,7 @@ import { defineComponent, onMounted, watch } from "vue";
|
|
|
27
27
|
import { useDeviceOrganisation } from "@dative-gpi/foundation-core-services/composables";
|
|
28
28
|
|
|
29
29
|
import FSDeviceOrganisationTileUI from "@dative-gpi/foundation-shared-components/components/tiles/FSDeviceOrganisationTileUI.vue";
|
|
30
|
-
import FSLoadTile from "@dative-gpi/foundation-shared-components/components/FSLoadTile.vue";
|
|
30
|
+
import FSLoadTile from "@dative-gpi/foundation-shared-components/components/tiles/FSLoadTile.vue";
|
|
31
31
|
|
|
32
32
|
export default defineComponent({
|
|
33
33
|
name: "FSDeviceOrganisationTile",
|
|
@@ -24,7 +24,7 @@ import { defineComponent, onMounted, watch } from "vue";
|
|
|
24
24
|
import { useGroup } from "@dative-gpi/foundation-core-services/composables";
|
|
25
25
|
|
|
26
26
|
import FSGroupTileUI from "@dative-gpi/foundation-shared-components/components/tiles/FSGroupTileUI.vue";
|
|
27
|
-
import FSLoadTile from "@dative-gpi/foundation-shared-components/components/FSLoadTile.vue";
|
|
27
|
+
import FSLoadTile from "@dative-gpi/foundation-shared-components/components/tiles/FSLoadTile.vue";
|
|
28
28
|
|
|
29
29
|
export default defineComponent({
|
|
30
30
|
name: "FSGroupTile",
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-core-components",
|
|
3
|
-
"
|
|
3
|
+
"sideEffects": false,
|
|
4
|
+
"version": "0.0.13",
|
|
4
5
|
"description": "",
|
|
5
6
|
"publishConfig": {
|
|
6
7
|
"access": "public"
|
|
@@ -9,11 +10,11 @@
|
|
|
9
10
|
"author": "",
|
|
10
11
|
"license": "ISC",
|
|
11
12
|
"dependencies": {
|
|
12
|
-
"@dative-gpi/foundation-core-domain": "0.0.
|
|
13
|
-
"@dative-gpi/foundation-core-services": "0.0.
|
|
14
|
-
"@dative-gpi/foundation-shared-components": "0.0.
|
|
15
|
-
"@dative-gpi/foundation-shared-domain": "0.0.
|
|
16
|
-
"@dative-gpi/foundation-shared-services": "0.0.
|
|
13
|
+
"@dative-gpi/foundation-core-domain": "0.0.13",
|
|
14
|
+
"@dative-gpi/foundation-core-services": "0.0.13",
|
|
15
|
+
"@dative-gpi/foundation-shared-components": "0.0.13",
|
|
16
|
+
"@dative-gpi/foundation-shared-domain": "0.0.13",
|
|
17
|
+
"@dative-gpi/foundation-shared-services": "0.0.13",
|
|
17
18
|
"color": "^4.2.3",
|
|
18
19
|
"vue": "^3.2.0",
|
|
19
20
|
"vuedraggable": "^4.1.0"
|
|
@@ -23,5 +24,5 @@
|
|
|
23
24
|
"sass": "^1.69.5",
|
|
24
25
|
"sass-loader": "^13.3.2"
|
|
25
26
|
},
|
|
26
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "c99a5f4be0427449b3b00ef6d467528bae8b1ada"
|
|
27
28
|
}
|