mirror of
https://github.com/yeicor-3d/yet-another-cad-viewer.git
synced 2025-12-19 22:24:17 +01:00
fix for frontend parsing settings
This commit is contained in:
@@ -24,7 +24,7 @@ The [logo](yacv_server/logo.py) also works as an example of how to use the viewe
|
|||||||
|
|
||||||
To see the live updates you will need to run the [yacv_server](yacv_server) and
|
To see the live updates you will need to run the [yacv_server](yacv_server) and
|
||||||
open [the viewer](https://yeicor-3d.github.io/yet-another-cad-viewer/) with
|
open [the viewer](https://yeicor-3d.github.io/yet-another-cad-viewer/) with
|
||||||
the `preloadModels=ws://<host>:32323/` query parameter (by default it already tries localhost).
|
the `preload=ws://<host>:32323/` query parameter (by default it already tries localhost).
|
||||||
|
|
||||||
Note that [yacv_server](yacv_server) also hosts the frontend at `http://localhost:32323/` if you have no access to the
|
Note that [yacv_server](yacv_server) also hosts the frontend at `http://localhost:32323/` if you have no access to the
|
||||||
internet.
|
internet.
|
||||||
@@ -32,13 +32,13 @@ internet.
|
|||||||
### Static deployment
|
### Static deployment
|
||||||
|
|
||||||
To deploy the viewer and models as a static website you can simply copy the latest build directory to your server.
|
To deploy the viewer and models as a static website you can simply copy the latest build directory to your server.
|
||||||
To load models use the `preloadModels=...` query parameter in the URL.
|
To load models use the `preload=...` query parameter in the URL.
|
||||||
It can be set multiple times to load multiple models.
|
It can be set multiple times to load multiple models.
|
||||||
|
|
||||||
Note that you can simply reuse the [main deployment](https://yeicor-3d.github.io/yet-another-cad-viewer/) and host only
|
Note that you can simply reuse the [main deployment](https://yeicor-3d.github.io/yet-another-cad-viewer/) and host only
|
||||||
your own models (linking them from the viewer with the `preloadModels` query parameter).
|
your own models (linking them from the viewer with the `preload` query parameter).
|
||||||
|
|
||||||
To see a working example of a static deployment you can check out
|
To see a working example of a static deployment you can check out
|
||||||
the [demo](https://yeicor-3d.github.io/yet-another-cad-viewer/?preloadModels=base.glb&preloadModels=fox.glb&preloadModels=img.jpg.glb&preloadModels=location.glb).
|
the [demo](https://yeicor-3d.github.io/yet-another-cad-viewer/?preload=base.glb&preload=fox.glb&preload=img.jpg.glb&preload=location.glb).
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -46,7 +46,7 @@ async function onModelRemoveRequest(name: string) {
|
|||||||
let networkMgr = new NetworkManager();
|
let networkMgr = new NetworkManager();
|
||||||
networkMgr.addEventListener('update', (e) => onModelLoadRequest(e as NetworkUpdateEvent));
|
networkMgr.addEventListener('update', (e) => onModelLoadRequest(e as NetworkUpdateEvent));
|
||||||
// Start loading all configured models ASAP
|
// Start loading all configured models ASAP
|
||||||
for (let model of settings.preloadModels) {
|
for (let model of settings.preload) {
|
||||||
networkMgr.load(model);
|
networkMgr.load(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// These are the default values for the settings, which are overridden below
|
// These are the default values for the settings, which are overridden below
|
||||||
export const settings = {
|
export const settings = {
|
||||||
preloadModels: [
|
preload: [
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// new URL('../../assets/fox.glb', import.meta.url).href,
|
// new URL('../../assets/fox.glb', import.meta.url).href,
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -29,15 +29,19 @@ function parseSetting(name: string, value: string): any {
|
|||||||
if (arrayElem) name = name.slice(0, -2);
|
if (arrayElem) name = name.slice(0, -2);
|
||||||
let prevValue = (settings as any)[name];
|
let prevValue = (settings as any)[name];
|
||||||
if (prevValue === undefined) throw new Error(`Unknown setting: ${name}`);
|
if (prevValue === undefined) throw new Error(`Unknown setting: ${name}`);
|
||||||
if (Array.isArray(prevValue) && !arrayElem) {
|
if (Array.isArray(prevValue)) {
|
||||||
let toExtend = []
|
if (!arrayElem) {
|
||||||
if (!firstTimeNames.includes(name)) {
|
let toExtend = []
|
||||||
firstTimeNames.push(name);
|
if (!firstTimeNames.includes(name)) {
|
||||||
|
firstTimeNames.push(name);
|
||||||
|
} else {
|
||||||
|
toExtend = prevValue;
|
||||||
|
}
|
||||||
|
toExtend.push(parseSetting(name + ".0", value));
|
||||||
|
return toExtend;
|
||||||
} else {
|
} else {
|
||||||
toExtend = prevValue;
|
prevValue = prevValue[0];
|
||||||
}
|
}
|
||||||
toExtend.push(parseSetting(name + ".0", value));
|
|
||||||
return toExtend;
|
|
||||||
}
|
}
|
||||||
switch (typeof prevValue) {
|
switch (typeof prevValue) {
|
||||||
case 'boolean':
|
case 'boolean':
|
||||||
@@ -47,7 +51,7 @@ function parseSetting(name: string, value: string): any {
|
|||||||
case 'string':
|
case 'string':
|
||||||
return value;
|
return value;
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown setting type: ${typeof prevValue}`);
|
throw new Error(`Unknown setting type: ${typeof prevValue} -- ${prevValue}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user