shared-ritm 1.3.14 → 1.3.15

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 (136) hide show
  1. package/README.md +103 -103
  2. package/dist/index.css +1 -1
  3. package/dist/shared-ritm.es.js +4291 -4257
  4. package/dist/shared-ritm.umd.js +154 -154
  5. package/dist/types/api/services/PhotoService.d.ts +40 -0
  6. package/dist/types/api/services/RepairsService.d.ts +1 -1
  7. package/dist/types/api/settings/ApiService.d.ts +1 -1
  8. package/package.json +65 -65
  9. package/src/App.vue +2461 -2461
  10. package/src/api/services/AuthService.ts +53 -53
  11. package/src/api/services/BrigadesService.ts +32 -32
  12. package/src/api/services/CommentsService.ts +24 -24
  13. package/src/api/services/ControlsService.ts +96 -96
  14. package/src/api/services/EquipmentService.ts +29 -29
  15. package/src/api/services/FileService.ts +17 -17
  16. package/src/api/services/GanttService.ts +17 -17
  17. package/src/api/services/InstrumentsService.ts +68 -68
  18. package/src/api/services/MetricsService.ts +110 -110
  19. package/src/api/services/ModulesService.ts +27 -27
  20. package/src/api/services/ProjectsService.ts +83 -83
  21. package/src/api/services/RepairsService.ts +124 -124
  22. package/src/api/services/ScheduleService.ts +69 -69
  23. package/src/api/services/SearchService.ts +22 -22
  24. package/src/api/services/TasksService.ts +150 -150
  25. package/src/api/services/UserService.ts +119 -119
  26. package/src/api/services/VideoService.ts +108 -108
  27. package/src/api/settings/ApiService.ts +124 -124
  28. package/src/api/types/Api_Auth.ts +105 -105
  29. package/src/api/types/Api_Brigades.ts +36 -36
  30. package/src/api/types/Api_Comment.ts +40 -40
  31. package/src/api/types/Api_Controls.ts +111 -111
  32. package/src/api/types/Api_Equipment.ts +3 -3
  33. package/src/api/types/Api_Files.ts +7 -7
  34. package/src/api/types/Api_Instruments.ts +156 -156
  35. package/src/api/types/Api_Modules.ts +21 -21
  36. package/src/api/types/Api_Projects.ts +62 -62
  37. package/src/api/types/Api_Repairs.ts +140 -140
  38. package/src/api/types/Api_Schedule.ts +64 -64
  39. package/src/api/types/Api_Search.ts +80 -80
  40. package/src/api/types/Api_Service.ts +9 -9
  41. package/src/api/types/Api_Tasks.ts +371 -371
  42. package/src/api/types/Api_User.ts +146 -146
  43. package/src/api/types/Api_Video.ts +198 -198
  44. package/src/common/app-button/AppButton.vue +173 -173
  45. package/src/common/app-checkbox/AppCheckbox.vue +26 -26
  46. package/src/common/app-date-picker/AppDatePicker.vue +81 -81
  47. package/src/common/app-datepicker/AppDatepicker.vue +218 -218
  48. package/src/common/app-dialogs/AppConfirmDialog.vue +99 -99
  49. package/src/common/app-dropdown/AppDropdown.vue +37 -37
  50. package/src/common/app-file/AppFile.vue +80 -80
  51. package/src/common/app-icon/AppIcon.vue +108 -108
  52. package/src/common/app-input/AppInput.vue +148 -148
  53. package/src/common/app-input-new/AppInputNew.vue +179 -179
  54. package/src/common/app-input-search/AppInputSearch.vue +174 -174
  55. package/src/common/app-layout/AppLayout.vue +84 -84
  56. package/src/common/app-layout/components/AppLayoutHeader.vue +273 -273
  57. package/src/common/app-layout/components/AppLayoutPage.vue +16 -16
  58. package/src/common/app-loader/index.vue +43 -43
  59. package/src/common/app-modal/index.vue +96 -96
  60. package/src/common/app-page-layout/AppPageLayout.vue +122 -122
  61. package/src/common/app-select/AppSelect.vue +157 -157
  62. package/src/common/app-sheet/AppSheet.vue +120 -120
  63. package/src/common/app-sheet-new/AppSheetNew.vue +244 -244
  64. package/src/common/app-sidebar/AppSidebar.vue +174 -168
  65. package/src/common/app-sidebar/components/SidebarMenu.vue +37 -37
  66. package/src/common/app-sidebar/components/SidebarMenuItem.vue +149 -149
  67. package/src/common/app-table/AppTable.vue +308 -308
  68. package/src/common/app-table/AppTableLayout.vue +137 -137
  69. package/src/common/app-table/components/ModalSelect.vue +294 -294
  70. package/src/common/app-table/components/TableModal.vue +356 -356
  71. package/src/common/app-table/components/TablePagination.vue +152 -152
  72. package/src/common/app-table/components/TableSearch.vue +76 -76
  73. package/src/common/app-table/controllers/useBaseTable.ts +45 -45
  74. package/src/common/app-table/controllers/useColumnSelector.ts +38 -38
  75. package/src/common/app-table/controllers/useTableModel.ts +102 -102
  76. package/src/common/app-toggle/AppToggle.vue +24 -24
  77. package/src/common/app-wrapper/AppWrapper.vue +28 -28
  78. package/src/global.d.ts +1 -1
  79. package/src/icons/components/arrow-down-icon.vue +25 -25
  80. package/src/icons/components/arrow-frame-icon.vue +19 -19
  81. package/src/icons/components/arrow-square.vue +22 -22
  82. package/src/icons/components/table-filter-icon.vue +30 -30
  83. package/src/icons/dialogs/RemoveIcon.vue +12 -12
  84. package/src/icons/dialogs/SafetyIcon.vue +12 -12
  85. package/src/icons/header/NotificationIcon.vue +18 -18
  86. package/src/icons/header/PersonIcon.vue +11 -11
  87. package/src/icons/header/SettingIcon.vue +14 -14
  88. package/src/icons/header/flashIcon.vue +24 -24
  89. package/src/icons/header/searchStatusIcon.vue +24 -24
  90. package/src/icons/header/smallCapsIcon.vue +34 -34
  91. package/src/icons/sidebar/assign-module-icon.vue +36 -36
  92. package/src/icons/sidebar/instrument-history-icon.vue +32 -32
  93. package/src/icons/sidebar/instrument-order-icon.vue +38 -38
  94. package/src/icons/sidebar/instrument-work-zone-icon.vue +18 -18
  95. package/src/icons/sidebar/instruments-icon.vue +45 -45
  96. package/src/icons/sidebar/logo-icon.vue +15 -15
  97. package/src/icons/sidebar/logout-icon.vue +13 -13
  98. package/src/icons/sidebar/modules-icon.vue +16 -16
  99. package/src/icons/sidebar/notifications-icon.vue +24 -24
  100. package/src/icons/sidebar/order-icon.vue +44 -44
  101. package/src/icons/sidebar/pass-icon.vue +38 -38
  102. package/src/icons/sidebar/positions-icon.vue +42 -42
  103. package/src/icons/sidebar/preorder-icon.vue +19 -19
  104. package/src/icons/sidebar/projects-icon.vue +31 -31
  105. package/src/icons/sidebar/repair-object-icon.vue +18 -18
  106. package/src/icons/sidebar/repairs-icon.vue +20 -20
  107. package/src/icons/sidebar/roles-icon.vue +26 -26
  108. package/src/icons/sidebar/status-history-icon.vue +24 -24
  109. package/src/icons/sidebar/tasks-icon.vue +28 -28
  110. package/src/icons/sidebar/tasks_tasks-icon.vue +39 -39
  111. package/src/icons/sidebar/tasks_today-icon.vue +27 -27
  112. package/src/icons/sidebar/teams-icon.vue +32 -32
  113. package/src/icons/sidebar/user-icon.vue +18 -18
  114. package/src/icons/sidebar/users-icon.vue +46 -46
  115. package/src/icons/sidebar/videosources-icon.vue +19 -19
  116. package/src/icons/sidebar/videowall-icon.vue +13 -13
  117. package/src/icons/sidebar/videozones-icon.vue +21 -21
  118. package/src/icons/sidebar/warehouses-icon.vue +43 -43
  119. package/src/icons/sidebar/workshop-icon.vue +100 -100
  120. package/src/icons/sidebar/workzones-icon.vue +22 -22
  121. package/src/icons/task/attention-icon.vue +13 -13
  122. package/src/icons/task/clock-icon.vue +10 -10
  123. package/src/icons/task/delete-icon.vue +10 -10
  124. package/src/icons/task/fire-icon.vue +16 -16
  125. package/src/index.ts +131 -131
  126. package/src/main.ts +28 -28
  127. package/src/quasar-user-options.ts +17 -17
  128. package/src/router/index.ts +10 -10
  129. package/src/shared/styles/general.css +124 -124
  130. package/src/shims-vue.d.ts +5 -5
  131. package/src/styles/variables.sass +12 -12
  132. package/src/utils/confirm.ts +12 -12
  133. package/src/utils/faceApiHelper.ts +132 -132
  134. package/src/utils/files.ts +19 -19
  135. package/src/utils/helpers.ts +59 -59
  136. package/src/utils/notification.ts +9 -9
@@ -1,244 +1,244 @@
1
- <template>
2
- <q-dialog
3
- :model-value="modelValue"
4
- :position="'right'"
5
- :class="$style['sheet-dialog']"
6
- :persistent="persistent"
7
- no-shake
8
- no-esc-dismiss
9
- full-height
10
- @update:model-value="emit('update:modelValue', $event)"
11
- >
12
- <div v-if="loading" class="custom-wrapper" :style="{ width }">
13
- <div class="loader">
14
- <q-spinner-audio v-if="loading" class="loader-spinner" size="md" :thickness="3" color="primary" />
15
- </div>
16
- </div>
17
- <div v-else class="wrapper" :style="{ width }">
18
- <div v-if="tabs?.length" class="sidebar" :class="{ noTitle: !tabsTitle }" :style="{ width: sidebarWidth }">
19
- <h5 v-if="tabsTitle">{{ tabsTitle }}</h5>
20
- <q-tabs
21
- v-model="currTabId"
22
- vertical
23
- align="justify"
24
- inline-label
25
- class="tabs"
26
- dense
27
- active-class="active-tab"
28
- no-caps
29
- >
30
- <q-tab
31
- v-for="tab in tabs"
32
- :key="tab.id"
33
- :class="$style['tab']"
34
- :name="tab.title"
35
- icon="radio_button_unchecked"
36
- :label="tab.title"
37
- />
38
- </q-tabs>
39
- </div>
40
-
41
- <div class="content">
42
- <div v-if="title" class="content-header">
43
- <h2 class="ellipsis" :title="title">{{ title }}</h2>
44
- <q-btn v-close-popup="!persistent" dense flat icon="close" @click="emit('close')" />
45
- </div>
46
-
47
- <slot />
48
-
49
- <div v-if="'actions' in slots" class="app-sheet-actions">
50
- <slot name="actions" />
51
- </div>
52
- </div>
53
- </div>
54
- </q-dialog>
55
- </template>
56
-
57
- <script setup lang="ts">
58
- import { computed, defineEmits, defineProps, useSlots, withDefaults } from 'vue'
59
- import { QDialog } from 'quasar'
60
-
61
- interface DialogProps {
62
- modelValue: boolean
63
- loading?: boolean
64
- title?: string
65
- tabsTitle?: string
66
- width?: string
67
- type?: 'details' | 'custom'
68
- tabs?: { id: string | number; title?: string }[]
69
- tabId?: string
70
- sidebarWidth?: string
71
- persistent?: boolean
72
- }
73
-
74
- const props = withDefaults(defineProps<DialogProps>(), {
75
- modelValue: false,
76
- title: '',
77
- tabsTitle: '',
78
- width: '1200px',
79
- type: 'details',
80
- loading: false,
81
- tabs: () => [],
82
- tabId: '',
83
- sidebarWidth: '',
84
- persistent: false,
85
- })
86
-
87
- const emit = defineEmits(['update:modelValue', 'update:tabId', 'close', 'before-hide'])
88
-
89
- const slots = useSlots()
90
-
91
- const currTabId = computed({
92
- get() {
93
- return props.tabs?.find(t => t.id === props.tabId)?.title
94
- },
95
- set(value) {
96
- const id = props.tabs?.find(t => t.title === value)?.id
97
- emit('update:tabId', id)
98
- },
99
- })
100
- </script>
101
-
102
- <style lang="scss" scoped>
103
- .custom-wrapper {
104
- max-width: unset;
105
- background-color: white;
106
- }
107
-
108
- .loader {
109
- &-spinner {
110
- position: absolute;
111
- top: 50%;
112
- left: 50%;
113
- z-index: 4;
114
- }
115
- }
116
-
117
- .wrapper {
118
- display: flex;
119
- overflow: hidden;
120
- font-family: 'NunitoSansFont', sans-serif;
121
- color: #3f414d;
122
- max-width: unset;
123
- }
124
-
125
- .sidebar {
126
- max-width: 25vw;
127
- flex: none;
128
- padding: 2rem 0 2rem 2rem;
129
- background-color: #f4f9fd;
130
-
131
- &.noTitle {
132
- padding: 0 0 2rem 2rem;
133
- }
134
-
135
- h5 {
136
- font-size: 24px;
137
- font-weight: 700;
138
- padding-right: 2rem;
139
- }
140
-
141
- .tabs {
142
- color: #b9c0c7;
143
- transition-duration: 0.1s;
144
- margin: 16px 0;
145
- }
146
-
147
- .active-tab {
148
- color: #3f8cff;
149
- }
150
- }
151
-
152
- .content {
153
- background-color: #fff;
154
- height: 100vh;
155
- width: 100%;
156
- display: grid;
157
- grid-template-rows: auto 1fr auto;
158
-
159
- &-header {
160
- display: flex;
161
- justify-content: space-between;
162
- align-items: center;
163
- padding: 4px 1rem;
164
- border-bottom: 1px solid var(--g-grey-100);
165
- overflow: hidden;
166
-
167
- h2 {
168
- font-size: 32px;
169
- font-weight: 700;
170
- }
171
- }
172
- }
173
-
174
- .app-sheet-actions {
175
- display: flex;
176
- gap: 1rem;
177
- padding: 1rem;
178
- border-top: 1px solid var(--g-grey-100);
179
- }
180
- </style>
181
-
182
- <style lang="scss" module>
183
- .sheet-dialog {
184
- :global(.q-dialog__inner) {
185
- max-width: 95vw;
186
- }
187
-
188
- :global(.q-dialog__inner--minimized) {
189
- padding: 0;
190
- }
191
- }
192
-
193
- .tab {
194
- padding: 0 !important;
195
-
196
- :global(.q-focus-helper) {
197
- display: none !important;
198
- }
199
- :global(.q-ripple) {
200
- display: none !important;
201
- }
202
- :global(.q-tab__content) {
203
- width: 100%;
204
- justify-content: left;
205
- margin: 10px 0;
206
- padding-right: 2rem;
207
-
208
- :global(.q-tab__label) {
209
- font-size: 18px;
210
- font-family: NunitoSansFont, sans-serif;
211
- }
212
- :global(.q-tab__icon) {
213
- font-size: 33px;
214
- width: 33px;
215
- height: 33px;
216
- }
217
-
218
- &::after {
219
- content: '';
220
- position: absolute;
221
- bottom: -23px;
222
- left: 15px;
223
- height: 26px;
224
- border: 1px solid #b9c0c7;
225
- }
226
- }
227
- }
228
-
229
- .tab:last-child {
230
- :global(.q-tab__content) {
231
- &::after {
232
- display: none;
233
- }
234
- }
235
- }
236
- </style>
237
-
238
- <style lang="scss">
239
- .app-sheet-actions {
240
- button {
241
- border-radius: 8px;
242
- }
243
- }
244
- </style>
1
+ <template>
2
+ <q-dialog
3
+ :model-value="modelValue"
4
+ :position="'right'"
5
+ :class="$style['sheet-dialog']"
6
+ :persistent="persistent"
7
+ no-shake
8
+ no-esc-dismiss
9
+ full-height
10
+ @update:model-value="emit('update:modelValue', $event)"
11
+ >
12
+ <div v-if="loading" class="custom-wrapper" :style="{ width }">
13
+ <div class="loader">
14
+ <q-spinner-audio v-if="loading" class="loader-spinner" size="md" :thickness="3" color="primary" />
15
+ </div>
16
+ </div>
17
+ <div v-else class="wrapper" :style="{ width }">
18
+ <div v-if="tabs?.length" class="sidebar" :class="{ noTitle: !tabsTitle }" :style="{ width: sidebarWidth }">
19
+ <h5 v-if="tabsTitle">{{ tabsTitle }}</h5>
20
+ <q-tabs
21
+ v-model="currTabId"
22
+ vertical
23
+ align="justify"
24
+ inline-label
25
+ class="tabs"
26
+ dense
27
+ active-class="active-tab"
28
+ no-caps
29
+ >
30
+ <q-tab
31
+ v-for="tab in tabs"
32
+ :key="tab.id"
33
+ :class="$style['tab']"
34
+ :name="tab.title"
35
+ icon="radio_button_unchecked"
36
+ :label="tab.title"
37
+ />
38
+ </q-tabs>
39
+ </div>
40
+
41
+ <div class="content">
42
+ <div v-if="title" class="content-header">
43
+ <h2 class="ellipsis" :title="title">{{ title }}</h2>
44
+ <q-btn v-close-popup="!persistent" dense flat icon="close" @click="emit('close')" />
45
+ </div>
46
+
47
+ <slot />
48
+
49
+ <div v-if="'actions' in slots" class="app-sheet-actions">
50
+ <slot name="actions" />
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </q-dialog>
55
+ </template>
56
+
57
+ <script setup lang="ts">
58
+ import { computed, defineEmits, defineProps, useSlots, withDefaults } from 'vue'
59
+ import { QDialog } from 'quasar'
60
+
61
+ interface DialogProps {
62
+ modelValue: boolean
63
+ loading?: boolean
64
+ title?: string
65
+ tabsTitle?: string
66
+ width?: string
67
+ type?: 'details' | 'custom'
68
+ tabs?: { id: string | number; title?: string }[]
69
+ tabId?: string
70
+ sidebarWidth?: string
71
+ persistent?: boolean
72
+ }
73
+
74
+ const props = withDefaults(defineProps<DialogProps>(), {
75
+ modelValue: false,
76
+ title: '',
77
+ tabsTitle: '',
78
+ width: '1200px',
79
+ type: 'details',
80
+ loading: false,
81
+ tabs: () => [],
82
+ tabId: '',
83
+ sidebarWidth: '',
84
+ persistent: false,
85
+ })
86
+
87
+ const emit = defineEmits(['update:modelValue', 'update:tabId', 'close', 'before-hide'])
88
+
89
+ const slots = useSlots()
90
+
91
+ const currTabId = computed({
92
+ get() {
93
+ return props.tabs?.find(t => t.id === props.tabId)?.title
94
+ },
95
+ set(value) {
96
+ const id = props.tabs?.find(t => t.title === value)?.id
97
+ emit('update:tabId', id)
98
+ },
99
+ })
100
+ </script>
101
+
102
+ <style lang="scss" scoped>
103
+ .custom-wrapper {
104
+ max-width: unset;
105
+ background-color: white;
106
+ }
107
+
108
+ .loader {
109
+ &-spinner {
110
+ position: absolute;
111
+ top: 50%;
112
+ left: 50%;
113
+ z-index: 4;
114
+ }
115
+ }
116
+
117
+ .wrapper {
118
+ display: flex;
119
+ overflow: hidden;
120
+ font-family: 'NunitoSansFont', sans-serif;
121
+ color: #3f414d;
122
+ max-width: unset;
123
+ }
124
+
125
+ .sidebar {
126
+ max-width: 25vw;
127
+ flex: none;
128
+ padding: 2rem 0 2rem 2rem;
129
+ background-color: #f4f9fd;
130
+
131
+ &.noTitle {
132
+ padding: 0 0 2rem 2rem;
133
+ }
134
+
135
+ h5 {
136
+ font-size: 24px;
137
+ font-weight: 700;
138
+ padding-right: 2rem;
139
+ }
140
+
141
+ .tabs {
142
+ color: #b9c0c7;
143
+ transition-duration: 0.1s;
144
+ margin: 16px 0;
145
+ }
146
+
147
+ .active-tab {
148
+ color: #3f8cff;
149
+ }
150
+ }
151
+
152
+ .content {
153
+ background-color: #fff;
154
+ height: 100vh;
155
+ width: 100%;
156
+ display: grid;
157
+ grid-template-rows: auto 1fr auto;
158
+
159
+ &-header {
160
+ display: flex;
161
+ justify-content: space-between;
162
+ align-items: center;
163
+ padding: 4px 1rem;
164
+ border-bottom: 1px solid var(--g-grey-100);
165
+ overflow: hidden;
166
+
167
+ h2 {
168
+ font-size: 32px;
169
+ font-weight: 700;
170
+ }
171
+ }
172
+ }
173
+
174
+ .app-sheet-actions {
175
+ display: flex;
176
+ gap: 1rem;
177
+ padding: 1rem;
178
+ border-top: 1px solid var(--g-grey-100);
179
+ }
180
+ </style>
181
+
182
+ <style lang="scss" module>
183
+ .sheet-dialog {
184
+ :global(.q-dialog__inner) {
185
+ max-width: 95vw;
186
+ }
187
+
188
+ :global(.q-dialog__inner--minimized) {
189
+ padding: 0;
190
+ }
191
+ }
192
+
193
+ .tab {
194
+ padding: 0 !important;
195
+
196
+ :global(.q-focus-helper) {
197
+ display: none !important;
198
+ }
199
+ :global(.q-ripple) {
200
+ display: none !important;
201
+ }
202
+ :global(.q-tab__content) {
203
+ width: 100%;
204
+ justify-content: left;
205
+ margin: 10px 0;
206
+ padding-right: 2rem;
207
+
208
+ :global(.q-tab__label) {
209
+ font-size: 18px;
210
+ font-family: NunitoSansFont, sans-serif;
211
+ }
212
+ :global(.q-tab__icon) {
213
+ font-size: 33px;
214
+ width: 33px;
215
+ height: 33px;
216
+ }
217
+
218
+ &::after {
219
+ content: '';
220
+ position: absolute;
221
+ bottom: -23px;
222
+ left: 15px;
223
+ height: 26px;
224
+ border: 1px solid #b9c0c7;
225
+ }
226
+ }
227
+ }
228
+
229
+ .tab:last-child {
230
+ :global(.q-tab__content) {
231
+ &::after {
232
+ display: none;
233
+ }
234
+ }
235
+ }
236
+ </style>
237
+
238
+ <style lang="scss">
239
+ .app-sheet-actions {
240
+ button {
241
+ border-radius: 8px;
242
+ }
243
+ }
244
+ </style>