add loading state to the tree checkbox

pull/125/merge
nightwing 2017-04-08 14:22:30 +04:00
rodzic 21755657a5
commit eea9f67331
2 zmienionych plików z 52 dodań i 20 usunięć

Wyświetl plik

@ -130,8 +130,22 @@ define(function(require, exports, module) {
btnReloadLast.onclick = function() { commands.exec("reloadLastPlugin") };
updateReloadLastButton();
readAvailablePlugins();
readAvailablePlugins(function() {
if (sessionStorage.localPackages) {
loadPackage(
util.safeParseJson(sessionStorage.localPackages) || []
);
}
var updateSessionStorage = function() {
sessionStorage.localPackages = JSON.stringify(Object.keys(packages).map(function(x) {
if (packages[x] && packages[x].fromVfs && packages[x].enabled)
return packages[x].filePath;
}).filter(Boolean));
};
plugin.on("enablePackage", updateSessionStorage);
plugin.on("disablePackage", updateSessionStorage);
});
commands.addCommand({
name: "reloadLastPlugin",
bindKey: { mac: "F4", win: "F4" },
@ -162,22 +176,6 @@ define(function(require, exports, module) {
ext.on("register", function() {
setTimeout(reloadModel);
});
if (DEBUG) {
if (sessionStorage.localPackages) {
loadPackage(
util.safeParseJson(sessionStorage.localPackages) || []
);
}
var updateSessionStorage = function() {
sessionStorage.localPackages = JSON.stringify(Object.keys(packages).map(function(x) {
if (packages[x] && packages[x].fromVfs && packages[x].enabled)
return packages[x].filePath;
}).filter(Boolean));
};
plugin.on("enablePackage", updateSessionStorage);
plugin.on("disablePackage", updateSessionStorage);
}
}
var drawn;
@ -360,6 +358,7 @@ define(function(require, exports, module) {
var enabled = node.enabled;
if (enabled == null || node.isGroup) return "";
return "<span class='checkbox "
+ (node.loading ? "loading" : "")
+ (enabled == -1
? "half-checked "
: (enabled ? "checked " : ""))
@ -723,6 +722,7 @@ define(function(require, exports, module) {
node.packageConfig = pkg;
node.className = pkg.__error ? "load-error" : "";
node.__error = pkg.__error;
node.loading = pkg.loading;
}
architectApp.config.forEach(function(plugin) {
@ -771,6 +771,7 @@ define(function(require, exports, module) {
other.packageConfig = node.packageConfig;
other.filePath = node.filePath;
other.url = node.url;
other.loading = node.loading;
}
}
if (!node.isGroup) {
@ -1054,6 +1055,8 @@ define(function(require, exports, module) {
var id = options.rootDir + "/" + name;
var pathMappings = {};
if (packages[name]) packages[name].loading = true;
unloadPlugins("plugins/" + options.name);
pathMappings[id] = options.url;
@ -1062,7 +1065,13 @@ define(function(require, exports, module) {
if (/\.js$/.test(root)) {
require([options.url + "/" + root], function(json) {
json = json || require(options.id + "/" + options.packageName);
json = json || require(id + "/" + options.packageName);
if (!json) {
var err = new Error("Didn't provide " + id + "/" + options.packageName);
return addError("Error loading plugin", err);
}
if (json.name && json.name != name)
name = json.name;
getPluginsFromPackage(json, callback);
}, function(err) {
addError("Error loading plugin", err);
@ -1102,6 +1111,7 @@ define(function(require, exports, module) {
packages[name].filePath = options.path;
packages[name].url = options.url;
packages[name].__error = new Error(message + "\n" + err.message);
packages[name].loading = false;
reloadModel();
@ -1136,7 +1146,13 @@ define(function(require, exports, module) {
json.path = id;
emit("enablePackage", json);
loadPlugins(plugins, callback);
loadPlugins(plugins, function(err, result) {
if (err) return addError("Error loading plugins", err);
if (packages[name])
packages[name].loading = false;
reloadModel();
callback && callback(err, result);
});
}
}

Wyświetl plik

@ -65,6 +65,22 @@
background-color: #565656;
background-position: -2px -18px;
}
.ace_tree .tree-row .checkbox.loading:after{
content:" ";
position:relative;
display:block;
top:0; left:0;
width: 100%;
height: 100%;
border-radius: 20%;
background-color: @color;
animation: scaleout 1.2s infinite ease-in-out
}
@keyframes scaleout {
0% { transform: scale(0) }
80% { transform: scale(1); opacity: 0;}
100% { transform: scale(1); opacity: 0;}
}
.custom-tree.ace_tree .tree-row .toggler{
.image-2x("@{tree-arrow}", 20px, 10px);