Renders an interactive Cytoscape.js strategy tree with colour-coded node types, drag-to-reposition persistence, context menus for full CRUD operations, and a maximise/restore canvas toggle.
JSCYTOTREE — set as ReportType in def_report.
def Render(self, Param1="", Param2="", Param3="") -> str:
Param1 = strategy ID, Param2 = strategy name, Param3 = checkout name (or view/% for read-only mode). The query is built internally via prepareReport. Node colours by type: portfolio (navy), filter (green), action-active (red), action-inactive (orange), valuesql (amber), nextstrategy (black), matrix (cyan), nextpage (blue).
prepareReport(Param1, Param2, Param3)Queries the strategy and parameter tables to build self.data_list with node positions, filter clauses, action metadata, and ADM table volume counts.
setJS()Assembles the full Cytoscape initialisation script block.
setJSElements()Generates the Cytoscape elements (nodes and edges) from self.data_list.
setJSStyle()Returns the Cytoscape stylesheet for all node and edge types.
setJSLayout()Returns the preset layout configuration (positions are stored in the database).
setJSViewport(), setJSInteraction(), setJSRendering()Return Cytoscape viewport, interaction, and rendering option blocks.
setJSContextmenus()Builds the cytoscape-context-menus configuration with node/edge operations.
setButtonsJs()Generates the runFull (data reset) and updateStrategytree JavaScript helper functions.
setStyle()Returns the CSS for normal and maximised canvas modes.
Requires cytoscape.min.js, cystoscape_amended.js, cytoscape-context-menus.js, bootstrap-toggle.min.js, and their CSS files. Node positions are saved to the database on tapend via /report/rep=updatenodeposition.