source: Dev/trunk/src/client/util/jsdoc/jsdoc.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.4 KB
Line 
1jsdoc = {nodes: {}};
2
3dojo.addOnLoad(function(){
4        dojo.query("#jsdoc-manage table").forEach(function(table){
5                dojo.connect(dojo.byId("jsdoc-manage"), "onsubmit", function(e){
6                        var valid = true;
7                        dojo.query("select", table).forEach(function(select){
8                                if(select.options.length > 1 && select.selectedIndex == 0){
9                                        valid = false;
10                                }
11                        });
12                        if(!valid){
13                                alert("All variables must either be marked as new, or used in a rename.");
14                                dojo.stopEvent(e);
15                        }
16                });
17
18                var available = {};
19
20                dojo.query("input", table).forEach(function(checkbox){
21                        checkbox.checked = true;
22                        var parts = checkbox.value.split("|");
23                        var node = {
24                                project: parts[0],
25                                resource: parts[1],
26                                title: parts[2],
27                                nid: parts[3],
28                                vid: parts[4]
29                        }
30                        jsdoc.nodes[node.nid + "_" + node.vid] = node;
31                        dojo.connect(checkbox, "onchange", function(e){
32                                var checked = e.target.checked;
33
34                                if(!available[node.project]){
35                                        e.target.checked = true;
36                                }
37                                if(available[node.project] || checked){
38                                        dojo.publish("/jsdoc/onchange", [checkbox.checked, node.nid + "_" + node.vid]);
39                                }
40
41                                if(!checked && available[node.project]){
42                                        --available[node.project];
43                                }else if(checked) {
44                                        ++available[node.project];
45                                }
46                        });
47                });
48
49                dojo.query("select", table).forEach(function(select){
50                        var project = select.name.slice(9, select.name.indexOf("]"));
51                        available[project] = (available[project] || 0) + 1;
52
53                        dojo.connect(select, "onchange", function(){
54                                if(select.selectedIndex == 0){
55                                        if(select.last){
56                                                dojo.publish("/jsdoc/onchange", [false, select.last, select]);
57                                                select.last = 0;
58                                        }
59                                }else if(select.selectedIndex > 0){
60                                        if(select.last){
61                                                dojo.publish("/jsdoc/onchange", [false, select.last, select]);
62                                        }
63                                        var option = select.options[select.selectedIndex];
64                                        select.last = option.value;
65                                        dojo.publish("/jsdoc/onchange", [true, option.value, select]);
66                                }
67                        });
68
69                        dojo.subscribe("/jsdoc/onchange", null, function(checked, id, current){
70                                if(current === select){
71                                        return;
72                                }
73
74                                var node = jsdoc.nodes[id];
75
76                                if(!checked){
77                                        if(select.name.indexOf("modified[" + node.project + "]") == 0){
78                                                var i = select.options.length++;
79                                                select.options[i].value = id;
80                                                select.options[i].text = node.title + " in " + node.resource;
81                                        }
82                                }else{
83                                        dojo.query("option[value=" + id + "]", select).orphan();
84                                        if(!select.options.length){
85                                                select.selectedIndex = 0;
86                                        }
87                                }
88                        });
89                });
90        });
91});
Note: See TracBrowser for help on using the repository browser.