@dative-gpi/foundation-core-components 1.0.110 → 1.0.112

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,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.chart.label', 'Chart')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -116,6 +117,11 @@ export default defineComponent({
116
117
  type: Boolean,
117
118
  required: false,
118
119
  default: false
120
+ },
121
+ label: {
122
+ type: String as PropType<string | null>,
123
+ required: false,
124
+ default: null
119
125
  }
120
126
  },
121
127
  emits: ["update", "update:modelValue", "update:type"],
@@ -144,7 +150,7 @@ export default defineComponent({
144
150
 
145
151
  const placeholder = computed((): string | null => {
146
152
  if (props.multiple && props.modelValue) {
147
- return $tr("ui.autocomplete-chart.placeholder", "{0} chart(s) selected", props.modelValue.length);
153
+ return $tr("autocomplete.chart.placeholder", "{0} chart(s) selected", props.modelValue.length);
148
154
  }
149
155
  return null;
150
156
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.dashboard.label', 'Dashboard')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -123,6 +124,11 @@ export default defineComponent({
123
124
  type: Boolean,
124
125
  required: false,
125
126
  default: false
127
+ },
128
+ label: {
129
+ type: String as PropType<string | null>,
130
+ required: false,
131
+ default: null
126
132
  }
127
133
  },
128
134
  emits: ["update", "update:modelValue", "update:type"],
@@ -157,7 +163,7 @@ export default defineComponent({
157
163
 
158
164
  const placeholder = computed((): string | null => {
159
165
  if (props.multiple && props.modelValue) {
160
- return $tr("ui.autocomplete-dashboard.placeholder", "{0} dashboard(s) selected", props.modelValue.length);
166
+ return $tr("autocomplete.dashboard.placeholder", "{0} dashboard(s) selected", props.modelValue.length);
161
167
  }
162
168
  return null;
163
169
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.dashboard.label', 'Dashboard')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :items="dashboardOrganisations"
5
6
  :multiple="$props.multiple"
@@ -59,6 +60,11 @@ export default defineComponent({
59
60
  type: Boolean,
60
61
  required: false,
61
62
  default: false
63
+ },
64
+ label: {
65
+ type: String as PropType<string | null>,
66
+ required: false,
67
+ default: null
62
68
  }
63
69
  },
64
70
  emits: ["update:modelValue"],
@@ -72,7 +78,7 @@ export default defineComponent({
72
78
 
73
79
  const placeholder = computed((): string | null => {
74
80
  if (props.multiple && props.modelValue) {
75
- return $tr("ui.autocomplete-dashboard-organisation.placeholder", "{0} dashboard(s) selected", props.modelValue.length);
81
+ return $tr("autocomplete.dashboard.placeholder", "{0} dashboard(s) selected", props.modelValue.length);
76
82
  }
77
83
  return null;
78
84
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.data-category.label', 'Data category')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -15,13 +16,13 @@
15
16
  <FSChip
16
17
  v-if="item.correlated"
17
18
  prependIcon="mdi-link"
18
- :label="$tr('ui.autocomplete-data-category.linked','Linked')"
19
+ :label="$tr('autocomplete.data-category.linked','Linked')"
19
20
  :color="ColorEnum.Success"
20
21
  />
21
22
  <FSChip
22
23
  v-else
23
24
  prependIcon="mdi-link-off"
24
- :label="$tr('ui.autocomplete-data-category.not-linked','Not linked')"
25
+ :label="$tr('autocomplete.data-category.not-linked','Not linked')"
25
26
  :color="ColorEnum.Warning"
26
27
  />
27
28
  </template>
@@ -41,13 +42,13 @@
41
42
  <FSChip
42
43
  v-if="props.item.correlated"
43
44
  prependIcon="mdi-link"
44
- :label="$tr('ui.autocomplete-data-category.linked','Linked')"
45
+ :label="$tr('autocomplete.data-category.linked','Linked')"
45
46
  :color="ColorEnum.Success"
46
47
  />
47
48
  <FSChip
48
49
  v-else
49
50
  prependIcon="mdi-link-off"
50
- :label="$tr('ui.autocomplete-data-category.not-linked','Not linked')"
51
+ :label="$tr('autocomplete.data-category.not-linked','Not linked')"
51
52
  :color="ColorEnum.Warning"
52
53
  />
53
54
  </template>
@@ -96,6 +97,11 @@ export default defineComponent({
96
97
  type: Boolean,
97
98
  required: false,
98
99
  default: false
100
+ },
101
+ label: {
102
+ type: String as PropType<string | null>,
103
+ required: false,
104
+ default: null
99
105
  }
100
106
  },
101
107
  emits: ["update:modelValue"],
@@ -109,7 +115,7 @@ export default defineComponent({
109
115
 
110
116
  const placeholder = computed((): string | null => {
111
117
  if (props.multiple && props.modelValue) {
112
- return $tr("ui.autocomplete-data-category.placeholder", "{0} data category(ies) selected", props.modelValue.length);
118
+ return $tr("autocomplete.data-category.placeholder", "{0} data category(ies) selected", props.modelValue.length);
113
119
  }
114
120
  return null;
115
121
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.data-definition.label', 'Data')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -79,6 +80,11 @@ export default defineComponent({
79
80
  type: Boolean,
80
81
  required: false,
81
82
  default: false
83
+ },
84
+ label: {
85
+ type: String as PropType<string | null>,
86
+ required: false,
87
+ default: null
82
88
  }
83
89
  },
84
90
  emits: ["update:modelValue"],
@@ -92,7 +98,7 @@ export default defineComponent({
92
98
 
93
99
  const placeholder = computed((): string | null => {
94
100
  if (props.multiple && props.modelValue) {
95
- return $tr("ui.autocomplete-data-definition.placeholder", "{0} data definition(s) selected", props.modelValue.length);
101
+ return $tr("autocomplete.data-definition.placeholder", "{0} data definition(s) selected", props.modelValue.length);
96
102
  }
97
103
  return null;
98
104
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.group.label', 'Group')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -58,6 +59,11 @@ export default defineComponent({
58
59
  type: Boolean,
59
60
  required: false,
60
61
  default: false
62
+ },
63
+ label: {
64
+ type: String as PropType<string | null>,
65
+ required: false,
66
+ default: null
61
67
  }
62
68
  },
63
69
  emits: ["update:modelValue"],
@@ -71,7 +77,7 @@ export default defineComponent({
71
77
 
72
78
  const placeholder = computed((): string | null => {
73
79
  if (props.multiple && props.modelValue) {
74
- return $tr("ui.autocomplete-group.placeholder", "{0} group(s) selected", props.modelValue.length);
80
+ return $tr("autocomplete.group.placeholder", "{0} group(s) selected", props.modelValue.length);
75
81
  }
76
82
  return null;
77
83
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.location.label', 'Location')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -58,6 +59,11 @@ export default defineComponent({
58
59
  type: Boolean,
59
60
  required: false,
60
61
  default: false
62
+ },
63
+ label: {
64
+ type: String as PropType<string | null>,
65
+ required: false,
66
+ default: null
61
67
  }
62
68
  },
63
69
  emits: ["update:modelValue"],
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.manufacturer.label', 'Manufacturer')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -86,6 +87,11 @@ export default defineComponent({
86
87
  type: Boolean,
87
88
  required: false,
88
89
  default: false
90
+ },
91
+ label: {
92
+ type: String as PropType<string | null>,
93
+ required: false,
94
+ default: null
89
95
  }
90
96
  },
91
97
  emits: ["update:modelValue"],
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.model.label', 'Model')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -86,6 +87,11 @@ export default defineComponent({
86
87
  type: Boolean,
87
88
  required: false,
88
89
  default: false
90
+ },
91
+ label: {
92
+ type: String as PropType<string | null>,
93
+ required: false,
94
+ default: null
89
95
  }
90
96
  },
91
97
  emits: ["update:modelValue"],
@@ -99,7 +105,7 @@ export default defineComponent({
99
105
 
100
106
  const placeholder = computed((): string | null => {
101
107
  if (props.multiple && props.modelValue) {
102
- return $tr("ui.autocomplete-model.placeholder", "{0} model(s) selected", props.modelValue.length);
108
+ return $tr("autocomplete.model.placeholder", "{0} model(s) selected", props.modelValue.length);
103
109
  }
104
110
  return null;
105
111
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.organisation-type.label', 'Organisation type')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -46,6 +47,11 @@ export default defineComponent({
46
47
  type: Boolean,
47
48
  required: false,
48
49
  default: false
50
+ },
51
+ label: {
52
+ type: String as PropType<string | null>,
53
+ required: false,
54
+ default: null
49
55
  }
50
56
  },
51
57
  emits: ["update:modelValue"],
@@ -59,7 +65,7 @@ export default defineComponent({
59
65
 
60
66
  const placeholder = computed((): string | null => {
61
67
  if (props.multiple && props.modelValue) {
62
- return $tr("ui.autocomplete-organisation-type.placeholder", "{0} organisation type(s) selected", props.modelValue.length);
68
+ return $tr("autocomplete.organisation-type.placeholder", "{0} organisation type(s) selected", props.modelValue.length);
63
69
  }
64
70
  return null;
65
71
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.role.label', 'Role')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :multiple="$props.multiple"
5
6
  :placeholder="placeholder"
@@ -117,6 +118,11 @@ export default defineComponent({
117
118
  type: Boolean,
118
119
  required: false,
119
120
  default: false
121
+ },
122
+ label: {
123
+ type: String as PropType<string | null>,
124
+ required: false,
125
+ default: null
120
126
  }
121
127
  },
122
128
  emits: ["update", "update:modelValue", "update:type"],
@@ -145,7 +151,7 @@ export default defineComponent({
145
151
 
146
152
  const placeholder = computed((): string | null => {
147
153
  if (props.multiple && props.modelValue) {
148
- return $tr("ui.autocomplete-role.placeholder", "{0} role(s) selected", props.modelValue.length);
154
+ return $tr("autocomplete.role.placeholder", "{0} role(s) selected", props.modelValue.length);
149
155
  }
150
156
  return null;
151
157
  });
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
+ :label="$props.label ?? $tr('autocomplete.service-account-role.label', 'Service account role')"
3
4
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
4
5
  :items="serviceAccountRoleOrganisations"
5
6
  :multiple="$props.multiple"
@@ -58,6 +59,11 @@ export default defineComponent({
58
59
  type: Boolean,
59
60
  required: false,
60
61
  default: false
62
+ },
63
+ label: {
64
+ type: String as PropType<string | null>,
65
+ required: false,
66
+ default: null
61
67
  }
62
68
  },
63
69
  emits: ["update:modelValue"],
@@ -71,7 +77,7 @@ export default defineComponent({
71
77
 
72
78
  const placeholder = computed((): string | null => {
73
79
  if (props.multiple && props.modelValue) {
74
- return $tr("ui.autocomplete-service-account-role-organisation.placeholder", "{0} role(s) selected", props.modelValue.length);
80
+ return $tr("autocomplete.service-account-role.placeholder", "{0} role(s) selected", props.modelValue.length);
75
81
  }
76
82
  return null;
77
83
  });
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <FSAutocompleteField
3
3
  itemTitle="name"
4
+ :label="$props.label ?? $tr('autocomplete.user.label', 'User')"
4
5
  :toggleSet="!$props.toggleSetDisabled && toggleSet"
5
6
  :multiple="$props.multiple"
6
7
  :placeholder="placeholder"
@@ -87,6 +88,11 @@ export default defineComponent({
87
88
  type: Boolean,
88
89
  required: false,
89
90
  default: false
91
+ },
92
+ label: {
93
+ type: String as PropType<string | null>,
94
+ required: false,
95
+ default: null
90
96
  }
91
97
  },
92
98
  emits: ["update:modelValue"],
@@ -100,7 +106,7 @@ export default defineComponent({
100
106
 
101
107
  const placeholder = computed((): string | null => {
102
108
  if (props.multiple && props.modelValue) {
103
- return $tr("ui.autocomplete-user-organisation.placeholder", "{0} user(s) selected", props.modelValue.length);
109
+ return $tr("autocomplete.user.placeholder", "{0} user(s) selected", props.modelValue.length);
104
110
  }
105
111
  return null;
106
112
  });
@@ -0,0 +1,280 @@
1
+ <template>
2
+ <FSDataTable
3
+ defaultMode="iterator"
4
+ :loading="fetchingDeviceExplorerElements"
5
+ :singleSelect="$props.singleSelect"
6
+ :items="deviceExplorerElements"
7
+ :showSelect="$props.editable"
8
+ :tableCode="$props.tableCode"
9
+ :itemTo="$props.itemTo"
10
+ :noSearch="true"
11
+ :modelValue="$props.modelValue"
12
+ @update:modelValue="$emit('update:modelValue', $event)"
13
+ v-model:search="search"
14
+ v-bind="$attrs"
15
+ >
16
+ <template
17
+ v-for="(_, name) in $slots"
18
+ v-slot:[name]="slotData"
19
+ >
20
+ <slot
21
+ :name="name"
22
+ v-bind="slotData"
23
+ />
24
+ </template>
25
+ <template
26
+ #header.imageId-title
27
+ >
28
+ <FSIcon>
29
+ mdi-panorama-variant-outline
30
+ </FSIcon>
31
+ </template>
32
+ <template
33
+ #header.connectivity-title
34
+ >
35
+ <FSIcon>
36
+ mdi-wifi
37
+ </FSIcon>
38
+ </template>
39
+ <template
40
+ #item.imageId="{ item }"
41
+ >
42
+ <FSImage
43
+ v-if="item.imageId"
44
+ height="32px"
45
+ width="32px"
46
+ :imageId="item.imageId"
47
+ :thumbnail="true"
48
+ />
49
+ </template>
50
+ <template
51
+ #item.tags="{ item }"
52
+ >
53
+ <FSTagGroup
54
+ variant="slide"
55
+ :editable="false"
56
+ :tags="item.tags"
57
+ />
58
+ </template>
59
+ <template
60
+ #item.type="{ item }"
61
+ >
62
+ <FSIcon
63
+ v-if="item.type === DeviceExplorerElementType.Group"
64
+ >
65
+ mdi-folder-outline
66
+ </FSIcon>
67
+ <FSIcon
68
+ v-else
69
+ >
70
+ mdi-widgets-outline
71
+ </FSIcon>
72
+ </template>
73
+
74
+ <template
75
+ #item.icon="{ item }"
76
+ >
77
+ <FSIcon
78
+ v-if="item.type === DeviceExplorerElementType.Group"
79
+ >
80
+ {{ item.icon }}
81
+ </FSIcon>
82
+ </template>
83
+ <template
84
+ #item.connectivity="{ item }"
85
+ >
86
+ <FSCol
87
+ v-if="item.type === DeviceExplorerElementType.DeviceOrganisation"
88
+ >
89
+ <FSConnectivity
90
+ v-if="item.connectivity.status != ConnectivityStatus.None"
91
+ :deviceConnectivity="item.connectivity"
92
+ />
93
+ </FSCol>
94
+ </template>
95
+ <template
96
+ #item.worstAlert="{ item }"
97
+ >
98
+ <FSWorstAlert
99
+ v-if="item.worstAlert"
100
+ :deviceWorstAlert="item.worstAlert"
101
+ :deviceAlerts="item.alerts"
102
+ :alertTo="$props.alertTo"
103
+ />
104
+ <div
105
+ v-else
106
+ />
107
+ </template>
108
+ <template
109
+ #item.alerts="{ item }"
110
+ >
111
+ <FSWorstAlert
112
+ v-if="item.worstAlert"
113
+ :deviceWorstAlert="item.worstAlert"
114
+ :deviceAlerts="item.alerts"
115
+ :alertTo="$props.alertTo"
116
+ />
117
+ <div
118
+ v-else
119
+ />
120
+ </template>
121
+ <template
122
+ #item.status="{ item }"
123
+ >
124
+ <FSStatusesCarousel
125
+ v-if="item.type === DeviceExplorerElementType.DeviceOrganisation"
126
+ :modelStatuses="item.modelStatuses"
127
+ :deviceStatuses="item.status.statuses"
128
+ />
129
+ </template>
130
+
131
+ <template
132
+ #item.tile="{ item, toggleSelect }"
133
+ >
134
+ <FSGroupTileUI
135
+ v-if="item.type === DeviceExplorerElementType.Group"
136
+ :to="$props.itemTo && $props.itemTo(item)"
137
+ :modelValue="isSelected(item.id)"
138
+ @update:modelValue="toggleSelect(item)"
139
+ v-bind="item"
140
+ />
141
+ <FSDeviceOrganisationTileUI
142
+ v-if="item.type === DeviceExplorerElementType.DeviceOrganisation"
143
+ :to="$props.itemTo && $props.itemTo(item)"
144
+ :deviceConnectivity="item.connectivity"
145
+ :deviceStatuses="item.status.statuses"
146
+ :deviceWorstAlert="item.worstAlert"
147
+ :deviceAlerts="item.alerts"
148
+ :alertTo="$props.alertTo"
149
+ :modelValue="isSelected(item.id)"
150
+ @update:modelValue="toggleSelect(item)"
151
+ v-bind="item"
152
+ />
153
+ </template>
154
+ </FSDataTable>
155
+ </template>
156
+
157
+ <script lang="ts">
158
+ import { computed, defineComponent, type PropType, ref, watch } from "vue";
159
+ import { type RouteLocation } from "vue-router";
160
+ import _ from "lodash";
161
+
162
+ import { type DeviceExplorerElementFilters, type DeviceExplorerElementInfos} from "@dative-gpi/foundation-core-domain/models";
163
+ import { ConnectivityStatus, DeviceExplorerElementType } from "@dative-gpi/foundation-shared-domain/enums";
164
+ import { useDeviceExplorerElements } from "@dative-gpi/foundation-core-services/composables";
165
+ import { useDebounce } from "@dative-gpi/foundation-shared-components/composables";
166
+
167
+ import FSDeviceOrganisationTileUI from "@dative-gpi/foundation-shared-components/components/tiles/FSDeviceOrganisationTileUI.vue";
168
+ import FSStatusesCarousel from "@dative-gpi/foundation-shared-components/components/deviceOrganisations/FSStatusesCarousel.vue";
169
+ import FSConnectivity from "@dative-gpi/foundation-shared-components/components/deviceOrganisations/FSConnectivity.vue";
170
+ import FSWorstAlert from "@dative-gpi/foundation-shared-components/components/deviceOrganisations/FSWorstAlert.vue";
171
+ import FSGroupTileUI from "@dative-gpi/foundation-shared-components/components/tiles/FSGroupTileUI.vue";
172
+ import FSTagGroup from "@dative-gpi/foundation-shared-components/components/FSTagGroup.vue";
173
+ import FSImage from "@dative-gpi/foundation-shared-components/components/FSImage.vue";
174
+
175
+ import FSDataTable from "../lists/FSDataTable.vue";
176
+
177
+ export default defineComponent({
178
+ name: "FSBaseDevicesExplorer",
179
+ components: {
180
+ FSDeviceOrganisationTileUI,
181
+ FSStatusesCarousel,
182
+ FSConnectivity,
183
+ FSGroupTileUI,
184
+ FSWorstAlert,
185
+ FSDataTable,
186
+ FSTagGroup,
187
+ FSImage
188
+ },
189
+ props: {
190
+ tableCode: {
191
+ type: String as PropType<string | null>,
192
+ required: false,
193
+ default: null
194
+ },
195
+ deviceExplorerElementFilters: {
196
+ type: Object as PropType<DeviceExplorerElementFilters>,
197
+ required: false,
198
+ default: null
199
+ },
200
+ connectedOnly: {
201
+ type: Boolean,
202
+ required: false,
203
+ default: false
204
+ },
205
+ itemTo: {
206
+ type: Function as PropType<(item: DeviceExplorerElementInfos) => Partial<RouteLocation>>,
207
+ required: false
208
+ },
209
+ alertTo: {
210
+ type: Function,
211
+ required: false,
212
+ default: null
213
+ },
214
+ editable: {
215
+ type: Boolean,
216
+ required: false,
217
+ default: true
218
+ },
219
+ singleSelect: {
220
+ type: Boolean,
221
+ required: false,
222
+ default: false
223
+ },
224
+ modelValue: {
225
+ type: Array as PropType<string[]>,
226
+ default: () => [],
227
+ required: false
228
+ }
229
+ },
230
+ emits: ["update:modelValue"],
231
+ setup(props) {
232
+ const { entities, fetching: fetchingDeviceExplorerElements, getMany: getManyDeviceExplorerElements } = useDeviceExplorerElements();
233
+ const { debounce } = useDebounce();
234
+
235
+ const search = ref("");
236
+
237
+ const deviceExplorerElements = computed((): DeviceExplorerElementInfos[] => {
238
+ if (props.connectedOnly) {
239
+ return entities.value.filter(dee =>
240
+ dee.type === DeviceExplorerElementType.Group ||
241
+ (dee.connectivity != null && dee.connectivity.status != ConnectivityStatus.None)
242
+ );
243
+ }
244
+ return entities.value;
245
+ });
246
+
247
+ const isSelected = (id: string): boolean => {
248
+ return props.modelValue.includes(id);
249
+ };
250
+
251
+ const fetch = () => {
252
+ getManyDeviceExplorerElements({ ...props.deviceExplorerElementFilters, search: search.value });
253
+ }
254
+
255
+ // Delay to wait before fetching after a search change
256
+ const debounceFetch = (): void => debounce(fetch, 1500);
257
+
258
+ watch(() => props.deviceExplorerElementFilters, (next, previous) => {
259
+ if ((!next && !previous) || !_.isEqual(next, previous)) {
260
+ fetch();
261
+ }
262
+ }, { immediate: true });
263
+
264
+ watch(search, (next, previous) => {
265
+ if (next !== previous && next.length === 0 || next.length >= 3) {
266
+ debounceFetch();
267
+ }
268
+ });
269
+
270
+ return {
271
+ fetchingDeviceExplorerElements,
272
+ DeviceExplorerElementType,
273
+ deviceExplorerElements,
274
+ ConnectivityStatus,
275
+ search,
276
+ isSelected
277
+ };
278
+ }
279
+ });
280
+ </script>
@@ -23,12 +23,12 @@
23
23
  #toolbar
24
24
  >
25
25
  <FSButtonCheckbox
26
- :label="$tr('page.alerts.not-acknowledged-only', 'Not acknowledged only')"
26
+ :label="$tr('ui.alert.not-acknowledged-only', 'Not acknowledged only')"
27
27
  :color="ColorEnum.Warning"
28
28
  v-model="innerNotTreatedOnly"
29
29
  />
30
30
  <FSButtonCheckbox
31
- :label="$tr('page.alerts.hide-pending', 'Hide pending')"
31
+ :label="$tr('ui.alert.hide-pending', 'Hide pending')"
32
32
  :color="ColorEnum.Light"
33
33
  variant="full"
34
34
  v-model="innerHidePending"
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <FSButton
3
3
  prependIcon="mdi-checkbox-blank-outline"
4
- :label="$tr('page.alert.acknowledge', 'Acknowledge')"
4
+ :label="$tr('ui.alert.acknowledge', 'Acknowledge')"
5
5
  @click="dialog = true"
6
6
  />
7
7
  <FSDialogSubmit
8
- :title="$tr('page.alert.acknowledge', 'Acknowledge')"
8
+ :title="$tr('ui.alert.acknowledge', 'Acknowledge')"
9
9
  :load="acknowledgingAlert"
10
10
  @click:submitButton="onAcknowledge"
11
11
  v-model="dialog"
@@ -26,12 +26,12 @@
26
26
  gap="2px"
27
27
  >
28
28
  <FSSpan>
29
- {{ $tr("page.alert.acknowledge-warning", "Do you want to acknowledge this alert?") }}
29
+ {{ $tr("ui.alert.acknowledge-warning", "Do you want to acknowledge this alert?") }}
30
30
  </FSSpan>
31
31
  </FSRow>
32
32
  </FSRow>
33
33
  <FSSpan>
34
- {{ $tr("page.alert.acknowledge-final-warning", "This action is definitive") }}
34
+ {{ $tr("ui.alert.acknowledge-final-warning", "This action is definitive") }}
35
35
  </FSSpan>
36
36
  <FSErrorToast
37
37
  v-if="error"
@@ -28,13 +28,6 @@
28
28
  mdi-panorama-variant-outline
29
29
  </FSIcon>
30
30
  </template>
31
- <template
32
- #header.connectable-title
33
- >
34
- <FSIcon>
35
- mdi-wifi
36
- </FSIcon>
37
- </template>
38
31
  <template
39
32
  #header.connectivity-title
40
33
  >
@@ -53,16 +46,6 @@
53
46
  :thumbnail="true"
54
47
  />
55
48
  </template>
56
- <template
57
- #item.connectable="{ item }"
58
- >
59
- <FSCol>
60
- <FSConnectivity
61
- v-if="item.connectivity.status != ConnectivityStatus.None"
62
- :deviceConnectivity="item.connectivity"
63
- />
64
- </FSCol>
65
- </template>
66
49
  <template
67
50
  #item.connectivity="{ item }"
68
51
  >
@@ -262,33 +245,6 @@ export default defineComponent({
262
245
  });
263
246
 
264
247
  const headersOptions = computed(() => ({
265
- connectable: {
266
- fixedFilters: [{
267
- value: ConnectivityStatus.None,
268
- text: "—"
269
- }, {
270
- value: ConnectivityStatus.Offline,
271
- text: connectivityLabel(ConnectivityStatus.Offline)
272
- }, {
273
- value: ConnectivityStatus.AlmostOffline,
274
- text: connectivityLabel(ConnectivityStatus.AlmostOffline)
275
- }, {
276
- value: ConnectivityStatus.PartiallyConnected,
277
- text: connectivityLabel(ConnectivityStatus.PartiallyConnected)
278
- }, {
279
- value: ConnectivityStatus.Connected,
280
- text: connectivityLabel(ConnectivityStatus.Connected)
281
- }],
282
- methodFilter: (value: ConnectivityStatus, item: DeviceConnectivityDetails) => {
283
- switch(value) {
284
- case ConnectivityStatus.None:
285
- return !item.status;
286
- default:
287
- return item.status == value;
288
- }
289
- },
290
- sort: (a: DeviceConnectivityDetails, b: DeviceConnectivityDetails) => alphanumericSort(a?.status, b?.status)
291
- },
292
248
  connectivity: {
293
249
  fixedFilters: [{
294
250
  value: ConnectivityStatus.None,
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <FSTreeViewField
3
+ :label="$props.label ?? $tr('tree-view.group.label', 'Group')"
3
4
  :multiple="$props.multiple"
4
5
  :loading="fetchingGroups"
5
6
  :items="groups"
@@ -55,7 +56,12 @@ export default defineComponent({
55
56
  type: Boolean,
56
57
  required: false,
57
58
  default: false
58
- }
59
+ },
60
+ label: {
61
+ type: String as PropType<string | null>,
62
+ required: false,
63
+ default: null
64
+ }
59
65
  },
60
66
  emits: ["update:modelValue"],
61
67
  setup(props, { emit }) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dative-gpi/foundation-core-components",
3
3
  "sideEffects": false,
4
- "version": "1.0.110",
4
+ "version": "1.0.112",
5
5
  "description": "",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -10,11 +10,11 @@
10
10
  "author": "",
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
- "@dative-gpi/foundation-core-domain": "1.0.110",
14
- "@dative-gpi/foundation-core-services": "1.0.110",
15
- "@dative-gpi/foundation-shared-components": "1.0.110",
16
- "@dative-gpi/foundation-shared-domain": "1.0.110",
17
- "@dative-gpi/foundation-shared-services": "1.0.110"
13
+ "@dative-gpi/foundation-core-domain": "1.0.112",
14
+ "@dative-gpi/foundation-core-services": "1.0.112",
15
+ "@dative-gpi/foundation-shared-components": "1.0.112",
16
+ "@dative-gpi/foundation-shared-domain": "1.0.112",
17
+ "@dative-gpi/foundation-shared-services": "1.0.112"
18
18
  },
19
19
  "peerDependencies": {
20
20
  "@dative-gpi/bones-ui": "^1.0.0",
@@ -26,5 +26,5 @@
26
26
  "sass": "1.71.1",
27
27
  "sass-loader": "13.3.2"
28
28
  },
29
- "gitHead": "ce27d3542d6a82946127e9004d82ff2f401d7242"
29
+ "gitHead": "459a258053b4f0a24eede34e8278c7e2b6a218cf"
30
30
  }