@fdm-monster/client-next 0.0.1 → 0.0.2

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 (198) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/dist/assets/MaterialIcons-Regular-BjXOXp5c.eot +0 -0
  3. package/dist/assets/MaterialIcons-Regular-DEUTIz1o.ttf +0 -0
  4. package/dist/assets/MaterialIcons-Regular-DOtZ65Va.woff2 +0 -0
  5. package/dist/assets/MaterialIcons-Regular-FsbMSDLx.woff +0 -0
  6. package/dist/assets/index-CHzfWKPO.css +5 -0
  7. package/dist/assets/index-CnWtkGvw.js +90 -0
  8. package/dist/assets/index-CnWtkGvw.js.map +1 -0
  9. package/dist/favicon.ico +0 -0
  10. package/dist/img/DavidZwart.jpg +0 -0
  11. package/dist/img/OIG.JYDC2RaWdz7g9.jpg +0 -0
  12. package/dist/img/OIG.jpg +0 -0
  13. package/dist/img/icons/android-chrome-256x256.png +0 -0
  14. package/dist/img/icons/android-chrome-384x384.png +0 -0
  15. package/dist/img/icons/android-chrome-512x512.png +0 -0
  16. package/dist/img/icons/favicon.svg +1 -0
  17. package/dist/img/logo.png +0 -0
  18. package/dist/img/logo.svg +1 -0
  19. package/dist/img/manifest.webmanifest +33 -0
  20. package/dist/img/octoprint-tentacle.svg +144 -0
  21. package/dist/img/thumbail_unknown.jpg +0 -0
  22. package/dist/img/vbanner.jpg +0 -0
  23. package/dist/index.html +24 -0
  24. package/dist/robots.txt +2 -0
  25. package/package.json +1 -1
  26. package/.all-contributorsrc +0 -57
  27. package/.editorconfig +0 -5
  28. package/.eslintrc.js +0 -126
  29. package/.github/FUNDING.yml +0 -3
  30. package/.github/workflows/release-client.yml +0 -94
  31. package/.github/workflows/vue-publish.yml +0 -26
  32. package/.prettierignore +0 -15
  33. package/.whitesource +0 -12
  34. package/renovate.json +0 -30
  35. package/src/App.vue +0 -60
  36. package/src/AppLoader.vue +0 -383
  37. package/src/assets/adjectives.json +0 -1468
  38. package/src/assets/logo.svg +0 -6
  39. package/src/assets/nouns.json +0 -4309
  40. package/src/auto-imports.d.ts +0 -139
  41. package/src/backend/app.service.ts +0 -39
  42. package/src/backend/auth.service.ts +0 -56
  43. package/src/backend/base.service.ts +0 -57
  44. package/src/backend/batch.service.ts +0 -37
  45. package/src/backend/camera-stream.service.ts +0 -33
  46. package/src/backend/custom-gcode.service.ts +0 -11
  47. package/src/backend/dto/octoprint-settings.dto.ts +0 -168
  48. package/src/backend/first-time-setup.service.ts +0 -17
  49. package/src/backend/floor.service.ts +0 -84
  50. package/src/backend/index.ts +0 -4
  51. package/src/backend/print-completions.service.ts +0 -11
  52. package/src/backend/printer-file.service.ts +0 -91
  53. package/src/backend/printer-group.service.ts +0 -62
  54. package/src/backend/printer-job.service.ts +0 -20
  55. package/src/backend/printer-settings.service.ts +0 -28
  56. package/src/backend/printers.service.ts +0 -136
  57. package/src/backend/server-private.service.ts +0 -55
  58. package/src/backend/server.api.ts +0 -132
  59. package/src/backend/settings.service.ts +0 -85
  60. package/src/backend/user.service.ts +0 -51
  61. package/src/components/AboutHelp/AboutView.vue +0 -164
  62. package/src/components/CameraGrid/CameraGridView.vue +0 -111
  63. package/src/components/FirstTimeSetup/FirstTimeSetupView.vue +0 -354
  64. package/src/components/Generic/Actions/PrinterConnectionAction.vue +0 -56
  65. package/src/components/Generic/Actions/PrinterCreateAction.vue +0 -22
  66. package/src/components/Generic/Actions/PrinterDeleteAction.vue +0 -29
  67. package/src/components/Generic/Actions/PrinterQuickStopAction.vue +0 -35
  68. package/src/components/Generic/Actions/PrinterSettingsAction.vue +0 -35
  69. package/src/components/Generic/Actions/PrinterUrlAction.vue +0 -24
  70. package/src/components/Generic/Actions/RefreshFilesAction.vue +0 -50
  71. package/src/components/Generic/Actions/SyncPrinterNameAction.vue +0 -36
  72. package/src/components/Generic/Dialogs/AddOrUpdateCameraStreamDialog.vue +0 -131
  73. package/src/components/Generic/Dialogs/AddOrUpdateFloorDialog.vue +0 -141
  74. package/src/components/Generic/Dialogs/AddOrUpdatePrinterDialog.vue +0 -303
  75. package/src/components/Generic/Dialogs/BaseDialog.vue +0 -81
  76. package/src/components/Generic/Dialogs/BatchJsonCreateDialog.vue +0 -109
  77. package/src/components/Generic/Dialogs/BatchReprintDialog.vue +0 -190
  78. package/src/components/Generic/Dialogs/PrinterChecksPanel.vue +0 -37
  79. package/src/components/Generic/Dialogs/PrinterControlDialog.vue +0 -202
  80. package/src/components/Generic/Dialogs/PrinterMaintenanceDialog.vue +0 -130
  81. package/src/components/Generic/Dialogs/YamlImportExportDialog.vue +0 -186
  82. package/src/components/Generic/Dialogs/dialog.constants.ts +0 -19
  83. package/src/components/Generic/FileExplorerSideNav.vue +0 -734
  84. package/src/components/Generic/Loaders/GridLoader.vue +0 -68
  85. package/src/components/Generic/NavigationDrawer.vue +0 -69
  86. package/src/components/Generic/PrintJobsMenu.vue +0 -148
  87. package/src/components/Generic/Snackbars/AppErrorSnackbar.vue +0 -64
  88. package/src/components/Generic/Snackbars/AppInfoSnackbar.vue +0 -63
  89. package/src/components/Generic/Snackbars/AppProgressSnackbar.vue +0 -158
  90. package/src/components/Generic/Vuetify/TooltipButton.vue +0 -47
  91. package/src/components/HelpOverlay/HelpOverlay.vue +0 -57
  92. package/src/components/Login/LoginForm.vue +0 -206
  93. package/src/components/Login/LoginView.spec.ts +0 -64
  94. package/src/components/Login/LoginView.vue +0 -65
  95. package/src/components/Login/Logo.vue +0 -13
  96. package/src/components/Login/PermissionDenied.vue +0 -109
  97. package/src/components/Login/RegistrationForm.vue +0 -207
  98. package/src/components/Login/RegistrationView.vue +0 -17
  99. package/src/components/Login/__snapshots__/LoginView.spec.ts.snap +0 -1051
  100. package/src/components/NotFound/NotFoundView.vue +0 -39
  101. package/src/components/PrintStatistics/PrintStatistics.vue +0 -168
  102. package/src/components/PrintStatistics/PrintStatisticsView.vue +0 -15
  103. package/src/components/PrinterGrid/HomeToolbar.vue +0 -90
  104. package/src/components/PrinterGrid/PrinterGrid.vue +0 -164
  105. package/src/components/PrinterGrid/PrinterGridTile.vue +0 -438
  106. package/src/components/PrinterGrid/PrinterGridView.vue +0 -210
  107. package/src/components/PrinterList/FileControlList.vue +0 -40
  108. package/src/components/PrinterList/PrinterDetails.vue +0 -91
  109. package/src/components/PrinterList/PrintersView.vue +0 -492
  110. package/src/components/Settings/AccountSettings.vue +0 -163
  111. package/src/components/Settings/DiagnosticsSettings.vue +0 -137
  112. package/src/components/Settings/EmergencyCommands.vue +0 -265
  113. package/src/components/Settings/FloorSettings.vue +0 -276
  114. package/src/components/Settings/GridSettings.vue +0 -127
  115. package/src/components/Settings/OctoPrintSettings.vue +0 -188
  116. package/src/components/Settings/ServerProtectionSettings.vue +0 -370
  117. package/src/components/Settings/SettingsView.vue +0 -73
  118. package/src/components/Settings/SoftwareUpgradeSettings.vue +0 -297
  119. package/src/components/Settings/UserManagementSettings.vue +0 -257
  120. package/src/components/TopBar.vue +0 -147
  121. package/src/components.d.ts +0 -70
  122. package/src/directives/file-upload.directive.ts +0 -117
  123. package/src/directives/printer-drop-position.directive.ts +0 -92
  124. package/src/env.d.ts +0 -6
  125. package/src/main.ts +0 -76
  126. package/src/models/batch/reprint.dto.ts +0 -79
  127. package/src/models/batch.model.ts +0 -11
  128. package/src/models/camera-streams/camera-stream.ts +0 -19
  129. package/src/models/floors/floor.model.ts +0 -30
  130. package/src/models/octoprint/connection-options.model.ts +0 -8
  131. package/src/models/plugins/firmware-updates/prusa-firmware-release.model.ts +0 -57
  132. package/src/models/print-completions/print-completions.model.ts +0 -49
  133. package/src/models/printers/crud/create-printer.model.ts +0 -26
  134. package/src/models/printers/file-upload-commands.model.ts +0 -4
  135. package/src/models/printers/gcode/gcode-analysis.model.ts +0 -30
  136. package/src/models/printers/printer-current-job.model.ts +0 -90
  137. package/src/models/printers/printer-file.model.ts +0 -48
  138. package/src/models/printers/printer.model.ts +0 -18
  139. package/src/models/server/client-releases.model.ts +0 -27
  140. package/src/models/server/export-yaml.model.ts +0 -11
  141. package/src/models/server/features.model.ts +0 -37
  142. package/src/models/server/github-rate-limit.model.ts +0 -21
  143. package/src/models/server/version.model.ts +0 -14
  144. package/src/models/settings/printer-file-clean-settings.model.ts +0 -5
  145. package/src/models/settings/server-settings.dto.ts +0 -19
  146. package/src/models/settings/settings.model.ts +0 -57
  147. package/src/models/socketio-messages/socketio-message.model.ts +0 -53
  148. package/src/models/uploads/queued-upload.model.ts +0 -12
  149. package/src/models/user.model.ts +0 -15
  150. package/src/plugins/README.md +0 -3
  151. package/src/plugins/index.ts +0 -17
  152. package/src/plugins/vuetify.ts +0 -53
  153. package/src/router/index.ts +0 -192
  154. package/src/router/route-names.ts +0 -14
  155. package/src/router/utils.ts +0 -23
  156. package/src/shared/alert.events.ts +0 -14
  157. package/src/shared/app.constants.ts +0 -23
  158. package/src/shared/auth.constants.ts +0 -34
  159. package/src/shared/dialog.composable.ts +0 -41
  160. package/src/shared/drag.constants.ts +0 -19
  161. package/src/shared/experimental.constants.ts +0 -1
  162. package/src/shared/http-client.ts +0 -162
  163. package/src/shared/noun-adjectives.data.ts +0 -24
  164. package/src/shared/printer-grid.constants.ts +0 -5
  165. package/src/shared/printer-state.constants.ts +0 -194
  166. package/src/shared/snackbar.composable.ts +0 -66
  167. package/src/shared/socketio.service.ts +0 -104
  168. package/src/store/auth.store.ts +0 -255
  169. package/src/store/connection.store.ts +0 -66
  170. package/src/store/dialog.store.ts +0 -114
  171. package/src/store/features.store.ts +0 -57
  172. package/src/store/floor.store.ts +0 -173
  173. package/src/store/grid.store.ts +0 -10
  174. package/src/store/index.ts +0 -4
  175. package/src/store/printer-state.store.ts +0 -246
  176. package/src/store/printer.store.ts +0 -236
  177. package/src/store/profile.store.ts +0 -25
  178. package/src/store/settings.store.ts +0 -64
  179. package/src/store/test-printer.store.ts +0 -70
  180. package/src/store/uploads.store.ts +0 -75
  181. package/src/styles/README.md +0 -3
  182. package/src/styles/settings.scss +0 -10
  183. package/src/types/global.d.ts +0 -15
  184. package/src/utils/array.utils.ts +0 -15
  185. package/src/utils/date.utils.ts +0 -5
  186. package/src/utils/download-file.util.ts +0 -25
  187. package/src/utils/error.utils.ts +0 -3
  188. package/src/utils/file-size.util.ts +0 -11
  189. package/src/utils/id.type.ts +0 -1
  190. package/src/utils/sentry.util.ts +0 -8
  191. package/src/utils/test.util.ts +0 -30
  192. package/src/utils/time.utils.ts +0 -2
  193. package/src/utils/uploads-state.utils.ts +0 -58
  194. package/src/utils/validation.utils.ts +0 -14
  195. package/src/vite-env.d.ts +0 -7
  196. package/test/setup-axios-mock.ts +0 -15
  197. /package/{src/assets/logo.png → dist/assets/logo-CJVdjy51.png} +0 -0
  198. /package/{src/assets → dist/img/icons}/android-chrome-192x192.png +0 -0
@@ -1,37 +0,0 @@
1
- <template>
2
- <v-col :cols="cols">
3
- <strong> Checks: </strong>
4
- <v-alert
5
- v-for="(item, index) of getEvents()"
6
- :key="index"
7
- :type="item.color"
8
- density="compact"
9
- >
10
- <small> {{ item.label }} {{ item.text }} </small>
11
- </v-alert>
12
- </v-col>
13
- </template>
14
-
15
- <script lang="ts" setup>
16
- import { useTestPrinterStore } from '@/store/test-printer.store'
17
-
18
- const errorCol = 'error'
19
- const successCol = 'success'
20
- const testPrinterStore = useTestPrinterStore()
21
- const cols = ref(4)
22
-
23
- function getEvents() {
24
- return testPrinterStore.getEvents().map((e) => {
25
- return {
26
- label: e.event,
27
- text: e.payload,
28
- color: (e.failure ? errorCol : successCol) as
29
- | 'success'
30
- | 'error'
31
- | 'warning'
32
- | 'info'
33
- | undefined
34
- }
35
- })
36
- }
37
- </script>
@@ -1,202 +0,0 @@
1
- <template>
2
- <BaseDialog
3
- :id="dialog.dialogId"
4
- :max-width="'700px'"
5
- @escape="closeDialog()"
6
- >
7
- <v-card>
8
- <v-card-title> Printer Controls </v-card-title>
9
- <v-card-text>
10
- <v-container v-if="printer">
11
- <v-row>
12
- <v-col :cols="12">
13
- Printer: {{ printer?.name }}
14
- <br />
15
- <v-chip color="primary">
16
- {{ printerTemps?.actual }}C / {{ printerTemps?.target }}C
17
- </v-chip>
18
- </v-col>
19
- </v-row>
20
- <v-row>
21
- <v-col :cols="8">
22
- X/Y
23
- <br />
24
- <v-btn
25
- class="bg-primary"
26
- variant="outlined"
27
- size="x-large"
28
- @click="jogPrinterHead(-1, 1, 0)"
29
- >
30
- <v-icon>north_west</v-icon>
31
- </v-btn>
32
- <v-btn
33
- class="bg-primary"
34
- variant="outlined"
35
- size="x-large"
36
- @click="jogPrinterHead(0, 1, 0)"
37
- >
38
- <v-icon>north</v-icon>
39
- </v-btn>
40
- <v-btn
41
- class="bg-primary"
42
- variant="outlined"
43
- size="x-large"
44
- @click="jogPrinterHead(1, 1, 0)"
45
- >
46
- <v-icon>north_east</v-icon>
47
- </v-btn>
48
- <br />
49
- <v-btn
50
- class="bg-primary"
51
- variant="outlined"
52
- size="x-large"
53
- @click="jogPrinterHead(-1, 0, 0)"
54
- >
55
- <v-icon>west</v-icon>
56
- </v-btn>
57
- <v-btn
58
- class="bg-primary"
59
- variant="outlined"
60
- size="x-large"
61
- @click="homeAxes(['x', 'y'])"
62
- >
63
- <v-icon>home</v-icon>
64
- </v-btn>
65
- <v-btn
66
- class="bg-primary"
67
- variant="outlined"
68
- size="x-large"
69
- @click="jogPrinterHead(1, 0, 0)"
70
- >
71
- <v-icon>east</v-icon>
72
- </v-btn>
73
- <br />
74
- <v-btn
75
- class="bg-primary"
76
- variant="outlined"
77
- size="x-large"
78
- @click="jogPrinterHead(-1, -1, 0)"
79
- >
80
- <v-icon>south_west</v-icon>
81
- </v-btn>
82
- <v-btn
83
- class="bg-primary"
84
- variant="outlined"
85
- size="x-large"
86
- @click="jogPrinterHead(0, -1, 0)"
87
- >
88
- <v-icon>south</v-icon>
89
- </v-btn>
90
- <v-btn
91
- class="bg-primary"
92
- variant="outlined"
93
- size="x-large"
94
- @click="jogPrinterHead(1, -1, 0)"
95
- >
96
- <v-icon>south_east</v-icon>
97
- </v-btn>
98
- </v-col>
99
- <v-col cols="4">
100
- Z
101
- <br />
102
- <v-btn
103
- class="bg-primary"
104
- variant="outlined"
105
- size="x-large"
106
- @click="jogPrinterHead(0, 0, 1)"
107
- >
108
- <v-icon>north</v-icon>
109
- </v-btn>
110
- <br />
111
- <v-btn
112
- class="bg-primary"
113
- variant="outlined"
114
- size="x-large"
115
- @click="homeAxes(['z'])"
116
- >
117
- <v-icon>home</v-icon>
118
- </v-btn>
119
- <br />
120
- <v-btn
121
- class="bg-primary"
122
- variant="outlined"
123
- size="x-large"
124
- @click="jogPrinterHead(1, 0, 1)"
125
- >
126
- <v-icon>south</v-icon>
127
- </v-btn>
128
- </v-col>
129
- </v-row>
130
- <v-row>
131
- <v-col cols="12">
132
- <v-btn-toggle v-model="multiplier">
133
- <v-btn :value="0.1"> 0.1 </v-btn>
134
- <v-btn :value="1"> 1 </v-btn>
135
- <v-btn :value="10"> 10 </v-btn>
136
- <v-btn :value="100"> 100 </v-btn>
137
- </v-btn-toggle>
138
- </v-col>
139
- </v-row>
140
- </v-container>
141
- </v-card-text>
142
- <v-card-actions>
143
- <v-spacer />
144
- <v-btn
145
- variant="text"
146
- @click="closeDialog()"
147
- >
148
- Close
149
- </v-btn>
150
- </v-card-actions>
151
- </v-card>
152
- </BaseDialog>
153
- </template>
154
-
155
- <script lang="ts" setup>
156
- import { useDialog } from '@/shared/dialog.composable'
157
- import { DialogName } from '@/components/Generic/Dialogs/dialog.constants'
158
- import { computed, ref } from 'vue'
159
- import { usePrinterStore } from '@/store/printer.store'
160
- import { IdType } from '@/utils/id.type'
161
- import { usePrinterStateStore } from '@/store/printer-state.store'
162
- import { PrintersService } from '@/backend'
163
-
164
- const dialog = useDialog<{ printerId: IdType }>(DialogName.PrinterControlDialog)
165
- const printerStore = usePrinterStore()
166
- const printerStateStore = usePrinterStateStore()
167
- const printerId = computed(() => dialog.context()?.printerId)
168
- const printer = computed(() => {
169
- if (!printerId.value) return
170
-
171
- return printerStore.printer(printerId.value)
172
- })
173
-
174
- const multiplier = ref<number>(10)
175
-
176
- const printerTemps = computed(() => {
177
- const events = printerStateStore.printerEventsById[printerId.value]
178
- if (
179
- events?.current?.payload?.temps?.length &&
180
- events?.current?.payload?.temps[0]?.tool0?.actual
181
- ) {
182
- return events?.current?.payload?.temps[0]?.tool0
183
- }
184
- return null
185
- })
186
-
187
- const jogPrinterHead = async (x: number, y: number, z: number) => {
188
- await PrintersService.sendPrinterJogCommand(printerId.value, {
189
- x: x * multiplier.value,
190
- y: y * multiplier.value,
191
- z: z * multiplier.value
192
- })
193
- }
194
-
195
- const homeAxes = async (axes: string[]) => {
196
- await PrintersService.sendPrinterHomeCommand(printerId.value, axes)
197
- }
198
-
199
- const closeDialog = () => {
200
- dialog.closeDialog()
201
- }
202
- </script>
@@ -1,130 +0,0 @@
1
- <template>
2
- <BaseDialog
3
- :id="dialog.dialogId"
4
- :max-width="'700px'"
5
- @escape="closeDialog()"
6
- >
7
- <v-card class="pa-4">
8
- <v-card-title>
9
- <span class="text-h5">
10
- Mark '{{ printer?.name }}' for maintenance
11
- </span>
12
- </v-card-title>
13
- <v-alert color="secondary">
14
- Keep this info clear and stick to convention
15
- </v-alert>
16
- <v-card-text>
17
- <v-row>
18
- <v-col cols="12">
19
- <v-select
20
- v-model="selectedQuickItems"
21
- :chips="true"
22
- :items="quickItems"
23
- :menu-props="{
24
- closeOnBack: true,
25
- closeOnContentClick: true
26
- }"
27
- clearable
28
- color="primary"
29
- multiple
30
- placeholder="Quick select reason"
31
- @update:model-value="updateText()"
32
- />
33
- <v-textarea
34
- v-model="formData.disabledReason"
35
- data-vv-validate-on="change|blur"
36
- >
37
- <template #label>
38
- <div>Type the reason*</div>
39
- </template>
40
- </v-textarea>
41
- </v-col>
42
- </v-row>
43
- </v-card-text>
44
- <v-card-actions>
45
- <em class="text-red"> * indicates required field </em>
46
- <v-spacer />
47
- <v-btn
48
- variant="text"
49
- @click="closeDialog()"
50
- >
51
- Close
52
- </v-btn>
53
- <v-btn
54
- color="blue-darken-1"
55
- variant="text"
56
- @click="submit()"
57
- >
58
- Save
59
- </v-btn>
60
- </v-card-actions>
61
- </v-card>
62
- </BaseDialog>
63
- </template>
64
-
65
- <script lang="ts" setup>
66
- import { computed, ref } from 'vue'
67
- import { PrintersService } from '@/backend'
68
- import { usePrinterStore } from '@/store/printer.store'
69
- import { DialogName } from '@/components/Generic/Dialogs/dialog.constants'
70
- import { useDialog } from '@/shared/dialog.composable'
71
-
72
- const selectedQuickItems = ref([])
73
- const quickItems = [
74
- 'Broken part',
75
- 'Blob',
76
- 'Maxtemp',
77
- 'Preheat error',
78
- 'Cable USB ',
79
- 'Bed thermal runaway',
80
- 'Thermistor Heatbed',
81
- 'Thermistor Heatblock',
82
- 'Thermal Runaway',
83
- 'Mintemp Nozzle',
84
- 'Mintemp Heatbed',
85
- 'Nozzle',
86
- 'Nozzle Clog',
87
- 'Fan Hotend',
88
- 'Fan Part cooling',
89
- 'Extruder rattle',
90
- 'Extruder',
91
- 'Z Axis',
92
- 'X Axis',
93
- 'Y Axis',
94
- 'Rented',
95
- 'Motherboard',
96
- 'Other',
97
- 'Clean'
98
- ]
99
- const formData = ref<{
100
- disabledReason?: string
101
- }>({})
102
- const printersStore = usePrinterStore()
103
- const dialog = useDialog(DialogName.PrinterMaintenanceDialog)
104
- const printer = computed(() => printersStore.maintenanceDialogPrinter)
105
-
106
- const updateText = () => {
107
- formData.value.disabledReason = selectedQuickItems.value.join(', ')
108
- }
109
-
110
- const submit = async () => {
111
- const printerId = printer.value?.id
112
- if (!printerId) {
113
- formData.value = {}
114
- closeDialog()
115
- return
116
- }
117
-
118
- const disabledReason = formData.value.disabledReason
119
- await PrintersService.updatePrinterMaintenance(printerId, disabledReason)
120
-
121
- formData.value = {}
122
- closeDialog()
123
- }
124
-
125
- const closeDialog = () => {
126
- selectedQuickItems.value = []
127
- dialog.closeDialog()
128
- printersStore.setMaintenanceDialogPrinter()
129
- }
130
- </script>
@@ -1,186 +0,0 @@
1
- <template>
2
- <BaseDialog
3
- :id="dialog.dialogId"
4
- max-width="700px"
5
- @before-opened="onBeforeDialogOpened"
6
- @escape="closeDialog()"
7
- >
8
- <v-card class="pa-4">
9
- <v-card-title>
10
- <span class="text-h5"> YAML export and import </span>
11
- </v-card-title>
12
- <v-card-text>
13
- <div>Choose mode:</div>
14
- <v-row>
15
- <br />
16
- <v-radio-group
17
- v-model="selectedMode"
18
- class="ml-3"
19
- inline
20
- >
21
- <v-radio
22
- :value="0"
23
- label="Import YAML"
24
- />
25
- <v-radio
26
- :value="1"
27
- label="Export YAML"
28
- />
29
- </v-radio-group>
30
- </v-row>
31
-
32
- <div>
33
- <div
34
- v-if="isImportMode"
35
- class="pl-2"
36
- >
37
- <v-file-input
38
- v-model="importFile"
39
- accept=".yaml"
40
- label="Select a YAML file for import *"
41
- />
42
- </div>
43
- <div v-else>
44
- <v-checkbox
45
- v-model="exportFloors"
46
- class="pa-0 ma-0 mt-2 ml-2"
47
- label="Include floors"
48
- />
49
- <v-checkbox
50
- v-model="exportGroups"
51
- :disabled="disableExportGroups"
52
- class="pa-0 ma-0 mt-2 ml-2"
53
- label="Include groups"
54
- />
55
- <v-checkbox
56
- v-model="exportPrinters"
57
- class="pa-0 ma-0 ml-2"
58
- label="Include printers"
59
- />
60
- <v-checkbox
61
- v-model="exportFloorGrid"
62
- class="pa-0 ma-0 ml-2"
63
- label="Include grid positions (auto-includes printers)"
64
- />
65
-
66
- Include notes (for yourself):
67
- <v-textarea
68
- v-model="notes"
69
- rows="1"
70
- />
71
- </div>
72
- <v-btn
73
- v-if="!isImportMode"
74
- @click="downloadExportYamlFile()"
75
- >
76
- <v-icon>download</v-icon>
77
- Export YAML file
78
- </v-btn>
79
- <v-btn
80
- v-if="isImportMode"
81
- :disabled="!isFileProvided"
82
- @click="uploadAndImportYamlFile()"
83
- >
84
- <v-icon>upload</v-icon>
85
- Import YAML data
86
- </v-btn>
87
- </div>
88
- </v-card-text>
89
- <v-card-actions>
90
- <em class="text-red"> * indicates required field </em>
91
- <v-spacer />
92
- <v-btn
93
- variant="text"
94
- @click="closeDialog()"
95
- >
96
- Close
97
- </v-btn>
98
- </v-card-actions>
99
- </v-card>
100
- </BaseDialog>
101
- </template>
102
-
103
- <script lang="ts" setup>
104
- import { DialogName } from '@/components/Generic/Dialogs/dialog.constants'
105
- import { ServerPrivateService } from '@/backend/server-private.service'
106
- import { useDialog } from '@/shared/dialog.composable'
107
- import { useSnackbar } from '@/shared/snackbar.composable'
108
- import { useFeatureStore } from '@/store/features.store'
109
-
110
- const featureStore = useFeatureStore()
111
- const dialog = useDialog(DialogName.YamlImportExport)
112
- const snackbar = useSnackbar()
113
-
114
- const errorMessage = ref('')
115
- const errorDetailedMessage = ref('')
116
- const selectedMode = ref(0)
117
- const exportFloors = ref(true)
118
- const exportFloorGrid = ref(true)
119
- const exportGroups = ref(true)
120
- const exportPrinters = ref(true)
121
- const importFile = ref(undefined)
122
- const notes = ref('')
123
-
124
- const disableExportGroups = computed(() => {
125
- return !featureStore.hasFeature('printerGroupsApi')
126
- })
127
-
128
- const isFileProvided = computed(() => {
129
- return !!importFile.value
130
- })
131
-
132
- const isImportMode = computed(() => {
133
- return selectedMode.value === 0
134
- })
135
-
136
- const onBeforeDialogOpened = async () => {
137
- await featureStore.loadFeatures()
138
- exportGroups.value = featureStore.hasFeature('printerGroupsApi')
139
- }
140
-
141
- const downloadExportYamlFile = async () => {
142
- if (exportFloorGrid.value) {
143
- exportPrinters.value = true
144
- }
145
-
146
- await ServerPrivateService.downloadYamlExport({
147
- exportPrinters: exportPrinters.value,
148
- exportGroups: exportGroups.value,
149
- exportFloorGrid: exportFloorGrid.value,
150
- printerComparisonStrategiesByPriority: ['name', 'url'],
151
- exportFloors: exportFloors.value,
152
- floorComparisonStrategiesByPriority: 'floor',
153
- notes: notes.value
154
- })
155
- snackbar.openInfoMessage({
156
- title: 'Downloaded the YAML file'
157
- })
158
- notes.value = ''
159
- }
160
-
161
- const uploadAndImportYamlFile = async () => {
162
- errorMessage.value = ''
163
- errorDetailedMessage.value = ''
164
- if (!importFile.value) {
165
- errorMessage.value = 'The import file was not specified'
166
- return
167
- }
168
- try {
169
- await ServerPrivateService.uploadAndImportYaml(importFile.value)
170
- importFile.value = undefined
171
- snackbar.openInfoMessage({
172
- title: 'Imported the YAML file'
173
- })
174
- closeDialog()
175
- } catch (e) {
176
- errorMessage.value = 'An error occurred uring import'
177
- errorDetailedMessage.value = (e as Error).message.toString()
178
- importFile.value = undefined
179
- }
180
- }
181
-
182
- const closeDialog = () => {
183
- importFile.value = undefined
184
- dialog.closeDialog()
185
- }
186
- </script>
@@ -1,19 +0,0 @@
1
- export enum DialogName {
2
- // The JSON import dialog, which is used to import a JSON file with a printer array into the application.
3
- BatchJsonCreate = 'BatchJsonCreate',
4
- // Stateful dialog meant for verifying the last printed file of each selected printer
5
- BatchReprintDialog = 'BatchReprintDialog',
6
- // The YAML import and export dialog, which is used to import and export a YAML file with a printer array into and from the application.
7
- // This YAML is for internal backup and restore only and is not compatible with external projects.
8
- YamlImportExport = 'YamlImportExport',
9
- // The printer create dialog, which is used to create a new or update a printer.
10
- AddOrUpdatePrinterDialog = 'AddOrUpdatePrinterDialog',
11
- // The floor create dialog, which is used to create a new floor where printers can be placed.
12
- AddOrUpdateFloorDialog = 'AddOrUpdateFloorDialog',
13
- // The printer repair dialog, which is used to mark a printer as maintenance mode.
14
- PrinterMaintenanceDialog = 'PrinterMaintenanceDialog',
15
- // The camera create dialog, which is used to create a new or update a camera.
16
- AddOrUpdateCameraDialog = 'AddOrUpdateCameraDialog',
17
- // Dialog for moving print head, homing, or retracting/extruding filament
18
- PrinterControlDialog = 'PrinterControlDialog'
19
- }