[IMP] Diagram styling
[odoo/odoo.git] / addons / web_diagram / static / src / js / graph.js
index 2b36cbb..11afc2f 100644 (file)
@@ -15,7 +15,9 @@
     function Connector(graph,node,pos_x,pos_y){
         var visible = false;
         var conn_circle = graph.r.circle(node.get_pos().x + pos_x, node.get_pos().y + pos_y,4);
-        conn_circle.attr({'opacity':0, 'fill':graph.style.outline,'stroke':'none'});
+        conn_circle.attr({  'opacity':  0, 
+                            'fill':     graph.style.node_outline_color,
+                            'stroke':   'none' });
         conn_circle.transform(graph.get_transform());
         graph.set_scrolling(conn_circle);
 
             conn_circle.animate({'r':8},300,'elastic');
             if(graph.creating_edge){
                 graph.target_node = node; 
-                conn_circle.animate({'fill':graph.style.white,'stroke':graph.style.outline,'stroke-width':2},100,'linear');
+                conn_circle.animate({   'fill':         graph.style.connector_active_color,
+                                        'stroke':       graph.style.node_outline_color,
+                                        'stroke-width': graph.style.node_selected_width,
+                                    },100,'linear');
             }
         }
         function hover_out(){
             if(!visible){ return;}
-            conn_circle.animate({'r':4, 'fill':graph.style.outline, 'stroke':'none'},400,'linear');
+            conn_circle.animate({   'r':graph.style.connector_radius, 
+                                    'fill':graph.style.node_outline_color, 
+                                    'stroke':'none'},400,'linear');
             graph.target_node = null;
         }
         conn_circle.hover(hover_in,hover_out);
             nodes.push(n);
             n.uid = uid++;
         };
+
         //return the list of all nodes in the graph
         this.get_node_list = function(){
             return nodes;
         };
+
         //adds an edge to the graph and sets its uid
         this.add_edge = function (n1,n2,e){
             edges.push(e);
                 links[n2.uid].push(e);
             }
         };
+
         //removes an edge from the graph
         this.remove_edge = function(edge){
             edges = _.without(edges,edge);
                 }
             }
         };
+
         // Returns the angle in degrees of the edge loop. We do not support more than 8 loops on one node
         this.get_loop_angle = function(n,e){
             var loop_list = this.get_edge_list(n,n);
         }else{
             node_fig = r.rect(pos_x-sx/2,pos_y-sy/2,sx,sy);
         }
-        node_fig.attr({'fill':color, 'stroke':graph.style.outline,'stroke-width':1,'cursor':'pointer'});
+        node_fig.attr({ 'fill':         color, 
+                        'stroke':       graph.style.node_outline_color,
+                        'stroke-width': graph.style.node_outline_width,
+                        'cursor':'pointer'  });
         node_fig.transform(graph.get_transform());
         graph.set_scrolling(node_fig);
 
         $(node_fig.node).addClass('foobar');
 
         var node_label = r.text(pos_x,pos_y,label);
-        node_label.attr({'fill':graph.style.text,'cursor':'pointer'});
+        node_label.attr({   'fill':         graph.style.node_label_color,
+                            'font-size':    graph.style.node_label_font_size,
+                            'cursor':       'pointer'   });
         node_label.transform(graph.get_transform());
         graph.set_scrolling(node_label);
-        $(node_label.node).css('text-shadow',"1px 2px 3px rgba(0,0,0,0.3)");
 
         // redraws all edges linked to this node 
         var update_linked_edges = function(){
         // selects this node and deselects all other nodes
         var set_selected = function(){
             if(!selected){
-                node_fig.attr({'stroke':graph.style.selected, 'stroke-width':2});
+                node_fig.attr({ 'stroke':       graph.style.node_selected_color, 
+                                'stroke-width': graph.style.node_selected_width });
                 selected = true;
                 var nodes = graph.get_node_list();
                 for(var i = 0; i < nodes.length; i++){
         // deselect this node
         var set_not_selected = function(){
             if(selected){
-                node_fig.animate({'stroke':graph.style.outline,'stroke-width':1},100,'linear');
+                node_fig.animate({  'stroke':       graph.style.node_outline_color,
+                                    'stroke-width': graph.style.node_outline_width },
+                                    100,'linear');
                 selected = false;
             }
             for(var i = 0; i < self.connectors.length; i++){
         }
         
         update_curve();
-        var edge = r.path(edge_path).attr({'stroke':graph.style.edge, 'stroke-width':2, 'arrow-end':'block-wide-long', 'cursor':'pointer'}).insertBefore(graph.get_node_list()[0].get_fig());       
+        var edge = r.path(edge_path).attr({ 'stroke':       graph.style.edge_color, 
+                                            'stroke-width': graph.style.edge_width, 
+                                            'arrow-end':    'block-wide-long', 
+                                            'cursor':'pointer'  }).insertBefore(graph.get_node_list()[0].get_fig());       
         var labelpos = get_label_pos(edge);
-        var edge_label = r.text(labelpos.x, labelpos.y - elfs, label).attr({'fill':graph.style.edge_label, 'cursor':'pointer', 'font-size':elfs});
+        var edge_label = r.text(labelpos.x, labelpos.y - elfs, label).attr({
+            'fill':         graph.style.edge_label_color, 
+            'cursor':       'pointer', 
+            'font-size':    elfs    });
 
         edge.transform(graph.get_transform());
         graph.set_scrolling(edge);
 
         edge_label.transform(graph.get_transform());
         graph.set_scrolling(edge_label);
-        $(edge_label.node).css('text-shadow',"1px 2px 3px rgba(0,0,0,0.3)");
         
 
         //since we create an edge we need to recompute the edges that have the same start and end positions as this one
 
 })(window);
 
-/*
-window.onload = function(){
-    //Example 
-    var style = {   "background"    :'url("grid.png")',
-                    "edge"          :"#A0A0A0",
-                    "edge_label"    :"#555",
-                    "text"          :"#333",
-                    "outline"       :"#000",
-                    "selected"      :"#0097BE",
-                    "gray"          :"#DCDCDC",
-                    "white"         :"#FFF",
-                    "node_size_x"   : 110,
-                    "node_size_y"   : 80,
-                    "edge_spacing"  : 100,                 
-                    "edge_label_font_size" : 10         
-                    "edge_loop_radius": 50 };
-
-    var r = new Raphael(document.getElementById("canvas_container"),'100%','100%');
-
-    var g = new CuteGraph(r,style);
-    
-    var n1 = new CuteNode(g,100,250,'Hello World','circle',colors.white);
-    var n2 = new CuteNode(g,400,250,'Hello Planet','rect',colors.white);
-    var n3 = new CuteNode(g,250,400,'Lonely Node','rect',colors.gray);
-    var e1 = new CuteEdge(g,'test',n1,n2);
-}*/
-