add preference persist / restore
This commit is contained in:
parent
66ca161ccd
commit
2060819700
4 changed files with 34 additions and 7 deletions
|
|
@ -27,6 +27,9 @@ function init() {
|
||||||
db.admin.put("init", Date.now());
|
db.admin.put("init", Date.now());
|
||||||
db.admin.get("uses").then(v => db.admin.put("uses", (v||0) + 1));
|
db.admin.get("uses").then(v => db.admin.put("uses", (v||0) + 1));
|
||||||
|
|
||||||
|
// reload preferences
|
||||||
|
api.prefs.restore();
|
||||||
|
|
||||||
// setup default workspace
|
// setup default workspace
|
||||||
space.useDefaultKeys(false);
|
space.useDefaultKeys(false);
|
||||||
space.sky.set({
|
space.sky.set({
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ gapp.register("mesh.api", [
|
||||||
"moto.client", // dep: moto.client
|
"moto.client", // dep: moto.client
|
||||||
"moto.broker", // dep: moto.broker
|
"moto.broker", // dep: moto.broker
|
||||||
"moto.space", // dep: moto.space
|
"moto.space", // dep: moto.space
|
||||||
|
"data.index", // dep: data.index
|
||||||
"mesh.tool", // dep: mesh.tool
|
"mesh.tool", // dep: mesh.tool
|
||||||
"add.array", // dep: add.array
|
"add.array", // dep: add.array
|
||||||
]);
|
]);
|
||||||
|
|
@ -277,6 +278,28 @@ let tool = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// persisted preference map
|
||||||
|
let prefs = {
|
||||||
|
map: {},
|
||||||
|
|
||||||
|
put(key, val) {
|
||||||
|
prefs.map[key] = val;
|
||||||
|
prefs.update();
|
||||||
|
},
|
||||||
|
|
||||||
|
// persist to data store
|
||||||
|
update() {
|
||||||
|
mesh.db.admin.put("prefs", prefs.map);
|
||||||
|
},
|
||||||
|
|
||||||
|
// reload from data store
|
||||||
|
restore() {
|
||||||
|
mesh.db.admin.get("prefs").then(data => {
|
||||||
|
if (data) prefs.map = data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// api is augmented in mesh.build (log, modal, download)
|
// api is augmented in mesh.build (log, modal, download)
|
||||||
let api = mesh.api = {
|
let api = mesh.api = {
|
||||||
help() {
|
help() {
|
||||||
|
|
@ -328,6 +351,8 @@ let api = mesh.api = {
|
||||||
|
|
||||||
tool,
|
tool,
|
||||||
|
|
||||||
|
prefs,
|
||||||
|
|
||||||
objects() {
|
objects() {
|
||||||
// return model objects suitable for finding ray intersections
|
// return model objects suitable for finding ray intersections
|
||||||
return group.list().map(o => o.models).flat().map(o => o.mesh);
|
return group.list().map(o => o.models).flat().map(o => o.mesh);
|
||||||
|
|
@ -476,4 +501,7 @@ broker.wrapObject(selection, 'selection');
|
||||||
broker.wrapObject(model, 'model');
|
broker.wrapObject(model, 'model');
|
||||||
broker.wrapObject(group, 'group');
|
broker.wrapObject(group, 'group');
|
||||||
|
|
||||||
|
// optimize db writes by merging updates
|
||||||
|
prefs.update = util.deferWrap(prefs.update);
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -355,14 +355,14 @@ function ui_build() {
|
||||||
s.onclick = () => {
|
s.onclick = () => {
|
||||||
s.style.display = 'none';
|
s.style.display = 'none';
|
||||||
d.style.display = 'flex';
|
d.style.display = 'flex';
|
||||||
prefs[label] = 1;
|
api.prefs.put(label, 1);
|
||||||
};
|
};
|
||||||
h.onclick = () => {
|
h.onclick = () => {
|
||||||
d.style.display = 'none';
|
d.style.display = 'none';
|
||||||
s.style.display = 'flex';
|
s.style.display = 'flex';
|
||||||
prefs[label] = 2;
|
api.prefs.put(label, 2);
|
||||||
};
|
};
|
||||||
if (prefs[label] === 1) {
|
if (api.prefs.map[label] === 1) {
|
||||||
s.onclick();
|
s.onclick();
|
||||||
} else {
|
} else {
|
||||||
h.onclick();
|
h.onclick();
|
||||||
|
|
@ -374,9 +374,6 @@ function ui_build() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// temp store of ui prefs (hide/show)
|
|
||||||
let prefs = {};
|
|
||||||
|
|
||||||
// listen for api calls
|
// listen for api calls
|
||||||
// create a deferred wrapper to merge multiple rapid events
|
// create a deferred wrapper to merge multiple rapid events
|
||||||
let defer_all = util.deferWrap(update_all);
|
let defer_all = util.deferWrap(update_all);
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,6 @@ mesh.model = class MeshModel extends mesh.object {
|
||||||
|
|
||||||
this.file = file || 'unnamed';
|
this.file = file || 'unnamed';
|
||||||
this.load(mesh || vertices, indices, normals);
|
this.load(mesh || vertices, indices, normals);
|
||||||
|
|
||||||
// persist in db so it can be restored on page load
|
// persist in db so it can be restored on page load
|
||||||
mapp.db.space.put(this.id, { file, mesh });
|
mapp.db.space.put(this.id, { file, mesh });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue