Skip to content

Commit 425922a

Browse files
authored
Merge pull request #284 from xyz-tools/feature/undeprecate-dnd
Undeprecate dnd and move to dom-utils
2 parents f36aa19 + e31f61c commit 425922a

9 files changed

Lines changed: 117 additions & 330 deletions

File tree

demo/index.html

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636

3737
<div class="p-1" v-if="model">
3838
<!-- <div>{{layerCount + ' layers'}} / {{fileSize}}</div> -->
39-
<div><a :href="model?.original">{{model?.name ?? fileName}}</a> <br>
40-
<span class="is-size-8">by {{model?.designer}}</span></div>
39+
<div><a :href="model?.original">{{model?.name}}</a> <br>
40+
<span v-if="model?.designer" class="is-size-8">by {{model?.designer}}</span></div>
4141

4242
<div class="license is-size-8">{{model?.license}}</div>
4343
</div>
@@ -243,9 +243,8 @@ <h1 class="text-center m-3 mb-5">GCode Preview
243243
<div class="absolute left bottom m-3 has-text-grey slide-in-up">Drop a gcode file to preview it</div>
244244
<div class="wrapper">
245245
<canvas class="preview" :class="{ 'dragging': settings.dragging }"
246-
@dragover.prevent="dragOver"
247-
@dragleave.prevent="dragLeave"
248-
@drop.prevent="drop"></canvas>
246+
@update.prevent="update"
247+
></canvas>
249248
</div>
250249
</div>
251250
<script type="importmap">

demo/js/app.js

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { createApp, ref, watch, onMounted, watchEffect } from 'vue';
22
import { presets } from './presets.js';
33
import * as GCodePreview from 'gcode-preview';
44
import { defaultSettings } from './default-settings.js';
5-
import { debounce, humanFileSize, readFile } from './utils.js';
5+
import { debounce, humanFileSize } from './utils.js';
66

77
const defaultPreset = 'benchy';
88
const preferDarkMode = window.matchMedia('(prefers-color-scheme: dark)');
@@ -20,7 +20,6 @@ export const app = (window.app = createApp({
2020
const thumbnail = ref(null);
2121
const layerCount = ref(0);
2222
const fileSize = ref(0);
23-
const fileName = ref('');
2423
const model = ref(null);
2524
const dragging = ref(false);
2625
const settings = ref(Object.assign({}, defaultSettings));
@@ -36,19 +35,12 @@ export const app = (window.app = createApp({
3635

3736
const removeColor = () => settings.value.colors.pop();
3837

39-
const dragOver = (event) => {
40-
event.dataTransfer.dropEffect = 'copy';
41-
dragging.value = true;
42-
};
43-
44-
const dragLeave = () => (dragging.value = false);
45-
46-
const drop = (event) => {
47-
dragging.value = false;
48-
const file = event.dataTransfer.files[0];
49-
fileName.value = file.name;
50-
model.value = null;
51-
loadDroppedFile(file);
38+
const update = async (evt) => {
39+
model.value = {
40+
name: evt.detail.filename
41+
};
42+
applyDevMode(enableDevMode.value); // HACK: force dev mode to update UI
43+
updateUI();
5244
};
5345

5446
// Update UI with current preview settings
@@ -105,6 +97,8 @@ export const app = (window.app = createApp({
10597

10698
Object.assign(settings.value, currentSettings);
10799
preview.endLayer = countLayers;
100+
101+
applyDevMode(enableDevMode.value);
108102
};
109103

110104
const loadGCodeFromServer = async (filename) => {
@@ -137,34 +131,27 @@ export const app = (window.app = createApp({
137131
preview.render();
138132
return;
139133
}
140-
await preview.renderAnimated(preview.job.paths.length / 60);
134+
await preview.renderAnimated();
141135
} else {
142136
preview.render();
143137
}
144138
});
145139
};
146140

147-
const loadDroppedFile = async (file) => {
148-
fileSize.value = humanFileSize(file.size);
149-
const content = await readFile(file);
150-
applyDevMode(enableDevMode.value); // HACK
151-
startLoadingProgressive(content);
152-
applyDevMode(enableDevMode.value);
153-
updateUI();
154-
};
155-
156141
const selectPreset = async (presetName) => {
157142
const canvas = document.querySelector('canvas.preview');
158143
const preset = presets[presetName];
159-
fileName.value = preset.file.split('/').pop();
160144
model.value = preset.model;
161145
const options = Object.assign(
162146
{
163147
canvas,
164148
backgroundColor: initialBackgroundColor
165149
},
166150
defaultSettings,
167-
preset
151+
preset,
152+
{
153+
droppable: true
154+
}
168155
);
169156

170157
// reset previous state
@@ -182,7 +169,7 @@ export const app = (window.app = createApp({
182169
observer = new ResizeObserver(() => preview.resize());
183170
observer.observe(canvas);
184171

185-
applyDevMode(enableDevMode.value);
172+
applyDevMode(enableDevMode.value); // HACK: force dev mode to update UI
186173

187174
await loadGCodeFromServer(preset.file);
188175
applyDevMode(enableDevMode.value);
@@ -245,21 +232,18 @@ export const app = (window.app = createApp({
245232
thumbnail,
246233
layerCount,
247234
fileSize,
248-
fileName,
249235
model,
250236
dragging,
251237
settings,
252238
enableDevMode,
253239
selectTab,
254240
addColor,
255241
removeColor,
256-
dragOver,
257-
dragLeave,
258-
drop,
242+
// drop,
243+
update,
259244
resetUI: updateUI,
260245
loadGCodeFromServer,
261246
startLoadingProgressive,
262-
loadDroppedFile,
263247
selectPreset
264248
};
265249
}

demo/js/utils.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,3 @@ export function humanFileSize(size) {
1919
var i = Math.floor(Math.log(size) / Math.log(1024));
2020
return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
2121
}
22-
23-
export function readFile(file) {
24-
return new Promise((resolve) => {
25-
const reader = new FileReader();
26-
reader.onload = (e) => {
27-
resolve(e.target.result);
28-
};
29-
reader.readAsText(file);
30-
});
31-
}

examples/index.html

Lines changed: 0 additions & 7 deletions
This file was deleted.

examples/simple.html

Lines changed: 0 additions & 56 deletions
This file was deleted.

examples/stream.html

Lines changed: 0 additions & 88 deletions
This file was deleted.

examples/stream2.html

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)