-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmetawidget-jquerymobile.min.js
16 lines (15 loc) · 5.52 KB
/
metawidget-jquerymobile.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Metawidget 4.2 minified
//
// This file is dual licensed under both the LGPL
// (http://www.gnu.org/licenses/lgpl-2.1.html) and the EPL
// (http://www.eclipse.org/org/documents/epl-v10.php). As a
// recipient of Metawidget, you may choose to receive it under either
// the LGPL or the EPL.
//
// Commercial licenses are also available. See http://metawidget.org
// for details.
//
// Author: Richard Kennard (http://kennardconsulting.com)
var metawidget=metawidget||{};(function(){metawidget.jquerymobile=metawidget.jquerymobile||{};metawidget.jquerymobile.widgetprocessor=metawidget.jquerymobile.widgetprocessor||{};metawidget.jquerymobile.widgetprocessor.JQueryMobileWidgetProcessor=function(){if(!(this instanceof metawidget.jquerymobile.widgetprocessor.JQueryMobileWidgetProcessor)){throw new Error("Constructor called as a function")}};metawidget.jquerymobile.widgetprocessor.JQueryMobileWidgetProcessor.prototype.processWidget=function(f,b,d,h){if(f.tagName==="DIV"&&d.type==="array"){var a=metawidget.util.createElement(h,"fieldset");a.setAttribute("data-role","controlgroup");while(f.childNodes.length>0){var e=f.childNodes[0];if(e.tagName!=="LABEL"){return f}var g=f.getAttribute("id")+f.childNodes.length;e.setAttribute("for",g);var c=e.childNodes[0];c.setAttribute("id",g);a.appendChild(c);a.appendChild(e)}f=a}return f};metawidget.jquerymobile.widgetprocessor.JQueryMobileSimpleBindingProcessor=function(){if(!(this instanceof metawidget.jquerymobile.widgetprocessor.JQueryMobileSimpleBindingProcessor)){throw new Error("Constructor called as a function")}var a=new metawidget.widgetprocessor.SimpleBindingProcessor();a.getWidgetFromBinding=function(d,e){if(d.widget.getAttribute("type")==="search"){return $(e.getElement()).find("#"+d.widget.getAttribute("id"))[0]}return d.widget};var c=a.bindToWidget;a.bindToWidget=function(g,k,m,f,l){var j=c.call(this,g,k,m,f,l);if(g.tagName==="FIELDSET"&&f.type==="array"){if(k!==undefined){var h=g.childNodes;for(var i=0,e=h.length;i<e;i++){var d=h[i];if(d.type!=="checkbox"){continue}if(k.indexOf(d.value)!==-1){d.checked=true}}}return true}return j};var b=a.saveFromWidget;a.saveFromWidget=function(j,k){if(j.widget.tagName==="FIELDSET"&&j.attributes.type==="array"){var i=[];var h=j.widget.childNodes[0].childNodes;for(var d=0,f=h.length;d<f;d++){var e=h[d];var g=$(e).find("[type=checkbox]")[0];if(g.checked){i.push(g.value)}}return i}return b.call(this,j,k)};return a};$.widget("mobile.metawidget",{options:{inspector:new metawidget.inspector.PropertyTypeInspector(),widgetBuilder:new metawidget.widgetbuilder.CompositeWidgetBuilder([new metawidget.widgetbuilder.OverriddenWidgetBuilder(),new metawidget.widgetbuilder.ReadOnlyWidgetBuilder(),new metawidget.widgetbuilder.HtmlWidgetBuilder()]),widgetProcessors:[new metawidget.widgetprocessor.IdProcessor(),new metawidget.widgetprocessor.RequiredAttributeProcessor(),new metawidget.widgetprocessor.PlaceholderAttributeProcessor(),new metawidget.widgetprocessor.DisabledAttributeProcessor(),new metawidget.jquerymobile.widgetprocessor.JQueryMobileWidgetProcessor(),new metawidget.jquerymobile.widgetprocessor.JQueryMobileSimpleBindingProcessor()],layout:new metawidget.layout.HeadingTagLayoutDecorator(new metawidget.layout.DivLayout({divStyleClasses:["ui-field-contain"],suppressDivAroundLabel:true,suppressDivAroundWidget:true,suppressLabelSuffixOnCheckboxes:true,}))},_create:function(){this._pipeline=new metawidget.Pipeline(this.element[0]);
this._pipeline.configure(this.options);var b=this._pipeline.layoutWidget;this._pipeline.layoutWidget=function(j,g,i,h,m){b.call(this,j,g,i,h,m);if(j.overridden===undefined){var k=h.childNodes;var f=k[k.length-1];if(f===j){h.removeChild(j);var l=$("<span>").append(j);h.appendChild(l[0]);l.trigger("create")}else{$(f).trigger("create")}}};this.element.data("metawidget",this);this._overriddenNodes=[];var d=this.element[0];var e=this;d.getMetawidget=function(){return e};for(var a=0;a<d.childNodes.length;){if(d.childNodes[a].nodeType!==1){a++;continue}var c=d.childNodes[a];d.removeChild(c);if(c.getAttribute("class")!==null&&c.getAttribute("class").indexOf("ui-")!==-1&&c.childNodes.length===1){c=c.childNodes[0]}this._overriddenNodes.push(c)}},_refresh:function(d){this.overriddenNodes=[];for(var a=0,c=this._overriddenNodes.length;a<c;a++){this.overriddenNodes.push(this._overriddenNodes[a].cloneNode(true))}if(d===undefined){if(arguments.length>0){throw new Error("Calling _refresh( undefined ) may cause infinite loop. Check your argument, or pass no arguments instead")}var b=metawidget.util.splitPath(this.path);d=this._pipeline.inspect(this.toInspect,b.type,b.names,this)}this._pipeline.buildWidgets(d,this)},_setOptions:function(){this._superApply(arguments);this._pipeline.configure(this.options)},setReadOnly:function(a){this.readOnly=a},inspect:function(c,a,b){return this._pipeline.inspect(c,a,b,this)},clearWidgets:function(){$(this.getElement()).empty()},buildWidgets:function(b,a){if(b!==undefined){this.toInspect=b;this.path=undefined}if(a!==undefined){this.path=a}this._refresh()},save:function(){this._pipeline.getWidgetProcessor(function(a){return a instanceof metawidget.widgetprocessor.SimpleBindingProcessor}).save(this)},getWidgetProcessor:function(a){return this._pipeline.getWidgetProcessor(a)},getElement:function(){return this._pipeline.element},buildNestedMetawidget:function(a,c){var f=metawidget.util.createElement(this,"div");var d=$(f).metawidget(this._pipeline);d.metawidget("setReadOnly",this.readOnly||metawidget.util.isTrueOrTrueString(a.readOnly));
var b=this.toInspect;var e=metawidget.util.appendPath(a,this);d.metawidget("buildWidgets",b,e);return f}})})();