Пример #1
0
    def generate(self):
        """
        Parse Json included in constructor to generate diagrams

        Raises:
            exception.ElementNotFoundException: when a type element is unknown
        """
        # self.writeHeader()
        for obj in self.json:
            if not obj['type'] in self.elements:
                # Element is missing in lib/.../json folder
                raise exception.ElementNotFoundException(obj['type'])
            else:
                base = json.load(open(self.defaultTemplatePath+'/json/'+obj['type']+'.json'))
                base.update(obj)

                # Links have a different behaviour than other elements
                if obj['type'] == "link":
                    base['from'] = base['from']
                    base['to'] = base['to']
                    self.links.append(base)
                    continue

                base['name'] = base['name']
                if not base['link'] is None:
                    self.transformEmbeddedLink(base)

                # Get position of element into grid
                base = self.getGridPosition(base)

                # Store hash of name in namedElements
                hashName = hashlib.md5(base['name'])
                self.namedElements[hashName.hexdigest()] = base

                # Transform JSON element to SVG
                self.svg.addElement(base)

        # links treatments
        for link in self.links:
            link = self.linkPosition(link)
            # Transform element in SVG
            self.svgLinks.addElement(link)

        self.svg.prependFragment(self.svgLinks.svgString)
        self.stats[Interpretor.STATS_NB_ELEMENTS] = len(self.namedElements)
        self.stats[Interpretor.STATS_NB_LINKS] = len(self.links)

        r = {}
        r['stats'] = self.stats
        size = GridManagement.getDimension(self.maxsize)
        self.svg.writeHeader(size)
        r['diy'] = self.svg.__str__()
        return r
Пример #2
0
    def getGridPosition(self, element):
        """
        Transform grid position into pixel position using GridManagement

        Args:
            element: a dictionnary of one element
        Returns:
            dictonnary element passed in parameter with pixel value for x and y
        """
        # transform position by using GridManagement
        # elements must have x and y parameters
        coord = self.splitPosition(element['position'])

        if coord[0] > self.maxsize['x']:
            self.maxsize['x'] = coord[0]
        if coord[1] > self.maxsize['y']:
            self.maxsize['y'] = coord[1]

        element['x'] = coord[0]
        element['y'] = coord[1]
        element = GridManagement.getPosition(element)
        return element
	def runTest(self):
		e = self.element.copy()
		GridManagement.getPosition(e)
		self.position_test(e)