contextstatechart's Issues
Optimize annular sector radius
The annular sector radius should optimize the following criteria:
- Text fits into sector
- Border left/right to text is minimal
- Radius is minimal
Tasks:
- Calculate energy of annular sector
- Calculate energy of graph
- Implement operations for increasing/decreasing radius for random level
- Implement simulated annealing
GEXF Graph import
Create a graph object from GEXF file. At lease on custom attribute for the level of a node must be supported.
Implement connectors (single layer)
Extend graph to support connectors between nodes. Edges are part of the graph, source and target ports used and the offset of the connector is determined by the layout.
Edges between adjacent layers
Add multiple layers to graph and enable edges between them.
Variable layer distance
The distance between layers is fixed to one single value at the moment. Change this to a list of distances that can be optimized independently.
Refactor style handling
Currently we use plain strings for object styles. This is problematic if invalid styles are passed to the library. Also, we cannot alter parts of the style easily.
Create a dedicated type for style where supported style aspects can be configured.
SVG can be styled using CSS completely. Instead of adding style attributes all over the place, use class
and id
attributes to allow for styling the graph. The CSS file used must be configurable (inline or URL).
Optimize connectors
Calculate energy for connectors and implement optimizations:
- switch direction
- swap nodes
Set up CI
Enable TravisCI
Implement ports for annular sectors
An annular sector has two coasts, the inner coast and the outer coast. Every coast can have a number of equidistant ports. Ports are numbered from 1 to number_of_ports in clock-wise direction. A operation on Annular_Sectors_Params_Type
returns the coordinate of a port:
type Coast_Type is (Inner, Outer);
function Port (Params : Annular_Sector_Params_Type;
Coast : Coast_Type;
Port_No : Integer;
Num_Ports : Integer) return Types.Point;
Node position independent of list position
Currently nodes are rendered according to their position in the node list. For optimizing the graph, we must be able to change node positions easily. Add a position
attribute to nodes designating their position in the graph.
Implement graphics primitives
- 010 - Empty SVG file
- 020 - Draw arc given center point, start point and end point
- 025 - Render text
- 026 - Render text along path
- 030 - Draw arc with text label (inner, outer, CW/CCW flow)
- 040 - Draw line along radius, given center point, start offset and end offset
- 050 - Draw plain line, line with arrow towards outside, arrow towards inside, with two arrows
- 060 - Draw arc connector with lines up/down, arrows on start, end, both
- 061 - Connector with label (inner, outer, CW/CCW flow)
- 070 - Draw annular sector
- 071 - Draw labeled annular sector
- 080 - Draw graph from annular sectors given list with weights
- 090 - Draw graph from annular sectors with labels, given list of (label, weight)
Refactor Create_Graph
The Create_Graph
operation currently has many (length) local subprograms that directly use parameters of their parent subprogram. Refactor those into (private) subprograms at package level.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.