|
|
@@ -2,8 +2,135 @@ A list of features that are wanted in this tool:
|
|
|
|
|
|
* More flags:
|
|
|
-g/--file: only generate specific file(s)
|
|
|
- -i/--ignore: don't generate specific file(s)
|
|
|
- -I/--import: add imports to the generated files
|
|
|
-* Allow Renaming of files?
|
|
|
-* Allow global variables/code?
|
|
|
-* Allow setting of drawio xpath
|
|
|
+ -i/--ignore: don't generate specific file(s)
|
|
|
+* Allow Renaming of files? => Via tabs?
|
|
|
+* Allow global variables/code? => Model specific; so no flag
|
|
|
+* Allow setting of drawio xpath => Formalism-specific; set in setup file
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+* inverterblock: change symbol \frac{1}{N} to 1/
|
|
|
+ N is confusing as the input is IN1. Furthermore,
|
|
|
+ N seems to indicate that the input must be an integer.
|
|
|
+ Is this the same for the rootblock?
|
|
|
+ ---> Maybe use UTF-8 icons instead of LaTeX? MathJax does
|
|
|
+ not render in the sidebar/library panel (I opened
|
|
|
+ a feature request at drawio for this), so for now
|
|
|
+ using icons may be a better way to go?
|
|
|
+ OK
|
|
|
+ ---> fallback for complex symbols: render/draw and take snapshot
|
|
|
+
|
|
|
+* make the use (and inclusion!) of bokeh dependent
|
|
|
+ on (1) whether there are any signals to plot and
|
|
|
+ (2) whether the library can be loaded (with try:)
|
|
|
+ ---> Done!
|
|
|
+
|
|
|
+* low priority: allow the use of matplotlib instead of bokeh.
|
|
|
+ More generally, make it easy to (1) not plot at all,
|
|
|
+ but only save the date for those OutputPortBlocks
|
|
|
+ with a 'signal' property in a standard (.csv, .xml) format,
|
|
|
+ (2) use matplotlib, or (3) use bokeh.
|
|
|
+ ---> matplotlib (or mpl) is now the default for plotting,
|
|
|
+ a commandline argument (-P or --plot) can now switch
|
|
|
+ between mpl, bokeh and csv, or it can disable plotting
|
|
|
+ as a whole.
|
|
|
+ ---> I don't know what the structure of an XML would look like,
|
|
|
+ so it's not implemented (yet).
|
|
|
+ NOT IMPORTANT (for the time being)
|
|
|
+
|
|
|
+* The CBD simulator assumes that all blocks have a unique name.
|
|
|
+ In what scope?
|
|
|
+ ---> In the scope of each individual CBD itself. This is clarified in the docs.
|
|
|
+ - within the scope of each CBD definition, blocks have a unique name (check this)
|
|
|
+ - CBD definitions must have unique class_name (check this)
|
|
|
+
|
|
|
+* Optionally, additional class parameters can be provided
|
|
|
+ by adding more properties.
|
|
|
+ These will be passed on as-is, allowing for complex values.
|
|
|
+ As-is? Indentation? Or declaring local variable?
|
|
|
+ ---> Indentation is now removed from the values.
|
|
|
+ ---> The property values should be expressions/rvalues. This should
|
|
|
+ be clearer in the docs now.
|
|
|
+
|
|
|
+* Otherwise, one may use a single input, as long as the
|
|
|
+ 'numberOfInputs' property is set to a value that is at least the total
|
|
|
+ number of incoming links. ???
|
|
|
+ ---> Unintentional 'feature' caused by the CBD-simulator's 'addConnection'
|
|
|
+ behaviour when 'input_port_name' is not defined. On the one hand, this
|
|
|
+ may add a shorthand for what could be a painful issue. On the other hand,
|
|
|
+ it causes less clean modeling.
|
|
|
+
|
|
|
+* When this option is set, even those ports will explicitly be set.??
|
|
|
+ ---> See previous answer. When set, this parameter will always add the
|
|
|
+ 'input_port_name' and 'output_port_name' argument, even if it can be
|
|
|
+ deduced from the context. Counteracts the previous 'feature'.
|
|
|
+
|
|
|
+* Function block (e.g., sin()): GenericBlock?
|
|
|
+ ---> See 'examples/SinGen/' example
|
|
|
+
|
|
|
+* Property 'block_name' is the name of the block if this class is the top-level CBD?
|
|
|
+ OK? Property 'block_name' is the name of an instance of this hierarchical CBD model.
|
|
|
+ ---> ONLY if this class/CBD is marked as 'entry' by the commandline arguments.
|
|
|
+
|
|
|
+* multiple pages: unique names?
|
|
|
+ ---> I agree, it should be nice to actually split up these models graphically, yet
|
|
|
+ a commandline argument to toggle this behaviour seems in order. I only see this
|
|
|
+ possible if every page would create a unique file, which is included where needed.
|
|
|
+ The argument would than probably be --singlefile.
|
|
|
+ ---> As far as I am aware, drawio plugins cannot access the page names, which is why
|
|
|
+ it is now page-independent.
|
|
|
+ TODO: ask Joeri
|
|
|
+
|
|
|
+* online documentation using
|
|
|
+ https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html
|
|
|
+ ---> Done!
|
|
|
+
|
|
|
+* be printed to the console --> stdio?
|
|
|
+ ---> Currently, it uses the 'print' function. Using 'sys.stdout' shouldn't be an issue.
|
|
|
+
|
|
|
+* represents an input file (uncompressed or compressed XML) ?OK compressed?
|
|
|
+ ---> I removed that from the documentation. Either is fine, though the compressed might be
|
|
|
+ better performance-wise (and space-wise on your system).
|
|
|
+
|
|
|
+* Generation of LaTeX ... in drawio2cdf and/or in generated "simulator"?
|
|
|
+ ---> In the generated file only. Though, I am not fully convinced the current syntax/way
|
|
|
+ of doing it is 'clean'.
|
|
|
+ TODO: LaTeX functions must be checked/altered (they must be ordered)
|
|
|
+ ---> Add LaTeX generation of the flattened CBDs!
|
|
|
+
|
|
|
+* Generate FMU (in the near future)
|
|
|
+
|
|
|
+* Restructure simulator based on Claudio's version
|
|
|
+
|
|
|
+* In the future: refactor simulator to use internal (graph) structure from ModelverseState (MvS).
|
|
|
+ This is the first step to full integration with the Modelverse. drawio will then be
|
|
|
+ one possible visual interface for formalism-specific syntax-directed editing of Modelverse models
|
|
|
+
|
|
|
+* currently, remove graphViz (or keep for dependency graph)
|
|
|
+
|
|
|
+* Re-add the "plotting" module, but provide functionality for bokeh, matplotlib, gnuplot, csv, xml... that way
|
|
|
+
|
|
|
+* Move "get_block" function from generated scripts to "CBD" module
|
|
|
+ ---> Done!
|
|
|
+
|
|
|
+* Move __docstring__ attribute to custom shape (Text/Textbox/...) in drawio?
|
|
|
+
|
|
|
+* Add possibility to import other libraries into your custom library, allowing multiple files.
|
|
|
+
|
|
|
+* Custom LaTeX representation for custom blocks?
|
|
|
+
|
|
|
+* RootBlock: is linear if its root is <= 1
|
|
|
+
|
|
|
+* Don't override "if __name__ == '__main__':" option?
|
|
|
+ ---> Maybe only override the classes?
|
|
|
+
|
|
|
+* Reduce the amount of whitespaces for imports
|
|
|
+ ---> Use a list of all import statements instead of making it variable
|
|
|
+ with the file generation.
|
|
|
+
|
|
|
+* Have multiple entry points for the ports possible
|
|
|
+
|
|
|
+* Cleaner/better code generation, that is easily expandible to other frameworks (C [FMU], Java...)
|
|
|
+
|
|
|
+* Fix issues that appear in "troublesome.xml" -- Thank you Nils Charlet for pointing this out!
|
|
|
+
|