build/joosy/form.js in joosy-1.2.0.beta.4 vs build/joosy/form.js in joosy-1.2.0.rc.1
- old
+ new
@@ -1 +1 @@
-(function(){var a={}.hasOwnProperty,b=function(b,c){function d(){this.constructor=b}for(var e in c)a.call(c,e)&&(b[e]=c[e]);return d.prototype=c.prototype,b.prototype=new d,b.__super__=c.prototype,b};Joosy.Form=function(a){function c(a,b){var c,d,e,f,g=this;if(null==b&&(b={}),"function"==typeof b)this.success=b;else for(c in b)e=b[c],this[c]=e;this.$container=$(a),0!==this.$container.length&&(this.__assignElements(),this.__delegateEvents(),d=null!=(f=this.$container.get(0).getAttribute("method"))?f.toLowerCase():void 0,d&&-1!==!["get","post"].indexOf(d)&&(this.__markMethod(d),this.$container.attr("method","POST")),this.$container.ajaxForm({dataType:"json",beforeSend:function(){return g.__debounce.apply(g,arguments)?!1:(g.__before.apply(g,arguments),g.__pending_request=!0,g.debugAs(g,"beforeSend: pending_request = true"),!0)},success:function(){return g.__pending_request=!1,g.debugAs(g,"success: pending_request = false"),g.__success.apply(g,arguments)},error:function(){return g.__pending_request=!1,g.debugAs(g,"error: pending_request = false"),g.__error.apply(g,arguments)},xhr:function(){var a;return a=$.ajaxSettings.xhr(),null!=a.upload&&g.progress&&(a.upload.onprogress=function(a){return a.lengthComputable?g.progress((100*(a.position/a.total)).round(2)):void 0}),a}}),null!=this.resource&&(this.fill(this.resource,b),delete this.resource),null!=this.action&&(this.$container.attr("action",this.action),this.$container.attr("method","POST")),null!=this.method&&this.__markMethod(this.method))}return b(c,a),c.include(Joosy.Modules.DOM),c.include(Joosy.Modules.Log),c.include(Joosy.Modules.Events),c.prototype.invalidationClass="field_with_errors",c.prototype.substitutions={},c.mapElements({fields:"input,select,textarea"}),c.submit=function(a,b){return null==b&&(b={}),a=new this(a,b),a.$container.submit(),a.unbind(),null},c.attach=function(){return function(a,b,c){c.prototype=a.prototype;var d=new c,e=a.apply(d,b);return Object(e)===e?e:d}(Joosy.Form,arguments,function(){})},c.prototype.unbind=function(){return this.$container.unbind("submit").find("input:submit,input:image,button:submit").unbind("click")},c.prototype.fill=function(a,b){var c,d,e,f=this;return"function"==typeof a.build&&(a=a.build()),this.__resource=a,c=null!=(null!=b?b.decorator:void 0)?b.decorator(a.data):a.data,d=function(a,b){var c,e,g;if(!a.__joosy_form_filler_lock){a.__joosy_form_filler_lock=!0,g=function(a,c){var e,g,h,i,j,k,l;if(i=f.concatFieldName(b,a),h=f.$fields().filter("[name='"+i+"']:not(:file),[name='"+inflection.underscore(i)+"']:not(:file),[name='"+inflection.camelize(i,!0)+"']:not(:file)"),h.length>0&&(h.is(":checkbox")?c?h.attr("checked","checked"):h.removeAttr("checked"):h.is(":radio")?h.filter("[value='"+c+"']").attr("checked","checked"):h.val(c)),c instanceof Joosy.Resources.Array){for(l=[],g=j=0,k=c.length;k>j;g=++j)e=c[g],l.push(d(e.data,f.concatFieldName(b,"["+a+"_attributes]["+g+"]")));return l}return c instanceof Joosy.Resources.REST?d(c.data,f.concatFieldName(b,"["+a+"_attributes]")):(null!=c?c.constructor:void 0)===Object||c instanceof Array?d(c,i):void 0};for(c in a)e=a[c],g(c,e);return delete a.__joosy_form_filler_lock}},d(c,a.__entityName||b.resourceName),$("input[name=_method]",this.$container).remove(),a.id()&&this.__markMethod((null!=b?b.method:void 0)||"PUT"),e=(null!=b?b.action:void 0)||(null!=a.id()?a.memberPath():a.collectionPath()),this.$container.attr("action",e),this.$container.attr("method","POST")},c.prototype.submit=function(){return this.$container.submit()},c.prototype.serialize=function(a){var b;return null==a&&(a=!0),b=this.$container.serialize(),a&&(b=b.replace(/\&?\_method\=put/i,"")),b},c.prototype.__success=function(a,b,c){var d;return c?"function"==typeof this.success?this.success(a):void 0:200<=(d=a.status)&&300>d?this.success(a.json):this.__error(a.json)},c.prototype.__before=function(){return null==this.before||this.before.apply(this,arguments)===!0?this.$fields().removeClass(this.invalidationClass):void 0},c.prototype.__error=function(a){var b,c,d,e,f,g=this;if(c=function(){if(!a.responseText)return a;try{return a=jQuery.parseJSON(a.responseText)}catch(c){return b=c,{}}}(),null==this.error||this.error(c)===!0){c=this.__stringifyErrors(c),f=function(a,b){var c;return c=g.findField(a).addClass(g.invalidationClass),"function"==typeof g.notification?g.notification(c,b):void 0};for(d in c)e=c[d],f(d,e);return c}return!1},c.prototype.__debounce=function(a){return this.debugAs(this,"debounce: pending_request == "+this.__pending_request),this.__pending_request&&this.debounce!==!1&&(this.debounce||Joosy.Form.debounceForms)?(a.abort(),this.debugAs(this,"debounce: xhr aborted"),!0):!1},c.prototype.findField=function(a){return this.$fields().filter("[name='"+a+"']")},c.prototype.__markMethod=function(a){return null==a&&(a="PUT"),a=$("<input/>",{type:"hidden",name:"_method",value:a}),this.$container.append(a)},c.prototype.__stringifyErrors=function(a){var b,c,d,e,f,g=this;d={},(null!=a?null!=(f=a.errors)?f.constructor:void 0:void 0)===Object&&(a=a.errors),e=function(a,b){var c,e,f,h,i,j,k,l,m;if(null!=g.substitutions[a]&&(a=g.substitutions[a]),b.constructor===Object||g.isArrayOfObjects(b)){l=g.__foldInlineEntities(b),m=[];for(e in l)i=l[e],m.push(d[a+e]=i);return m}if(-1!==a.indexOf("."))for(h=a.split("."),a=h.shift(),(g.resourceName||g.__resource)&&(f=g.resourceName||g.__resource.__entityName,a=f+("["+a+"]")),j=0,k=h.length;k>j;j++)c=h[j],a+="["+c+"]";else(g.resourceName||g.__resource)&&(f=g.resourceName||g.__resource.__entityName,a=f+("["+a+"]"));return d[a]=b};for(b in a)c=a[b],e(b,c);return d},c.prototype.__foldInlineEntities=function(a,b,c){var d,e;null==b&&(b=""),null==c&&(c={});for(d in a)e=a[d],(null!=e?e.constructor:void 0)===Object||this.isArrayOfObjects(e)?this.__foldInlineEntities(e,""+b+"["+d+"]",c):c[""+b+"["+d+"]"]=e;return c},c.prototype.concatFieldName=function(a,b){var c;return c=this.splitFieldName(a).concat(this.splitFieldName(b)),""+c[0]+"["+c.slice(1).join("][")+"]"},c.prototype.splitFieldName=function(a){var b,c;return c=a.split("]["),b=c[0].split("["),2===b.length&&(0===b[0].length?c.splice(0,1,b[1]):c.splice(0,1,b[0],b[1]),c[c.length-1]=c[c.length-1].split("]")[0]),c},c.prototype.isArrayOfObjects=function(a){return a instanceof Array&&0===a.filter(function(a){return(null!=a?a.constructor:void 0)!==Object}).length},c}(Joosy.Module),null!=("undefined"!=typeof define&&null!==define?define.amd:void 0)&&define("joosy/form",function(){return Joosy.Form})}).call(this);
+(function(){var a={}.hasOwnProperty,b=function(b,c){function d(){this.constructor=b}for(var e in c)a.call(c,e)&&(b[e]=c[e]);return d.prototype=c.prototype,b.prototype=new d,b.__super__=c.prototype,b};Joosy.Form=function(a){function c(a,b){var c,d,e,f,g=this;if(null==b&&(b={}),"function"==typeof b)this.success=b;else for(c in b)e=b[c],this[c]=e;this.$container=$(a),0!==this.$container.length&&(this.__assignElements(),this.__delegateEvents(),d=null!=(f=this.$container.get(0).getAttribute("method"))?f.toLowerCase():void 0,d&&-1===["get","post"].indexOf(d)&&(this.__markMethod(d),this.$container.attr("method","POST")),this.$container.ajaxForm({dataType:"json",beforeSend:function(){return g.__debounce.apply(g,arguments)?!1:(g.__before.apply(g,arguments),g.__pending_request=!0,g.debugAs(g,"beforeSend: pending_request = true"),!0)},success:function(){return g.__pending_request=!1,g.debugAs(g,"success: pending_request = false"),g.__success.apply(g,arguments)},error:function(){return g.__pending_request=!1,g.debugAs(g,"error: pending_request = false"),g.__error.apply(g,arguments)},xhr:function(){var a;return a=$.ajaxSettings.xhr(),null!=a.upload&&g.progress&&(a.upload.onprogress=function(a){return a.lengthComputable?g.progress((100*(a.position/a.total)).round(2)):void 0}),a}}),null!=this.resource&&(this.fill(this.resource,b),delete this.resource),null!=this.action&&(this.$container.attr("action",this.action),this.$container.attr("method","POST")),null!=this.method&&this.__markMethod(this.method))}return b(c,a),c.concern(Joosy.Modules.DOM),c.include(Joosy.Modules.Log),c.include(Joosy.Modules.Events),c.prototype.invalidationClass="field_with_errors",c.prototype.substitutions={},c.mapElements({fields:"input,select,textarea"}),c.submit=function(a,b){return null==b&&(b={}),a=new this(a,b),a.$container.submit(),a.unbind(),null},c.attach=function(){return function(a,b,c){c.prototype=a.prototype;var d=new c,e=a.apply(d,b);return Object(e)===e?e:d}(Joosy.Form,arguments,function(){})},c.prototype.unbind=function(){return this.$container.unbind("submit").find("input:submit,input:image,button:submit").unbind("click")},c.prototype.fill=function(a,b){var c,d,e,f=this;return"function"==typeof a.build&&(a=a.build()),this.__resource=a,c=null!=(null!=b?b.decorator:void 0)?b.decorator(a.data):a.data,d=function(a,b){var c,e,g;if(!a.__joosy_form_filler_lock){a.__joosy_form_filler_lock=!0,g=function(a,c){var e,g,h,i,j,k,l;if(i=f.concatFieldName(b,a),h=f.$fields().filter("[name='"+i+"']:not(:file),[name='"+inflection.underscore(i)+"']:not(:file),[name='"+inflection.camelize(i,!0)+"']:not(:file)"),h.length>0&&(h.is(":checkbox")?c?h.attr("checked","checked"):h.removeAttr("checked"):h.is(":radio")?h.filter("[value='"+c+"']").attr("checked","checked"):h.val(c)),c instanceof Joosy.Resources.Array){for(l=[],g=j=0,k=c.length;k>j;g=++j)e=c[g],l.push(d(e.data,f.concatFieldName(b,"["+a+"_attributes]["+g+"]")));return l}return c instanceof Joosy.Resources.REST?d(c.data,f.concatFieldName(b,"["+a+"_attributes]")):(null!=c?c.constructor:void 0)===Object||c instanceof Array?d(c,i):void 0};for(c in a)e=a[c],g(c,e);return delete a.__joosy_form_filler_lock}},d(c,a.__entityName||b.resourceName),$("input[name=_method]",this.$container).remove(),a.id()&&this.__markMethod((null!=b?b.method:void 0)||"PUT"),e=(null!=b?b.action:void 0)||(null!=a.id()?a.memberPath():a.collectionPath()),this.$container.attr("action",e),this.$container.attr("method","POST")},c.prototype.submit=function(){return this.$container.submit()},c.prototype.serialize=function(a){var b;return null==a&&(a=!0),b=this.$container.serialize(),a&&(b=b.replace(/\&?\_method\=put/i,"")),b},c.prototype.__success=function(a,b,c){var d;return c?"function"==typeof this.success?this.success(a):void 0:200<=(d=a.status)&&300>d?this.success(a.json):this.__error(a.json)},c.prototype.__before=function(){return null==this.before||this.before.apply(this,arguments)===!0?this.$fields().removeClass(this.invalidationClass):void 0},c.prototype.__error=function(a){var b,c,d,e,f,g=this;if(c=function(){if(!a.responseText)return a;try{return a=jQuery.parseJSON(a.responseText)}catch(c){return b=c,{}}}(),null==this.error||this.error(c)===!0){c=this.__stringifyErrors(c),f=function(a,b){var c;return c=g.findField(a).addClass(g.invalidationClass),"function"==typeof g.notification?g.notification(c,b):void 0};for(d in c)e=c[d],f(d,e);return c}return!1},c.prototype.__debounce=function(a){return this.debugAs(this,"debounce: pending_request == "+this.__pending_request),this.__pending_request&&this.debounce!==!1&&(this.debounce||Joosy.Form.debounceForms)?(a.abort(),this.debugAs(this,"debounce: xhr aborted"),!0):!1},c.prototype.findField=function(a){return this.$fields().filter("[name='"+a+"']")},c.prototype.__markMethod=function(a){return null==a&&(a="PUT"),a=$("<input/>",{type:"hidden",name:"_method",value:a}),this.$container.append(a)},c.prototype.__stringifyErrors=function(a){var b,c,d,e,f,g=this;d={},(null!=a?null!=(f=a.errors)?f.constructor:void 0:void 0)===Object&&(a=a.errors),e=function(a,b){var c,e,f,h,i,j,k,l,m;if(null!=g.substitutions[a]&&(a=g.substitutions[a]),b.constructor===Object||g.isArrayOfObjects(b)){l=g.__foldInlineEntities(b),m=[];for(e in l)i=l[e],m.push(d[a+e]=i);return m}if(-1!==a.indexOf("."))for(h=a.split("."),a=h.shift(),(g.resourceName||g.__resource)&&(f=g.resourceName||g.__resource.__entityName,a=f+("["+a+"]")),j=0,k=h.length;k>j;j++)c=h[j],a+="["+c+"]";else(g.resourceName||g.__resource)&&(f=g.resourceName||g.__resource.__entityName,a=f+("["+a+"]"));return d[a]=b};for(b in a)c=a[b],e(b,c);return d},c.prototype.__foldInlineEntities=function(a,b,c){var d,e;null==b&&(b=""),null==c&&(c={});for(d in a)e=a[d],(null!=e?e.constructor:void 0)===Object||this.isArrayOfObjects(e)?this.__foldInlineEntities(e,""+b+"["+d+"]",c):c[""+b+"["+d+"]"]=e;return c},c.prototype.concatFieldName=function(a,b){var c;return c=this.splitFieldName(a).concat(this.splitFieldName(b)),""+c[0]+"["+c.slice(1).join("][")+"]"},c.prototype.splitFieldName=function(a){var b,c;return c=a.split("]["),b=c[0].split("["),2===b.length&&(0===b[0].length?c.splice(0,1,b[1]):c.splice(0,1,b[0],b[1]),c[c.length-1]=c[c.length-1].split("]")[0]),c},c.prototype.isArrayOfObjects=function(a){return a instanceof Array&&0===a.filter(function(a){return(null!=a?a.constructor:void 0)!==Object}).length},c}(Joosy.Module),null!=("undefined"!=typeof define&&null!==define?define.amd:void 0)&&define("joosy/form",function(){return Joosy.Form})}).call(this);
\ No newline at end of file