DATABIND : update binding info. 62/22162/1
authorHeekyoung, Oh <heekyoung.oh@samsung.com>
Thu, 29 May 2014 12:01:34 +0000 (21:01 +0900)
committerHeekyoung, Oh <heekyoung.oh@samsung.com>
Thu, 29 May 2014 12:01:34 +0000 (21:01 +0900)
a. update uibinding.js
b. change xmltojson.js library
c. applied binding rules for widgets

Change-Id: Ia7525fe001fa2ff3c8f7607fa33dc7a1b8684327
Signed-off-by: Heekyoung, Oh <heekyoung.oh@samsung.com>
14 files changed:
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-fw/uibinding.js
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-fw/xmltojson.js
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.headingfive.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.headingfour.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.headingone.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.headingsix.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.headingthree.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.headingtwo.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.link.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/html.submit.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/tizen.datetimepicker.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/tizen.listdivider.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/tizen.listitemthumbnail.widget.xml
templates/Template/Tizen Web UI Builder/5.Mobile2048/project/tizen-ui-builder-tool/res/descriptors/Tizen-web-ui-fw/widget/tizen.slider.widget.xml

index 036f588..8f3d731 100644 (file)
@@ -66,7 +66,7 @@
                        } else {
                                xmlData = $.parseXML(strData);
                        }
-                       jsonData = $.parseJSON(xml2json(xmlData));
+                       jsonData = $.xml2json(xmlData);
                } else if (strDataType === "json") {
                        if ($.isPlainObject(strData)) {
                                jsonData = strData;
         **/
        uibinding.dataSourceStatic = function () {
                if (arguments.length !== 1) {
-                       return false; 
+                       return null;
                }
+
                var _self = this;
+               _self.options = {
+                               data: "",
+                               dataType: "json"
+               };
+
                var args = Array.prototype.slice.call(arguments);
                var new_options = args.shift();
                _self._create(new_options);
        uibinding.dataSourceStatic.prototype.constructor = uibinding.dataSourceStatic;
        uibinding.dataSourceStatic.prototype._create = function (obj) {
                var _self = this;
-               _self.data = _self._toJson(obj.data, obj.dataType);
+               if (arguments.length > 0) {
+                       _self._updateOptions(obj);
+               }
        };
        uibinding.dataSourceStatic.prototype._update = function () {
                var _self = this;
+               _self.data = _self._toJson(_self.options.data, _self.options.dataType);
                if (!$.isEmptyObject(_self.data)) {
                        _self.fireHandler("success");
                        return true;
                function _callhistoryFound (results) {
                        _self.data.callhistory.length = results.length;
                        _self.data.callhistory.entries = results;
-                       console.log(results.length);
-                       console.log(results);
                }
 
                if (_type !== "ALL") {
 })(jQuery);
 
 ; (function ($){
-       /**
-        * listviewitem
-        */
-       ko.bindingSelector.add(
-                       "text",
-                       {
-                               "update": function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
-                                       var value = ko.utils.unwrapObservable(valueAccessor() || {});
-                                       var children = $(element).children();
-                                       $(element).text(value);
-                                       $(element).append(children);
-
-                               }
-                       },
-                       function( element ) {
-                               if ($(element).parents().andSelf().filter("[data-role='listview']")) {
-                                       return true;
-                               }
-                       }
-       );
 
        /**
-        * button
+        * Button
         */
        ko.bindingSelector.add(
                        "text",
        );
 
        /**
-        * listdivider
+        * Date Time Picker
         */
        ko.bindingSelector.add(
-                       "text",
+                       "value",
                        {
                                "update": function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                                        var value = ko.utils.unwrapObservable(valueAccessor() || {});
-                                       $(".ui-btn-text", element).text(value);
+                                       $(element).datetimepicker("value", value);
                                }
                        },
                        function( element ) {
-                               if ($(element).data("role") === "list-divider") {
+                               if ($(element).attr("type") === "datetime") {
                                        return true;    
                                }
                        }
        );
 
        /**
-        * tokentextarea
+        * List Divider
         */
        ko.bindingSelector.add(
                        "text",
                        {
                                "update": function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                                        var value = ko.utils.unwrapObservable(valueAccessor() || {});
-                                       $(element).tokentextarea("add", value);
+                                       $(".ui-btn-text", element).text(value);
                                }
                        },
                        function( element ) {
-                               if ($(element).data("role") === "tokentextarea") {
-                                       return true;    
+                               if ($(element).parents().andSelf().filter("[data-role='listview']")) {
+                                       if ($(element).data("role") === "list-divider") {
+                                               return true;
+                                       }
                                }
                        }
        );
 
        /**
-        * tokentextarea
+        * List Item
         */
        ko.bindingSelector.add(
-                       "foreach",
+                       "text",
                        {
                                "update": function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                                        var value = ko.utils.unwrapObservable(valueAccessor() || {});
-                                       $(element).tokentextarea("add", value);
+                                       var children = $(element).children();
+                                       $(element).text(value);
+                                       $(element).append(children);
+
                                }
                        },
                        function( element ) {
-                               if ($(element).data("role") === "tokentextarea") {
-                                       return true;    
+                               if ($(element).parents().andSelf().filter("[data-role='listview']")) {
+                                       if ($(element).data("role") !== "list-divider") {
+                                               return true;
+                                       }
                                }
                        }
        );
 
        /**
-        * slider
+        * Slider
         */
        ko.bindingHandlers.slider = {
                        init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                                }, 0);
                        }
        };
+
+       /**
+        * Submit Button
+        */
+       ko.bindingSelector.add(
+                       "text",
+                       {
+                               "update": function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
+                                       var value = ko.utils.unwrapObservable(valueAccessor() || {});
+                                       var parent = $(element).parent();
+                                       var span = $("span > span", parent);
+
+                                       $(span).text(value);
+                                       $(element).val(value);
+                               }
+                       },
+                       function( element ) {
+                               if ($(element).attr("type") === "submit") {
+                                       return true;
+                               }
+                       }
+       );
+
+       /**
+        * Token Text Area
+        */
+       ko.bindingSelector.add(
+                       "text",
+                       {
+                               "update": function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
+                                       var value = ko.utils.unwrapObservable(valueAccessor() || {});
+                                       $(element).tokentextarea("add", value);
+                               }
+                       },
+                       function( element ) {
+                               if ($(element).data("role") === "tokentextarea") {
+                                       return true;
+                               }
+                       }
+       );
+
 })(jQuery);
index 5859fda..06565f8 100644 (file)
-/*     This work is licensed under Creative Commons GNU LGPL License.
-
-       License: http://creativecommons.org/licenses/LGPL/2.1/
-    Version: 0.9
-       Author:  Stefan Goessner/2006
-       Web:     http://goessner.net/ 
+/*
+ ### jQuery XML to JSON Plugin v1.3 - 2013-02-18 ###
+ * http://www.fyneworks.com/ - diego@fyneworks.com
+ * Licensed under http://en.wikipedia.org/wiki/MIT_License
+ ###
+ Website: http://www.fyneworks.com/jquery/xml-to-json/
+ *//*
+ # INSPIRED BY: http://www.terracoder.com/
+           AND: http://www.thomasfrank.se/xml_to_json.html
+           AND: http://www.kawa.net/works/js/xml/objtree-e.html
+ *//*
+ This simple script converts XML (document of code) into a JSON object. It is the combination of 2
+ 'xml to json' great parsers (see below) which allows for both 'simple' and 'extended' parsing modes.
+ *//*
+ * Modifications by Samsung Electronics Co., Ltd.
+ * 1. Modified To communicate with the Tizen IDE.
  */
+//Avoid collisions
+;if(window.jQuery) (function($){
 
-function xml2json(xml, tab) {
-       var X = {
-                       toObj: function(xml) {
-                               var o = {};
-                               if (xml.nodeType==1) {   // element node ..
-                                       if (xml.attributes.length)   // element with attributes  ..
-                                               for (var i=0; i<xml.attributes.length; i++)
-                                                       o["@"+xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue||"").toString();
-                                       if (xml.firstChild) { // element has child nodes ..
-                                               var textChild=0, cdataChild=0, hasElementChild=false;
-                                               for (var n=xml.firstChild; n; n=n.nextSibling) {
-                                                       if (n.nodeType==1) hasElementChild = true;
-                                                       else if (n.nodeType==3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) textChild++; // non-whitespace text
-                                                       else if (n.nodeType==4) cdataChild++; // cdata section node
-                                               }
-                                               if (hasElementChild) {
-                                                       if (textChild < 2 && cdataChild < 2) { // structured element with evtl. a single text or/and cdata node ..
-                                                               X.removeWhite(xml);
-                                                               for (var n=xml.firstChild; n; n=n.nextSibling) {
-                                                                       if (n.nodeType == 3)  // text node
-                                                                               o["#text"] = X.escape(n.nodeValue);
-                                                                       else if (n.nodeType == 4)  // cdata node
-                                                                               o["#cdata"] = X.escape(n.nodeValue);
-                                                                       else if (o[n.nodeName]) {  // multiple occurence of element ..
-                                                                               if (o[n.nodeName] instanceof Array)
-                                                                                       o[n.nodeName][o[n.nodeName].length] = X.toObj(n);
-                                                                               else
-                                                                                       o[n.nodeName] = [o[n.nodeName], X.toObj(n)];
-                                                                       }
-                                                                       else  // first occurence of element..
-                                                                               o[n.nodeName] = X.toObj(n);
-                                                               }
+       // Add function to jQuery namespace
+       $.extend({
+
+               // converts xml documents and xml text to json object
+               xml2json: function(xml, extended) {
+                       if(!xml) return {}; // quick fail
+
+                       //### PARSER LIBRARY
+                       // Core function
+                       function parseXML(node, simple){
+                               if(!node) return null;
+                               var txt = '', obj = null, att = null;
+                               var nt = node.nodeType, nn = jsVar(node.localName || node.nodeName);
+                               var nv = node.text || node.nodeValue || '';
+                               /*DBG*/ //if(window.console) console.log(['x2j',nn,nt,nv.length+' bytes']);
+                               if(node.childNodes){
+                                       if(node.childNodes.length>0){
+                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'CHILDREN',node.childNodes]);
+                                               $.each(node.childNodes, function(n,cn){
+                                                       var cnt = cn.nodeType, cnn = jsVar(cn.localName || cn.nodeName);
+                                                       var cnv = cn.text || cn.nodeValue || '';
+                                                       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>a',cnn,cnt,cnv]);
+                                                       if(cnt == 8){
+                                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>b',cnn,'COMMENT (ignore)']);
+                                                               return; // ignore comment node
                                                        }
-                                                       else { // mixed content
-                                                               if (!xml.attributes.length)
-                                                                       o = X.escape(X.innerXml(xml));
-                                                               else
-                                                                       o["#text"] = X.escape(X.innerXml(xml));
+                                                       else if(cnt == 3 || cnt == 4 || !cnn){
+                                                               // ignore white-space in between tags
+                                                               if(cnv.match(/^\s+$/)){
+                                                                       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>c',cnn,'WHITE-SPACE (ignore)']);
+                                                                       return;
+                                                               };
+                                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>d',cnn,'TEXT']);
+                                                               txt += cnv.replace(/^\s+/,'').replace(/\s+$/,'');
+                                                               // make sure we ditch trailing spaces from markup
                                                        }
-                                               }
-                                               else if (textChild) { // pure text
-                                                       if (!xml.attributes.length)
-                                                               o = X.escape(X.innerXml(xml));
-                                                       else
-                                                               o["#text"] = X.escape(X.innerXml(xml));
-                                               }
-                                               else if (cdataChild) { // cdata
-                                                       if (cdataChild > 1)
-                                                               o = X.escape(X.innerXml(xml));
-                                                       else
-                                                               for (var n=xml.firstChild; n; n=n.nextSibling)
-                                                                       o["#cdata"] = X.escape(n.nodeValue);
-                                               }
-                                       }
-                                       if (!xml.attributes.length && !xml.firstChild) o = null;
-                               }
-                               else if (xml.nodeType==9) { // document.node
-                                       o = X.toObj(xml.documentElement);
-                               }
-                               else {
-                                       //alert("unhandled node type: " + xml.nodeType);
-                               }
-                               return o;
-                       },
-                       toJson: function(o, name, ind) {
-                               var json = name ? ("\""+name+"\"") : "";
-                               if (o instanceof Array) {
-                                       for (var i=0,n=o.length; i<n; i++)
-                                               o[i] = X.toJson(o[i], "", ind+"\t");
-                                       json += (name?":[":"[") + (o.length > 1 ? ("\n"+ind+"\t"+o.join(",\n"+ind+"\t")+"\n"+ind) : o.join("")) + "]";
-                               }
-                               else if (o == null)
-                                       json += (name&&":") + "null";
-                               else if (typeof(o) == "object") {
-                                       var arr = [];
-                                       for (var m in o)
-                                               arr[arr.length] = X.toJson(o[m], m, ind+"\t");
-                                       json += (name?":{":"{") + (arr.length > 1 ? ("\n"+ind+"\t"+arr.join(",\n"+ind+"\t")+"\n"+ind) : arr.join("")) + "}";
-                               }
-                               else if (typeof(o) == "string")
-                                       json += (name&&":") + "\"" + o.toString() + "\"";
-                               else
-                                       json += (name&&":") + o.toString();
-                               return json;
-                       },
-                       innerXml: function(node) {
-                               var s = ""
-                                       if ("innerHTML" in node)
-                                               s = node.innerHTML;
-                                       else {
-                                               var asXml = function(n) {
-                                                       var s = "";
-                                                       if (n.nodeType == 1) {
-                                                               s += "<" + n.nodeName;
-                                                               for (var i=0; i<n.attributes.length;i++)
-                                                                       s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue||"").toString() + "\"";
-                                                               if (n.firstChild) {
-                                                                       s += ">";
-                                                                       for (var c=n.firstChild; c; c=c.nextSibling)
-                                                                               s += asXml(c);
-                                                                       s += "</"+n.nodeName+">";
+                                                       else{
+                                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>e',cnn,'OBJECT']);
+                                                               obj = obj || {};
+                                                               if(obj[cnn]){
+                                                                       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>f',cnn,'ARRAY']);
+
+                                                                       // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
+                                                                       if(!obj[cnn].length) obj[cnn] = myArr(obj[cnn]);
+                                                                       obj[cnn] = myArr(obj[cnn]);
+
+                                                                       obj[cnn][ obj[cnn].length ] = parseXML(cn, true/* simple */);
+                                                                       obj[cnn].length = obj[cnn].length;
                                                                }
-                                                               else
-                                                                       s += "/>";
+                                                               else{
+                                                                       /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>g',cnn,'dig deeper...']);
+                                                                       obj[cnn] = parseXML(cn);
+                                                               };
+                                                       };
+                                               });
+                                       };//node.childNodes.length>0
+                               };//node.childNodes
+                               if(node.attributes){
+                                       if(node.attributes.length>0){
+                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'ATTRIBUTES',node.attributes])
+                                               att = {}; obj = obj || {};
+                                               $.each(node.attributes, function(a,at){
+                                                       var atn = jsVar(at.name), atv = at.value;
+                                                       att[atn] = atv;
+                                                       if(obj[atn]){
+                                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'ARRAY']);
+
+                                                               // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
+                                                               //if(!obj[atn].length) obj[atn] = myArr(obj[atn]);//[ obj[ atn ] ];
+                                                               obj[cnn] = myArr(obj[cnn]);
+
+                                                               obj[atn][ obj[atn].length ] = atv;
+                                                               obj[atn].length = obj[atn].length;
                                                        }
-                                                       else if (n.nodeType == 3)
-                                                               s += n.nodeValue;
-                                                       else if (n.nodeType == 4)
-                                                               s += "<![CDATA[" + n.nodeValue + "]]>";
-                                                       return s;
-                                               };
-                                               for (var c=node.firstChild; c; c=c.nextSibling)
-                                                       s += asXml(c);
-                                       }
-                               return s;
-                       },
-                       escape: function(txt) {
-                               return txt.replace(/[\\]/g, "\\\\")
-                               .replace(/[\"]/g, '\\"')
-                               .replace(/[\n]/g, '\\n')
-                               .replace(/[\r]/g, '\\r');
-                       },
-                       removeWhite: function(e) {
-                               e.normalize();
-                               for (var n = e.firstChild; n; ) {
-                                       if (n.nodeType == 3) {  // text node
-                                               if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { // pure whitespace text node
-                                                       var nxt = n.nextSibling;
-                                                       e.removeChild(n);
-                                                       n = nxt;
-                                               }
-                                               else
-                                                       n = n.nextSibling;
-                                       }
-                                       else if (n.nodeType == 1) {  // element node
-                                               X.removeWhite(n);
-                                               n = n.nextSibling;
-                                       }
-                                       else                      // any other node
-                                               n = n.nextSibling;
-                               }
-                               return e;
-                       }
-       };
-       if (xml.nodeType == 9) // document node
-               xml = xml.documentElement;
-       var json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, "\t");
-       //return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}";
-       return "{\n" + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}";
-};
-
-/*     This work is licensed under Creative Commons GNU LGPL License.
-
-License: http://creativecommons.org/licenses/LGPL/2.1/
-Version: 0.9
-Author:  Stefan Goessner/2006
-Web:     http://goessner.net/ 
- */
+                                                       else{
+                                                               /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'TEXT']);
+                                                               obj[atn] = atv;
+                                                       };
+                                               });
+                                               //obj['attributes'] = att;
+                                       };//node.attributes.length>0
+                               };//node.attributes
+                               if(obj){
+                                       obj = $.extend( (txt!='' ? new String(txt) : {}),/* {text:txt},*/ obj || {}/*, att || {}*/);
+                                       //txt = (obj.text) ? (typeof(obj.text)=='object' ? obj.text : [obj.text || '']).concat([txt]) : txt;
+                                       txt = (obj.text) ? ([obj.text || '']).concat([txt]) : txt;
+                                       if(txt) obj.text = txt;
+                                       txt = '';
+                               };
+                               var out = obj || txt;
+                               //console.log([extended, simple, out]);
+                               if(extended){
+                                       if(txt) out = {};//new String(out);
+                                       txt = out.text || txt || '';
+                                       if(txt) out.text = txt;
+                                       if(!simple) out = myArr(out);
+                               };
+                               return out;
+                       };// parseXML
+                       // Core Function End
+                       // Utility functions
+                       var jsVar = function(s){ return String(s || '').replace(/-/g,"_"); };
 
-function json2xml(o, tab) {
-       var toXml = function(v, name, ind) {
-               var xml = "";
-               if (v instanceof Array) {
-                       for (var i=0, n=v.length; i<n; i++)
-                               xml += ind + toXml(v[i], name, ind+"\t") + "\n";
-               }
-               else if (typeof(v) == "object") {
-                       var hasChild = false;
-                       xml += ind + "<" + name;
-                       for (var m in v) {
-                               if (m.charAt(0) == "@")
-                                       xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\"";
-                               else
-                                       hasChild = true;
-                       }
-                       xml += hasChild ? ">" : "/>";
-                       if (hasChild) {
-                               for (var m in v) {
-                                       if (m == "#text")
-                                               xml += v[m];
-                                       else if (m == "#cdata")
-                                               xml += "<![CDATA[" + v[m] + "]]>";
-                                       else if (m.charAt(0) != "@")
-                                               xml += toXml(v[m], m, ind+"\t");
-                               }
-                               xml += (xml.charAt(xml.length-1)=="\n"?ind:"") + "</" + name + ">";
-                       }
-               }
-               else {
-                       xml += ind + "<" + name + ">" + v.toString() +  "</" + name + ">";
+                       // NEW isNum function: 01/09/2010
+                       // Thanks to Emile Grau, GigaTecnologies S.L., www.gigatransfer.com, www.mygigamail.com
+                       function isNum(s){
+                               // based on utility function isNum from xml2json plugin (http://www.fyneworks.com/ - diego@fyneworks.com)
+                               // few bugs corrected from original function :
+                               // - syntax error : regexp.test(string) instead of string.test(reg)
+                               // - regexp modified to accept  comma as decimal mark (latin syntax : 25,24 )
+                               // - regexp modified to reject if no number before decimal mark  : ".7" is not accepted
+                               // - string is "trimmed", allowing to accept space at the beginning and end of string
+                               var regexp=/^((-)?([0-9]+)(([\.\,]{0,1})([0-9]+))?$)/
+                               return (typeof s == "number") || regexp.test(String((s && typeof s == "string") ? jQuery.trim(s) : ''));
+                       };
+                       // OLD isNum function: (for reference only)
+                       //var isNum = function(s){ return (typeof s == "number") || String((s && typeof s == "string") ? s : '').test(/^((-)?([0-9]*)((\.{0,1})([0-9]+))?$)/); };
+
+                       var myArr = function(o){
+
+                               // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
+                               //if(!o.length) o = [ o ]; o.length=o.length;
+                               if(!$.isArray(o)) o = [ o ]; o.length=o.length;
+
+                               // here is where you can attach additional functionality, such as searching and sorting...
+                               return o;
+                       };
+                       // Utility functions End
+                       //### PARSER LIBRARY END
+
+                       // Convert plain text to xml
+                       if(typeof xml=='string') xml = $.text2xml(xml);
+
+                       // Quick fail if not xml (or if this is a node)
+                       if(!xml.nodeType) return;
+                       if(xml.nodeType == 3 || xml.nodeType == 4) return xml.nodeValue;
+
+                       // Find xml root node
+                       // var root = (xml.nodeType == 9) ? xml.documentElement : xml;
+                       var root = xml;
+
+                       // Convert xml to json
+                       var out = parseXML(root, true /* simple */);
+
+                       // Clean-up memory
+                       xml = null; root = null;
+
+                       // Send output
+                       return out;
+               },
+
+               // Convert text to XML DOM
+               text2xml: function(str) {
+                       // NOTE: I'd like to use jQuery for this, but jQuery makes all tags uppercase
+                       //return $(xml)[0];
+
+                       /* prior to jquery 1.9 */
+                       /*
+   var out;
+   try{
+    var xml = ((!$.support.opacity && !$.support.style))?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();
+    xml.async = false;
+   }catch(e){ throw new Error("XML Parser could not be instantiated") };
+   try{
+    if((!$.support.opacity && !$.support.style)) out = (xml.loadXML(str))?xml:false;
+    else out = xml.parseFromString(str, "text/xml");
+   }catch(e){ throw new Error("Error parsing XML string") };
+   return out;
+                        */
+
+                       /* jquery 1.9+ */
+                       return $.parseXML(str);
                }
-               return xml;
-       }, xml="";
-       for (var m in o)
-               xml += toXml(o[m], m, "");
-       return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, "");
-};
\ No newline at end of file
+
+       }); // extend $
+
+})(jQuery);
\ No newline at end of file
index 30ff2c6..5d54fb4 100644 (file)
@@ -15,6 +15,8 @@
        </property>
        <property name="text" type="string"            displayName="Text" default="" initValue="Heading5" xpath="text()"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index 27c49d2..d853d5c 100644 (file)
@@ -15,6 +15,8 @@
        </property>
        <property name="text" type="string"            displayName="Text" default="" initValue="Heading4" xpath="text()"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index a584561..3a0b161 100644 (file)
@@ -24,6 +24,8 @@
        <property name="size" type="html.heading@size" displayName="Size" default="3">
                <condition name="disable-property-by-parent" value="tizen.header"/>
        </property> -->
+       
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
 
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
index a434e7e..be5c965 100644 (file)
@@ -15,6 +15,8 @@
        </property>
        <property name="text" type="string"            displayName="Text" default="" initValue="Heading6" xpath="text()"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index cde1295..b2a31ca 100644 (file)
@@ -15,6 +15,8 @@
        </property>
        <property name="text" type="string"            displayName="Text" default="" initValue="Heading3" xpath="text()"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index 5f6ae64..2a8b48a 100644 (file)
@@ -15,6 +15,8 @@
        </property>
        <property name="text" type="string"            displayName="Text" default="" initValue="Heading2" xpath="text()"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index 04b1256..8520426 100644 (file)
@@ -31,6 +31,8 @@
        <!-- <property name="data-rel"        type="html.link@rel"        displayName="Rel"        default=""/> -->
        <property name="data-transition" type="html.link@transition" displayName="Transition" default=""/>
 
+       <property name="data-bind" type="attrhref@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index 9d92ef7..d983899 100644 (file)
@@ -16,6 +16,8 @@
        <property name="name"  type="string" displayName="Name" default=""/>
        <property name="value" type="string" displayName="Text" default="" initValue="Submit"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index 5773339..9a55fcf 100644 (file)
@@ -46,6 +46,8 @@
        <property name="value"       type="tizen.datetimepicker@value"  displayName="Value"  default=""
                tooltip="Sets the picker date value"/>
 
+       <property name="data-bind" type="value@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="onchange" displayName="Change" eventType="event.defaultevent" />
 
        <xsl-for-output xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
index eab1931..d673f58 100644 (file)
@@ -28,6 +28,8 @@
        <property name="data-style" type="tizen.listdivider@style" displayName="Style" default="normal"
                tooltip="Sets the style of the list divider"/>
 
+       <property name="data-bind" type="text@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />
index 59a63bc..8545eb3 100644 (file)
@@ -25,7 +25,8 @@
                <property name="border-color" type="css-color" displayName="Color" selector="#%id%"/>
                <property name="border-style" type="border@style" displayName="Style" selector="#%id%"/>
        </property> -->
-       <property name="data-bind" type="attr@databinding" displayName="Data Binding" default="" initValue=""/>
+       
+       <property name="data-bind" type="attrsrc@databinding" displayName="Data Binding" default="" initValue=""/>
 
        <event name="ontap" displayName="Tap" eventType="event.defaultevent" />
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
index c0ea2d7..2bd5734 100644 (file)
@@ -68,6 +68,8 @@
                tooltip="Enables or disables a pop-up showing the current value while the handle is dragged"/>
        <property name="data-highlight"  type="tizen@boolean1"    displayName="Highlight"  default=""/>
 
+       <property name="data-bind" type="slider@databinding" displayName="Data Binding" default="" initValue=""/>
+
        <!-- <event name="ontap" displayName="Tap" eventType="event.defaultevent" /> 
        <event name="ontaphold" displayName="TapHold" eventType="event.defaultevent" />
        <event name="onswipe" displayName="Swipe" eventType="event.defaultevent" />