} 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);
-/* 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