@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.
- package/components/autocompletes/FSAutocompleteChart.vue +7 -1
- package/components/autocompletes/FSAutocompleteDashboard.vue +7 -1
- package/components/autocompletes/FSAutocompleteDashboardOrganisation.vue +7 -1
- package/components/autocompletes/FSAutocompleteDataCategory.vue +11 -5
- package/components/autocompletes/FSAutocompleteDataDefinition.vue +7 -1
- package/components/autocompletes/FSAutocompleteGroup.vue +7 -1
- package/components/autocompletes/FSAutocompleteLocation.vue +6 -0
- package/components/autocompletes/FSAutocompleteManufacturer.vue +6 -0
- package/components/autocompletes/FSAutocompleteModel.vue +7 -1
- package/components/autocompletes/FSAutocompleteOrganisationType.vue +7 -1
- package/components/autocompletes/FSAutocompleteRole.vue +7 -1
- package/components/autocompletes/FSAutocompleteServiceAccountRoleOrganisation.vue +7 -1
- package/components/autocompletes/FSAutocompleteUserOrganisation.vue +7 -1
- package/components/explorers/FSBaseDevicesExplorer.vue +280 -0
- package/components/lists/alerts/FSBaseAlertsList.vue +2 -2
- package/components/lists/alerts/FSButtonAcknowledgeAlert.vue +4 -4
- package/components/lists/deviceOrganisations/FSBaseDeviceOrganisationsList.vue +0 -44
- package/components/treeviews/FSTreeViewGroup.vue +7 -1
- package/package.json +7 -7
|
@@ -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("
|
|
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("
|
|
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("
|
|
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('
|
|
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('
|
|
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('
|
|
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('
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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("
|
|
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('
|
|
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('
|
|
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('
|
|
4
|
+
:label="$tr('ui.alert.acknowledge', 'Acknowledge')"
|
|
5
5
|
@click="dialog = true"
|
|
6
6
|
/>
|
|
7
7
|
<FSDialogSubmit
|
|
8
|
-
:title="$tr('
|
|
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("
|
|
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("
|
|
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.
|
|
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.
|
|
14
|
-
"@dative-gpi/foundation-core-services": "1.0.
|
|
15
|
-
"@dative-gpi/foundation-shared-components": "1.0.
|
|
16
|
-
"@dative-gpi/foundation-shared-domain": "1.0.
|
|
17
|
-
"@dative-gpi/foundation-shared-services": "1.0.
|
|
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": "
|
|
29
|
+
"gitHead": "459a258053b4f0a24eede34e8278c7e2b6a218cf"
|
|
30
30
|
}
|