You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/10/01 02:32:28 UTC

[isis] branch master updated: ISIS-3122: fixes vega script variable scope

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new c501bd8e07 ISIS-3122: fixes vega script variable scope
c501bd8e07 is described below

commit c501bd8e07ee8ef46756b8fb7580179bc4d890ec
Author: andi-huber <ah...@apache.org>
AuthorDate: Sat Oct 1 04:32:21 2022 +0200

    ISIS-3122: fixes vega script variable scope
---
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  2 +-
 .../dom/types/isisval/IsisValTypesMenu.java        |  4 +-
 .../metamodel/semantics/VegaValueSemantics.java    | 50 ++++++++++++++--------
 3 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index d43a63213f..8a14d280ef 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -233,7 +233,7 @@ For latest we use: https://raw.githubusercontent.com/apache/isis/master/antora/s
                 <mb3:named>Apache Isis Values</mb3:named>
                 <mb3:serviceAction objectType="demo.IsisValTypesMenu" id="asciiDocs"/>
                 <mb3:serviceAction objectType="demo.IsisValTypesMenu" id="markdowns"/>
-                <mb3:serviceAction objectType="demo.IsisValTypesMenu" id="vegas"/>
+                <mb3:serviceAction objectType="demo.IsisValTypesMenu" id="vegaCharts"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Apache Isis Extensions</mb3:named>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisval/IsisValTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisval/IsisValTypesMenu.java
index 6977d24122..bfb54a575b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisval/IsisValTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisval/IsisValTypesMenu.java
@@ -54,8 +54,8 @@ public class IsisValTypesMenu {
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(cssClassFa="fa-pen-fancy")
-    public IsisVegas vegas(){
+    @ActionLayout(cssClassFa="fa-chart-gantt")
+    public IsisVegas vegaCharts(){
         return new IsisVegas();
     }
 
diff --git a/valuetypes/vega/metamodel/src/main/java/org/apache/isis/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java b/valuetypes/vega/metamodel/src/main/java/org/apache/isis/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java
index 47a772bb20..cb0a1a27e4 100644
--- a/valuetypes/vega/metamodel/src/main/java/org/apache/isis/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java
+++ b/valuetypes/vega/metamodel/src/main/java/org/apache/isis/valuetypes/vega/metamodel/semantics/VegaValueSemantics.java
@@ -94,25 +94,37 @@ implements
     private String asHtml(final @NonNull Vega vega) {
         val containerId = "vegaContainer" + UUID.randomUUID().toString();
 
-        val htmlFragment = String.format(""
-                + "<div id=\"%1$s\"></div>\n"
-                + "<script type=\"text/javascript\">\n"
-                + "var spec = %2$s;\n"
-                + "document.addEventListener('DOMContentLoaded', (event) => {\n"
-                + "  view = new vega.View(vega.parse(spec), {\n"
-                + "    renderer:  '%3$s',\n"
-                + "    container: '#%1$s',\n"
-                + "    hover:     %4$b    \n"
-                + "  });\n"
-                + "  view.runAsync();\n"
-                + "});"
-                + "</script>",
-                containerId,
-                vega.getJson(),
-                "canvas", // renderer (canvas or svg)
-                true // enable hover processing
-                );
-        return htmlFragment;
+        switch (vega.getSchema()) {
+        case VEGA: {
+            val htmlFragment = String.format(""
+                    + "<div id=\"%1$s\"></div>\n"
+                    + "<script type=\"text/javascript\">\n"
+                    + "document.addEventListener('DOMContentLoaded', (event) => {\n"
+                    + "  var spec = %2$s;\n"
+                    + "  var view = new vega.View(vega.parse(spec), {\n"
+                    + "    renderer:  '%3$s',\n"
+                    + "    container: '#%1$s',\n"
+                    + "    hover:     %4$b    \n"
+                    + "  });\n"
+                    + "  view.runAsync();\n"
+                    + "});"
+                    + "</script>",
+                    containerId,
+                    vega.getJson(),
+                    "canvas", // renderer (canvas or svg)
+                    true // enable hover processing
+                    );
+            return htmlFragment;
+        }
+        case VEGA_LITE: {
+            val htmlFragment = String.format(""
+                    + "<div id=\"%1$s\">VEGA-LITE TODO</div>\n",
+                    containerId);
+            return htmlFragment;
+        }
+        default:
+            return "<!-- emtpy Vega (unsupported schema) -->";
+        }
     }
 
     // -- PARSER