]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Value.js
Add type attribute for ref-value
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-lib / slc / class / org / argeo / slc / ria / execution / Value.js
index b5944a019ab09ac17b5d7309ecaa5ebdf1c9358d..34152e58e434142098d57653e66e1657d5e974d3 100644 (file)
@@ -55,6 +55,9 @@ qx.Class.define("org.argeo.slc.ria.execution.Value", {
                 */\r
                xmlSpecNode : {\r
                        apply : "_applyXmlSpecNode"\r
+               },\r
+               refList : {\r
+                       check : "Array"\r
                }\r
        },\r
        \r
@@ -63,7 +66,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Value", {
        },\r
        \r
        construct : function(){\r
-               this.base(arguments);\r
+               this.base(arguments);           \r
        },\r
        \r
        members : {             \r
@@ -79,13 +82,22 @@ qx.Class.define("org.argeo.slc.ria.execution.Value", {
                                if(child.nodeType != 1) continue;\r
                                if(child.nodeName == "slc:primitive-spec-attribute"){\r
                                        this.setSpecType("primitive");\r
-                                       this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@type"));\r
+                                       this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@type")||"");\r
                                        if(org.argeo.ria.util.Element.getSingleNodeText(child, ".")){\r
                                                this.setValue(org.argeo.ria.util.Element.getSingleNodeText(child, "."));\r
                                        }\r
                                }else if(child.nodeName == "slc:ref-spec-attribute"){\r
                                        this.setSpecType("ref");\r
-                                       this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@targetClassName"));\r
+                                       this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@targetClassName")||"");\r
+                                       var choices = org.argeo.ria.util.Element.selectNodes(child, "slc:choices/slc:ref-value-choice");\r
+                                       var refList = []; \r
+                                       for(var k=0;k<choices.length;k++){\r
+                                               var choice = choices[k];\r
+                                               var name = org.argeo.ria.util.Element.getSingleNodeText(choice, "@name");\r
+                                               var description = org.argeo.ria.util.Element.getSingleNodeText(choice, "slc:description");\r
+                                               refList.push([name, (description||"")]);\r
+                                       }\r
+                                       this.setRefList(refList);\r
                                }\r
                                this.set({\r
                                        parameter : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isParameter")=="true"?true:false),\r
@@ -94,24 +106,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Value", {
                                });                             \r
                        }\r
                },\r
-                               \r
-               /**\r
-                * Create an XML Representation of this value\r
-                * @return {String} The XML String\r
-                */\r
-               toAttributeXml : function(){\r
-                       var valueTag = '';\r
-                       var specAttribute = '';\r
-                       if(this.getSpecType() == "primitive"){\r
-                               valueTag =  (this.getValue()?this.getValue():'');\r
-                               specAttribute = '<slc:primitive-spec-attribute isParameter="'+(this.getParameter()?"true":"false")+'" isFrozen="'+(this.getFrozen()?"true":"false")+'" isHidden="'+(this.getHidden()?"true":"false")+'" type="'+this.getSpecSubType()+'">'+valueTag+'</slc:primitive-spec-attribute>';\r
-                       }else if(this.getSpecType() == "ref"){\r
-                               valueTag = (this.getValue()?'<slc:label>'+this.getValue()+'</slc:label>':'');\r
-                               specAttribute = '<slc:ref-spec-attribute isParameter="'+(this.getParameter()?"true":"false")+'" isFrozen="'+(this.getFrozen()?"true":"false")+'" isHidden="'+(this.getHidden()?"true":"false")+'" targetClassName="'+this.getSpecSubType()+'">'+valueTag+'</slc:ref-spec-attribute>';\r
-                       }\r
-                       return '<slc:value key="'+this.getKey()+'">'+specAttribute+'</slc:value>';\r
-               },\r
-               \r
+                                               \r
                toValueXml : function(){\r
                        var valueTag = '';\r
                        var specAttribute = '';\r
@@ -119,8 +114,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Value", {
                                valueTag =  this.getValue();\r
                                specAttribute = '<slc:primitive-value type="'+this.getSpecSubType()+'">'+valueTag+'</slc:primitive-value>';\r
                        }else if(this.getSpecType() == "ref"){\r
-                               valueTag = '<slc:label>'+this.getValue()+'</slc:label>';\r
-                               specAttribute = '<slc:ref-value >'+valueTag+'</slc:ref-value>';\r
+                               specAttribute = '<slc:ref-value ref="'+this.getValue()+'" type="beanName" />';\r
                        }\r
                        return '<slc:value key="'+this.getKey()+'">'+specAttribute+'</slc:value>';                      \r
                }\r