shared-ritm 1.3.36 → 1.3.38-alpha.0

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 (83) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/shared-ritm.es.js +15284 -14832
  3. package/dist/shared-ritm.umd.js +564 -564
  4. package/dist/types/api/services/AuthService.d.ts +1 -0
  5. package/dist/types/api/services/ControlsService.d.ts +3 -0
  6. package/dist/types/api/services/EquipmentService.d.ts +15 -5
  7. package/dist/types/api/services/GanttService.d.ts +22 -0
  8. package/dist/types/api/services/InstrumentsService.d.ts +6 -1
  9. package/dist/types/api/services/MetricsService.d.ts +5 -1
  10. package/dist/types/api/services/RepairsService.d.ts +1 -1
  11. package/dist/types/api/services/TasksService.d.ts +3 -2
  12. package/dist/types/api/services/UserIssueService.d.ts +15 -0
  13. package/dist/types/api/services/UserService.d.ts +2 -1
  14. package/dist/types/api/services/VideoService.d.ts +2 -1
  15. package/dist/types/api/settings/ApiService.d.ts +7 -3
  16. package/dist/types/api/types/Api_Auth.d.ts +15 -0
  17. package/dist/types/api/types/Api_Controls.d.ts +1 -0
  18. package/dist/types/api/types/Api_Equipment.d.ts +45 -0
  19. package/dist/types/api/types/Api_Instruments.d.ts +24 -0
  20. package/dist/types/api/types/Api_Metrics.d.ts +69 -0
  21. package/dist/types/api/types/Api_Repairs.d.ts +14 -1
  22. package/dist/types/api/types/Api_Search.d.ts +1 -0
  23. package/dist/types/api/types/Api_Tasks.d.ts +1 -0
  24. package/dist/types/api/types/Api_User.d.ts +12 -0
  25. package/dist/types/api/types/Api_User_Issue.d.ts +33 -0
  26. package/dist/types/api/types/Api_Video.d.ts +5 -4
  27. package/dist/types/common/app-button/Button.stories.d.ts +13 -0
  28. package/dist/types/common/app-checkbox/Checkbox.stories.d.ts +12 -0
  29. package/dist/types/common/app-date-picker/DatePicker.stories.d.ts +7 -0
  30. package/dist/types/common/app-datepicker/Datepicker.stories.d.ts +10 -0
  31. package/dist/types/common/app-dialogs/Confirm.stories.d.ts +8 -0
  32. package/dist/types/common/app-dropdown/Dropdown.stories.d.ts +8 -0
  33. package/dist/types/common/app-file/File.stories.d.ts +8 -0
  34. package/dist/types/common/app-icon/Icon.stories.d.ts +7 -0
  35. package/dist/types/common/app-input/Input.stories.d.ts +9 -0
  36. package/dist/types/common/app-input-new/InputNew.stories.d.ts +12 -0
  37. package/dist/types/common/app-input-search/InputSearch.stories.d.ts +8 -0
  38. package/dist/types/common/app-loader/Loader.stories.d.ts +8 -0
  39. package/dist/types/common/app-select/Select.stories.d.ts +7 -0
  40. package/dist/types/common/app-table/components/ModalSelect.stories.d.ts +10 -0
  41. package/dist/types/common/app-toggle/Toggle.stories.d.ts +12 -0
  42. package/dist/types/configs/storybook.d.ts +1 -0
  43. package/dist/types/index.d.ts +3 -1
  44. package/dist/types/utils/files.d.ts +2 -0
  45. package/package.json +1 -1
  46. package/src/api/services/AuthService.ts +53 -53
  47. package/src/api/services/BrigadesService.ts +32 -32
  48. package/src/api/services/GanttService.ts +23 -23
  49. package/src/api/services/ModulesService.ts +27 -27
  50. package/src/api/services/ProjectsService.ts +83 -83
  51. package/src/api/services/ScheduleService.ts +69 -69
  52. package/src/api/services/SearchService.ts +22 -22
  53. package/src/api/services/TasksService.ts +157 -157
  54. package/src/api/services/VideoService.ts +5 -0
  55. package/src/api/settings/ApiService.ts +125 -124
  56. package/src/api/types/Api_Brigades.ts +36 -36
  57. package/src/api/types/Api_Modules.ts +21 -21
  58. package/src/api/types/Api_Projects.ts +62 -62
  59. package/src/api/types/Api_Schedule.ts +64 -64
  60. package/src/api/types/Api_Tasks.ts +376 -375
  61. package/src/api/types/Api_Video.ts +7 -4
  62. package/src/common/app-checkbox/AppCheckbox.vue +26 -26
  63. package/src/common/app-datepicker/AppDatepicker.vue +218 -218
  64. package/src/common/app-dialogs/AppConfirmDialog.vue +109 -109
  65. package/src/common/app-dropdown/AppDropdown.vue +37 -37
  66. package/src/common/app-icon/AppIcon.vue +108 -108
  67. package/src/common/app-input/AppInput.vue +148 -148
  68. package/src/common/app-layout/AppLayout.vue +84 -84
  69. package/src/common/app-layout/components/AppLayoutHeader.vue +273 -273
  70. package/src/common/app-select/AppSelect.vue +159 -159
  71. package/src/common/app-sidebar/components/SidebarMenuItem.vue +149 -149
  72. package/src/common/app-table/AppTableLayout.vue +137 -137
  73. package/src/common/app-table/components/TableModal.vue +367 -367
  74. package/src/common/app-table/controllers/useBaseTable.ts +45 -45
  75. package/src/common/app-table/controllers/useColumnSelector.ts +45 -45
  76. package/src/common/app-toggle/AppToggle.vue +24 -24
  77. package/src/common/app-wrapper/AppWrapper.vue +28 -28
  78. package/src/icons/dialogs/SafetyIcon.vue +12 -12
  79. package/src/shared/styles/general.css +124 -124
  80. package/src/utils/helpers.ts +59 -59
  81. package/dist/types/api/services/ComentsServise.d.ts +0 -10
  82. package/dist/types/api/services/PhotoService.d.ts +0 -53
  83. package/dist/types/api/types/Api_Users.d.ts +0 -43
@@ -1,124 +1,125 @@
1
- import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
2
-
3
- export enum ApiServiceType {
4
- SERVICE_AUTH = 'SERVICE_AUTH',
5
- }
6
-
7
- export default class ApiService {
8
- private axiosInstance: AxiosInstance
9
-
10
- constructor() {
11
- this.axiosInstance = axios.create({
12
- baseURL: process.env.VUE_APP_BACKEND,
13
- headers: {
14
- 'Content-Type': 'application/json',
15
- Accept: 'application/json',
16
- },
17
- })
18
-
19
- this.axiosInstance.interceptors.request.use(
20
- (config: InternalAxiosRequestConfig) => {
21
- const token = this.getToken()
22
- if (token && config.headers) {
23
- config.headers.Authorization = `Bearer ${token}`
24
- }
25
- return config
26
- },
27
- (error: AxiosError) => {
28
- return Promise.reject(error)
29
- },
30
- )
31
-
32
- this.axiosInstance.interceptors.response.use(
33
- (response: AxiosResponse) => {
34
- return response.data
35
- },
36
- (error: AxiosError) => {
37
- if (error.response?.status === 401 || error.response?.status === 403) {
38
- this.logout()
39
- }
40
- return Promise.reject(error)
41
- },
42
- )
43
- }
44
-
45
- private getToken() {
46
- return localStorage.getItem('token')
47
- }
48
-
49
- private removeToken() {
50
- localStorage.removeItem('token')
51
- }
52
-
53
- public logout(): void {
54
- this.removeToken()
55
- window.location.href = '/sign-in'
56
- }
57
-
58
- private handleError(error: AxiosError): void {
59
- if (error.response) {
60
- console.error('API Error:', error.response.status, error.response.data)
61
- } else if (error.request) {
62
- console.error('No response received:', error.request)
63
- } else {
64
- console.error('Error during request setup:', error.message)
65
- }
66
- }
67
-
68
- protected async get<T>(url: string, options?: AxiosRequestConfig) {
69
- try {
70
- const response: AxiosResponse<T> = await this.axiosInstance.get<T>(url, options)
71
- if (response?.data === false) return false as unknown as T
72
-
73
- return response?.data ?? (response as unknown as T)
74
- } catch (error) {
75
- const axiosError = error as AxiosError
76
- this.handleError(axiosError)
77
- throw error
78
- }
79
- }
80
-
81
- protected async delete<T>(url: string, options?: AxiosRequestConfig) {
82
- try {
83
- return await this.axiosInstance.delete<T>(url, options)
84
- } catch (error) {
85
- const axiosError = error as AxiosError
86
- this.handleError(axiosError)
87
- throw error
88
- }
89
- }
90
-
91
- protected async post<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
92
- try {
93
- const response: AxiosResponse<T2> = await this.axiosInstance.post<T1, AxiosResponse<T2>>(url, payload, options)
94
- if (response?.data === false) return false
95
- return response?.data || (response as any)
96
- } catch (error) {
97
- const axiosError = error as AxiosError
98
- this.handleError(axiosError)
99
- throw error
100
- }
101
- }
102
-
103
- protected async patch<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig): Promise<T2> {
104
- try {
105
- const response: AxiosResponse<T2> = await this.axiosInstance.patch<T1, AxiosResponse<T2>>(url, payload, options)
106
- return response.data
107
- } catch (error) {
108
- const axiosError = error as AxiosError
109
- this.handleError(axiosError)
110
- throw error
111
- }
112
- }
113
-
114
- protected async put<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
115
- try {
116
- const response: AxiosResponse<T2> = await this.axiosInstance.put<T1, AxiosResponse<T2>>(url, payload, options)
117
- return response.data
118
- } catch (error) {
119
- const axiosError = error as AxiosError
120
- this.handleError(axiosError)
121
- throw error
122
- }
123
- }
124
- }
1
+ import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
2
+
3
+ export enum ApiServiceType {
4
+ SERVICE_AUTH = 'SERVICE_AUTH',
5
+ }
6
+
7
+ export default class ApiService {
8
+ private axiosInstance: AxiosInstance
9
+
10
+ constructor() {
11
+ this.axiosInstance = axios.create({
12
+ //@ts-ignore
13
+ baseURL: window.__ENV__.VUE_APP_BACKEND,
14
+ headers: {
15
+ 'Content-Type': 'application/json',
16
+ Accept: 'application/json',
17
+ },
18
+ })
19
+
20
+ this.axiosInstance.interceptors.request.use(
21
+ (config: InternalAxiosRequestConfig) => {
22
+ const token = this.getToken()
23
+ if (token && config.headers) {
24
+ config.headers.Authorization = `Bearer ${token}`
25
+ }
26
+ return config
27
+ },
28
+ (error: AxiosError) => {
29
+ return Promise.reject(error)
30
+ },
31
+ )
32
+
33
+ this.axiosInstance.interceptors.response.use(
34
+ (response: AxiosResponse) => {
35
+ return response.data
36
+ },
37
+ (error: AxiosError) => {
38
+ if (error.response?.status === 401 || error.response?.status === 403) {
39
+ this.logout()
40
+ }
41
+ return Promise.reject(error)
42
+ },
43
+ )
44
+ }
45
+
46
+ private getToken() {
47
+ return localStorage.getItem('token')
48
+ }
49
+
50
+ private removeToken() {
51
+ localStorage.removeItem('token')
52
+ }
53
+
54
+ public logout(): void {
55
+ this.removeToken()
56
+ window.location.href = '/sign-in'
57
+ }
58
+
59
+ private handleError(error: AxiosError): void {
60
+ if (error.response) {
61
+ console.error('API Error:', error.response.status, error.response.data)
62
+ } else if (error.request) {
63
+ console.error('No response received:', error.request)
64
+ } else {
65
+ console.error('Error during request setup:', error.message)
66
+ }
67
+ }
68
+
69
+ protected async get<T>(url: string, options?: AxiosRequestConfig) {
70
+ try {
71
+ const response: AxiosResponse<T> = await this.axiosInstance.get<T>(url, options)
72
+ if (response?.data === false) return false as unknown as T
73
+
74
+ return response?.data ?? (response as unknown as T)
75
+ } catch (error) {
76
+ const axiosError = error as AxiosError
77
+ this.handleError(axiosError)
78
+ throw error
79
+ }
80
+ }
81
+
82
+ protected async delete<T>(url: string, options?: AxiosRequestConfig) {
83
+ try {
84
+ return await this.axiosInstance.delete<T>(url, options)
85
+ } catch (error) {
86
+ const axiosError = error as AxiosError
87
+ this.handleError(axiosError)
88
+ throw error
89
+ }
90
+ }
91
+
92
+ protected async post<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
93
+ try {
94
+ const response: AxiosResponse<T2> = await this.axiosInstance.post<T1, AxiosResponse<T2>>(url, payload, options)
95
+ if (response?.data === false) return false
96
+ return response?.data || (response as any)
97
+ } catch (error) {
98
+ const axiosError = error as AxiosError
99
+ this.handleError(axiosError)
100
+ throw error
101
+ }
102
+ }
103
+
104
+ protected async patch<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig): Promise<T2> {
105
+ try {
106
+ const response: AxiosResponse<T2> = await this.axiosInstance.patch<T1, AxiosResponse<T2>>(url, payload, options)
107
+ return response.data
108
+ } catch (error) {
109
+ const axiosError = error as AxiosError
110
+ this.handleError(axiosError)
111
+ throw error
112
+ }
113
+ }
114
+
115
+ protected async put<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
116
+ try {
117
+ const response: AxiosResponse<T2> = await this.axiosInstance.put<T1, AxiosResponse<T2>>(url, payload, options)
118
+ return response.data
119
+ } catch (error) {
120
+ const axiosError = error as AxiosError
121
+ this.handleError(axiosError)
122
+ throw error
123
+ }
124
+ }
125
+ }
@@ -1,36 +1,36 @@
1
- import { Api_User, Api_User_Team_Search } from '@/api/types/Api_User'
2
- import { Api_Tasks_Position_Dto } from '@/api/types/Api_Tasks'
3
-
4
- export type Api_Brigade_Master = {
5
- id: string
6
- full_name: string
7
- email: string
8
- }
9
-
10
- export type Api_Brigade_Position = {
11
- id: string
12
- user: Pick<Api_User, 'id' | 'first_name' | 'last_name' | 'patronymic' | 'email' | 'full_name'> | null
13
- position: Api_Tasks_Position_Dto
14
- }
15
-
16
- export type Api_Brigade = {
17
- id: string
18
- name: string
19
- task_master: Api_Brigade_Master
20
- teams: Api_User_Team_Search[]
21
- positions: Api_Brigade_Position[]
22
- }
23
-
24
- export type Api_Brigade_Create = Pick<Api_Brigade, 'name' | 'teams'> & {
25
- positions?: Api_Brigade_Position[]
26
- task_master_user_id: string
27
- }
28
-
29
- export type Api_Brigade_Search = {
30
- id: string
31
- name: string
32
- created_at: string
33
- updated_at: string
34
- task_master: Api_Brigade_Master
35
- teams: Api_User_Team_Search[]
36
- }
1
+ import { Api_User, Api_User_Team_Search } from '@/api/types/Api_User'
2
+ import { Api_Tasks_Position_Dto } from '@/api/types/Api_Tasks'
3
+
4
+ export type Api_Brigade_Master = {
5
+ id: string
6
+ full_name: string
7
+ email: string
8
+ }
9
+
10
+ export type Api_Brigade_Position = {
11
+ id: string
12
+ user: Pick<Api_User, 'id' | 'first_name' | 'last_name' | 'patronymic' | 'email' | 'full_name'> | null
13
+ position: Api_Tasks_Position_Dto
14
+ }
15
+
16
+ export type Api_Brigade = {
17
+ id: string
18
+ name: string
19
+ task_master: Api_Brigade_Master
20
+ teams: Api_User_Team_Search[]
21
+ positions: Api_Brigade_Position[]
22
+ }
23
+
24
+ export type Api_Brigade_Create = Pick<Api_Brigade, 'name' | 'teams'> & {
25
+ positions?: Api_Brigade_Position[]
26
+ task_master_user_id: string
27
+ }
28
+
29
+ export type Api_Brigade_Search = {
30
+ id: string
31
+ name: string
32
+ created_at: string
33
+ updated_at: string
34
+ task_master: Api_Brigade_Master
35
+ teams: Api_User_Team_Search[]
36
+ }
@@ -1,21 +1,21 @@
1
- import { Api_Search_Module } from '@/api/types/Api_Search'
2
- import { Api_Instrument, Api_Instrument_Location } from '@/api/types/Api_Instruments'
3
-
4
- export type Api_Module_Create = Pick<Api_Search_Module, 'RFID' | 'inventory_number' | 'title' | 'type'> & {
5
- user_id: string
6
- teams: string[]
7
- }
8
-
9
- export type Api_Module = Api_Search_Module & {
10
- auth_count: number
11
- auth_failed_count: number
12
- instrument: Pick<Api_Instrument, 'id' | 'RFID' | 'instrument_id' | 'inventory_number' | 'name'> | null
13
- inventory_completed_count: number
14
- location: Pick<Api_Instrument_Location, 'id' | 'name' | 'title' | 'state_id' | 'description'> | null
15
- location_id: string | null
16
- team_id: string | null
17
- tun: unknown
18
- user_id: string
19
- warehouse_id: string | null
20
- work_zones: unknown[]
21
- }
1
+ import { Api_Search_Module } from '@/api/types/Api_Search'
2
+ import { Api_Instrument, Api_Instrument_Location } from '@/api/types/Api_Instruments'
3
+
4
+ export type Api_Module_Create = Pick<Api_Search_Module, 'RFID' | 'inventory_number' | 'title' | 'type'> & {
5
+ user_id: string
6
+ teams: string[]
7
+ }
8
+
9
+ export type Api_Module = Api_Search_Module & {
10
+ auth_count: number
11
+ auth_failed_count: number
12
+ instrument: Pick<Api_Instrument, 'id' | 'RFID' | 'instrument_id' | 'inventory_number' | 'name'> | null
13
+ inventory_completed_count: number
14
+ location: Pick<Api_Instrument_Location, 'id' | 'name' | 'title' | 'state_id' | 'description'> | null
15
+ location_id: string | null
16
+ team_id: string | null
17
+ tun: unknown
18
+ user_id: string
19
+ warehouse_id: string | null
20
+ work_zones: unknown[]
21
+ }
@@ -1,62 +1,62 @@
1
- export type Api_Project_Repair = {
2
- id: string
3
- name: string
4
- start_date: null | string
5
- end_date: null | string
6
- }
7
-
8
- export type Api_Project_Team = {
9
- id: string
10
- name: string
11
- display_name: string
12
- description: string
13
- created_at: string
14
- updated_at: string
15
- pivot: {
16
- project_id: string
17
- team_id: string
18
- }
19
- }
20
-
21
- export type Api_Project_Category = {
22
- code: number
23
- display_name: string
24
- name: string
25
- }
26
-
27
- export type Api_Project_Status = {
28
- id: string
29
- name: string
30
- title: string
31
- description: string
32
- created_at: string | null
33
- updated_at: string | null
34
- deleted_at: string | null
35
- }
36
-
37
- export type Api_Project_Dto = {
38
- id: string
39
- name: string
40
- description: null
41
- image: null
42
- plan_date: string | null
43
- deadline: string | null
44
- fact_start_date: string | null
45
- fact_end_date: string | null
46
- planned_start: string | null
47
- planned_end: string | null
48
- deleted_at: string | null
49
- completed_at: string | null
50
- total_tasks: number
51
- is_archive: boolean
52
- teams: Api_Project_Team[]
53
- status: Api_Project_Status
54
- category: Api_Project_Category
55
- repair: Api_Project_Repair | null
56
- schedule_id: string | null
57
- }
58
-
59
- export type Api_Project_Add_Root_Intervals_Payload = {
60
- history: number
61
- with_status_in_progress: number
62
- }
1
+ export type Api_Project_Repair = {
2
+ id: string
3
+ name: string
4
+ start_date: null | string
5
+ end_date: null | string
6
+ }
7
+
8
+ export type Api_Project_Team = {
9
+ id: string
10
+ name: string
11
+ display_name: string
12
+ description: string
13
+ created_at: string
14
+ updated_at: string
15
+ pivot: {
16
+ project_id: string
17
+ team_id: string
18
+ }
19
+ }
20
+
21
+ export type Api_Project_Category = {
22
+ code: number
23
+ display_name: string
24
+ name: string
25
+ }
26
+
27
+ export type Api_Project_Status = {
28
+ id: string
29
+ name: string
30
+ title: string
31
+ description: string
32
+ created_at: string | null
33
+ updated_at: string | null
34
+ deleted_at: string | null
35
+ }
36
+
37
+ export type Api_Project_Dto = {
38
+ id: string
39
+ name: string
40
+ description: null
41
+ image: null
42
+ plan_date: string | null
43
+ deadline: string | null
44
+ fact_start_date: string | null
45
+ fact_end_date: string | null
46
+ planned_start: string | null
47
+ planned_end: string | null
48
+ deleted_at: string | null
49
+ completed_at: string | null
50
+ total_tasks: number
51
+ is_archive: boolean
52
+ teams: Api_Project_Team[]
53
+ status: Api_Project_Status
54
+ category: Api_Project_Category
55
+ repair: Api_Project_Repair | null
56
+ schedule_id: string | null
57
+ }
58
+
59
+ export type Api_Project_Add_Root_Intervals_Payload = {
60
+ history: number
61
+ with_status_in_progress: number
62
+ }
@@ -1,64 +1,64 @@
1
- export type Api_Schedule_Shift_Template = {
2
- id: string
3
- name: string
4
- from: string
5
- to: string
6
- }
7
-
8
- export type Api_Schedule_Config = {
9
- shift_templates: Api_Schedule_Shift_Template[]
10
- }
11
-
12
- export type Api_Schedule_Complete_Brigade = {
13
- brigade_id: string
14
- initial_first: string
15
- initial_last: string
16
- shift_template_id: string
17
- }
18
-
19
- export type Api_Schedule_Table_Brigade = {
20
- id: string
21
- name: string
22
- initial_first: string
23
- initial_last: string
24
- initial_shift_template: Api_Schedule_Shift_Template
25
- assigned_positions: number
26
- total_positions: number
27
- task_master: unknown | null
28
- is_deleted: boolean
29
- }
30
-
31
- export type Api_Schedule_Add_Shift = {
32
- brigade_id: string
33
- dates: string[]
34
- shift_template_id: string
35
- }
36
-
37
- export type Api_Schedule_Swap_Shifts = {
38
- brigade_id: string
39
- shifts: string[]
40
- }
41
-
42
- export type Api_Schedule_Edit_Shifts = {
43
- brigade_id: string
44
- shift_ids: string[]
45
- shift_template_id: string
46
- }
47
-
48
- export type Api_Schedule_Shift = {
49
- id: string
50
- from: string
51
- to: string
52
- shift_template: Api_Schedule_Shift_Template
53
- }
54
-
55
- export type Api_Schedule_Item = {
56
- brigade: Api_Schedule_Table_Brigade
57
- shifts: { date: string; shift: Api_Schedule_Shift }[]
58
- }
59
-
60
- export type Api_Schedule_Brigade_To_Swap = {
61
- id: string
62
- name: string
63
- shift_template: Api_Schedule_Shift_Template
64
- }
1
+ export type Api_Schedule_Shift_Template = {
2
+ id: string
3
+ name: string
4
+ from: string
5
+ to: string
6
+ }
7
+
8
+ export type Api_Schedule_Config = {
9
+ shift_templates: Api_Schedule_Shift_Template[]
10
+ }
11
+
12
+ export type Api_Schedule_Complete_Brigade = {
13
+ brigade_id: string
14
+ initial_first: string
15
+ initial_last: string
16
+ shift_template_id: string
17
+ }
18
+
19
+ export type Api_Schedule_Table_Brigade = {
20
+ id: string
21
+ name: string
22
+ initial_first: string
23
+ initial_last: string
24
+ initial_shift_template: Api_Schedule_Shift_Template
25
+ assigned_positions: number
26
+ total_positions: number
27
+ task_master: unknown | null
28
+ is_deleted: boolean
29
+ }
30
+
31
+ export type Api_Schedule_Add_Shift = {
32
+ brigade_id: string
33
+ dates: string[]
34
+ shift_template_id: string
35
+ }
36
+
37
+ export type Api_Schedule_Swap_Shifts = {
38
+ brigade_id: string
39
+ shifts: string[]
40
+ }
41
+
42
+ export type Api_Schedule_Edit_Shifts = {
43
+ brigade_id: string
44
+ shift_ids: string[]
45
+ shift_template_id: string
46
+ }
47
+
48
+ export type Api_Schedule_Shift = {
49
+ id: string
50
+ from: string
51
+ to: string
52
+ shift_template: Api_Schedule_Shift_Template
53
+ }
54
+
55
+ export type Api_Schedule_Item = {
56
+ brigade: Api_Schedule_Table_Brigade
57
+ shifts: { date: string; shift: Api_Schedule_Shift }[]
58
+ }
59
+
60
+ export type Api_Schedule_Brigade_To_Swap = {
61
+ id: string
62
+ name: string
63
+ shift_template: Api_Schedule_Shift_Template
64
+ }