2020-06-03 22:39:30 -04:00
|
|
|
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
2017-04-18 17:09:33 -04:00
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
|
2022-02-19 19:17:10 -05:00
|
|
|
const { kiri } = self;
|
|
|
|
|
const FDM = kiri.driver.FDM = { getRangeParameters };
|
2020-04-11 16:33:10 -04:00
|
|
|
|
2022-02-19 19:17:10 -05:00
|
|
|
// shared by client and worker contexts
|
|
|
|
|
function getRangeParameters(process, index) {
|
|
|
|
|
if (index === undefined || index === null || index < 0) {
|
|
|
|
|
return process;
|
|
|
|
|
}
|
|
|
|
|
let ranges = process.ranges;
|
|
|
|
|
if (!(ranges && ranges.length)) {
|
|
|
|
|
return process;
|
|
|
|
|
}
|
|
|
|
|
let params = Object.clone(process);
|
|
|
|
|
for (let range of ranges) {
|
|
|
|
|
if (index >= range.lo && index <= range.hi) {
|
|
|
|
|
for (let [key, value] of Object.entries(range.fields)) {
|
|
|
|
|
params[key] = value;
|
|
|
|
|
params._range = true;
|
2021-02-11 14:33:00 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-02-19 19:17:10 -05:00
|
|
|
return params;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// defer loading until client and worker exist
|
|
|
|
|
kiri.load(function(api) {
|
2021-02-11 14:33:00 -05:00
|
|
|
|
2022-02-19 19:17:10 -05:00
|
|
|
const { client, worker } = kiri;
|
2020-12-14 12:52:08 -05:00
|
|
|
|
2022-02-19 19:17:10 -05:00
|
|
|
if (client) {
|
2020-12-14 12:52:08 -05:00
|
|
|
FDM.support_generate = function(ondone) {
|
2022-02-19 19:17:10 -05:00
|
|
|
client.clear();
|
|
|
|
|
client.sync();
|
|
|
|
|
const settings = api.conf.get();
|
|
|
|
|
const widgets = api.widgets.map();
|
|
|
|
|
client.send("fdm_support_generate", { settings }, (gen) => {
|
2022-01-19 09:40:26 -05:00
|
|
|
if (gen && gen.error) {
|
2022-02-19 19:17:10 -05:00
|
|
|
api.show.alert('support generation canceled');
|
2022-01-19 09:40:26 -05:00
|
|
|
return ondone([]);
|
|
|
|
|
}
|
2022-02-19 19:17:10 -05:00
|
|
|
for (let g of gen) {
|
|
|
|
|
g.widget = widgets[g.id];
|
|
|
|
|
}
|
2020-12-14 14:28:14 -05:00
|
|
|
ondone(gen);
|
|
|
|
|
});
|
2020-12-14 12:52:08 -05:00
|
|
|
};
|
2022-02-19 19:17:10 -05:00
|
|
|
}
|
2020-12-14 12:52:08 -05:00
|
|
|
|
2022-02-19 19:17:10 -05:00
|
|
|
if (worker) {
|
|
|
|
|
worker.fdm_support_generate = function(data, send) {
|
2020-12-14 14:28:14 -05:00
|
|
|
const { settings } = data;
|
2021-01-24 10:17:32 -05:00
|
|
|
const widgets = Object.values(wcache);
|
2020-12-14 14:28:14 -05:00
|
|
|
const fresh = widgets.filter(widget => FDM.supports(settings, widget));
|
2022-02-19 19:17:10 -05:00
|
|
|
send.done(kiri.codec.encode(fresh.map(widget => { return {
|
2020-12-14 14:28:14 -05:00
|
|
|
id: widget.id,
|
|
|
|
|
supports: widget.supports,
|
|
|
|
|
} } )));
|
2020-12-14 12:52:08 -05:00
|
|
|
};
|
2022-02-19 19:17:10 -05:00
|
|
|
}
|
2020-12-14 12:52:08 -05:00
|
|
|
|
2022-02-19 19:17:10 -05:00
|
|
|
});
|
2020-12-14 12:52:08 -05:00
|
|
|
|
2017-04-18 17:09:33 -04:00
|
|
|
})();
|