You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.0 KiB
94 lines
2.0 KiB
var fs = require("fs"); |
|
|
|
const CLIENT_FILES_OPT = "clientFiles"; |
|
|
|
/** |
|
* Enable a element on clients |
|
* @param clients |
|
* @param ui |
|
* @param bs |
|
* @returns {Function} |
|
*/ |
|
|
|
var types = { |
|
"css": "text/css", |
|
"js": "application/javascript" |
|
}; |
|
|
|
function enableElement (clients, ui, bs) { |
|
|
|
return function (file) { |
|
|
|
var uiItem = ui.getOptionIn([CLIENT_FILES_OPT, file.name]); |
|
var item = uiItem.toJS(); |
|
var enableFn = uiItem.getIn(["callbacks", "enable"]); |
|
|
|
if (item.active) { |
|
return; |
|
} |
|
|
|
ui.setOptionIn([CLIENT_FILES_OPT, item.name, "active"], true, {silent: true}); |
|
|
|
if (enableFn) { |
|
enableFn.call(ui, item); |
|
} |
|
|
|
if (item.file && !item.served) { |
|
|
|
ui.setOptionIn([CLIENT_FILES_OPT, item.name, "served"], true, {silent: true}); |
|
|
|
bs.serveFile(item.src, { |
|
type: types[item.type], |
|
content: fs.readFileSync(item.file) |
|
}); |
|
} |
|
|
|
addElement(clients, ui.getOptionIn([CLIENT_FILES_OPT, item.name]).toJS()); |
|
}; |
|
} |
|
|
|
/** |
|
* @param clients |
|
* @param ui |
|
* @returns {Function} |
|
*/ |
|
function disableElement (clients, ui) { |
|
|
|
return function (file) { |
|
var uiItem = ui.getOptionIn([CLIENT_FILES_OPT, file.name]); |
|
var item = uiItem.toJS(); |
|
var disableFn = uiItem.getIn(["callbacks", "disable"]); |
|
|
|
if (disableFn) { |
|
disableFn.call(ui, item); |
|
} |
|
|
|
ui.setOptionIn([CLIENT_FILES_OPT, item.name, "active"], false, {silent: true}); |
|
|
|
removeElement(clients, item.id); |
|
}; |
|
} |
|
|
|
/** |
|
* @param clients |
|
* @param item |
|
*/ |
|
function addElement (clients, item) { |
|
|
|
clients.emit("ui:element:add", item); |
|
} |
|
|
|
/** |
|
* @param clients |
|
* @param id |
|
*/ |
|
function removeElement(clients, id) { |
|
|
|
clients.emit("ui:element:remove", {id: id}); |
|
} |
|
|
|
module.exports.addElement = addElement; |
|
module.exports.removeElement = removeElement; |
|
module.exports.enable = enableElement; |
|
module.exports.disable = disableElement; |
|
|
|
|