bfg-common 1.5.676 → 1.5.677

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 (26) hide show
  1. package/components/common/layout/bottomPanel/BottomPanel.vue +84 -0
  2. package/components/common/layout/bottomPanel/New.vue +243 -0
  3. package/components/common/layout/bottomPanel/Old.vue +160 -0
  4. package/components/common/layout/bottomPanel/alarms/Alarms.vue +76 -0
  5. package/components/common/layout/bottomPanel/alarms/lib/models/interfaces.ts +23 -0
  6. package/components/common/layout/bottomPanel/alarms/new/New.vue +212 -0
  7. package/components/common/layout/bottomPanel/alarms/new/lib/config/config.ts +193 -0
  8. package/components/common/layout/bottomPanel/alarms/new/lib/models/enums.ts +10 -0
  9. package/components/common/layout/bottomPanel/alarms/new/lib/models/interfaces.ts +12 -0
  10. package/components/common/layout/bottomPanel/alarms/old/Old.vue +191 -0
  11. package/components/common/layout/bottomPanel/alarms/old/lib/config/alarmTables.ts +89 -0
  12. package/components/common/layout/bottomPanel/alarms/old/lib/config/tableKeys.ts +11 -0
  13. package/components/common/layout/bottomPanel/alarms/old/lib/models/types.ts +8 -0
  14. package/components/common/layout/bottomPanel/lib/config/statusFilter.ts +19 -0
  15. package/components/common/layout/bottomPanel/lib/models/types.ts +1 -0
  16. package/components/common/layout/bottomPanel/recentTasks/RecentTasks.vue +49 -0
  17. package/components/common/layout/bottomPanel/recentTasks/lib/models/interfaces.ts +14 -0
  18. package/components/common/layout/bottomPanel/recentTasks/new/New.vue +428 -0
  19. package/components/common/layout/bottomPanel/recentTasks/new/lib/config/config.ts +259 -0
  20. package/components/common/layout/bottomPanel/recentTasks/old/Old.vue +277 -0
  21. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/recentTaskTable.ts +240 -0
  22. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/tableKeys.ts +15 -0
  23. package/components/common/layout/bottomPanel/recentTasks/old/lib/models/types.ts +14 -0
  24. package/components/common/pages/auth/TheFooter.vue +104 -104
  25. package/lib/models/enums.ts +65 -1
  26. package/package.json +1 -1
@@ -0,0 +1,84 @@
1
+ <template>
2
+ <component
3
+ :is="currentComponent"
4
+ v-model:selected-tab="activeTabModel"
5
+ v-model:status-filter="statusFilter"
6
+ :panel-collapsed-model="panelCollapsedModel"
7
+ :tab-list="props.tabList"
8
+ :data-table-recent-tasks="props.dataTableRecentTasks"
9
+ :total-items-recent-tasks="props.totalItemsRecentTasks"
10
+ :total-pages-recent-tasks="props.totalPagesRecentTasks"
11
+ :pagination-recent-tasks="props.paginationRecentTasks"
12
+ :loading-recent-tasks="props.loadingRecentTasks"
13
+ :data-table-alarms="props.dataTableAlarms"
14
+ :loading-alarms="props.loadingAlarms"
15
+ @collapse-panel="onCollapseBottomPanel"
16
+ @change-tab="emits('change-tab')"
17
+ @sort-recent-task="emits('sort-recent-task', $event)"
18
+ @pagination-recent-task="emits('pagination-recent-task', $event)"
19
+ @pause-global-refresh-alarms="emits('pause-global-refresh-alarms')"
20
+ @get-alarms="emits('get-alarms', $event)"
21
+ />
22
+ </template>
23
+
24
+ <script setup lang="ts">
25
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
26
+ import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
27
+ import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
28
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
29
+ import type {
30
+ UI_I_Alarm,
31
+ UI_I_AlarmPayload,
32
+ } from '~/components/common/layout/bottomPanel/alarms/lib/models/interfaces'
33
+ import type { UI_T_BottomPanelTabType } from '~/components/common/layout/bottomPanel/lib/models/types'
34
+ import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
35
+
36
+ const panelCollapsedModel = defineModel<boolean>('panelCollapsed', {
37
+ required: true,
38
+ })
39
+ const activeTabModel = defineModel<UI_T_BottomPanelTabType>('selectedTab', {
40
+ required: true,
41
+ })
42
+ const props = withDefaults(
43
+ defineProps<{
44
+ tabList: UI_I_CollapseNavItem[]
45
+ dataTableRecentTasks: UI_I_RecentTaskItem<UI_T_NodeType>[]
46
+ totalItemsRecentTasks: number
47
+ totalPagesRecentTasks: number
48
+ paginationRecentTasks: UI_I_Pagination
49
+ loadingRecentTasks: boolean
50
+ dataTableAlarms?: UI_I_Alarm | null
51
+ loadingAlarms?: boolean
52
+ }>(),
53
+ {
54
+ dataTableAlarms: null,
55
+ loadingAlarms: false,
56
+ }
57
+ )
58
+
59
+ const emits = defineEmits<{
60
+ (event: 'change-tab'): void
61
+ (event: 'sort-recent-task', value: string): void
62
+ (event: 'pagination-recent-task', value: UI_I_Pagination | null): void
63
+ (event: 'pause-global-refresh-alarms'): void
64
+ (event: 'get-alarms', value: UI_I_AlarmPayload): void
65
+ }>()
66
+
67
+ const { $store }: any = useNuxtApp()
68
+
69
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
70
+
71
+ const currentComponent = computed(() =>
72
+ isNewView.value
73
+ ? defineAsyncComponent(() => import('./New.vue'))
74
+ : defineAsyncComponent(() => import('./Old.vue'))
75
+ )
76
+
77
+ const onCollapseBottomPanel = (): void => {
78
+ panelCollapsedModel.value = !panelCollapsedModel.value
79
+ }
80
+
81
+ const statusFilter = ref<UI_T_SelectedStatus>(-1)
82
+ </script>
83
+
84
+ <style scoped lang="scss"></style>
@@ -0,0 +1,243 @@
1
+ <template>
2
+ <div
3
+ :class="[
4
+ 'bottom-panel flex flex-col h-full',
5
+ { collapsed: props.panelCollapsedModel },
6
+ ]"
7
+ >
8
+ <div class="bottom-panel__tab-list flex">
9
+ <div class="bottom-panel__collapse relative">
10
+ <button
11
+ id="bottom-panel-collapse"
12
+ data-id="bottom-panel-toggle-button"
13
+ class="btn-collapse flex items-center"
14
+ @click="emits('collapse-panel')"
15
+ >
16
+ <ui-icon class="collapse-icon" name="arrow" />
17
+ </button>
18
+ </div>
19
+ <ui-tabs
20
+ v-model="activeTabModel"
21
+ :tabs="tabListLocal"
22
+ test-id="bottom-panel-tab-list"
23
+ type="underline"
24
+ class="bottom-panel__tab"
25
+ @change="emits('change-tab')"
26
+ >
27
+ </ui-tabs>
28
+
29
+ <div
30
+ v-show="isShowRecentTasksActions"
31
+ class="actions flex items-center gap-4 pr-4"
32
+ >
33
+ <ui-select
34
+ v-model="statusFilter"
35
+ :items="statusFilterItems"
36
+ test-id="status-filter"
37
+ class="status-filter-select"
38
+ />
39
+ <ui-button
40
+ test-id="more-tasks-button"
41
+ variant="primary"
42
+ type="text"
43
+ class="more-tasks-button"
44
+ is-without-sizes
45
+ @click="onNavigateToTasksPage"
46
+ >
47
+ {{ localization.tasks.moreTasks }}
48
+ </ui-button>
49
+ </div>
50
+ </div>
51
+ <div
52
+ v-show="!props.panelCollapsedModel"
53
+ class="bottom-panel__table-wrapper overflow-hidden"
54
+ >
55
+ <common-layout-bottom-panel-recent-tasks
56
+ v-show="activeTabModel === 'recentTask'"
57
+ v-model:status-filter="statusFilter"
58
+ :data-table="props.dataTableRecentTasks"
59
+ :total-items="props.totalItemsRecentTasks"
60
+ :total-pages="props.totalPagesRecentTasks"
61
+ :pagination="props.paginationRecentTasks"
62
+ :loading="props.loadingRecentTasks"
63
+ @sort="emits('sort-recent-task', $event)"
64
+ @pagination="emits('pagination-recent-task', $event)"
65
+ />
66
+ <common-layout-bottom-panel-alarms
67
+ v-show="activeTabModel === 'alarms'"
68
+ :data-table="props.dataTableAlarms"
69
+ :is-loading="props.loadingAlarms"
70
+ @pause-global-refresh="emits('pause-global-refresh-alarms')"
71
+ @get-alarms="emits('get-alarms', $event)"
72
+ />
73
+ </div>
74
+ </div>
75
+ </template>
76
+
77
+ <script setup lang="ts">
78
+ import type { UI_I_TabItem } from '~/node_modules/bfg-uikit/components/ui/tabs/models/interfaces'
79
+ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
80
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
81
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
82
+ import type { UI_T_BottomPanelTabType } from '~/components/common/layout/bottomPanel/lib/models/types'
83
+ import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
84
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
85
+ import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
86
+ import type {
87
+ UI_I_Alarm,
88
+ UI_I_AlarmPayload,
89
+ } from '~/components/common/layout/bottomPanel/alarms/lib/models/interfaces'
90
+ import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
91
+ import { statusFilterItemsFunc } from '~/components/common/layout/bottomPanel/lib/config/statusFilter'
92
+
93
+ const activeTabModel = defineModel<UI_T_BottomPanelTabType>('selectedTab', {
94
+ required: true,
95
+ })
96
+ const statusFilter = defineModel<UI_T_SelectedStatus>('statusFilter', {
97
+ required: true,
98
+ })
99
+
100
+ const props = defineProps<{
101
+ panelCollapsedModel: boolean
102
+ tabList: UI_I_CollapseNavItem[]
103
+ dataTableRecentTasks: UI_I_RecentTaskItem<UI_T_NodeType>[]
104
+ totalItemsRecentTasks: number
105
+ totalPagesRecentTasks: number
106
+ paginationRecentTasks: UI_I_Pagination
107
+ loadingRecentTasks: boolean
108
+ dataTableAlarms: UI_I_Alarm | null
109
+ loadingAlarms: boolean
110
+ }>()
111
+
112
+ const emits = defineEmits<{
113
+ (event: 'collapse-panel'): void
114
+ (event: 'change-tab'): void
115
+ (event: 'sort-recent-task', value: string): void
116
+ (event: 'pagination-recent-task', value: UI_I_Pagination | null): void
117
+ (event: 'pause-global-refresh-alarms'): void
118
+ (event: 'get-alarms', value: UI_I_AlarmPayload): void
119
+ }>()
120
+
121
+ const tabListLocal = computed<UI_I_TabItem[]>(() =>
122
+ props.tabList.map(({ value, text: name, testId, development }) => ({
123
+ name,
124
+ development,
125
+ value: value + '',
126
+ testId: testId + '',
127
+ }))
128
+ )
129
+
130
+ const localization = computed<UI_I_Localization>(() => useLocal())
131
+ const statusFilterItems = ref<UI_I_Dropdown[]>(
132
+ statusFilterItemsFunc(localization.value)
133
+ )
134
+
135
+ const onNavigateToTasksPage = (): void => {
136
+ const router = useRouter()
137
+ router.push('/tasks')
138
+ }
139
+
140
+ const isShowRecentTasksActions = computed<boolean>(
141
+ () => activeTabModel.value === 'recentTask' && !props.panelCollapsedModel
142
+ )
143
+ </script>
144
+
145
+ <style>
146
+ :root {
147
+ --bottom-pannel-bg-color: #fff;
148
+ --bottom-pannel-border-color: #e9ebed;
149
+ --bottom-pannel-rtask-link-text: #008fd6;
150
+ --bottom-pannel-rtask-link-hover-text: #0081c1;
151
+ --bottom-pannel-divider-color: #e9ebeda3;
152
+ --bottom-pannel-collapse-button-icon: #213444;
153
+ }
154
+ :root.dark-theme {
155
+ --bottom-pannel-bg-color: #213444;
156
+ --bottom-pannel-border-color: #e9ebed1f;
157
+ --bottom-pannel-rtask-link-text: #2ba2de;
158
+ --bottom-pannel-rtask-link-hover-text: #008fd6;
159
+ --bottom-pannel-divider-color: #e9ebed1f;
160
+ --bottom-pannel-collapse-button-icon: #e9eaec;
161
+ }
162
+ </style>
163
+ <style scoped lang="scss">
164
+ @import '~/assets/scss/common/mixins';
165
+ .bottom-panel {
166
+ background-color: var(--bottom-pannel-bg-color);
167
+
168
+ &__tab-list {
169
+ border-bottom: 1px solid var(--bottom-pannel-border-color);
170
+ }
171
+ &__tab {
172
+ align-items: flex-end;
173
+ margin-left: 16px;
174
+
175
+ &.tabs-wrapper.is-link:before {
176
+ display: none;
177
+ }
178
+ .collapsed &.tabs-wrapper.is-link {
179
+ :deep(.tab-item.active.tab-underline) {
180
+ border-bottom: 3px solid transparent;
181
+ }
182
+ }
183
+ }
184
+ &__table-wrapper {
185
+ height: inherit;
186
+ }
187
+
188
+ .btn-collapse {
189
+ border: 0;
190
+ outline: none;
191
+ background-color: transparent;
192
+ cursor: pointer;
193
+
194
+ .collapse-icon {
195
+ width: 20px;
196
+ height: 20px;
197
+ transform: rotate(180deg);
198
+ color: var(--bottom-pannel-collapse-button-icon);
199
+
200
+ .collapsed & {
201
+ transform: rotate(0deg);
202
+ }
203
+ }
204
+ }
205
+ &__collapse {
206
+ padding: 12px 16px;
207
+
208
+ &:before {
209
+ content: '';
210
+ position: absolute;
211
+ top: 8px;
212
+ right: 0;
213
+ bottom: 8px;
214
+ width: 1px;
215
+ background-color: var(--bottom-pannel-divider-color);
216
+ }
217
+ }
218
+
219
+ .actions {
220
+ flex: 1;
221
+ justify-content: flex-end;
222
+
223
+ .more-tasks-button {
224
+ width: auto;
225
+ }
226
+
227
+ :deep(.ui-select-toggle-button) {
228
+ height: 24px;
229
+ min-width: 80px;
230
+ padding: 4px 4px 4px 8px;
231
+ border-radius: 6px;
232
+ }
233
+ :deep(.ui-popup-window) {
234
+ border-radius: 6px;
235
+ width: unset !important;
236
+ }
237
+ }
238
+ }
239
+
240
+ :deep(.table-container.default-layout) {
241
+ border-radius: 0;
242
+ }
243
+ </style>
@@ -0,0 +1,160 @@
1
+ <template>
2
+ <div
3
+ :class="[
4
+ 'bottom-panel flex flex-col h-full',
5
+ { collapsed: props.panelCollapsedModel },
6
+ ]"
7
+ >
8
+ <div class="flex">
9
+ <div class="bottom-panel__trigger">
10
+ <button
11
+ id="bottom-panel-trigger"
12
+ data-id="bottom-panel-toggle-button"
13
+ class="btn-trigger flex items-center"
14
+ @click="emits('collapse-panel')"
15
+ >
16
+ <atoms-the-icon class="trigger-icon" name="angle" />
17
+ </button>
18
+ </div>
19
+ <atoms-nav-bar
20
+ v-model="activeTabModel"
21
+ :items="props.tabList"
22
+ :class="[
23
+ 'bottom-panel__tabs',
24
+ props.panelCollapsedModel && 'collapsed',
25
+ ]"
26
+ test-id="bottom-panel-nav-bar"
27
+ @change="emits('change-tab')"
28
+ />
29
+ </div>
30
+ <div
31
+ v-show="!props.panelCollapsedModel"
32
+ class="bottom-panel__table-wrapper overflow-hidden"
33
+ >
34
+ <common-layout-bottom-panel-recent-tasks
35
+ v-show="activeTabModel === 'recentTask'"
36
+ v-model:status-filter="statusFilter"
37
+ :data-table="props.dataTableRecentTasks"
38
+ :total-items="props.totalItemsRecentTasks"
39
+ :total-pages="props.totalPagesRecentTasks"
40
+ :pagination="props.paginationRecentTasks"
41
+ :loading="props.loadingRecentTasks"
42
+ @sort="emits('sort-recent-task', $event)"
43
+ @pagination="emits('pagination-recent-task', $event)"
44
+ />
45
+ <common-layout-bottom-panel-alarms
46
+ v-show="activeTabModel === 'alarms'"
47
+ :data-table="props.dataTableAlarms"
48
+ :is-loading="props.loadingAlarms"
49
+ @pause-global-refresh="emits('pause-global-refresh-alarms')"
50
+ @get-alarms="emits('get-alarms', $event)"
51
+ />
52
+ </div>
53
+ </div>
54
+ </template>
55
+
56
+ <script setup lang="ts">
57
+ import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
58
+ import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
59
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
60
+ import type {
61
+ UI_I_Alarm,
62
+ UI_I_AlarmPayload,
63
+ } from '~/components/common/layout/bottomPanel/alarms/lib/models/interfaces'
64
+ import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
65
+ import type { UI_T_BottomPanelTabType } from '~/components/common/layout/bottomPanel/lib/models/types'
66
+ import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
67
+
68
+ const statusFilter = defineModel<UI_T_SelectedStatus>('statusFilter', {
69
+ required: true,
70
+ })
71
+
72
+ const activeTabModel = defineModel<UI_T_BottomPanelTabType>('selectedTab', {
73
+ required: true,
74
+ })
75
+
76
+ const props = defineProps<{
77
+ panelCollapsedModel: boolean
78
+ tabList: UI_I_CollapseNavItem[]
79
+ dataTableRecentTasks: UI_I_RecentTaskItem<UI_T_NodeType>[]
80
+ totalItemsRecentTasks: number
81
+ totalPagesRecentTasks: number
82
+ paginationRecentTasks: UI_I_Pagination
83
+ loadingRecentTasks: boolean
84
+ dataTableAlarms: UI_I_Alarm | null
85
+ loadingAlarms: boolean
86
+ }>()
87
+
88
+ const emits = defineEmits<{
89
+ (event: 'collapse-panel'): void
90
+ (event: 'change-tab'): void
91
+ (event: 'sort-recent-task', value: string): void
92
+ (event: 'pagination-recent-task', value: UI_I_Pagination | null): void
93
+ (event: 'pause-global-refresh-alarms'): void
94
+ (event: 'get-alarms', value: UI_I_AlarmPayload): void
95
+ }>()
96
+ </script>
97
+
98
+ <style scoped lang="scss">
99
+ @import '~/assets/scss/common/mixins';
100
+ .bottom-panel {
101
+ background-color: var(--pannel-bg-color);
102
+ & > div:first-child {
103
+ height: 36px;
104
+ }
105
+ &__table-wrapper {
106
+ height: inherit;
107
+ :deep(.datagrid-outer-wrapper) {
108
+ padding-top: 0;
109
+ .datagrid {
110
+ border-radius: 0;
111
+ margin-top: 0;
112
+ }
113
+ }
114
+ }
115
+ &__tabs {
116
+ &.collapsed {
117
+ :deep(button.nav-link) {
118
+ box-shadow: none;
119
+ }
120
+ }
121
+ }
122
+
123
+ &.collapsed {
124
+ .btn-trigger {
125
+ .trigger-icon {
126
+ transform: rotate(0deg);
127
+ }
128
+ }
129
+ }
130
+ .btn-trigger {
131
+ height: 31px;
132
+ border: 0;
133
+ outline: none;
134
+ background-color: transparent;
135
+ padding-left: 15px;
136
+ cursor: pointer;
137
+ .trigger-icon {
138
+ width: 16px;
139
+ height: 16px;
140
+ fill: var(--triger-icon-color);
141
+ transform: rotate(180deg);
142
+ }
143
+ }
144
+ &__trigger {
145
+ padding-right: 15px;
146
+ margin-right: 15px;
147
+ border-right: 0.05rem solid #ccc;
148
+ box-shadow: inset 0 -0.05rem 0 var(--nav-panel-border-color);
149
+ }
150
+ }
151
+ </style>
152
+
153
+ <style>
154
+ :root {
155
+ --pannel-bg-color: #fafafa;
156
+ }
157
+ :root.dark-theme {
158
+ --pannel-bg-color: #1b2a32;
159
+ }
160
+ </style>
@@ -0,0 +1,76 @@
1
+ <template>
2
+ <component
3
+ :is="currentComponent"
4
+ :data-table="props.dataTable?.items || []"
5
+ :total-items="props.dataTable?.items.length || 1"
6
+ :total-pages="1"
7
+ :pagination="pagination"
8
+ :loading="props.isLoading"
9
+ @pagination="onUpdatePagination"
10
+ @sort="onSortTable"
11
+ />
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
16
+ import type {
17
+ UI_I_Alarm,
18
+ UI_I_AlarmPayload,
19
+ } from '~/components/common/layout/bottomPanel/alarms/lib/models/interfaces'
20
+
21
+ const props = defineProps<{
22
+ dataTable: UI_I_Alarm | null
23
+ isLoading: boolean
24
+ }>()
25
+
26
+ const emits = defineEmits<{
27
+ (event: 'pause-global-refresh'): void
28
+ (event: 'get-alarms', value: UI_I_AlarmPayload): void
29
+ }>()
30
+
31
+ const { $store }: any = useNuxtApp()
32
+
33
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
34
+
35
+ const currentComponent = computed(() =>
36
+ isNewView.value
37
+ ? defineAsyncComponent(() => import('./new/New.vue'))
38
+ : defineAsyncComponent(() => import('./old/Old.vue'))
39
+ )
40
+
41
+ const sort = ref<string | null>(null)
42
+ const pagination = ref<UI_I_Pagination>({
43
+ page: 1,
44
+ pageSize: 35,
45
+ })
46
+
47
+ const getAlarms = (): void => {
48
+ pauseGlobalRefresh()
49
+
50
+ const payload: UI_I_AlarmPayload = {
51
+ ...pagination.value,
52
+ sortBy: sort.value || '',
53
+ }
54
+ emits('get-alarms', payload)
55
+ }
56
+ const pauseGlobalRefresh = (): void => {
57
+ emits('pause-global-refresh')
58
+ }
59
+ getAlarms()
60
+
61
+ const onUpdatePagination = (event: UI_I_Pagination): void => {
62
+ pagination.value = event
63
+ getAlarms()
64
+ }
65
+
66
+ const onSortTable = (event: string): void => {
67
+ sort.value = event
68
+ getAlarms()
69
+ }
70
+
71
+ onUnmounted(() => {
72
+ pauseGlobalRefresh()
73
+ })
74
+ </script>
75
+
76
+ <style scoped lang="scss"></style>
@@ -0,0 +1,23 @@
1
+ import type {
2
+ API_UI_I_DataTable,
3
+ UI_I_Pagination,
4
+ } from '~/lib/models/table/interfaces'
5
+
6
+ export interface UI_I_AlarmPayload extends UI_I_Pagination {
7
+ sortBy: string
8
+ }
9
+
10
+ export interface UI_API_I_AlarmItem {
11
+ id: number
12
+ object: string
13
+ status: string
14
+ name: string
15
+ triggered: string
16
+ acknowledged: string
17
+ acknowledged_by: string
18
+ triggering_event: string
19
+ statusIcon: string
20
+ }
21
+ export interface UI_I_AlarmItem extends UI_API_I_AlarmItem {}
22
+
23
+ export interface UI_I_Alarm extends API_UI_I_DataTable<UI_I_AlarmItem> {}