extract alerts from main
This commit is contained in:
parent
b7541c0bed
commit
792a58ac54
3 changed files with 81 additions and 62 deletions
1
app.js
1
app.js
|
|
@ -365,6 +365,7 @@ const script = {
|
||||||
"kiri-mode/cam/tool",
|
"kiri-mode/cam/tool",
|
||||||
"kiri-mode/cam/animate",
|
"kiri-mode/cam/animate",
|
||||||
"kiri-mode/laser/driver",
|
"kiri-mode/laser/driver",
|
||||||
|
"kiri/alerts",
|
||||||
"kiri/stack",
|
"kiri/stack",
|
||||||
"kiri/stacks",
|
"kiri/stacks",
|
||||||
"kiri/widget",
|
"kiri/widget",
|
||||||
|
|
|
||||||
75
src/kiri/alerts.js
Normal file
75
src/kiri/alerts.js
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
|
||||||
|
const { kiri } = self;
|
||||||
|
const { api } = kiri;
|
||||||
|
|
||||||
|
let alerts = [];
|
||||||
|
|
||||||
|
function show(message, time) {
|
||||||
|
if (message === undefined || message === null) {
|
||||||
|
return update(true);
|
||||||
|
}
|
||||||
|
let rec = [message, Date.now(), time, true];
|
||||||
|
if (api.feature.alert_event) {
|
||||||
|
api.event.emit('alert', rec);
|
||||||
|
} else {
|
||||||
|
alerts.push(rec);
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
return rec;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hide(rec, recs) {
|
||||||
|
if (Array.isArray(recs)) {
|
||||||
|
for (let r of recs) {
|
||||||
|
hide(r);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (api.feature.alert_event) {
|
||||||
|
api.event.emit('alert.cancel', rec);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Array.isArray(rec)) {
|
||||||
|
rec[3] = false;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function update(clear) {
|
||||||
|
if (clear) {
|
||||||
|
alerts = [];
|
||||||
|
}
|
||||||
|
const now = Date.now();
|
||||||
|
const { ui } = api;
|
||||||
|
// filter out by age and active flag
|
||||||
|
alerts = alerts.filter(alert => {
|
||||||
|
return alert[3] && (now - alert[1]) < ((alert[2] || 5) * 1000);
|
||||||
|
});
|
||||||
|
// limit to 5 showing
|
||||||
|
while (alerts.length > 5) {
|
||||||
|
alerts.shift();
|
||||||
|
}
|
||||||
|
// return if called before UI configured
|
||||||
|
if (!ui.alert) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (alerts.length > 0) {
|
||||||
|
ui.alert.text.innerHTML = alerts.map(v => ['<p>',v[0],'</p>'].join('')).join('');
|
||||||
|
ui.alert.dialog.style.display = 'flex';
|
||||||
|
} else {
|
||||||
|
ui.alert.dialog.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
api.alerts = {
|
||||||
|
hide,
|
||||||
|
show,
|
||||||
|
update
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
@ -34,7 +34,6 @@
|
||||||
local = SETUP.local,
|
local = SETUP.local,
|
||||||
busy = 0,
|
busy = 0,
|
||||||
showFavorites = SDB.getItem('dev-favorites') === 'true',
|
showFavorites = SDB.getItem('dev-favorites') === 'true',
|
||||||
alerts = [],
|
|
||||||
saveTimer = null,
|
saveTimer = null,
|
||||||
version = kiri.version = gapp.version;
|
version = kiri.version = gapp.version;
|
||||||
|
|
||||||
|
|
@ -85,8 +84,8 @@
|
||||||
on(t,l) { return EVENT.on(t,l) },
|
on(t,l) { return EVENT.on(t,l) },
|
||||||
emit(t,m,o) { return EVENT.publish(t,m,o) },
|
emit(t,m,o) { return EVENT.publish(t,m,o) },
|
||||||
bind(t,m,o) { return EVENT.bind(t,m,o) },
|
bind(t,m,o) { return EVENT.bind(t,m,o) },
|
||||||
|
alerts() { api.alerts.update() },
|
||||||
import: loadFile,
|
import: loadFile,
|
||||||
alerts: updateAlerts,
|
|
||||||
settings: triggerSettingsEvent
|
settings: triggerSettingsEvent
|
||||||
},
|
},
|
||||||
group: {
|
group: {
|
||||||
|
|
@ -94,7 +93,7 @@
|
||||||
split: groupSplit,
|
split: groupSplit,
|
||||||
},
|
},
|
||||||
hide: {
|
hide: {
|
||||||
alert(rec,recs) { alert2cancel(rec,recs) },
|
alert(rec, recs) { api.alerts.hide(...arguments) },
|
||||||
import: noop,
|
import: noop,
|
||||||
slider: hideSlider
|
slider: hideSlider
|
||||||
},
|
},
|
||||||
|
|
@ -130,7 +129,7 @@
|
||||||
get: currentProcessName
|
get: currentProcessName
|
||||||
},
|
},
|
||||||
show: {
|
show: {
|
||||||
alert: alert2,
|
alert() { return api.alerts.show(...arguments) },
|
||||||
devices: noop, // set during init
|
devices: noop, // set during init
|
||||||
progress: setProgress,
|
progress: setProgress,
|
||||||
controls: setControlsVisible,
|
controls: setControlsVisible,
|
||||||
|
|
@ -250,62 +249,6 @@
|
||||||
return api.mode.is_cam() && settings.ctrl().units === 'in' ? 25.4 : 1;
|
return api.mode.is_cam() && settings.ctrl().units === 'in' ? 25.4 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function alert2(message, time) {
|
|
||||||
if (message === undefined || message === null) {
|
|
||||||
return updateAlerts(true);
|
|
||||||
}
|
|
||||||
let rec = [message, Date.now(), time, true];
|
|
||||||
if (feature.alert_event) {
|
|
||||||
api.event.emit('alert', rec);
|
|
||||||
} else {
|
|
||||||
alerts.push(rec);
|
|
||||||
updateAlerts();
|
|
||||||
}
|
|
||||||
return rec;
|
|
||||||
}
|
|
||||||
|
|
||||||
function alert2cancel(rec,recs) {
|
|
||||||
if (Array.isArray(recs)) {
|
|
||||||
for (let r of recs) {
|
|
||||||
alert2cancel(r);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (feature.alert_event) {
|
|
||||||
api.event.emit('alert.cancel', rec);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Array.isArray(rec)) {
|
|
||||||
rec[3] = false;
|
|
||||||
updateAlerts();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateAlerts(clear) {
|
|
||||||
if (clear) {
|
|
||||||
alerts = [];
|
|
||||||
}
|
|
||||||
let now = Date.now();
|
|
||||||
// filter out by age and active flag
|
|
||||||
alerts = alerts.filter(alert => {
|
|
||||||
return alert[3] && (now - alert[1]) < ((alert[2] || 5) * 1000);
|
|
||||||
});
|
|
||||||
// limit to 5 showing
|
|
||||||
while (alerts.length > 5) {
|
|
||||||
alerts.shift();
|
|
||||||
}
|
|
||||||
// return if called before UI configured
|
|
||||||
if (!UI.alert) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (alerts.length > 0) {
|
|
||||||
UI.alert.text.innerHTML = alerts.map(v => ['<p>',v[0],'</p>'].join('')).join('');
|
|
||||||
UI.alert.dialog.style.display = 'flex';
|
|
||||||
} else {
|
|
||||||
UI.alert.dialog.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getShowFavorites(bool) {
|
function getShowFavorites(bool) {
|
||||||
if (bool !== undefined) {
|
if (bool !== undefined) {
|
||||||
SDB.setItem('dev-favorites', bool);
|
SDB.setItem('dev-favorites', bool);
|
||||||
|
|
@ -561,7 +504,7 @@
|
||||||
api.platform.load_files(event.target.files);
|
api.platform.load_files(event.target.files);
|
||||||
};
|
};
|
||||||
$('load-file').click();
|
$('load-file').click();
|
||||||
// alert2("drag/drop STL files onto platform to import\nreload page to return to last saved state");
|
// api.show.alert("drag/drop STL files onto platform to import\nreload page to return to last saved state");
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveWorkspace(quiet) {
|
function saveWorkspace(quiet) {
|
||||||
|
|
@ -584,7 +527,7 @@
|
||||||
// eliminate dangling saved widgets
|
// eliminate dangling saved widgets
|
||||||
FILES.deleteFilter(key => newWidgets.indexOf(key.substring(8)) < 0, "ws-save-", "ws-savf");
|
FILES.deleteFilter(key => newWidgets.indexOf(key.substring(8)) < 0, "ws-save-", "ws-savf");
|
||||||
if (!quiet) {
|
if (!quiet) {
|
||||||
alert2("workspace saved", 1);
|
api.show.alert("workspace saved", 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue