dojo-util
Version:
Dojo utilities including build system for optimizing JavaScript application performance, and DOH testing tool
91 lines (81 loc) • 2.51 kB
JavaScript
jsdoc = {nodes: {}};
dojo.addOnLoad(function(){
dojo.query("#jsdoc-manage table").forEach(function(table){
dojo.connect(dojo.byId("jsdoc-manage"), "onsubmit", function(e){
var valid = true;
dojo.query("select", table).forEach(function(select){
if(select.options.length > 1 && select.selectedIndex == 0){
valid = false;
}
});
if(!valid){
alert("All variables must either be marked as new, or used in a rename.");
dojo.stopEvent(e);
}
});
var available = {};
dojo.query("input", table).forEach(function(checkbox){
checkbox.checked = true;
var parts = checkbox.value.split("|");
var node = {
project: parts[0],
resource: parts[1],
title: parts[2],
nid: parts[3],
vid: parts[4]
}
jsdoc.nodes[node.nid + "_" + node.vid] = node;
dojo.connect(checkbox, "onchange", function(e){
var checked = e.target.checked;
if(!available[node.project]){
e.target.checked = true;
}
if(available[node.project] || checked){
dojo.publish("/jsdoc/onchange", [checkbox.checked, node.nid + "_" + node.vid]);
}
if(!checked && available[node.project]){
--available[node.project];
}else if(checked) {
++available[node.project];
}
});
});
dojo.query("select", table).forEach(function(select){
var project = select.name.slice(9, select.name.indexOf("]"));
available[project] = (available[project] || 0) + 1;
dojo.connect(select, "onchange", function(){
if(select.selectedIndex == 0){
if(select.last){
dojo.publish("/jsdoc/onchange", [false, select.last, select]);
select.last = 0;
}
}else if(select.selectedIndex > 0){
if(select.last){
dojo.publish("/jsdoc/onchange", [false, select.last, select]);
}
var option = select.options[select.selectedIndex];
select.last = option.value;
dojo.publish("/jsdoc/onchange", [true, option.value, select]);
}
});
dojo.subscribe("/jsdoc/onchange", null, function(checked, id, current){
if(current === select){
return;
}
var node = jsdoc.nodes[id];
if(!checked){
if(select.name.indexOf("modified[" + node.project + "]") == 0){
var i = select.options.length++;
select.options[i].value = id;
select.options[i].text = node.title + " in " + node.resource;
}
}else{
dojo.query("option[value=" + id + "]", select).orphan();
if(!select.options.length){
select.selectedIndex = 0;
}
}
});
});
});
});