Changeset 374 in main


Ignore:
Timestamp:
10/05/11 10:27:06 (8 years ago)
Author:
pcosquer
Message:

navigate: label edges

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/navigate.py

    r373 r374  
    4646def get_path(obj): 
    4747    if hasattr(obj, "type"): 
    48         return "/".join((obj.type, obj.reference, obj.revision)) 
     48        return u"/".join((obj.type, obj.reference, obj.revision)) 
    4949    else: 
    50         return obj.username 
     50        return u"User/%s/-/" % obj.username 
    5151 
    5252 
     
    9393    """ 
    9494 
    95     GRAPH_ATTRIBUTES = dict(dpi='96.0', aspect='2', mindist=".5", center='true', 
    96                             ranksep='1.2', pad='0.1', mode="ipsep", 
    97                             overlap="false", splines="false", sep="+.1,.1", 
    98                             nodesep=".2", outputorder="edgesfirst", 
     95    GRAPH_ATTRIBUTES = dict(dpi='96.0', 
     96                            mindist=".5", 
     97                            center='true', 
     98                            pad='0.1', 
     99                            mode="ipsep", 
     100                            overlap="false", 
     101                            splines="false", 
     102                            sep="+.1,.1", 
     103                            outputorder="edgesfirst", 
    99104                            bgcolor="transparent") 
    100105    NODE_ATTRIBUTES = dict(shape='Mrecord', fixedsize='true', fontsize='10', 
    101106                           style='filled', width='1.0', height='0.6') 
    102     EDGE_ATTRIBUTES = dict(color='#000000', minlen="1.5", len="1.5", arrowhead='normal') 
     107    EDGE_ATTRIBUTES = dict(color='#aaaaaa', 
     108                           minlen="1.5", 
     109                           len="1.5", 
     110                           arrowhead='normal', 
     111                           fontsize="9") 
    103112    TYPE_TO_ATTRIBUTES = {UserController : dict(color='#c7dec5', 
    104113                            image=os.path.join(basedir, "user.png")), 
     
    177186        """ 
    178187        self.options.update(options) 
     188        if self.options["prog"] == "twopi": 
     189            self.graph.graph_attr["ranksep"] = "1.2" 
    179190         
    180191    def _create_child_edges(self, obj, *args): 
     
    182193            return 
    183194        for child_l in obj.get_children(): 
    184             if self.options[OSR] and child_l.link.child.id not in self.results: 
    185                 continue 
    186             child = PartController(child_l.link.child, None) 
    187             self.graph.add_edge(obj.id, child.id) 
     195            link = child_l.link 
     196            if self.options[OSR] and link.child.id not in self.results: 
     197                continue 
     198            child = PartController(link.child, None) 
     199            label = "Qty: %d\\nOrder: %d" % (link.quantity, link.order)  
     200            self.graph.add_edge(obj.id, child.id, label) 
    188201            self._set_node_attributes(child) 
    189202            if self.options['doc'] or child.id in self.options["doc_parts"]: 
     
    195208            return 
    196209        for parent_l in obj.get_parents(): 
    197             if self.options[OSR] and parent_l.link.parent.id not in self.results: 
    198                 continue 
    199             parent = PartController(parent_l.link.parent, None) 
    200             self.graph.add_edge(parent.id, obj.id) 
     210            link = parent_l.link 
     211            if self.options[OSR] and link.parent.id not in self.results: 
     212                continue 
     213            parent = PartController(link.parent, None) 
     214            label = "Qty: %d\\nOrder: %d" % (link.quantity, link.order)  
     215            self.graph.add_edge(parent.id, obj.id, label) 
    201216            self._set_node_attributes(parent) 
    202217            if self.options['doc'] or parent.id in self.options["doc_parts"]: 
     
    211226                continue 
    212227            part = PartController(link.part, None) 
    213             self.graph.add_edge(obj.id, part.id) 
     228            self.graph.add_edge(obj.id, part.id, " ") 
    214229            self._set_node_attributes(part) 
    215230     
    216     def _create_doc_edges(self, obj, *args): 
     231    def _create_doc_edges(self, obj, obj_id=None, *args): 
    217232        if self.options[OSR] and self.users_result: 
    218233            return 
     
    221236                continue 
    222237            document = DocumentController(document_item.document, None) 
    223             self.graph.add_edge(obj.id, document.id) 
     238            self.graph.add_edge(obj_id or obj.id, document.id, " ") 
    224239            self._set_node_attributes(document) 
    225240 
     
    233248            user = UserController(user_item.user, None)  
    234249            user_id = user_item.role + str(user_item.user.id) 
    235             self.graph.add_edge(user_id, obj.id) 
     250            self.graph.add_edge(user_id, obj.id, user_item.role.replace("_", "\\n")) 
    236251            self._set_node_attributes(user, user_id, user_item.role) 
    237252 
     
    244259                continue 
    245260            part_doc_id = str(part_doc_item.role) + str(part_doc_item.plmobject_id) 
    246             self.graph.add_edge("User%d" % obj.id, part_doc_id) 
     261            self.graph.add_edge("User%d" % obj.id, part_doc_id, 
     262                    part_doc_item.role.replace("_", "\\n")) 
    247263            if hasattr(part_doc_item.plmobject, 'document'): 
    248                 part_doc = DocumentController(part_doc_item.plmobject, None) 
     264                part_doc = DocumentController(part_doc_item.plmobject.document, None) 
    249265            else: 
    250                 part_doc = PartController(part_doc_item.plmobject, None) 
     266                part_doc = PartController(part_doc_item.plmobject.part, None) 
     267                if part_doc.id in self.options["doc_parts"]: 
     268                    self._create_doc_edges(part_doc, part_doc_id) 
     269                 
    251270            self._set_node_attributes(part_doc, part_doc_id) 
    252271 
     
    264283        self.main_node = node.attr["id"] 
    265284        color = node.attr["color"] 
    266         node.attr.update(color="#444444", fillcolor=color, shape="box", root="true") 
     285        node.attr.update(color="#444444", fillcolor=color, shape="box") 
    267286        functions_dic = {'child':(self._create_child_edges, None), 
    268287                         'parents':(self._create_parents_edges, None), 
     
    282301                function(self.object, argument) 
    283302        if not self.options["doc"] and self.object.id in self.options["doc_parts"]: 
    284             self._create_doc_edges(self.object, None) 
     303            if isinstance(self.object, PartController): 
     304                self._create_doc_edges(self.object, None) 
    285305 
    286306    def _set_node_attributes(self, obj, obj_id=None, extra_label=""): 
     
    354374        warnings.simplefilter('ignore', RuntimeWarning) 
    355375        # rebuild a frozen graph with sorted edges to avoid random output 
    356         edges = self.graph.edges() 
    357         self.graph.remove_edges_from(edges) 
     376        edges = self.graph.edges(keys=True) 
     377        self.graph.remove_edges_from((a, b) for a, b, k in edges) 
    358378        s = unicode(self.graph) 
    359379        s = s[:s.rfind("}")] 
    360380        edges.sort() 
    361         s += "\n".join(u"%s -> %s;" % (a,b) for a, b in edges) + "}\n" 
     381        s += "\n".join(u'%s -> %s [label="%s"];' % edge for edge in edges) + "}\n" 
    362382        self.graph.close() 
    363383        self.graph = FrozenAGraph(s) 
Note: See TracChangeset for help on using the changeset viewer.