Edouard Tisserant [Tue, 17 Mar 2020 13:34:07 +0100] rev 2879
SVGHMI: Cosmetic changes
Edouard Tisserant [Tue, 17 Mar 2020 13:16:01 +0100] rev 2878
SVGHMI: added inline_svg.ysl2
Edouard Tisserant [Tue, 17 Mar 2020 11:24:07 +0100] rev 2877
SVGHMI: detachable_elements.ysl2 becomes detachable_pages.ysl2, and includes logic to process pages elements. Other minor code moves.
Edouard Tisserant [Tue, 17 Mar 2020 10:34:26 +0100] rev 2876
SVGHMI: moved debug code
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 Mar 2020 09:29:04 +0100] rev 2875
SVGHMI: created detachable_elements.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 Mar 2020 08:00:33 +0100] rev 2874
SVGHMI: more debug code moved to hmi_tree.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 17 Mar 2020 07:39:50 +0100] rev 2873
SVGHMI : create hmi_tree.ysl2, rename bbox_intersect.ysl2 into geometry.ysl2 and move more code into. Add per included ysl2 file debug output.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 16 Mar 2020 18:27:49 +0100] rev 2872
SVGHMI: created bbox_intersect.ysl2
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 16 Mar 2020 17:09:23 +0100] rev 2871
SVGHMI: Re-enable dispatch to arrays of functions in case of multiple suscription per widget. Still unused, but disabled for reasons not any more true.
Edouard Tisserant [Fri, 13 Mar 2020 21:42:40 +0100] rev 2870
SVGHMI: relative pages and page jumps
Edouard Tisserant [Fri, 13 Mar 2020 10:36:13 +0100] rev 2869
SVGHMI: take care of path given in HMI:Page and HMI:Jump, but do not apply subscription offset for now. Intermediate commit in a "working" state.
Edouard Tisserant [Thu, 12 Mar 2020 13:16:18 +0100] rev 2868
SVGHMI: significant whitespace changes
Edouard Tisserant [Thu, 12 Mar 2020 13:15:54 +0100] rev 2867
SVGHMI: unsignificant changes or changes in generated code
Edouard Tisserant [Thu, 12 Mar 2020 13:14:38 +0100] rev 2866
SVGHMI: Stop ignoring HMI_NODE in HMI tree, and count it as a BOOL. Soon we use those nodes as reference for relative page jump, and as an "enable" bit for features associated to an HMI tree fragment.
Edouard Tisserant [Thu, 12 Mar 2020 09:33:20 +0100] rev 2865
SVGHMI: cosmetic code moving
Edouard Tisserant [Tue, 10 Mar 2020 13:57:29 +0100] rev 2864
SVGHMI: split page switch into switching subscription and switching elements in the DOM, to ensure that subscriptions have been send before changing DOM, and avoid some flicker.
Edouard Tisserant [Mon, 09 Mar 2020 13:43:34 +0100] rev 2863
SVGHMI: fix wrong updates of HMI variables on each change, especially when not subscribed.
Edouard Tisserant [Mon, 09 Mar 2020 13:40:45 +0100] rev 2862
SVGHMI: whitespaces
Edouard Tisserant [Fri, 06 Mar 2020 14:43:03 +0100] rev 2861
SVGHMI: fixed repeated error when Input widget is missing 'value' element
Edouard Tisserant [Fri, 06 Mar 2020 14:42:08 +0100] rev 2860
SVGHMI: more decoupling in between UI related and the rest of JS code, still in the aim of enhancing robustness under heavy load.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 06 Mar 2020 09:35:08 +0100] rev 2859
SVGHMI: use requestAnimationFrame to delegate rendering of updates from network. Should help prevent browser collapse leading to watchdog in case of overload.
Edouard Tisserant [Thu, 05 Mar 2020 13:54:29 +0100] rev 2858
SVGHMI: Fix disapearing elements in case of nested detachable elements.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 05 Mar 2020 10:23:03 +0100] rev 2857
SVGHMI: Meter widget accepts 2 arguments : min and max, taken in account when min or max text element is missing
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 04 Mar 2020 20:02:15 +0100] rev 2856
SVGHMI: More precise error message on missing HMI path. Meter widget now defaults 0-100 range when min and max elements arent's present, without error.
Edouard Tisserant [Wed, 04 Mar 2020 16:46:35 +0100] rev 2855
SVGHMI: more whitespace fixes
Edouard Tisserant [Wed, 04 Mar 2020 16:46:03 +0100] rev 2854
SVGHMI: unlink clones (i.e. deep copy elements refered by svg:use) inside widget.
Designer can use Inkscape clones to duplicate similar assets accross widget. Those clones are unliked so that elements can be independently transformed by individual widgets.
Edouard Tisserant [Wed, 04 Mar 2020 09:31:53 +0100] rev 2853
SVGHMI: whitespaces and comments
Edouard Tisserant [Tue, 03 Mar 2020 16:29:22 +0100] rev 2852
SVGHMI: completely fixed indentation of generated widget description. Lets try to keep it as-is until we can use yslt indentation.
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 03 Mar 2020 10:58:00 +0100] rev 2851
SVGHMI: re-indent generated JS
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 02 Mar 2020 16:30:29 +0100] rev 2850
SVGHMI: detach/re-attach elements required by pages on page switch
This is meant to optimize performances with large drawings leading to long restyle or reflow.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 02 Mar 2020 16:25:35 +0100] rev 2849
SVGHMI: re-indenting
Edouard Tisserant [Mon, 02 Mar 2020 14:43:21 +0100] rev 2848
SVGHMI: declares pages detachable requirements as an object, to find more efficiently common requirements
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 02 Mar 2020 10:29:41 +0100] rev 2847
SVGHMI: fix some JS + add generation of detachable elements, to be continued
Edouard Tisserant [Fri, 28 Feb 2020 22:54:07 +0100] rev 2846
SVGHMI: now compute discardable elements first so that we can do better grouping of required elements when sumarizing.
Edouard Tisserant [Fri, 28 Feb 2020 17:52:35 +0100] rev 2845
SVGHMI : documentation for new geometry intersection computation code + little fixes...
Edouard Tisserant [Fri, 28 Feb 2020 16:09:21 +0100] rev 2844
SVGHMI: detachable and discardable elements sets, Reworked geometric intersection, toward more accurate page content detection.
Moved page's widget/element dependency crawling functions so that it is possible to compute a global detachable and discardable elements sets.
Reworked geometric intersection detection logic to distinguish ovelapping and inclusion.
Goal is to include englobing and overlapping graphical elements, but not groups (would then include everything around...). Intermediate commit, to be continued.
Edouard Tisserant [Thu, 27 Feb 2020 13:14:24 +0100] rev 2843
SVGHMI : still trying to optimize. Added xslt code to identitfy minimum set of elements needed by a particular page. Plan is to remove unseen/unused elements from the DOM, and re-appending them later when used, on page switch. Disabled previous optimization.
Edouard Tisserant [Fri, 21 Feb 2020 16:22:44 +0100] rev 2842
SVGHMI: attempt to optimize for webkit, because of really slow style recompute in svg:use : "unlink clones" (as in inkscape) but stop deep-copy when meeting a widget, and create a new clone instead.
Edouard Tisserant [Fri, 21 Feb 2020 16:18:53 +0100] rev 2841
SVGHMI: optimize browser work by hiding (display:none) pages that are not displayed.
Edouard Tisserant [Fri, 21 Feb 2020 16:15:33 +0100] rev 2840
SVGHMI: Better and less verbose SVG namespace handling in XSLT transform
Edouard Tisserant [Mon, 17 Feb 2020 13:57:44 +0100] rev 2839
SVGHMI: Added mostly untested switch widget
Edouard Tisserant [Fri, 14 Feb 2020 21:41:13 +0100] rev 2838
SVGHMI: HMI:Page can now be a svg:g group or a svg:use clone, and included/linked widget are included in page. HMI:Jump was updated to be clickable through svg:use, to be generalized.
Edouard Tisserant [Fri, 14 Feb 2020 10:29:10 +0100] rev 2837
SVGHMI: ensure that coordinate in CSV file generated by inkscape are both matching svg default unit and in default reference frame
Edouard Tisserant [Thu, 13 Feb 2020 09:43:35 +0100] rev 2836
SVGHMI : still behave, even if important things are missing in SVG widget definitions (ex: needle missing for Meter widget)
Edouard Tisserant [Thu, 13 Feb 2020 09:41:43 +0100] rev 2835
SVGHMI : fix watchdog exception when timeout null
Edouard Tisserant [Tue, 11 Feb 2020 13:56:48 +0100] rev 2834
SVGHMI: be a bit more tolerant with missing HMI paths or missing elements in widgets : continue build (with warning) and fail silently at runtime.
Edouard Tisserant [Thu, 30 Jan 2020 14:33:06 +0100] rev 2833
SVGHMI : fixed bug happening when some SVG ids are containing dashes
Edouard Tisserant [Thu, 23 Jan 2020 13:46:05 +0100] rev 2832
SVGHMI : wait for initial timeout after watchdog is triggered, since it generaly induces HMI restart
Edouard Tisserant [Thu, 23 Jan 2020 11:22:09 +0100] rev 2831
SVGHMI : watchdog is now taking an initial and interval duration as CTN fields.
Edouard Tisserant [Tue, 21 Jan 2020 13:55:03 +0100] rev 2830
SVGHMI : avoid caching of xhtml file by forcing cache-control header in http response.
Edouard Tisserant [Fri, 17 Jan 2020 16:25:45 +0100] rev 2829
SVGHMI : HMI_STRING now also supported from HMI to PLC
Edouard Tisserant [Wed, 15 Jan 2020 11:13:39 +0100] rev 2828
SVGHMI : cosmetic
Edouard Tisserant [Wed, 15 Jan 2020 09:35:29 +0100] rev 2827
SVGHMI non significant fixes
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 14 Jan 2020 11:09:26 +0100] rev 2826
SVGHMI : support for HMI_STRING and HMI_BOOL
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 14 Jan 2020 11:04:18 +0100] rev 2825
plc_debug.c/var_acces.c : whitespace cleanup and other cosmetic changes
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 13 Jan 2020 15:15:01 +0100] rev 2824
SVGHMI : Added python fomating {port} and {name} to commands so that command can build target URL
Edouard Tisserant [Fri, 10 Jan 2020 17:00:01 +0100] rev 2823
SVGHMI : add on Start, Stop and Watchdog command fields to configuration
Edouard Tisserant [Fri, 10 Jan 2020 13:15:07 +0100] rev 2822
SVGHMI: added a watchdog. To ensure that the whole chain is checked, watchdog use a periodic echo of a hearteat variable. JS client code systematically register /HEARTBEAT at 1s update freq, and reacts on updates of /HEARTBEAT by systematically incrementing it. C code catch /HEARTBEAT update and feeds python-implemented watchdog. For now, watchdog does nothing when tiggered
Edouard Tisserant [Wed, 18 Dec 2019 13:31:22 +0100] rev 2821
Add --on-plc-start --on-plc-stop and --status-change to runtime command line, calling given command respectively on start stop or any event. Command line string is python formated (to eventually include status with {}) before being split (supports quoted strings) and passed to Popen for non-blocking execution.
Edouard Tisserant [Mon, 09 Dec 2019 14:53:42 +0100] rev 2820
SVGHMI : had to move the problem of wkaing up python thread from plc thread to platform specific code.
Since Xenomai's cobalt thread are definitely incompatible with normal posix python interpreter binary's thread, we must synchronize them with arcane rt_pipes (the only ones that really work cross domain) as already done in debug and python async eval blocks.
Edouard Tisserant [Mon, 09 Dec 2019 10:43:54 +0100] rev 2819
SVGHMI: change collect/send thread looping condition to fix infinite loop in some cases
Edouard Tisserant [Tue, 03 Dec 2019 09:46:12 +0100] rev 2818
SVGHMI: re-implemented tree view with classic wxTreeCtl
Edouard Tisserant [Tue, 03 Dec 2019 09:44:48 +0100] rev 2817
Non significant changes, whitespaces, etc.
Edouard Tisserant [Fri, 15 Nov 2019 10:34:14 +0100] rev 2816
SVGHMI: Added simple HMI Tree View.
Edouard Tisserant [Thu, 14 Nov 2019 08:46:32 +0100] rev 2815
SVGHMI: add a class attribute to HMI Tree nodes, set when using HMI_NODE
Edouard Tisserant [Wed, 13 Nov 2019 11:22:53 +0100] rev 2814
SVGHMI: HMI_LABEL and HMI_CLASS become HMI_NODE.
- Name of parent POU becomes HMI tree node name,
- Name of HMI_NODE variable becomes class of the node.
Edouard Tisserant [Wed, 13 Nov 2019 11:21:04 +0100] rev 2813
Add FatalError() method to ConfigTreeNode.
Extensions can report error addressed to user, without a traceback.
Edouard Tisserant [Thu, 07 Nov 2019 16:40:48 +0100] rev 2812
SVGHMI: various fixes to make SVGHMI behave on more versions of twisted and GCC.
Edouard Tisserant [Wed, 30 Oct 2019 15:17:05 +0100] rev 2811
SVGHMI - prepare page with cached data when switching. This prevents values that do not change and that was already subscribed in previous page from keeping undefined.
Edouard Tisserant [Tue, 29 Oct 2019 11:18:58 +0100] rev 2810
SVGHMI: various insignificant code moves, commenting and typos fixes.
Edouard Tisserant [Tue, 29 Oct 2019 09:10:10 +0100] rev 2809
SVGHMI : fancier second page in tests/svghmi
Edouard Tisserant [Mon, 28 Oct 2019 19:52:43 +0100] rev 2808
SVGHMI: SVG viewport now defined so that HMI take scales and fit to the view. Implemented page switch through viewport change, no hiding of widget for now.
Edouard Tisserant [Mon, 28 Oct 2019 10:30:20 +0100] rev 2807
SVGHMI - added simple Meter widget.
Edouard Tisserant [Sun, 27 Oct 2019 22:28:51 +0100] rev 2806
SVGHMI: Quicker update path for input widget when pressing on buttons, do not wait until data comes back, and simply update value text of the pressed widget. Updated PLC prog for more amimated value to display
Edouard Tisserant [Sun, 27 Oct 2019 21:38:10 +0100] rev 2805
SVGHMI: fixed HMI->PLC dataflow : not updates as expected, and not initialized properly after subscribe.
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 24 Oct 2019 11:20:04 +0200] rev 2804
Fixed one more sequel of 5f79b194fa63 'SVGHMI: filter out temporary variables created while generating ST code out of FBD.'
Edouard Tisserant [Thu, 24 Oct 2019 10:02:07 +0200] rev 2803
SVGHMI: Added relative changes of HMI value from widgets.
Edouard Tisserant [Tue, 22 Oct 2019 22:58:55 +0200] rev 2802
SVGHMI - Fixed svghmi.{c,js} about HMI -> PLC data unpack.
Edouard Tisserant [Tue, 22 Oct 2019 17:06:31 +0200] rev 2801
SVGHMI: Added init call to all widgets at startup to bind events. More features in Input widget : Edit and Change buttons. WIP HMI->PLC value update, incoherent data detected in C part on update.
Edouard Tisserant [Sat, 19 Oct 2019 01:23:30 +0200] rev 2800
SVGHMI: dispatching data to minimalist "Display" text widget.
Edouard Tisserant [Thu, 17 Oct 2019 15:48:09 +0200] rev 2799
SVGHMI: Many fixes. Subscriptions to HMItree seems to be working, and dispatch function is called in JS with good data. Bidirectional communication now really working.
Edouard Tisserant [Tue, 15 Oct 2019 17:14:48 +0200] rev 2798
SVGHMI : many details about communication implemented in JS, with side effects.
Edouard Tisserant [Fri, 11 Oct 2019 12:03:14 +0200] rev 2797
SVGHMI: added a widgets description object, accessed by id. Added frequency to widgets, as separate template to allow future customization. Excluded non svg elements (i.e inkscape Sets) with HMI: labels from widgets.
Edouard Tisserant [Thu, 10 Oct 2019 10:03:47 +0200] rev 2796
SVGHMI fix logic for page membership detection
Edouard Tisserant [Thu, 10 Oct 2019 09:54:44 +0200] rev 2795
SVGHMI compute default page
Edouard Tisserant [Wed, 09 Oct 2019 11:15:14 +0200] rev 2794
SVGHMI: deduce pages content out of geometry (elements contained in page bounding box are in)
Edouard Tisserant [Wed, 09 Oct 2019 09:04:35 +0200] rev 2793
SVGHMI: use func:function for parsing labels so that it can be used in predicates
Edouard Tisserant [Tue, 08 Oct 2019 13:27:00 +0200] rev 2792
SVGHMI: moved/fixed some templates, avoided namespace problems, added parsing of HMI:* inkscape labels
Edouard Tisserant [Mon, 07 Oct 2019 12:02:45 +0200] rev 2791
SVGHMI: now generating JS object describing widgets and pointing to SVG elements
Edouard Tisserant [Sat, 05 Oct 2019 09:45:58 +0200] rev 2790
SVGHI: compute hmitree variables ordered index in xslt
Edouard Tisserant [Wed, 02 Oct 2019 11:31:02 +0200] rev 2789
SVGHMI: now built.
Edouard Tisserant [Mon, 30 Sep 2019 13:26:11 +0200] rev 2788
SVGHMI: Work in progress. C side mostly implemented, neither built nor tested.
Edouard Tisserant [Fri, 27 Sep 2019 06:54:35 +0200] rev 2787
SVGHMI: More strict formating of active HMI labels : @ separator only used for paths
Edouard Tisserant [Thu, 26 Sep 2019 09:33:49 +0200] rev 2786
SVGHMI: new test svg to drive next implementation
Edouard Tisserant [Wed, 25 Sep 2019 08:53:27 +0200] rev 2785
Non significant changes in generated xslt, side effect of changes in yslt_noindent.yml2
Edouard Tisserant [Tue, 24 Sep 2019 11:58:31 +0200] rev 2784
Merge default in SVGHMI branch
Edouard Tisserant [Fri, 20 Sep 2019 13:38:58 +0200] rev 2783
SVGHMI: Starting to define JS side more in details.
Edouard Tisserant [Thu, 19 Sep 2019 15:32:36 +0200] rev 2782
SVGHMI: added transformation of code given in inkscape's description fields into javascript functions
Edouard Tisserant [Thu, 19 Sep 2019 10:41:39 +0200] rev 2781
SVGHMI: gui.svg -> svghmi.svg
Edouard Tisserant [Thu, 19 Sep 2019 09:01:49 +0200] rev 2780
SVGHMI: moved static JS code to a separate file included at xhtml generation time
Edouard Tisserant [Wed, 18 Sep 2019 11:09:35 +0200] rev 2779
SVGHMI: Work In Progress : fixed pointer types in ctypes interface, cleaned up server startup and cleanup code, changed document type to XHTML, cleaner JS script : encapsulated in a function and in CDATA.
Edouard Tisserant [Wed, 18 Sep 2019 11:03:56 +0200] rev 2778
PLCobject: Call "stop" and "cleanup" methods from python runtime files in reverse order compared to "init" and "start".
Edouard Tisserant [Mon, 16 Sep 2019 13:45:04 +0200] rev 2777
SVGHMI: WIP for python<->C data exchange : message from browser hit the C side.
Edouard Tisserant [Mon, 16 Sep 2019 11:44:20 +0200] rev 2776
SVGHMI: WIP for python<->C data exchange
Edouard Tisserant [Mon, 16 Sep 2019 10:54:15 +0200] rev 2775
SVGHMI: WIP for python<->C data exchange
Edouard Tisserant [Thu, 12 Sep 2019 12:56:47 +0200] rev 2774
SVGHMI: WIP for python<->C data exchange
Edouard Tisserant [Thu, 12 Sep 2019 12:55:32 +0200] rev 2773
SVGHMI: single session for now
Edouard Tisserant [Thu, 12 Sep 2019 12:54:36 +0200] rev 2772
SVGHMI: few fixes on serving
Edouard Tisserant [Wed, 11 Sep 2019 12:24:30 +0200] rev 2771
WIP on svghmi, now builds and runs. HTTP serving + WS transport ready, missing actual data to transmit and thread to collect it.
Edouard Tisserant [Wed, 11 Sep 2019 11:20:11 +0200] rev 2770
Non significant changes to mute GCC warnings about unused variables.
Edouard Tisserant [Thu, 05 Sep 2019 08:35:33 +0200] rev 2769
Fixed sequel of 5f79b194fa63 'SVGHMI: filter out temporary variables created while generating ST code out of FBD.'. Some ref to temporary variables are still not using the _TMP_ prefix. They are quite hard to find, so to be continued...
Edouard Tisserant [Tue, 03 Sep 2019 12:17:33 +0200] rev 2768
SVGHMI: Intermediate state while working on svghmi.c
Edouard Tisserant [Mon, 26 Aug 2019 08:54:02 +0200] rev 2767
svghmi.c : deduplicated variable access code borrowed from plc_debug.c. Added targets/var_access.c.
Edouard Tisserant [Fri, 23 Aug 2019 14:01:31 +0200] rev 2766
SVGHMI: Added iterators in svghmi.c copy-pasted form plc_debug.c
Edouard Tisserant [Fri, 23 Aug 2019 13:01:37 +0200] rev 2765
SVGHMI: svghmi.c now has mutex, iterator, and read/write buffer.
Edouard Tisserant [Thu, 22 Aug 2019 14:58:53 +0200] rev 2764
SVGHMI: draft for svghmi.c. It has all PLC variables pointed in HMI tree in an array.
Edouard Tisserant [Tue, 20 Aug 2019 10:32:34 +0200] rev 2763
Pass HMITree to SVG transform. It seems it could really help to reduce JS tree binding logic in the end.
Edouard Tisserant [Tue, 20 Aug 2019 10:30:59 +0200] rev 2762
Add special nodes at HMI Tree root, fix code to handle special node (no path).
Edouard Tisserant [Tue, 20 Aug 2019 10:08:11 +0200] rev 2761
Swap CTN code gen and Libraries code gen, because SVGHMI use both, and need the library part to produce hmitree before CTN part.
Edouard Tisserant [Tue, 20 Aug 2019 10:01:18 +0200] rev 2760
yslt_noindent : Avoid YSLT's indent logic to interfere when using linequote.
Edouard Tisserant [Wed, 14 Aug 2019 13:06:03 +0200] rev 2759
SVGHMI: make a reasonably basic test
Edouard Tisserant [Wed, 14 Aug 2019 11:05:17 +0200] rev 2758
SVGHMI: filter out temporary variables created while generating ST code out of FBD.
Edouard Tisserant [Tue, 13 Aug 2019 14:04:13 +0200] rev 2757
SVGHMI: added deduction of HMI tree from list of HMI_* instances.
Edouard Tisserant [Mon, 12 Aug 2019 13:09:55 +0200] rev 2756
SVGHMI: added extraction of SVG bounding boxes, obtained from "inkscape -S", and passed to XSLT transform as variable.
Edouard Tisserant [Mon, 12 Aug 2019 13:06:11 +0200] rev 2755
Allow using docutil.get_inkscape_path() on Linux also.
Edouard Tisserant [Fri, 09 Aug 2019 12:12:24 +0200] rev 2754
SVGHMI: little fixes to make the build go through
Edouard Tisserant [Fri, 09 Aug 2019 12:11:31 +0200] rev 2753
SVGHMI: Added XSLT transformation, Makefile to get XSLT from ysl2 (copy of plcopen/Makefile) and a minimal stylesheet to start with.
Edouard Tisserant [Fri, 09 Aug 2019 12:07:33 +0200] rev 2752
Moved XSLT model query python code so that XSLT part can be reused for other transformations (i.e. in SVGHMI)