@fdm-monster/client-next 0.0.1 → 0.0.3

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 (199) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/RELEASE_NOTES.MD +28 -1
  3. package/dist/assets/MaterialIcons-Regular-BjXOXp5c.eot +0 -0
  4. package/dist/assets/MaterialIcons-Regular-DEUTIz1o.ttf +0 -0
  5. package/dist/assets/MaterialIcons-Regular-DOtZ65Va.woff2 +0 -0
  6. package/dist/assets/MaterialIcons-Regular-FsbMSDLx.woff +0 -0
  7. package/dist/assets/index-CHzfWKPO.css +5 -0
  8. package/dist/assets/index-WVqTlgq7.js +90 -0
  9. package/dist/assets/index-WVqTlgq7.js.map +1 -0
  10. package/dist/favicon.ico +0 -0
  11. package/dist/img/DavidZwart.jpg +0 -0
  12. package/dist/img/OIG.JYDC2RaWdz7g9.jpg +0 -0
  13. package/dist/img/OIG.jpg +0 -0
  14. package/dist/img/icons/android-chrome-256x256.png +0 -0
  15. package/dist/img/icons/android-chrome-384x384.png +0 -0
  16. package/dist/img/icons/android-chrome-512x512.png +0 -0
  17. package/dist/img/icons/favicon.svg +1 -0
  18. package/dist/img/logo.png +0 -0
  19. package/dist/img/logo.svg +1 -0
  20. package/dist/img/manifest.webmanifest +33 -0
  21. package/dist/img/octoprint-tentacle.svg +144 -0
  22. package/dist/img/thumbail_unknown.jpg +0 -0
  23. package/dist/img/vbanner.jpg +0 -0
  24. package/dist/index.html +24 -0
  25. package/dist/robots.txt +2 -0
  26. package/package.json +1 -1
  27. package/.all-contributorsrc +0 -57
  28. package/.editorconfig +0 -5
  29. package/.eslintrc.js +0 -126
  30. package/.github/FUNDING.yml +0 -3
  31. package/.github/workflows/release-client.yml +0 -94
  32. package/.github/workflows/vue-publish.yml +0 -26
  33. package/.prettierignore +0 -15
  34. package/.whitesource +0 -12
  35. package/renovate.json +0 -30
  36. package/src/App.vue +0 -60
  37. package/src/AppLoader.vue +0 -383
  38. package/src/assets/adjectives.json +0 -1468
  39. package/src/assets/logo.svg +0 -6
  40. package/src/assets/nouns.json +0 -4309
  41. package/src/auto-imports.d.ts +0 -139
  42. package/src/backend/app.service.ts +0 -39
  43. package/src/backend/auth.service.ts +0 -56
  44. package/src/backend/base.service.ts +0 -57
  45. package/src/backend/batch.service.ts +0 -37
  46. package/src/backend/camera-stream.service.ts +0 -33
  47. package/src/backend/custom-gcode.service.ts +0 -11
  48. package/src/backend/dto/octoprint-settings.dto.ts +0 -168
  49. package/src/backend/first-time-setup.service.ts +0 -17
  50. package/src/backend/floor.service.ts +0 -84
  51. package/src/backend/index.ts +0 -4
  52. package/src/backend/print-completions.service.ts +0 -11
  53. package/src/backend/printer-file.service.ts +0 -91
  54. package/src/backend/printer-group.service.ts +0 -62
  55. package/src/backend/printer-job.service.ts +0 -20
  56. package/src/backend/printer-settings.service.ts +0 -28
  57. package/src/backend/printers.service.ts +0 -136
  58. package/src/backend/server-private.service.ts +0 -55
  59. package/src/backend/server.api.ts +0 -132
  60. package/src/backend/settings.service.ts +0 -85
  61. package/src/backend/user.service.ts +0 -51
  62. package/src/components/AboutHelp/AboutView.vue +0 -164
  63. package/src/components/CameraGrid/CameraGridView.vue +0 -111
  64. package/src/components/FirstTimeSetup/FirstTimeSetupView.vue +0 -354
  65. package/src/components/Generic/Actions/PrinterConnectionAction.vue +0 -56
  66. package/src/components/Generic/Actions/PrinterCreateAction.vue +0 -22
  67. package/src/components/Generic/Actions/PrinterDeleteAction.vue +0 -29
  68. package/src/components/Generic/Actions/PrinterQuickStopAction.vue +0 -35
  69. package/src/components/Generic/Actions/PrinterSettingsAction.vue +0 -35
  70. package/src/components/Generic/Actions/PrinterUrlAction.vue +0 -24
  71. package/src/components/Generic/Actions/RefreshFilesAction.vue +0 -50
  72. package/src/components/Generic/Actions/SyncPrinterNameAction.vue +0 -36
  73. package/src/components/Generic/Dialogs/AddOrUpdateCameraStreamDialog.vue +0 -131
  74. package/src/components/Generic/Dialogs/AddOrUpdateFloorDialog.vue +0 -141
  75. package/src/components/Generic/Dialogs/AddOrUpdatePrinterDialog.vue +0 -303
  76. package/src/components/Generic/Dialogs/BaseDialog.vue +0 -81
  77. package/src/components/Generic/Dialogs/BatchJsonCreateDialog.vue +0 -109
  78. package/src/components/Generic/Dialogs/BatchReprintDialog.vue +0 -190
  79. package/src/components/Generic/Dialogs/PrinterChecksPanel.vue +0 -37
  80. package/src/components/Generic/Dialogs/PrinterControlDialog.vue +0 -202
  81. package/src/components/Generic/Dialogs/PrinterMaintenanceDialog.vue +0 -130
  82. package/src/components/Generic/Dialogs/YamlImportExportDialog.vue +0 -186
  83. package/src/components/Generic/Dialogs/dialog.constants.ts +0 -19
  84. package/src/components/Generic/FileExplorerSideNav.vue +0 -734
  85. package/src/components/Generic/Loaders/GridLoader.vue +0 -68
  86. package/src/components/Generic/NavigationDrawer.vue +0 -69
  87. package/src/components/Generic/PrintJobsMenu.vue +0 -148
  88. package/src/components/Generic/Snackbars/AppErrorSnackbar.vue +0 -64
  89. package/src/components/Generic/Snackbars/AppInfoSnackbar.vue +0 -63
  90. package/src/components/Generic/Snackbars/AppProgressSnackbar.vue +0 -158
  91. package/src/components/Generic/Vuetify/TooltipButton.vue +0 -47
  92. package/src/components/HelpOverlay/HelpOverlay.vue +0 -57
  93. package/src/components/Login/LoginForm.vue +0 -206
  94. package/src/components/Login/LoginView.spec.ts +0 -64
  95. package/src/components/Login/LoginView.vue +0 -65
  96. package/src/components/Login/Logo.vue +0 -13
  97. package/src/components/Login/PermissionDenied.vue +0 -109
  98. package/src/components/Login/RegistrationForm.vue +0 -207
  99. package/src/components/Login/RegistrationView.vue +0 -17
  100. package/src/components/Login/__snapshots__/LoginView.spec.ts.snap +0 -1051
  101. package/src/components/NotFound/NotFoundView.vue +0 -39
  102. package/src/components/PrintStatistics/PrintStatistics.vue +0 -168
  103. package/src/components/PrintStatistics/PrintStatisticsView.vue +0 -15
  104. package/src/components/PrinterGrid/HomeToolbar.vue +0 -90
  105. package/src/components/PrinterGrid/PrinterGrid.vue +0 -164
  106. package/src/components/PrinterGrid/PrinterGridTile.vue +0 -438
  107. package/src/components/PrinterGrid/PrinterGridView.vue +0 -210
  108. package/src/components/PrinterList/FileControlList.vue +0 -40
  109. package/src/components/PrinterList/PrinterDetails.vue +0 -91
  110. package/src/components/PrinterList/PrintersView.vue +0 -492
  111. package/src/components/Settings/AccountSettings.vue +0 -163
  112. package/src/components/Settings/DiagnosticsSettings.vue +0 -137
  113. package/src/components/Settings/EmergencyCommands.vue +0 -265
  114. package/src/components/Settings/FloorSettings.vue +0 -276
  115. package/src/components/Settings/GridSettings.vue +0 -127
  116. package/src/components/Settings/OctoPrintSettings.vue +0 -188
  117. package/src/components/Settings/ServerProtectionSettings.vue +0 -370
  118. package/src/components/Settings/SettingsView.vue +0 -73
  119. package/src/components/Settings/SoftwareUpgradeSettings.vue +0 -297
  120. package/src/components/Settings/UserManagementSettings.vue +0 -257
  121. package/src/components/TopBar.vue +0 -147
  122. package/src/components.d.ts +0 -70
  123. package/src/directives/file-upload.directive.ts +0 -117
  124. package/src/directives/printer-drop-position.directive.ts +0 -92
  125. package/src/env.d.ts +0 -6
  126. package/src/main.ts +0 -76
  127. package/src/models/batch/reprint.dto.ts +0 -79
  128. package/src/models/batch.model.ts +0 -11
  129. package/src/models/camera-streams/camera-stream.ts +0 -19
  130. package/src/models/floors/floor.model.ts +0 -30
  131. package/src/models/octoprint/connection-options.model.ts +0 -8
  132. package/src/models/plugins/firmware-updates/prusa-firmware-release.model.ts +0 -57
  133. package/src/models/print-completions/print-completions.model.ts +0 -49
  134. package/src/models/printers/crud/create-printer.model.ts +0 -26
  135. package/src/models/printers/file-upload-commands.model.ts +0 -4
  136. package/src/models/printers/gcode/gcode-analysis.model.ts +0 -30
  137. package/src/models/printers/printer-current-job.model.ts +0 -90
  138. package/src/models/printers/printer-file.model.ts +0 -48
  139. package/src/models/printers/printer.model.ts +0 -18
  140. package/src/models/server/client-releases.model.ts +0 -27
  141. package/src/models/server/export-yaml.model.ts +0 -11
  142. package/src/models/server/features.model.ts +0 -37
  143. package/src/models/server/github-rate-limit.model.ts +0 -21
  144. package/src/models/server/version.model.ts +0 -14
  145. package/src/models/settings/printer-file-clean-settings.model.ts +0 -5
  146. package/src/models/settings/server-settings.dto.ts +0 -19
  147. package/src/models/settings/settings.model.ts +0 -57
  148. package/src/models/socketio-messages/socketio-message.model.ts +0 -53
  149. package/src/models/uploads/queued-upload.model.ts +0 -12
  150. package/src/models/user.model.ts +0 -15
  151. package/src/plugins/README.md +0 -3
  152. package/src/plugins/index.ts +0 -17
  153. package/src/plugins/vuetify.ts +0 -53
  154. package/src/router/index.ts +0 -192
  155. package/src/router/route-names.ts +0 -14
  156. package/src/router/utils.ts +0 -23
  157. package/src/shared/alert.events.ts +0 -14
  158. package/src/shared/app.constants.ts +0 -23
  159. package/src/shared/auth.constants.ts +0 -34
  160. package/src/shared/dialog.composable.ts +0 -41
  161. package/src/shared/drag.constants.ts +0 -19
  162. package/src/shared/experimental.constants.ts +0 -1
  163. package/src/shared/http-client.ts +0 -162
  164. package/src/shared/noun-adjectives.data.ts +0 -24
  165. package/src/shared/printer-grid.constants.ts +0 -5
  166. package/src/shared/printer-state.constants.ts +0 -194
  167. package/src/shared/snackbar.composable.ts +0 -66
  168. package/src/shared/socketio.service.ts +0 -104
  169. package/src/store/auth.store.ts +0 -255
  170. package/src/store/connection.store.ts +0 -66
  171. package/src/store/dialog.store.ts +0 -114
  172. package/src/store/features.store.ts +0 -57
  173. package/src/store/floor.store.ts +0 -173
  174. package/src/store/grid.store.ts +0 -10
  175. package/src/store/index.ts +0 -4
  176. package/src/store/printer-state.store.ts +0 -246
  177. package/src/store/printer.store.ts +0 -236
  178. package/src/store/profile.store.ts +0 -25
  179. package/src/store/settings.store.ts +0 -64
  180. package/src/store/test-printer.store.ts +0 -70
  181. package/src/store/uploads.store.ts +0 -75
  182. package/src/styles/README.md +0 -3
  183. package/src/styles/settings.scss +0 -10
  184. package/src/types/global.d.ts +0 -15
  185. package/src/utils/array.utils.ts +0 -15
  186. package/src/utils/date.utils.ts +0 -5
  187. package/src/utils/download-file.util.ts +0 -25
  188. package/src/utils/error.utils.ts +0 -3
  189. package/src/utils/file-size.util.ts +0 -11
  190. package/src/utils/id.type.ts +0 -1
  191. package/src/utils/sentry.util.ts +0 -8
  192. package/src/utils/test.util.ts +0 -30
  193. package/src/utils/time.utils.ts +0 -2
  194. package/src/utils/uploads-state.utils.ts +0 -58
  195. package/src/utils/validation.utils.ts +0 -14
  196. package/src/vite-env.d.ts +0 -7
  197. package/test/setup-axios-mock.ts +0 -15
  198. /package/{src/assets/logo.png → dist/assets/logo-CJVdjy51.png} +0 -0
  199. /package/{src/assets → dist/img/icons}/android-chrome-192x192.png +0 -0
@@ -1,39 +0,0 @@
1
- <template>
2
- <v-container>
3
- <h2 class="text-center mt-lg-12">This page was not found.</h2>
4
-
5
- <h1 class="text-center">: (</h1>
6
- <br />
7
- <h4 class="text-center">
8
- <v-btn
9
- class="align-center"
10
- color="primary"
11
- to="/"
12
- variant="elevated"
13
- >
14
- <v-icon class="mr-2">home</v-icon>
15
- Go home
16
- </v-btn>
17
-
18
- <span class="pa-5"> or </span>
19
- <v-btn
20
- class="align-center"
21
- variant="elevated"
22
- @click="goBack()"
23
- >
24
- <v-icon class="mr-2">arrow_left</v-icon>
25
- Go back
26
- </v-btn>
27
- </h4>
28
- </v-container>
29
- </template>
30
-
31
- <script lang="ts" setup>
32
- import { useRouter } from 'vue-router'
33
-
34
- const router = useRouter()
35
-
36
- const goBack = () => {
37
- router.go(-1)
38
- }
39
- </script>
@@ -1,168 +0,0 @@
1
- <template>
2
- <v-sheet
3
- height="100%"
4
- width="100%"
5
- >
6
- <v-container>
7
- <v-row>
8
- <v-col>
9
- <v-icon>filter_list</v-icon>
10
- Filter by printer name (optional)
11
- </v-col>
12
- <v-col>
13
- <v-text-field
14
- v-model="printerNameSearch"
15
- class="p-2"
16
- clearable
17
- label="Search"
18
- prepend-icon="search"
19
- single-line
20
- />
21
- </v-col>
22
- </v-row>
23
- </v-container>
24
- <v-alert>
25
- Please reload here if you want updated results:
26
- <v-btn
27
- color="primary"
28
- size="x-small"
29
- @click="loadCompletions()"
30
- >
31
- Reload
32
- </v-btn>
33
- </v-alert>
34
- <v-table dark>
35
- <template #default>
36
- <thead>
37
- <tr>
38
- <th class="text-left">Printer name</th>
39
- <th class="text-left">Floor</th>
40
- <th class="text-left">Fail/ Success/ Total</th>
41
- <th class="text-left">Last success</th>
42
- <th class="text-left">Last failure</th>
43
- <th class="text-left">Successes (week/48H/24H)</th>
44
- <th class="text-left">Failures (week/48H/24H)</th>
45
- </tr>
46
- </thead>
47
- <tbody>
48
- <tr
49
- v-for="item in shownCompletions"
50
- :key="item.printerId"
51
- >
52
- <td>
53
- {{ printer(item.printerId)?.name ?? '?' }}
54
- </td>
55
- <td>
56
- {{ floorOfPrinter(item.printerId)?.name ?? '?' }}
57
- </td>
58
- <td>
59
- &#215; {{ item.failureCount }} / &#128504; {{ item.successCount }}
60
- <strong> ~{{ item.printCount }} </strong>
61
- </td>
62
- <td>
63
- {{ Date.now() - item.lastSuccess?.createdAt || '-' }}
64
- </td>
65
- <td>
66
- <v-tooltip location="bottom">
67
- <template
68
- v-if="item.lastFailure?.status"
69
- #activator="{ props }"
70
- >
71
- <v-icon v-bind="props">info</v-icon>
72
- </template>
73
- <span>
74
- {{ item.lastFailure?.status || '-' }} <br />
75
- {{ item.lastFailure?.createdAt }} <br />
76
- <small>
77
- {{ item.lastFailure?.fileName }}
78
- </small>
79
- <br />
80
- <strong>
81
- {{ item.lastFailure?.completionLog }}
82
- </strong>
83
- <br />
84
- </span>
85
- </v-tooltip>
86
- </td>
87
- <td>
88
- {{ item.successEventsLastWeek }} {{ item.successEventsLast48H }}
89
- {{ item.successEventsLast24H }}
90
- </td>
91
- <td>
92
- {{ item.failureEventsLastWeek }} {{ item.failureEventsLast48H }}
93
- {{ item.failureEventsLast24H }}
94
- </td>
95
- </tr>
96
- </tbody>
97
- </template>
98
- </v-table>
99
- </v-sheet>
100
- </template>
101
-
102
- <script lang="ts" setup>
103
- import { onMounted, ref, watch } from 'vue'
104
- import { PrintCompletionsService } from '@/backend/print-completions.service'
105
- import { PrinterCompletions } from '@/models/print-completions/print-completions.model'
106
- import { usePrinterStore } from '@/store/printer.store'
107
- import { useFloorStore } from '@/store/floor.store'
108
- import { IdType } from '@/utils/id.type'
109
-
110
- const loadedCompletions = ref<PrinterCompletions[]>([])
111
- const shownCompletions = ref<PrinterCompletions[]>([])
112
- const printerNameSearch = ref<string>('')
113
-
114
- const printerStore = usePrinterStore()
115
- const floorStore = useFloorStore()
116
-
117
- onMounted(async () => {
118
- await loadCompletions()
119
- })
120
-
121
- watch([() => printerNameSearch.value], () => {
122
- updatePrinters()
123
- })
124
-
125
- const loadCompletions = async () => {
126
- loadedCompletions.value = []
127
- shownCompletions.value = []
128
- loadedCompletions.value = await PrintCompletionsService.getCompletions()
129
- updatePrinters()
130
- }
131
-
132
- const printer = (printerId: IdType) => {
133
- return printerStore.printer(printerId)
134
- }
135
-
136
- const floorOfPrinter = (printerId: IdType) => {
137
- return floorStore.floorOfPrinter(printerId)
138
- }
139
-
140
- const updatePrinters = () => {
141
- const pIds = printerStore.printers.map((p) => p.id)
142
-
143
- // Determine printers from store, any unknown ID's filtered out
144
- const preSearchPrints = pIds.length
145
- ? loadedCompletions.value.filter((c) => pIds.includes(c.printerId))
146
- : loadedCompletions.value
147
-
148
- const preSortPrints = printerNameSearch.value?.length
149
- ? preSearchPrints.filter((p) => {
150
- const printer = printerStore.printers.find(
151
- (spr) => spr.id === p.printerId
152
- )
153
- if (!printer) return false
154
-
155
- return (printer.name + printer.printerURL)
156
- .toLowerCase()
157
- .includes(printerNameSearch.value.toLowerCase())
158
- })
159
- : preSearchPrints
160
-
161
- shownCompletions.value = preSortPrints.sort((p1, p2) => {
162
- if (p1.failureCount === p2.failureCount) {
163
- return p1.printCount > p2.printCount ? -1 : 1
164
- }
165
- return p1.failureCount > p2.failureCount ? -1 : 1
166
- })
167
- }
168
- </script>
@@ -1,15 +0,0 @@
1
- <template>
2
- <v-container>
3
- <PrintStatistics />
4
- </v-container>
5
- </template>
6
-
7
- <script lang="ts">
8
- import { defineComponent } from 'vue'
9
- import PrintStatistics from '@/components/PrintStatistics/PrintStatistics.vue'
10
-
11
- export default defineComponent({
12
- name: 'PrintStatisticsView',
13
- components: { PrintStatistics }
14
- })
15
- </script>
@@ -1,90 +0,0 @@
1
- <template>
2
- <v-toolbar flat>
3
- <v-toolbar-title> Floors </v-toolbar-title>
4
- <v-btn-toggle
5
- :model-value="selectedFloorToggleIndex"
6
- class="ml-7"
7
- mandatory
8
- rounded
9
- @update:model-value="changeFloorIndex"
10
- >
11
- <v-btn
12
- v-for="f in floors"
13
- :key="f.id"
14
- >
15
- <v-icon>format_align_left</v-icon>
16
- {{ f.name }}
17
- </v-btn>
18
- </v-btn-toggle>
19
-
20
- <v-btn
21
- v-if="!printerStore.printers?.length"
22
- class="mt-0 ml-6"
23
- color="primary"
24
- to="/printers"
25
- >
26
- You have no printers. Click here to start!
27
- </v-btn>
28
- <v-alert
29
- v-if="floorStore.floorlessPrinters.length"
30
- class="mt-4 ml-12"
31
- color="primary"
32
- >
33
- <v-icon>warning</v-icon>
34
- {{ floorStore.floorlessPrinters.length }} unplaced printer(s)!
35
- </v-alert>
36
- <div class="ma-4 pt-6">
37
- <v-switch
38
- v-model="gridStore.gridEditMode"
39
- label="Printer Relocate Mode"
40
- />
41
- </div>
42
-
43
- <v-spacer />
44
- <span class="d-flex flex-wrap gap-2">
45
- <span class="pr-2">
46
- <v-icon>print</v-icon>
47
- {{ printerStateStore.printingCount }}
48
- </span>
49
- <span class="pr-2">
50
- <v-icon>ac_unit</v-icon>
51
- {{ printerStateStore.operationalNotPrintingCount }}
52
- </span>
53
- <span class="pr-2">
54
- <v-icon>handyman</v-icon>
55
- {{ printerStore.maintenanceCount }}
56
- </span>
57
- <span class="pr-2">
58
- <v-icon>usb_off</v-icon>
59
- {{ printerStore.disconnectedCount }}
60
- </span>
61
- <span class="pr-2">
62
- <v-icon>print_disabled</v-icon>
63
- {{ printerStore.disabledCount }}
64
- </span>
65
- </span>
66
- </v-toolbar>
67
- </template>
68
-
69
- <script lang="ts" setup>
70
- import { computed, ref } from 'vue'
71
- import { usePrinterStore } from '@/store/printer.store'
72
- import { useGridStore } from '@/store/grid.store'
73
- import { useFloorStore } from '@/store/floor.store'
74
- import { usePrinterStateStore } from '@/store/printer-state.store'
75
-
76
- const printerStore = usePrinterStore()
77
- const printerStateStore = usePrinterStateStore()
78
- const floorStore = useFloorStore()
79
- const gridStore = useGridStore()
80
- const selectedFloorToggleIndex = ref<number>(0)
81
-
82
- const floors = computed(() => {
83
- return floorStore.floors
84
- })
85
-
86
- function changeFloorIndex(index: any) {
87
- floorStore.changeSelectedFloorByIndex(index)
88
- selectedFloorToggleIndex.value = index
89
- }
90
- </script>
@@ -1,164 +0,0 @@
1
- <template>
2
- <div>
3
- <v-banner v-if="gridStore.gridEditMode">
4
- <v-row style="margin-bottom: -5px">
5
- <v-col>
6
- <span>
7
- Drag {{ floorStore.floorlessPrinters.length }} unplaced printer(s)
8
- from here to place it on the grid.
9
- </span>
10
- <v-chip-group>
11
- <v-chip
12
- v-for="printer of floorStore.floorlessPrinters"
13
- :key="printer.id"
14
- draggable
15
- size="small"
16
- style="cursor: move"
17
- @dragstart="onDragStart(printer, $event)"
18
- >
19
- {{ printer.name }}
20
- </v-chip>
21
- </v-chip-group>
22
- </v-col>
23
- <v-col>
24
- <div>
25
- Clear printers by clicking on
26
- <strong>
27
- <v-icon>disabled_visible</v-icon>
28
- Click to clear
29
- </strong>
30
- </div>
31
- </v-col>
32
- </v-row>
33
- </v-banner>
34
- <v-row
35
- v-for="y in rows"
36
- :key="y"
37
- class="ma-1"
38
- no-gutters
39
- >
40
- <v-col
41
- v-for="x in columns"
42
- :key="x"
43
- :cols="columnWidth"
44
- :sm="columnWidth"
45
- >
46
- <v-row
47
- class="test-top"
48
- no-gutters
49
- >
50
- <v-col cols="6">
51
- <PrinterGridTile
52
- :printer="getPrinter(2 * (x - 1), 2 * (y - 1))"
53
- :x="2 * (x - 1)"
54
- :y="2 * (y - 1)"
55
- />
56
- </v-col>
57
- <v-col cols="6">
58
- <PrinterGridTile
59
- :printer="getPrinter(2 * (x - 1) + 1, 2 * (y - 1))"
60
- :x="2 * (x - 1) + 1"
61
- :y="2 * (y - 1)"
62
- />
63
- </v-col>
64
- </v-row>
65
- <v-row
66
- class="test-bottom"
67
- no-gutters
68
- >
69
- <v-col cols="6">
70
- <PrinterGridTile
71
- :printer="getPrinter(2 * (x - 1), 2 * (y - 1) + 1)"
72
- :x="2 * (x - 1)"
73
- :y="2 * (y - 1) + 1"
74
- />
75
- </v-col>
76
- <v-col cols="6">
77
- <PrinterGridTile
78
- :printer="getPrinter(2 * (x - 1) + 1, 2 * (y - 1) + 1)"
79
- :x="2 * (x - 1) + 1"
80
- :y="2 * (y - 1) + 1"
81
- />
82
- </v-col>
83
- </v-row>
84
- </v-col>
85
- </v-row>
86
- <img
87
- alt="FDM Monster Background"
88
- class="grid-bg-img align-content-center"
89
- src="/img/logo.svg"
90
- style="opacity: 0.08; pointer-events: none"
91
- />
92
- </div>
93
- </template>
94
-
95
- <script lang="ts" setup>
96
- import { computed, onMounted } from 'vue'
97
- import PrinterGridTile from '@/components/PrinterGrid/PrinterGridTile.vue'
98
- import { totalVuetifyColumnCount } from '@/shared/printer-grid.constants'
99
- import { usePrinterStore } from '@/store/printer.store'
100
- import { PrinterDto } from '@/models/printers/printer.model'
101
- import { useGridStore } from '@/store/grid.store'
102
- import { dragAppId, INTENT, PrinterPlace } from '@/shared/drag.constants'
103
- import { useSettingsStore } from '@/store/settings.store'
104
- import { useFloorStore } from '@/store/floor.store'
105
-
106
- console.debug('Setup grid')
107
-
108
- const printerStore = usePrinterStore()
109
- const floorStore = useFloorStore()
110
- const settingsStore = useSettingsStore()
111
- const gridStore = useGridStore()
112
-
113
- onMounted(async () => {
114
- await printerStore.loadPrinters()
115
- await floorStore.loadFloors()
116
- })
117
-
118
- const printerMatrix = computed(() => floorStore.gridSortedPrinters)
119
- const columns = computed(() => settingsStore.gridCols / 2)
120
- const columnWidth = computed(() => totalVuetifyColumnCount / columns.value)
121
- const rows = computed(() => settingsStore.gridRows / 2)
122
-
123
- function onDragStart(printer: PrinterDto, ev: DragEvent) {
124
- if (!ev.dataTransfer) return
125
- if (!printer.id) return
126
-
127
- ev.dataTransfer.setData(
128
- 'text',
129
- JSON.stringify({
130
- appId: dragAppId,
131
- intent: INTENT.PRINTER_PLACE,
132
- printerId: printer.id
133
- } as PrinterPlace)
134
- )
135
- }
136
-
137
- function getPrinter(col: number, row: number) {
138
- const x = col
139
- const y = row
140
- if (!printerMatrix.value?.length || !printerMatrix.value[x]) return undefined
141
- return printerMatrix.value[x][y]
142
- }
143
- </script>
144
-
145
- <style>
146
- .grid-bg-img {
147
- position: fixed;
148
- height: 100vh;
149
- top: 50vh;
150
- width: 600%;
151
- left: -250%;
152
- filter: grayscale(100%);
153
- }
154
-
155
- .test-bottom {
156
- border: 1px solid transparent;
157
- margin: 0 20px 10px 20px !important;
158
- }
159
-
160
- .test-top {
161
- border: 1px solid transparent;
162
- margin: 0 20px 0 20px !important;
163
- }
164
- </style>