add axes in web view 72/18072/1
Antoine ELIAS [Tue, 12 Apr 2016 07:37:46 +0000 (09:37 +0200)]
Change-Id: I9682090374c7420163c144dbf477b7ca2c8d621b

scilab/modules/graphic_objects/src/cpp/ScilabWebView.cpp
scilab/modules/graphic_objects/src/cpp/webutils.cpp
scilab/modules/graphic_objects/src/cpp/webutils.hxx
scilab/node/start.sce
scilab/node/static/scilab_setter.js

index 6875318..76441a4 100644 (file)
@@ -182,7 +182,7 @@ void ScilabWebView::registerToController(void)
         }
     }));
 
-    WebUtils::fillSetter();
+    WebUtils::fillSetters();
 }
 
 void ScilabWebView::unregisterToController(void)
@@ -230,37 +230,22 @@ void ScilabWebView::updateObject(int uid, int prop)
     switch (WebUtils::getType(uid))
     {
         case __GO_FIGURE__ :
-            switch (prop)
+            if (WebUtils::setFigureProperty(prop, uid, ostr) == false)
             {
-                case __GO_AXES_SIZE__:
-                case __GO_NAME__:
-                case __GO_LAYOUT__:
-                case __GO_VISIBLE__:
-                    if (WebUtils::set(prop, uid, ostr) == false)
-                    {
-                        return;
-                    }
-                    break;
-                default :
-                    return;
+                return;
             }
             break;
         case __GO_AXES__ :
             std::cerr << "axes prop:" << prop << std::endl;
-            switch (prop)
+            if (WebUtils::setAxesProperty(prop, uid, ostr) == false)
             {
-                case __GO_PARENT__ :
-                    if (WebUtils::set(prop, uid, ostr) == false)
-                    {
-                        return;
-                    }
-                    break;
+                return;
             }
             break;
         case __GO_UICONTROL__:
             if (WebUtils::hasValidParent(uid) || prop == __GO_PARENT__)
             {
-                if (WebUtils::set(prop, uid, ostr) == false)
+                if (WebUtils::setUIControlProperty(prop, uid, ostr) == false)
                 {
                     return;
                 }
index 6ae35be..720da4a 100644 (file)
@@ -35,7 +35,9 @@ extern "C"
 #include "sci_malloc.h"
 }
 
-WebUtils::SETTER WebUtils::setter;
+WebUtils::SETTER WebUtils::setterUIControl;
+WebUtils::SETTER WebUtils::setterFigure;
+WebUtils::SETTER WebUtils::setterAxes;
 WebUtils::WAITING_PROP WebUtils::waitprop;
 std::string WebUtils::imagePath;
 
@@ -991,9 +993,24 @@ bool WebUtils::updateDefaultProperties(int uid, std::ostringstream& ostr)
     return true;
 }
 
-bool WebUtils::set(int prop, int uid, std::ostringstream& ostr)
+bool WebUtils::setUIControlProperty(int prop, int uid, std::ostringstream& ostr)
 {
-    SETTER::iterator it = setter.find(prop);
+    return setProperty(setterUIControl, prop, uid, ostr);
+}
+
+bool WebUtils::setFigureProperty(int prop, int uid, std::ostringstream& ostr)
+{
+    return setProperty(setterFigure, prop, uid, ostr);
+}
+
+bool WebUtils::setAxesProperty(int prop, int uid, std::ostringstream& ostr)
+{
+    return setProperty(setterAxes, prop, uid, ostr);
+}
+
+bool WebUtils::setProperty(const SETTER& setter, int prop, int uid, std::ostringstream& ostr)
+{
+    SETTER::const_iterator it = setter.find(prop);
     if (it != setter.end())
     {
         it->second(uid, ostr);
@@ -1004,42 +1021,44 @@ bool WebUtils::set(int prop, int uid, std::ostringstream& ostr)
     return false;
 }
 
-void WebUtils::fillSetter()
-{
-    setter[__GO_PARENT__] = WebUtils::setParent;
-    setter[__GO_POSITION__] = WebUtils::setUIPosition;
-    setter[__GO_SIZE__] = WebUtils::setFigureSize;
-    setter[__GO_UI_STRING__] = WebUtils::setUIString;
-    setter[__GO_VISIBLE__] = WebUtils::setVisible;
-    setter[__GO_UI_ENABLE__] = WebUtils::setUIEnable;
-    setter[__GO_UI_BACKGROUNDCOLOR__] = WebUtils::setUIBackgroundColor;
-    setter[__GO_UI_FONTANGLE__] = WebUtils::setUIFontAngle;
-    setter[__GO_UI_FONTNAME__] = WebUtils::setUIFontName;
-    setter[__GO_UI_FONTSIZE__] = WebUtils::setUIFontSize;
-    setter[__GO_UI_FONTWEIGHT__] = WebUtils::setUIFontWeight;
-    setter[__GO_UI_FOREGROUNDCOLOR__] = WebUtils::setUIForegroundColor;
-    setter[__GO_UI_HORIZONTALALIGNMENT__] = WebUtils::setUIHorizontalAlignment;
-    setter[__GO_UI_RELIEF__] = WebUtils::setUIRelief;
-    setter[__GO_UI_VERTICALALIGNMENT__] = WebUtils::setUIVerticalAlignment;
-    setter[__GO_LAYOUT__] = WebUtils::setUILayout;
-    setter[__GO_UI_MIN__] = WebUtils::setUIMin;
-    setter[__GO_UI_MAX__] = WebUtils::setUIMax;
-    setter[__GO_UI_SLIDERSTEP__] = WebUtils::setUIStep;
-    setter[__GO_UI_VALUE__] = WebUtils::setUIValue;
+void WebUtils::fillSetters()
+{
+    setterUIControl[__GO_PARENT__] = WebUtils::setParent;
+    setterUIControl[__GO_POSITION__] = WebUtils::setUIPosition;
+    setterUIControl[__GO_SIZE__] = WebUtils::setFigureSize;
+    setterUIControl[__GO_UI_STRING__] = WebUtils::setUIString;
+    setterUIControl[__GO_VISIBLE__] = WebUtils::setVisible;
+    setterUIControl[__GO_UI_ENABLE__] = WebUtils::setUIEnable;
+    setterUIControl[__GO_UI_BACKGROUNDCOLOR__] = WebUtils::setUIBackgroundColor;
+    setterUIControl[__GO_UI_FONTANGLE__] = WebUtils::setUIFontAngle;
+    setterUIControl[__GO_UI_FONTNAME__] = WebUtils::setUIFontName;
+    setterUIControl[__GO_UI_FONTSIZE__] = WebUtils::setUIFontSize;
+    setterUIControl[__GO_UI_FONTWEIGHT__] = WebUtils::setUIFontWeight;
+    setterUIControl[__GO_UI_FOREGROUNDCOLOR__] = WebUtils::setUIForegroundColor;
+    setterUIControl[__GO_UI_HORIZONTALALIGNMENT__] = WebUtils::setUIHorizontalAlignment;
+    setterUIControl[__GO_UI_RELIEF__] = WebUtils::setUIRelief;
+    setterUIControl[__GO_UI_VERTICALALIGNMENT__] = WebUtils::setUIVerticalAlignment;
+    setterUIControl[__GO_LAYOUT__] = WebUtils::setUILayout;
+    setterUIControl[__GO_UI_MIN__] = WebUtils::setUIMin;
+    setterUIControl[__GO_UI_MAX__] = WebUtils::setUIMax;
+    setterUIControl[__GO_UI_SLIDERSTEP__] = WebUtils::setUIStep;
+    setterUIControl[__GO_UI_VALUE__] = WebUtils::setUIValue;
     //preferred size is the last property to be set for border constraints
-    setter[__GO_UI_BORDER_POSITION__] = WebUtils::setUIBorder;
+    setterUIControl[__GO_UI_BORDER_POSITION__] = WebUtils::setUIBorder;
     //preferred size is the last property to be set for gridbag constraints
-    setter[__GO_UI_GRIDBAG_GRID__] = WebUtils::setUIGridBag;
-    setter[__GO_UI_FRAME_BORDER__] = WebUtils::setUIFrameBorder;
-    setter[__GO_UI_ICON__] = WebUtils::setUIIcon;
-    setter[__GO_UI_GROUP_NAME__] = WebUtils::setUIGroupName;
+    setterUIControl[__GO_UI_GRIDBAG_GRID__] = WebUtils::setUIGridBag;
+    setterUIControl[__GO_UI_FRAME_BORDER__] = WebUtils::setUIFrameBorder;
+    setterUIControl[__GO_UI_ICON__] = WebUtils::setUIIcon;
+    setterUIControl[__GO_UI_GROUP_NAME__] = WebUtils::setUIGroupName;
 
     //figure props
-    setter[__GO_AXES_SIZE__] = WebUtils::setFigureSize;
-    setter[__GO_NAME__] = WebUtils::setFigureName;
-    setter[__GO_LAYOUT__] = WebUtils::setUILayout;
+    setterFigure[__GO_AXES_SIZE__] = WebUtils::setFigureSize;
+    setterFigure[__GO_NAME__] = WebUtils::setFigureName;
+    setterFigure[__GO_LAYOUT__] = WebUtils::setUILayout;
+    setterFigure[__GO_VISIBLE__] = WebUtils::setVisible;
 
-    //setter[__GO_CALLBACK__] = WebUtils::setCallback;
+    //axes props
+    setterAxes[__GO_PARENT__] = WebUtils::setParent;
 }
 
 bool WebUtils::updateValue(int uid, const std::string& value)
@@ -1085,7 +1104,7 @@ void WebUtils::setWaitingProperties(int uid, std::ostringstream& ostr)
     {
         for (int prop : it->second)
         {
-            set(prop, uid, ostr);
+            setUIControlProperty(prop, uid, ostr);
         }
         waitprop.erase(it);
     }
index 9208a45..87bce42 100644 (file)
@@ -30,7 +30,9 @@ class WebUtils
     ~WebUtils() {}
 
     typedef std::unordered_map<int, setFunction> SETTER;
-    static SETTER setter;
+    static SETTER setterUIControl;
+    static SETTER setterFigure;
+    static SETTER setterAxes;
 
     typedef std::unordered_map<int, std::list<int>> WAITING_PROP;
     static WAITING_PROP waitprop;
@@ -50,8 +52,11 @@ public:
     static void addInWaitingQueue(int uid, int prop);
     static void setWaitingProperties(int uid, std::ostringstream& ostr);
 
-    static void fillSetter();
-    static bool set(int prop, int uid, std::ostringstream& ostr);
+    static void fillSetters();
+    static bool setUIControlProperty(int prop, int uid, std::ostringstream& ostr);
+    static bool setFigureProperty(int prop, int uid, std::ostringstream& ostr);
+    static bool setAxesProperty(int prop, int uid, std::ostringstream& ostr);
+    static bool setProperty(const SETTER& setter, int prop, int uid, std::ostringstream& ostr);
 
     static bool updateValue(int uid, bool value);
     static bool updateValue(int uid, double value);
index 86f7e6d..4094e94 100644 (file)
@@ -439,7 +439,8 @@ if demo == 13 then
 
     fr = uicontrol(f, "style", "frame", "position", [0, 0, 500, 400]);
     newaxes(fr);
-    plot(1:10);
+    plot(0:8);
+    plot(8:-1:0);
 end
 
 //opticlim
index 9c3363b..2744d8e 100644 (file)
@@ -6,7 +6,22 @@ function setParent(uid, parent) {
         $child.width($parent.width());
         $child.height($parent.height());
 
-        Plotly.newPlot($child.prop('id'), [{}], {}, {displayModeBar:false, showLink:false, scrollZoom:true});
+        var layout = {
+            xaxis: {
+                showgrid: false,
+                zeroline: false,
+                autotick: true,
+                showticklabels: false //for clean display
+            },
+            yaxis: {
+                showgrid: false,
+                zeroline: false,
+                autotick: true,
+                showticklabels: false //for clean display
+            }
+        };
+        
+        Plotly.newPlot($child.prop('id'), [{}], layout, {displayModeBar:false, showLink:false, scrollZoom:true});
     }
 
     if($parent.hasClass("GO_UI_FRAME")) {