shared-ritm 1.0.26 → 1.0.28
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/dist/index.css +1 -1
- package/dist/shared-ritm.es.js +851 -830
- package/dist/shared-ritm.umd.js +6 -6
- package/dist/types/index.d.ts +2 -1
- package/package.json +1 -1
- package/src/common/app-loader/index.vue +41 -0
- package/src/common/app-page-layout/AppPageLayout.vue +122 -122
- package/src/index.ts +13 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -7,12 +7,13 @@ import AppSelect from '@/common/app-select/AppSelect.vue';
|
|
|
7
7
|
import AppWrapper from '@/common/app-wrapper/AppWrapper.vue';
|
|
8
8
|
import AppSidebar from '@/common/app-sidebar/AppSidebar.vue';
|
|
9
9
|
import AppLayoutHeader from '@/common/app-layout/components/AppLayoutHeader.vue';
|
|
10
|
+
import AppLoader from '@/common/app-loader/index.vue';
|
|
10
11
|
import useGanttService from '@/api/services/GanttService';
|
|
11
12
|
import useMetricsService from '@/api/services/MetricsService';
|
|
12
13
|
import useProjectsService from '@/api/services/ProjectsService';
|
|
13
14
|
import useRepairsService from '@/api/services/RepairsService';
|
|
14
15
|
import useTasksService from '@/api/services/TasksService';
|
|
15
|
-
export { AppButton, AppInput, AppToggle, AppInputSearch, AppLayout, AppSelect, AppWrapper, AppSidebar, AppLayoutHeader };
|
|
16
|
+
export { AppButton, AppInput, AppToggle, AppInputSearch, AppLayout, AppSelect, AppWrapper, AppSidebar, AppLayoutHeader, AppLoader, };
|
|
16
17
|
export { useGanttService, useMetricsService, useProjectsService, useRepairsService, useTasksService };
|
|
17
18
|
export * from '@/api/types/Api_Repairs';
|
|
18
19
|
export * from '@/api/types/Api_Tasks';
|
package/package.json
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="{ 'loader-backdrop': backdrop && loading }">
|
|
3
|
+
<q-spinner v-if="loading" :size="size" class="loader-spinner" :thickness="thickness" />
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script setup lang="ts">
|
|
8
|
+
interface Props {
|
|
9
|
+
backdrop: boolean
|
|
10
|
+
loading: boolean
|
|
11
|
+
thickness: number
|
|
12
|
+
size: string
|
|
13
|
+
}
|
|
14
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
15
|
+
backdrop: false,
|
|
16
|
+
loading: false,
|
|
17
|
+
thickness: 2,
|
|
18
|
+
size: 'md',
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
// <app-loader :loading="logged" :backdrop="true" />
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<style scoped lang="scss">
|
|
25
|
+
.loader {
|
|
26
|
+
&-backdrop {
|
|
27
|
+
width: 100%;
|
|
28
|
+
height: 100%;
|
|
29
|
+
background-color: rgba(255, 255, 255, 0.45);
|
|
30
|
+
position: absolute;
|
|
31
|
+
z-index: 9999;
|
|
32
|
+
}
|
|
33
|
+
&-spinner {
|
|
34
|
+
position: absolute;
|
|
35
|
+
color: #3f8cff;
|
|
36
|
+
top: 50%;
|
|
37
|
+
left: 48%;
|
|
38
|
+
z-index: 2;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
<template lang="pug">
|
|
2
|
-
q-page#content(:class="$style['page-container']")
|
|
3
|
-
q-toolbar(:class="$style['toolbar']")
|
|
4
|
-
q-toolbar-title(:class="$style.title") {{ title }}
|
|
5
|
-
div(:class="$style['action-buttons']")
|
|
6
|
-
app-button(
|
|
7
|
-
rounded
|
|
8
|
-
:class="$style['button-new']"
|
|
9
|
-
:label="'Новый ремонт'"
|
|
10
|
-
@click="emits('create-repair')"
|
|
11
|
-
color="#fff"
|
|
12
|
-
icon="add"
|
|
13
|
-
)
|
|
14
|
-
app-button(rounded :class="$style['button-video-wall']" @click="emits('routing-to-video-wall')")
|
|
15
|
-
video-wall-icon
|
|
16
|
-
span Видеостена
|
|
17
|
-
app-button(rounded :class="$style.button" @click="openFullScreenWidgets")
|
|
18
|
-
q-tooltip на весь экран
|
|
19
|
-
q-icon(name="open_in_full")
|
|
20
|
-
//app-button(rounded :class="$style.button")
|
|
21
|
-
// graph-icon
|
|
22
|
-
//app-button(rounded :class="$style.button")
|
|
23
|
-
// time-line-icon
|
|
24
|
-
slot
|
|
25
|
-
</template>
|
|
26
|
-
|
|
27
|
-
<script setup lang="ts">
|
|
28
|
-
import { defineProps, defineEmits, defineAsyncComponent } from 'vue'
|
|
29
|
-
import AppButton from '@/common/app-button/AppButton.vue'
|
|
30
|
-
import { useQuasar } from 'quasar'
|
|
31
|
-
import VideoWallIcon from '@/icons/page-header/videoWallIcon.vue'
|
|
32
|
-
|
|
33
|
-
const $q = useQuasar()
|
|
34
|
-
|
|
35
|
-
const FullScreenDialog = defineAsyncComponent(() => import('@/components/dialogs/full-screen-widgets/index.vue'))
|
|
36
|
-
// import GraphIcon from '@/icons/page-header/graphIcon.vue'
|
|
37
|
-
// import TimeLineIcon from '@/icons/page-header/timeLineIcon.vue'
|
|
38
|
-
interface Props {
|
|
39
|
-
title: string
|
|
40
|
-
}
|
|
41
|
-
const props = defineProps<Props>()
|
|
42
|
-
const emits = defineEmits(['create-repair', ''])
|
|
43
|
-
|
|
44
|
-
const openFullScreenWidgets = () => {
|
|
45
|
-
$q.dialog({
|
|
46
|
-
component: FullScreenDialog,
|
|
47
|
-
})
|
|
48
|
-
}
|
|
49
|
-
</script>
|
|
50
|
-
<style module lang="scss">
|
|
51
|
-
.toolbar {
|
|
52
|
-
padding: 0;
|
|
53
|
-
margin-top: 16px;
|
|
54
|
-
}
|
|
55
|
-
.page-container {
|
|
56
|
-
padding: 0 4px 0 0;
|
|
57
|
-
max-width: 1300px;
|
|
58
|
-
margin: 0 auto;
|
|
59
|
-
max-height: 600px;
|
|
60
|
-
overflow: auto;
|
|
61
|
-
&::-webkit-scrollbar-thumb {
|
|
62
|
-
height: 88px;
|
|
63
|
-
background-color: #d3dbeb;
|
|
64
|
-
border-radius: 6px;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
.button {
|
|
68
|
-
padding: 12px;
|
|
69
|
-
background: white;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.button-new {
|
|
73
|
-
padding: 12px 18px;
|
|
74
|
-
background: #3f8cff;
|
|
75
|
-
}
|
|
76
|
-
.button-video-wall {
|
|
77
|
-
padding: 10px 18px;
|
|
78
|
-
background: white;
|
|
79
|
-
span {
|
|
80
|
-
color: #3f8cff;
|
|
81
|
-
margin-left: 8px;
|
|
82
|
-
font-size: 16px;
|
|
83
|
-
font-weight: 700;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
.title {
|
|
87
|
-
color: #fff;
|
|
88
|
-
font-family: Montserrat, sans-serif;
|
|
89
|
-
font-size: 32px;
|
|
90
|
-
font-style: normal;
|
|
91
|
-
font-weight: 700;
|
|
92
|
-
line-height: normal;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.action-buttons {
|
|
96
|
-
position: relative;
|
|
97
|
-
display: flex;
|
|
98
|
-
align-items: center;
|
|
99
|
-
column-gap: 16px;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@media (max-width: 1440px) {
|
|
103
|
-
.page-container {
|
|
104
|
-
max-width: 874px;
|
|
105
|
-
}
|
|
106
|
-
.action-buttons {
|
|
107
|
-
column-gap: 8px;
|
|
108
|
-
}
|
|
109
|
-
.title {
|
|
110
|
-
font-size: 24px;
|
|
111
|
-
line-height: normal;
|
|
112
|
-
}
|
|
113
|
-
.button {
|
|
114
|
-
padding: 10px;
|
|
115
|
-
background: white;
|
|
116
|
-
}
|
|
117
|
-
.button-new {
|
|
118
|
-
padding: 10px 12px;
|
|
119
|
-
background: #3f8cff;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
</style>
|
|
1
|
+
<template lang="pug">
|
|
2
|
+
q-page#content(:class="$style['page-container']")
|
|
3
|
+
q-toolbar(:class="$style['toolbar']")
|
|
4
|
+
q-toolbar-title(:class="$style.title") {{ title }}
|
|
5
|
+
div(:class="$style['action-buttons']")
|
|
6
|
+
app-button(
|
|
7
|
+
rounded
|
|
8
|
+
:class="$style['button-new']"
|
|
9
|
+
:label="'Новый ремонт'"
|
|
10
|
+
@click="emits('create-repair')"
|
|
11
|
+
color="#fff"
|
|
12
|
+
icon="add"
|
|
13
|
+
)
|
|
14
|
+
app-button(rounded :class="$style['button-video-wall']" @click="emits('routing-to-video-wall')")
|
|
15
|
+
video-wall-icon
|
|
16
|
+
span Видеостена
|
|
17
|
+
app-button(rounded :class="$style.button" @click="openFullScreenWidgets")
|
|
18
|
+
q-tooltip на весь экран
|
|
19
|
+
q-icon(name="open_in_full")
|
|
20
|
+
//app-button(rounded :class="$style.button")
|
|
21
|
+
// graph-icon
|
|
22
|
+
//app-button(rounded :class="$style.button")
|
|
23
|
+
// time-line-icon
|
|
24
|
+
slot
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script setup lang="ts">
|
|
28
|
+
import { defineProps, defineEmits, defineAsyncComponent } from 'vue'
|
|
29
|
+
import AppButton from '@/common/app-button/AppButton.vue'
|
|
30
|
+
import { useQuasar } from 'quasar'
|
|
31
|
+
import VideoWallIcon from '@/icons/page-header/videoWallIcon.vue'
|
|
32
|
+
|
|
33
|
+
const $q = useQuasar()
|
|
34
|
+
|
|
35
|
+
const FullScreenDialog = defineAsyncComponent(() => import('@/components/dialogs/full-screen-widgets/index.vue'))
|
|
36
|
+
// import GraphIcon from '@/icons/page-header/graphIcon.vue'
|
|
37
|
+
// import TimeLineIcon from '@/icons/page-header/timeLineIcon.vue'
|
|
38
|
+
interface Props {
|
|
39
|
+
title: string
|
|
40
|
+
}
|
|
41
|
+
const props = defineProps<Props>()
|
|
42
|
+
const emits = defineEmits(['create-repair', ''])
|
|
43
|
+
|
|
44
|
+
const openFullScreenWidgets = () => {
|
|
45
|
+
$q.dialog({
|
|
46
|
+
component: FullScreenDialog,
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
</script>
|
|
50
|
+
<style module lang="scss">
|
|
51
|
+
.toolbar {
|
|
52
|
+
padding: 0;
|
|
53
|
+
margin-top: 16px;
|
|
54
|
+
}
|
|
55
|
+
.page-container {
|
|
56
|
+
padding: 0 4px 0 0;
|
|
57
|
+
max-width: 1300px;
|
|
58
|
+
margin: 0 auto;
|
|
59
|
+
max-height: 600px;
|
|
60
|
+
overflow: auto;
|
|
61
|
+
&::-webkit-scrollbar-thumb {
|
|
62
|
+
height: 88px;
|
|
63
|
+
background-color: #d3dbeb;
|
|
64
|
+
border-radius: 6px;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
.button {
|
|
68
|
+
padding: 12px;
|
|
69
|
+
background: white;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.button-new {
|
|
73
|
+
padding: 12px 18px;
|
|
74
|
+
background: #3f8cff;
|
|
75
|
+
}
|
|
76
|
+
.button-video-wall {
|
|
77
|
+
padding: 10px 18px;
|
|
78
|
+
background: white;
|
|
79
|
+
span {
|
|
80
|
+
color: #3f8cff;
|
|
81
|
+
margin-left: 8px;
|
|
82
|
+
font-size: 16px;
|
|
83
|
+
font-weight: 700;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
.title {
|
|
87
|
+
color: #fff;
|
|
88
|
+
font-family: Montserrat, sans-serif;
|
|
89
|
+
font-size: 32px;
|
|
90
|
+
font-style: normal;
|
|
91
|
+
font-weight: 700;
|
|
92
|
+
line-height: normal;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.action-buttons {
|
|
96
|
+
position: relative;
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
column-gap: 16px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@media (max-width: 1440px) {
|
|
103
|
+
.page-container {
|
|
104
|
+
max-width: 874px;
|
|
105
|
+
}
|
|
106
|
+
.action-buttons {
|
|
107
|
+
column-gap: 8px;
|
|
108
|
+
}
|
|
109
|
+
.title {
|
|
110
|
+
font-size: 24px;
|
|
111
|
+
line-height: normal;
|
|
112
|
+
}
|
|
113
|
+
.button {
|
|
114
|
+
padding: 10px;
|
|
115
|
+
background: white;
|
|
116
|
+
}
|
|
117
|
+
.button-new {
|
|
118
|
+
padding: 10px 12px;
|
|
119
|
+
background: #3f8cff;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
</style>
|
package/src/index.ts
CHANGED
|
@@ -7,6 +7,7 @@ import AppSelect from '@/common/app-select/AppSelect.vue'
|
|
|
7
7
|
import AppWrapper from '@/common/app-wrapper/AppWrapper.vue'
|
|
8
8
|
import AppSidebar from '@/common/app-sidebar/AppSidebar.vue'
|
|
9
9
|
import AppLayoutHeader from '@/common/app-layout/components/AppLayoutHeader.vue'
|
|
10
|
+
import AppLoader from '@/common/app-loader/index.vue'
|
|
10
11
|
|
|
11
12
|
import useGanttService from '@/api/services/GanttService'
|
|
12
13
|
import useMetricsService from '@/api/services/MetricsService'
|
|
@@ -14,7 +15,18 @@ import useProjectsService from '@/api/services/ProjectsService'
|
|
|
14
15
|
import useRepairsService from '@/api/services/RepairsService'
|
|
15
16
|
import useTasksService from '@/api/services/TasksService'
|
|
16
17
|
|
|
17
|
-
export {
|
|
18
|
+
export {
|
|
19
|
+
AppButton,
|
|
20
|
+
AppInput,
|
|
21
|
+
AppToggle,
|
|
22
|
+
AppInputSearch,
|
|
23
|
+
AppLayout,
|
|
24
|
+
AppSelect,
|
|
25
|
+
AppWrapper,
|
|
26
|
+
AppSidebar,
|
|
27
|
+
AppLayoutHeader,
|
|
28
|
+
AppLoader,
|
|
29
|
+
}
|
|
18
30
|
|
|
19
31
|
export { useGanttService, useMetricsService, useProjectsService, useRepairsService, useTasksService }
|
|
20
32
|
|