summaryrefslogtreecommitdiffstats
path: root/dgbuilder/public/red/ui/tab-config.js
blob: 6ef6ba00dc27e128c102cbc9982b0463827d2673 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
 * Copyright 2013 IBM Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 **/
RED.sidebar.config = (function() {
    
    var content = document.createElement("div");
    content.id = "tab-config";
    content.style.paddingTop = "4px";
    content.style.paddingLeft = "4px";
    content.style.paddingRight = "4px";
    
    var list = $("<ul>",{class:"tab-config-list"}).appendTo(content);
    
    function show() {
        if (!RED.sidebar.containsTab("config")) {
            RED.sidebar.addTab("config",content,true);
        }
        refresh();
        RED.sidebar.show("config");
    }
    
    function refresh() {
        list.empty();
        RED.nodes.eachConfig(function(node) {
            var li = list.find("#tab-config-list-type-"+node.type);
            if (li.length === 0) {
                li = $("<li>",{id:"tab-config-list-type-"+node.type}).appendTo(list);
                $('<div class="tab-config-list-type">'+node.type+'</div>').appendTo(li);
            }
            var label = "";
            if (typeof node._def.label == "function") {
                label = node._def.label.call(node);
            } else {
                label = node._def.label;
            }
            label = label || "&nbsp;";
            
            var entry = $('<div class="tab-config-list-entry"></div>').appendTo(li);
            entry.on('dblclick',function(e) {
                RED.editor.editConfig("", node.type, node.id);
            });
            
            var userArray = node.users.map(function(n) { return n.id });
            entry.on('mouseover',function(e) {
                RED.nodes.eachNode(function(node) {
                    if( userArray.indexOf(node.id) != -1) {
                        node.highlighted = true;
                        node.dirty = true;
                    }
                });
                RED.view.redraw();
            });

            entry.on('mouseout',function(e) {
                RED.nodes.eachNode(function(node) {
                    if(node.highlighted) {
                        node.highlighted = false;
                        node.dirty = true;
                    }
                });
                RED.view.redraw();
            });
            
            $('<div class="tab-config-list-label">'+label+'</div>').appendTo(entry);
            $('<div class="tab-config-list-users">'+node.users.length+'</div>').appendTo(entry);
        });
    }
    return {
        show:show,
        refresh:refresh
    }
})();