import Utils from './Utils';
|
import { _, interpolate } from './gettext';
|
|
class PresetUtils{
|
|
// Merge a set of options specified in a preset with
|
// those available from a processing node, while populating
|
// an extra "defaultValue" field as appropriate
|
// @return available options.
|
static getAvailableOptions(presetOptions, nodeOptions){
|
let result = Utils.clone(nodeOptions);
|
|
result.forEach(opt => {
|
if (!opt.defaultValue){
|
let presetOpt;
|
if (Array.isArray(presetOptions)){
|
presetOpt = presetOptions.find(to => to.name == opt.name);
|
}
|
|
if (presetOpt){
|
opt.defaultValue = opt.value;
|
opt.value = presetOpt.value;
|
}else{
|
opt.defaultValue = opt.value !== undefined ? opt.value : "";
|
delete(opt.value);
|
}
|
}
|
|
if (typeof opt.help === "string"){
|
opt.help = interpolate(_(opt.help), {
|
choices: Array.isArray(opt.domain) ? opt.domain.join(", ") : opt.domain,
|
'default': opt.defaultValue === "" ? "\"\"" : opt.defaultValue
|
});
|
}
|
});
|
|
// Sort by name ascending
|
result.sort((a, b) => a.name < b.name ? -1 : 1);
|
|
return result;
|
}
|
}
|
|
export default PresetUtils;
|