From 3701ba3b4e414c6c59deb3745610a826c30aa4c6 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Tue, 6 Jan 2015 19:07:40 +0000 Subject: add x alignment constraints doesn't work 100% yet --- git-deps | 33 ++++++++++++++++++++++++++++++--- html/test.json | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 78 insertions(+), 11 deletions(-) diff --git a/git-deps b/git-deps index 4c5b075..55bdfb5 100755 --- a/git-deps +++ b/git-deps @@ -135,10 +135,18 @@ class JSONDependencyListener(DependencyListener): def __init__(self, options): super(JSONDependencyListener, self).__init__(options) - self._nodes = {} # maps node names to indices in the nodes array + + # Map node names to indices in the nodes array + self._nodes = {} + + # Maps node names to child node names. This will be used to + # constrain siblings to the same y position. + self._deps = {} + self._json = { 'nodes': [], 'links': [], + 'constraints': [], } def abbreviate_sha(self, sha): @@ -203,8 +211,11 @@ class JSONDependencyListener(DependencyListener): self._json['links'].append def new_dependency(self, dependent, dependency, path, line_num): - source_index = self.add_node(dependent.hex) - target_index = self.add_node(dependency.hex) + parent = dependent.hex + child = dependency.hex + + source_index = self.add_node(parent) + target_index = self.add_node(child) new_link = { 'source': source_index, @@ -217,7 +228,23 @@ class JSONDependencyListener(DependencyListener): self._json['links'].append(new_link) + if parent in self._deps: + self._deps[parent].append(child) + else: + self._deps[parent] = [child] + def json(self): + for parent, children in self._deps.iteritems(): + constraint = { + 'axis': 'x', + 'type': 'alignment', + 'offsets': [ + {'node': self._nodes[child], 'offset': 0} + for child in children + ] + } + self._json['constraints'].append(constraint) + return json.dumps(self._json, sort_keys=True, indent=4) def all_done(self): diff --git a/html/test.json b/html/test.json index fda0ccd..0eda49c 100644 --- a/html/test.json +++ b/html/test.json @@ -1,4 +1,44 @@ { + "constraints": [ + { + "axis": "x", + "offsets": [ + { + "node": 1, + "offset": 0 + }, + { + "node": 2, + "offset": 0 + }, + { + "node": 3, + "offset": 0 + }, + { + "node": 4, + "offset": 0 + }, + { + "node": 5, + "offset": 0 + }, + { + "node": 6, + "offset": 0 + }, + { + "node": 7, + "offset": 0 + }, + { + "node": 8, + "offset": 0 + } + ], + "type": "alignment" + } + ], "links": [ { "source": 0, @@ -43,7 +83,7 @@ ], "nodes": [ { - "describe": "github/master-0", + "describe": "tags/test-0", "name": "2b6d591", "sha": "2b6d5915f6433b9eb1685751b82cfbebcbb37981" }, @@ -53,37 +93,37 @@ "sha": "b1967573e81a8100a4cc778936de0ba0a8a8f5cb" }, { - "describe": "testbranch-1", + "describe": "", "name": "3a1dd42", "sha": "3a1dd42fd6114a634ba7cf037ce61e2aee76db73" }, { - "describe": "testbranch-4", + "describe": "", "name": "3374b84", "sha": "3374b8419a45d91d3c0631be11c8cf893b272217" }, { - "describe": "testbranch-30", + "describe": "", "name": "ff82dda", "sha": "ff82dda196947650bd497301e61b282753193564" }, { - "describe": "testbranch-11", + "describe": "", "name": "8d44254", "sha": "8d442544a20b706b996d66ab390a16fd97b48d6d" }, { - "describe": "testbranch-0", + "describe": "", "name": "b144bfd", "sha": "b144bfd5feb327ef7ce0c26bbfb6f4da573abfe5" }, { - "describe": "testbranch-29", + "describe": "", "name": "e406002", "sha": "e40600230d1c3059485437bd4d5690d61c9edb2f" }, { - "describe": "testbranch-16", + "describe": "", "name": "4f27a1e", "sha": "4f27a1ee2b5fd63a58311a20e2aed0a24eda8da2" } -- cgit