diff --git a/dist/jquery.jsForm-1.1.3.js b/dist/jquery.jsForm-1.1.3.js new file mode 100644 index 0000000..99fa1c4 --- /dev/null +++ b/dist/jquery.jsForm-1.1.3.js @@ -0,0 +1,2963 @@ +/** + * jquery.jsForm + * ------------- + * JsForm control for handling html UI with json objects + * @version 1.0 + * @class + * @author Niko Berger + * @license MIT License GPL + */ +;(function( $, window, undefined ){ + "use strict"; + + var JSFORM_INIT_FUNCTIONS = {}, // remember initialization functions + JSFORM_MAP = {}; // remember all forms + + + /** + * @param element {Node} the cotnainer node that should be converted to a jsForm + * @param options {object} the configuraton object + * @constructor + */ + function JsForm (element, options) { + var $this = $(element); + + // create the options + this.options = $.extend({}, { + /** + * enable form control rendering (if jsForm.controls is available) and validation + */ + controls: true, + /** + * the object used to fill/collect data + */ + data: null, + /** + * the prefix used to annotate the input fields + */ + prefix: "data", + /** + * set to null to discourage the tracking of "changed" fields. + * Disabling this will increase performance, but disabled the "changed" functionality. + * This will add the given css class to changed fields. + */ + trackChanges: "changed", + /** + * set to false to only validate visible fields. + * This is discouraged especially when you have tabs or similar elements in your form. + */ + validateHidden: true, + /** + * skip empty values when getting an object + */ + skipEmpty: false, + /** + * an object with callback functions that act as renderer for data fields (class=object). + * ie. { infoRender: function(data){return data.id + ": " + data.name} } + */ + renderer: null, + /** + * an object with callback functions that act as pre-processors for data fields (class=object). + * ie. { idFilter: function(data){return data.id} } + */ + processors: null, + /** + * optional array of elements that should be connected with the form. This + * allows the splitting of the form into different parts of the dom. + */ + connect: null, + /** + * The class used when calling preventEditing. This will replace all + * inputs with a span with the given field + */ + viewClass: "value" + }, options); + + // read prefix from dom + if($this.attr("data-prefix") && (this.options.prefix === "data" || this.options.prefix === "")) { + if($this.attr("data-prefix") !== "") { + this.options.prefix = $this.attr("data-prefix"); + } + } + + this.element = element; + + this._init(); + } + + /** + * init the portlet - load the config + * @private + */ + JsForm.prototype._init = function() { + // init the basic dom functionality + this._domInit(); + + // enable form controls + if(this.options.controls) { + if($.jsFormControls) { + // handle multiple form parts + $.each(this._getForm(), function(){ + $(this).jsFormControls(); + }); + } else { + try { + if(typeof console !== "undefined") { + console.log("jquery.JsForm.controls not available!"); + } + } catch(ex) { + // ignore + } + } + } + + // fill/init with the first data + this._fill(this.options); + }; + + /** + * Connect a dom element with an already existing form. + * @param ele the new part of the form + */ + JsForm.prototype.connect = function(ele) { + // collection lists with buttons + this._initCollection(ele, this.options.prefix); + // init conditionals + this._initConditional(ele, this.options.prefix, this.options); + + // enable form controls + if(this.options.controls) { + if($.jsFormControls) { + // handle multiple form parts + $(ele).jsFormControls(); + } + } + + this._fillDom(ele); + if(!this.options.connect) + this.options.connect = []; + this.options.connect.push(ele); + }; + + /** + * @return all nodes for this jsform (main + connected) + */ + JsForm.prototype.getNodes = function() { + return this._getForm(); + }; + + /** + * init the dom. This can be called multiple times. + * this will also enable "add", "insert" and "delete" for collections + * @private + */ + JsForm.prototype._domInit = function() { + var that = this; + + // handle multiple form parts + $.each(this._getForm(), function(){ + // collection lists with buttons + that._initCollection(this, that.options.prefix); + // init conditionals + that._initConditional(this, that.options.prefix, that.options); + }); + }; + + /** + * simple debug helper + * @param msg the message to pring + * @private + */ + JsForm.prototype._debug = function(msg, param) { + try { + if (!window.console || !window.console.log) + return; + + var p = null; + if($.isPlainObject(param)) { + p = JSON.stringify(param, null, " "); + } else + p = param; + + if(!p) { + p = ""; + } + + window.console.log(msg + p); + } catch(ex) { + // ignore + } + }; + + /** + * initialize conditionals. + * basic rule is: + * any dom element that has a conditional and either + * a data-show or data-hide attribute or a data-eval attribute + * + * @param form the base dom element + * @param prefix the prefix to check for + * @private + */ + JsForm.prototype._initConditional = function(form, prefix, options) { + var that = this; + var showEvaluator = function(ele, data, fields) { + // if any field has a value -> show + var show = false; + $.each(fields, function(){ + var value = that._getValueWithArrays(data, this); + if(!value || value === "" || value === 0 || value === -1) + return; + show = true; + // skip processing + return false; + }); + if(show) + ele.show(); + else + ele.hide(); + }, hideEvaluator = function(ele, data, fields) { + // if any field has a value -> hide + var show = false; + $.each(fields, function(){ + var value = that._getValueWithArrays(data, this); + if(!value || value === "" || value === 0 || value === -1) + return; + show = true; + // skip processing + return false; + }); + if(show) + ele.hide(); + else + ele.show(); + }; + + // remember the conditionals for faster dom access + this.conditionals = $(form).find(".conditional"); + + this.conditionals.each(function(){ + $(this).data().conditionalEval = []; + var fields = $(this).attr("data-show"); + if(fields && fields.length > 0) { + $(this).data().conditionalEval.push({ + func: showEvaluator, + field: fields.split(" ") + }); + } + fields = $(this).attr("data-hide"); + if(fields && fields.length > 0) { + $(this).data().conditionalEval.push({ + func: hideEvaluator, + field: fields.split(" ") + }); + } + fields = $(this).attr("data-eval"); + if(fields && fields.length > 0) { + // custom evaluator + if(options.conditionals[fields]) + $(this).data().conditionalEval.push({ + func: options.conditionals[fields] + }); + } + }); + }; + + /** + * evaluate conditionals on the form + * @param form the form to search for conditionals + * @param data the data + */ + JsForm.prototype._evaluateConditionals = function(form, data) { + this.conditionals.each(function(){ + var ele = $(this); + // go throguh all evaluation functions + $.each(ele.data().conditionalEval, function() { + this.func(ele, data, this.field); + }); + }); + }; + + /** + * initialize collections + * @param form the base dom element + * @param prefix the prefix to check for + * @private + */ + JsForm.prototype._initCollection = function(form, prefix) { + // all collections + var collectionMap = {}, + that = this; + $(form).data().collections = collectionMap; + + $(".collection", form).each(function() { + var colName = $(this).attr("data-field"); + // skip collections without a data-field mapping + if (!colName || colName.indexOf(prefix + ".") !== 0) { + return; + } + + var container = $(this); + + // remember the collection + var cols = collectionMap[colName]; + if(cols) { + cols.push(container); + } else { + collectionMap[colName] = [container]; + } + + //init the collection + that._initList(container); + + // after adding: check if we want reorder control + if(!container.hasClass("ui-sortable") && container.hasClass("sortable") && container.sortable) { + // get the config object + var config = container.attr("data-sortable"); + if(!config) { + config = {}; + } else { + config = JSON.parse(config); + } + + container.sortable(config); + container.on("sortstop", function( event, ui ) { + that._reorder(container); + }); + } + + }); + + $(".add", form).each(function(){ + var fieldName = $(this).attr("data-field"); + if(!fieldName) { + return; + } + + // only init once + if($(this).data("collections")) { + return; + } + + // add the collection + $(this).data().collections = collectionMap[fieldName]; + + $(this).click(function(ev){ + ev.preventDefault(); + + // search for a collection with that name + $.each($(this).data("collections"), function() { + var tmpl = $(this).data("template"); + + // and has a template + if(tmpl) { + var line = tmpl.clone(true); + $(line).addClass("POJO"); + $(line).data().pojo = {}; + + var prefill = $(this).data("prefill"); + if(!prefill) + prefill = $(this).val("data-prefill"); + // allow prefill + if(prefill){ + if($.isFunction(prefill)) + prefill($(line).data().pojo, $(line)); + else if(prefill.substring) + $(line).data().pojo = JSON.parse(prefill); + else if($.isPlainObject(prefill)) + $(line).data().pojo = prefill; + + } + $(this).append(line); + + // init controls + that._enableTracking($("input,textarea,select", line)); + // new line always has changes + if(that.options.trackChanges) + $("input,textarea,select", line).addClass(that.options.trackChanges); + + that._addCollectionControls(line); + + // its possible to have "sub" collections + that._initCollection(line, fieldName.substring(fieldName.indexOf('.')+1)); + + // trigger a callback + $(this).trigger("addCollection", [line, $(line).data().pojo]); + + // the new entry has as index the count of all "lines" + var idx = $(this).children(".POJO").length; + + // "fill data" + that._fillData(line, $(line).data().pojo, fieldName.substring(fieldName.indexOf('.')+1), idx); + + // trigger a callback after the data has been rendered) + $(this).trigger("postAddCollection", [line, $(line).data().pojo]); + } + }); + }); + }); + + // insert: similar to add - but works with events + $(".insert", form).each(function(){ + var fieldName = $(this).attr("data-field"); + if(!fieldName) { + return; + } + + // only init once + if($(this).data("collections")) { + return; + } + + // remember the collections + $(this).data("collections", collectionMap[$(this).attr("data-field")]); + + $(this).on("insert", function(ev, pojo){ + if(!pojo) + pojo = $(this).data().pojo; + // insert only works if there is a pojo + if(!pojo) { + return; + } + var beforeInsertCallback = $(this).data("beforeInsert"); + if(beforeInsertCallback && $.isFunction(beforeInsertCallback)) { + pojo = beforeInsertCallback(pojo); + + // insert only works if there is a pojo + if(!pojo) { + return; + } + } + + // search for a collection with that name + $.each($(this).data("collections"), function() { + var tmpl = $(this).data("template"); + // and has a template + if(tmpl) { + var line = tmpl.clone(true); + // mark that this is a pojo + line.addClass("POJO"); + // add the pojo + line.data().pojo = pojo; + + that._addCollectionControls(line); + + // its possible to have "sub" collections + that._initCollection(line); + + // trigger a callback + $(this).trigger("addCollection", [line, pojo]); + + // the new entry has as index the count of all "lines" + var idx = $(this).children(".POJO").length; + + // fill the "information" + that._fillData(line, pojo, fieldName.substring(fieldName.indexOf('.')+1), idx); + + $(this).append(line); + + // trigger a callback after the data has been rendered) + $(this).trigger("postAddCollection", [line, pojo]); + } + }); + + // empty field + $(this).val(""); + $(this).data().pojo = null; + $(this).focus(); + }); + }); + + // insert: helper button (triggers insert) + $(".insertAction", form).each(function(){ + var fieldName = $(this).attr("data-field"); + if(!fieldName) { + return; + } + + // only init once + if($(this).data("inserter")) { + return; + } + + // find the insert element for this data-field + var inserter = $(this).parent().find(".insert"); + if(!inserter) { + return; + } + + // remember the inserter + $(this).data("inserter", inserter); + + $(this).click(function(ev){ + ev.preventDefault(); + $(this).data("inserter").trigger("insert"); + return false; + }); + + }); + + $("input.object", form).each(function(){ + $(this).on("update", function(evt){ + var pojo = $(this).data().pojo; + if (pojo && $(this).attr("data-display")) { + $(this).val(that._renderObject(pojo, $(this).attr("data-display"))); + } + }); + }); + + // fileupload + $("input.blob", form).each(function(){ + // only available on input type file + if($(this).attr("type") !== "file") { + return; + } + + var blobInput = $(this); + + // bind on change + $(this).on("change", function(evt){ + + //get file name + var fileName = $(this).val().split(/\\/).pop(); + blobInput.data("name", fileName); + + var files = evt.target.files; // FileList object + // Loop through the FileList (and render image files as thumbnails.(skip for ie < 9) + if(files && files.length) { + $.each(files, function() { + var reader = new FileReader(); + + // closure to capture the file information + reader.onload = function(e) { + // get the result + blobInput.data("blob", e.target.result); + }; + + // Read in the image file as a data URL. + reader.readAsDataURL(this); + + $(this).trigger("fileChange"); + }); + } + }); + + + }); + }; + + /** + * init a container that has a tempalate child (first child). + * @param container the contianer element + * @private + */ + JsForm.prototype._initList = function(container) { + // avoid double initialisation + if(container.data("template")) { + return; + } + + // get all children + var tmpl = container.children().detach(); + + // remove an id if there is one + tmpl.removeAttr("id"); + container.data("template", tmpl); + }; + + /** + * generate the array with all dome elements that are conencted with + * the form. + * @private + */ + JsForm.prototype._getForm = function() { + var form = [$(this.element)]; + if(this.options.connect) + $.each(this.options.connect, function(){ + form.push($(this)); + }); + return form; + }; + + /** + * clear/reset a form. The prefix is normally predefined by init + * @param form the form + * @param prefix the optional prefix used to identify fields for this form + */ + JsForm.prototype._clear = function(form, prefix) { + // get the prefix from the form if not given + if(!prefix) { + prefix = this.options.prefix; + } + + $(form).removeData("pojo"); + $("input,select,textarea", form).each(function(){ + var name = $(this).attr("name"); + // empty name - ignore + if (!name || name.indexOf(prefix + ".") !== 0) { + return; + } + // cut away the prefix + name = name.substring((prefix+".").length); + // skip empty + if(name.length < 1) { + return; + } + + // remove all pojos + $(this).removeData("pojo"); + + if($(this).attr("type") === "checkbox") { + $(this).prop("checked", false); + } else { + $(this).val(""); + } + if($(this).hasClass("blob")) { + $(this).removeData("blob"); + } + // special type select box: select the FIRST child + if($(this).is("select")) { + $('option[selected="selected"]', this).prop('selected', false); + $('option:first', this).prop('selected', true); + + $(this).val($("option:first", this).val()).change(); + } + // trigger change + $(this).change(); + }); + + $(".collection", form).each(function() { + var fieldname = $(this).attr("data-field"); + // only collections with the correct prefix + if(!fieldname || fieldname.indexOf(prefix+".") !== 0) { + return; + } + // get rid of all + $(this).empty(); + }); + + }; + /** + * ceate a pojo from a form. Takes special data definition classes into account: + * + * @param start the element to start from (ie. the form or tr) + * @param pojo the pojo to write everything to + * @param prefix a prefix: only fields with the given prefix will be included in the pojo + * @private + */ + JsForm.prototype._createPojoFromInput = function (start, prefix, pojo) { + // check if we have an "original" pojo + var startObj = null; + var that = this; + + // get it from the starting dom element + if($(start).data("pojo")) { + startObj = $(start).data("pojo"); + } + + // if we have an object, use this as base and fill the pojo + if(startObj) { + $.extend(true, pojo, startObj); + } + + $(start).find("input,select,textarea,.jsobject").each(function(){ + var name = $(this).attr("data-name"); + if(!name) { + name = $(this).attr("name"); + } + + // empty name - ignore + if (!name) { + return; + } + + // skip grayed (=calculated) or transient fields + if($(this).hasClass("transient")) { + return; + } + + // must start with prefix + if(name.indexOf(prefix + ".") !== 0) { + return; + } + + $(this).trigger("validate", true); + + // cut away the prefix + name = name.substring((prefix+".").length); + + var val = $(this).val(); + + // jsobject use the pojo data directly - ignore the rest + if($(this).hasClass("jsobject")) { + val = $(this).data("pojo"); + } + else { + // ignore empty values when skipEmpty is set + if(that.options.skipEmpty && (!val || val === "" || val.trim() === "")) { + return; + } + + if($(this).hasClass("emptynull") && (!val || val === "" || val === "null" || val.trim() === "")) { // nullable fields do not send empty string + val = null; + } else if($(this).hasClass("object") || $(this).hasClass("POJO")) { + if($("option:selected", this).data() && $("option:selected", this).data().pojo) { + val = $("option:selected", this).data().pojo; + } else { + val = $(this).data("pojo"); + } + // object can also have a processor + if($.isFunction($(this).data().processor)) { + val = $(this).data().processor(val); + } else { + var processor = $(this).attr("data-processor"); + if(processor && that.options.processors[processor]) { + val = that.options.processors[processor](val); + } + } + } else if($(this).hasClass("blob")) { // file upload blob + val = $(this).data("blob"); + } else + // set empty numbers or dates to null + if(val === "" && ($(this).hasClass("number") || $(this).hasClass("percent") || $(this).hasClass("integer") || $(this).hasClass("dateFilter")|| $(this).hasClass("dateTimeFilter"))) { + val = null; + } + + // check for percentage: this is input / 100 + if ($(this).hasClass("percent")) { + val = that._getNumber(val); + if(isNaN(val)) { + val = 0; + } else { + val /= 100; + } + } + else if ($(this).hasClass("number") || $(this).hasClass("integer")) { + if($(this).hasClass("date") && isNaN(val)) { + if($.format) { + var d = $.format.date(val); + d.setHours(0); + d.setMinutes(0); + d.setSeconds(0); + d.setMilliseconds(0); + val = d.getTime(); + } else + val = new Date(val).getTime(); + } else + val = that._getNumber(val); + if(isNaN(val)) { + val = 0; + } + } + else if($(this).attr("type") === "checkbox" || $(this).attr("type") === "CHECKBOX") { + // a checkbox as an array + if($(this).hasClass("array")) { + // the special case: array+checkbox is handled on the actual setting + val = $(this).val(); + } else + val = $(this).is(':checked'); + } + else if($(this).hasClass("bool")) { + val = ($(this).val() === "true"); + } + } + // handle simple collection + if(name.length < 1) { + pojo = val; + return false; + } + + // check if we have a . - if so split + if (name.indexOf(".") === -1) + { + // this might actually be an array! + if($(this).hasClass("array")) { + // create an array out of this + if(!pojo[name]) { + pojo[name] = []; + } + + if($(this).attr("type") === "checkbox" || $(this).attr("type") === "CHECKBOX") { + // do we want the value of not + var use = $(this).is(":checked"); + var pushVal = true; + $.each(pojo[name], function(data, index){ + if(this == val) { + // dont need to push + pushVal = false; + // we dont use it - remove it + if(!use) + pojo[name].splice(index, 1); + return false; + } + }); + if(pushVal && use) + pojo[name].push(val); + } else { + var num = $(this).attr("data-array"); + if(!num || isNaN(num)) { + num = null; + } else + num = Number(num); + + // no num -> add the array + if(num === null) + pojo[name].push(val); + else + pojo[name][num] = val; + } + } + else + pojo[name] = val; + } + else + { + var parts = name.split("."); + + var d0 = pojo[parts[0]]; + var d1, d2; + + // multiple parts: make sure its an object TODO find a better way to handle multiple levels with auto-create + if (!d0 || !$.isPlainObject(d0)) { + pojo[parts[0]] = {}; + d0 = pojo[parts[0]]; + } + + if (parts.length === 2) { + d0[parts[1]] = val; + } else if (parts.length === 3) { + d1 = d0[parts[1]]; + if(d1 === undefined || d1 === null) { + d1 = {}; + d0[parts[1]] = d1; + } + d1[parts[2]] = val; + } else if (parts.length === 4) + { + d1 = d0[parts[1]]; + if(d1 === null || d1 === undefined) { + d1 = {}; + d0[parts[1]] = d1; + } + d2 = d1[parts[2]]; + if(d2 === undefined || d1 === null) { + d2 = {}; + d1[parts[2]] = d2; + } + d1[parts[2]] = val; + d2[parts[3]] = val; + } + // more should not be necessary + } + }); + + return pojo; + }; + + /** + * helper function to enable tracking on fields + * @param ele the element to track + */ + JsForm.prototype._enableTracking = function(ele) { + var that = this; + if(that.options.trackChanges && !$(ele).data().track) { + $(ele).data().track = true; + $(ele).change(function(){ + if($(this).val() !== $(this).data().orig) { + $(this).addClass(that.options.trackChanges); + }else { + $(this).removeClass(that.options.trackChanges); + } + }); + } + }; + + /** + * fill a dom subtree with data. + * + * @param parent the root of the subtree + * @param data the data + * @param prefix the prefix used to find fields + * @param idx the index - this is only used for collections + * @private + */ + JsForm.prototype._fillData = function (parent, data, prefix, idx) { + var that = this; + var $parent = $(parent); + + // locate all "fields" + $parent.find(".field").each(function() { + var name = $(this).data("name"); + if(!name) { + if(this.nodeName.toUpperCase() === 'A') { + name = $(this).attr("href"); + $(this).attr("href", "#"); + }else if(this.nodeName.toUpperCase() === 'IMG') { + name = $(this).attr("src"); + if(name.indexOf("#") === 0) { + name = name.substring(1); + } + $(this).attr("src", "#"); + }else { + name = $(this).text(); + } + $(this).data("name", name); + $(this).show(); + } + + if(!prefix || name.indexOf(prefix + ".") >= 0) { + var cname = name; + if (prefix) { + cname = cname.substring(prefix.length + 1); + } + var cdata = that._get(data, cname, false, idx); + + if(!cdata && cdata !== 0 && cdata !== false) { + cdata = ""; + } + + // check for percentage: this is value * 100 + if ($(this).hasClass("percent") && !isNaN(cdata)) { + cdata = 100 * Number(cdata); + } else if($(this).hasClass("currency")) { + if (!cdata) + cdata = 0; + } + + // format the string + if($.jsFormControls) + cdata = $.jsFormControls.Format.format(this, cdata); + + if(this.nodeName.toUpperCase() === 'A') { + $(this).attr("href", cdata); + } else if(this.nodeName.toUpperCase() === 'IMG') { + $(this).attr("src", cdata); + } + else if(this.nodeName.toUpperCase() === "DIV"){ + $(this).html(cdata); + } else { + $(this).text(cdata); + } + } + }); + + $("input, textarea", $parent).each(function() { + var name = $(this).attr("name"); + if(!name) { + return; + } + that._enableTracking(this); + + // ignore file inputs - they cannot be "prefilled" + if($(this).attr("type") == "file") { + return; + } + + if(!prefix || name.indexOf(prefix + ".") >= 0) { + var cname = name; + if (prefix) { + cname = cname.substring(prefix.length + 1); + } + + var cdata = that._get(data, cname, false, idx); + + // check for percentage: this is value * 100 + if ($(this).hasClass("object")) { + $(this).data().pojo = cdata; + $(this).addClass("POJO"); + if($(this).attr("data-display") || $(this).attr("data-render")) { + cdata = that._renderObject(cdata, $(this).attr("data-display"), $(this).attr("data-render")); + } + } else if ($(this).hasClass("jsobject")) { + $(this).data().pojo = cdata; + $(this).addClass("POJO"); + } else if ($(this).hasClass("percent") && !isNaN(cdata)) { + cdata = 100 * Number(cdata); + } else if($.isPlainObject(cdata)) { + $(this).data().pojo = cdata; + $(this).addClass("POJO"); + cdata = that._renderObject(cdata, $(this).attr("data-display"), $(this).attr("data-render")); + } + + + if($(this).attr("type") === "checkbox") { + // array in checkbox + if($(this).hasClass("array")) { + // checkbox: set if any part of the array matches + var cbVal = $(this).val(); + var found = false; + if(cdata) + $.each(cdata, function(){ + if(this == cbVal) { + found = true; + return false; + } + }); + // select + $(this).prop("checked", found); + } else + $(this).prop("checked", (cdata === true || cdata === "true")); + } else { + if(!cdata) { + cdata = ""; + } + + // format the string + if($.jsFormControls) + cdata = $.jsFormControls.Format.format(this, cdata); + + // array handling + if($(this).hasClass("array")) { + // fixed numbers + var num = $(this).attr("data-array"); + if(!num || isNaN(num)) { + num = null; + } else + num = Number(num); + if(num !== null && cdata && cdata.length > num) { + $(this).val(cdata[num]); + } else { + $(this).val(""); + } + } else + $(this).val(cdata); + } + + if(that.options.trackChanges) + $(this).data().orig = $(this).val(); + $(this).change(); + $(this).trigger("fill"); + } + }); + + $("select", $parent).each(function() { + var name = $(this).attr("name"); + if(!name) { + return; + } + + if(!prefix || name.indexOf(prefix + ".") >= 0) { + var cname = name; + if (prefix) { + cname = cname.substring(prefix.length + 1); + } + + that._enableTracking(this); + + // remove "old" selected options + $(this).children("option:selected").prop("selected", false); + var pk = $(this).attr("data-key"); + if(!pk) { + pk = "id"; + } + + var value = that._get(data, cname, false, idx); + // try selecting based on the id + if (value[pk] || !isNaN(value[pk])) { + $(this).children("option[value='"+value[pk]+"']").prop("selected", true); + // actually set the value and trigger the change + $(this).val(value[pk]).change(); + return; + } else if($(this).hasClass("bool")) { + value = value ? "true" : "false"; + } + + $(this).children("option[value='"+value+"']").prop("selected", true); + $(this).val(value); + if(that.options.trackChanges) + $(this).data().orig = $(this).val(); + $(this).change().trigger("fill"); + } + }); + }; + + /** + * ceate a pojo from a form. Takes special data definition classes into account: + * + * @param ignoreInvalid return a pojo, even if fields do not pass client side validation + * @return {Object} a new pojo + */ + JsForm.prototype.get = function(ignoreInvalid) { + var that = this; + var originalPojo = this.options.data; + var prefix = this.options.prefix; + + // get the pojo + var pojo = {}; + if(originalPojo && $.isPlainObject(originalPojo)) { + pojo = $.extend({}, originalPojo); + } + + // check for invalid fields + var invalid = false; + + // go through all form parts + $.each(this._getForm(), function(){ + // fill the base + that._createPojoFromInput(this, prefix, pojo); + + if(!that.options.validateHidden) { + this.find(".invalid").filter(":visible").each(function(){ + invalid = true; + $(this).focus(); + if(!ignoreInvalid) { + that._debug("Found invalid field: " + $(this).attr("name")); + } + return false; + }); + } else { + this.find(".invalid").each(function(){ + invalid = true; + $(this).focus(); + return false; + }); + } + + // get the collection + if(that._getCollection(this, prefix, pojo, ignoreInvalid)) { + invalid = true; + } + }); + + if(!ignoreInvalid && invalid) { + return null; + } + + return pojo; + }; + + /** + * fill a pojo based on collections + * @param form {DOMElement} the base element to start looking for collections + * @param prefix {string} the prefix used + * @param pojo {object} the object to fill + * @param ignoreInvalid {boolean} if true the function will return as soon as an invalid field is found + * @return true if the colelction encountered an invalid field + */ + JsForm.prototype._getCollection = function(form, prefix, pojo, ignoreInvalid) { + var that = this; + // check for invalid fields + var invalid = false; + + form.find(".collection").each(function() { + if(!ignoreInvalid && invalid) { + return; + } + + var fieldname = $(this).attr("data-field"); + // only collections with the correct prefix + if(!fieldname || fieldname.indexOf(prefix+".") !== 0) { + return; + } + + fieldname = fieldname.substring((prefix+".").length); + + var colParent = that._getParent(pojo, fieldname, true); + // get only the last part + if(fieldname.indexOf('.') !== -1) { + fieldname = fieldname.substring(fieldname.lastIndexOf('.') + 1); + } + + // clear the collection + colParent[fieldname] = []; + + // go through all direct childs - each one is an element + $(this).children().each(function(){ + var ele = {}; + ele = that._createPojoFromInput($(this), fieldname, ele); + + // also collect sub-collections + that._getCollection($(this), fieldname, ele, ignoreInvalid); + + // check if the pojo is empty + if(!that._isEmpty(ele)) { + if($(".invalid", this).length > 0) { + invalid = true; + if(!ignoreInvalid) + return false; + } + colParent[fieldname].push(ele); + } else { + $(".invalid", this).removeClass("invalid"); + } + }); + }); + + return invalid; + }; + + /** + * Get the data object used as a base for get(). + * Note that modifying this directly might result into unwanted results + * when working with some functions that rely on this object. + * + * @returns the original data object + */ + JsForm.prototype.getData = function() { + // make srue we do have an object to work with + if(!this.options.data) { + this.options.data = {}; + } + return this.options.data; + }; + + /** + * uses form element and replaces them with "spans" that contain the actual content. + * the original "inputs" are hidden + * @param form the form + * @param enable true: switch inputs with spans, false: switch spans back, undefined: toggle + */ + JsForm.prototype.preventEditing = function(prevent) { + var $this = $(this.element); + var viewClass = this.options.viewClass; + + if(typeof prevent === "undefined") { + // get the disable from the form itself + prevent = $this.data("disabled")?false:true; + } else { + // already in that state + if(prevent === $this.data("disabled")) { + return; + } + } + + if (prevent) + { + $this.find("input, textarea").each(function() { + if ($(this).closest("span." + viewClass)[0]) + return; + if($(this).attr("type") == "hidden") + return; + var val = $(this).val(); + if (val === "null" || val === null || $(this).attr("type") === "submit") + val = ""; + if($(this).hasClass("trueFalse")) { + if($(this).is(':checked')) + val = 'X'; + else + val = ' '; + } + + // convert \n to brs - escape all other html + val = val.replace(//g, ">").replace(/\n/g, "
"); + var thespan = $(''+val+''); + if($(this).parent().hasClass("ui-wrapper")) + $(this).parent().hide().wrap(thespan); + else + $(this).hide().wrap(thespan); + }); + // selects are handled slightly different + $this.find("select").each(function() { + if ($(this).closest("span."+viewClass)[0]) + return; + + var val = $(this).children(":selected").html(); + if (val === "null" || val === null) + val = ""; + + var thespan = $(''+val+''); + + // toggle switches work a little different + if($(this).hasClass("ui-toggle-switch")) { + $(this).prev().hide().wrap(thespan); + } + else { + $(this).hide().wrap(thespan); + } + }); + } + else + { + $this.find("span." + viewClass).each(function() { + // remove text and then unwrap + var ele = $(this).children("input,select,textarea,.ui-wrapper,.ui-toggle-switch").show().detach(); + $(this).before(ele); + $(this).remove(); + }); + } + + $this.data("disabled", prevent); + }; + + /** + * validate a given form + * @return true if the form has no invalid fields, false otherwise + */ + JsForm.prototype.validate = function() { + // get the prefix from the form if not given + var valid = true; + + $.each(this._getForm(), function(){ + // validation + $(".required,.regexp,.date,.mandatory,.number,.validate,.integer", this).change(); + // check for invalid fields + if($(".invalid", this).length > 0) { + valid = false; + } + }); + + return valid; + }; + + /** + * fill a form based on a pojo. + * @param form the form + * @param options the options used to fill + * @param prefix the optional prefix used to identify fields for this form + * @private + */ + JsForm.prototype._fill = function() { + var that = this; + $(this.element).addClass("POJO"); + $(this.element).data("pojo", this.options.data); + + // handle multiple form parts + $.each(this._getForm(), function(){ + that._fillDom(this); + }); + }; + + /** + * This is the actual worker function that fills a dom element + * with data. + * @param ele the element to fill + * @private + */ + JsForm.prototype._fillDom = function(ele) { + var that = this; + that._clear(ele, that.options.prefix); + + // fill base + that._fillData(ele, that.options.data, that.options.prefix); + that._fillCollection(ele, that.options.data, that.options.prefix); + // (re-)evaluate all conditionals + that._evaluateConditionals(ele, that.options.data); + }; + + + /** + * @param container the container element + * @param data an array containing the the data + * @param prefix a prefix for each line of data + * @private + */ + JsForm.prototype._fillCollection = function(container, data, prefix) { + var that = this; + // fill collections + $(".collection", container).each(function() { + var container = $(this), + fieldname = $(this).attr("data-field"); + // only collections with the correct prefix + if(!data || !fieldname || fieldname.indexOf(prefix+".") !== 0) { + return; + } + + // data for the collection filling + var colData = null; + + var cname = fieldname; + // remove the prefix + if (prefix) { + cname = cname.substring(prefix.length + 1); + } + colData = that._get(data, cname); + + if(colData) { + // fill the collection + that._fillList(container, colData, cname); + } + }); + }; + + /** + * @param container the container element + * @param data an array containing the the data + * @param prefix a prefix for each line of data + * @param lineFunc function(line,cur) - can return false to skip the line + * @private + */ + JsForm.prototype._fillList = function(container, data, prefix, lineFunc) { + var tmpl = container.data("template"), + that = this; + if(!tmpl) { + return; + } + // clean out previous list + container.empty(); + + // not an array + if(!$.isArray(data)) { + return; + } + + // cut away any prefixes - only the fieldname is used + if(prefix.indexOf('.') !== -1) { + prefix = prefix.substring(prefix.lastIndexOf('.')+1); + } + + + // check if we need to sort the array + if(container.hasClass("sort")) { + var sortField = container.attr("data-sort"); + if(sortField) { + switch(container.attr("data-sorttype")) { + case 'alpha': + data.sort(); + break; + case 'alphainsensitiv': + data.sort(function(a,b){ + a = a[sortField]; + b = b[sortField]; + if(a) a = a.toLowerCase(); + if(b) b = b.toLowerCase(); + if(ab) + return 1; + return 0; + }); + break; + default: + data.sort(function(a,b){ + return a[sortField] - b[sortField]; + }); + } + // descending: reverse + if(container.attr("data-sortdesc")) { + data.reverse(); + } + } + } + + if(!lineFunc) { + if($.isFunction(prefix)) { + lineFunc = prefix; + prefix = null; + } + } + + for(var i = 0; i < data.length; i++) { + var cur = data[i]; + var line = tmpl.clone(true); + // save current line + line.data().pojo = cur; + line.addClass("POJO"); + + if(lineFunc) { + if(lineFunc(line, cur) === false) { + continue; + } + } + + that._addCollectionControls(line); + + // trigger a callback + container.trigger("addCollection", [line, cur]); + + if(prefix) { + // fill data - including the index + that._fillData(line, cur, prefix, i+1); + // enable collection controls + that._initCollection(line, prefix); + // fill with data + that._fillCollection(line, cur, prefix); + } + container.append(line); + + // trigger a callback + container.trigger("postAddCollection", [line, $(line).data().pojo]); + + } + }; + + /** + * add controls into a collection entry(i.e. delete) + * @param line the new collection + * @private + */ + JsForm.prototype._addCollectionControls = function(line) { + var that = this; + + // enable controls on the line + if($.jsFormControls) { + $(line).jsFormControls(); + } + + $(".delete", line).click(function(){ + var ele = $(this).closest(".POJO"); + var pojo = $(ele).data().pojo; + var base = $(this).closest(".collection"); + ele.detach(); + // trigger a callback + $(base).trigger("deleteCollection", [ele, pojo]); + }); + $(".sortUp", line).click(function(){ + // check if there is an up + var ele = $(this).closest(".POJO"); + var prev = ele.prev(".POJO"); + if(prev.size() === 0) { + // no previous element - return + return; + } + ele.detach(); + prev.before(ele); + // reorder (if possible) + that._reorder(ele); + }); + $(".sortDown", line).click(function(){ + // check if there is a down + var ele = $(this).closest(".POJO"); + var next = ele.next(".POJO"); + if(next.size() === 0) { + // no next element - return + return; + } + ele.detach(); + next.after(ele); + // reorder (if possible) + that._reorder(ele); + }); + + // if collection is sortable: refresh it + var container = $(line).closest(".collection"); + if(container.hasClass("sortable")&& $(container).sortable) { + container.sortable("refresh"); + } + }; + + /** + * Reorder a collection (actually its fields) + * @param ele one element of the collection or the collection itself + * @private + */ + JsForm.prototype._reorder = function(ele) { + if(!ele.attr("data-sort")) { + ele = ele.closest(".collection"); + } + + // get the field to use for sorting + var sortField = $(ele).attr("data-sort"); + if(!sortField || ($(ele).attr("data-sorttype") && $(ele).attr("data-sorttype") !== "number") || + ($(ele).attr("data-sortdesc") && $(ele).attr("data-sortdesc") !== "false")) { + return; + } + + // go through each child and get the pojo + var prio = 0; + $.each($(ele).children(), function(){ + var data = $(this).data("pojo"); + // no data yet - add one + if(!data) { + data = {}; + $(this).data("pojo", data); + } + + data[sortField] = prio++; + }); + }; + + /** + * render an object based on a string. + * Note: comma is a special char and cannot be used! + * @param obj the object + * @param skin the string to render with (i.e. id, ":", test) + * @private + */ + JsForm.prototype._renderObject = function(obj, skin, renderer) { + if(!obj || (!skin && !renderer)) + return ""; + if(renderer) { + if(this.options.renderer && this.options.renderer[renderer]) + return this.options.renderer[renderer](obj); + this._debug("Unable to find renderer: " + renderer); + return ""; + } + + var that = this; + var ret = ""; + $.each(skin.split(","), function(){ + var val = this.trim(); + if(val.indexOf("'") === 0 || val.indexOf('"') === 0) { + ret += val.substring(1, val.length - 1); + } else { + ret += that._get(obj, val); + } + }); + return ret; + }; + + /** + * Retrieve a value from a given object by using dot-notation + * @param obj the object to start with + * @param expr the child to get (dot notation) + * @param create set to true and non-existant levels will be created (always returns non-null) + * @param idx only filles when filling collection - can be access using $idx + * @private + */ + JsForm.prototype._get = function(obj, expr, create, idx) { + var ret, p, prm = "", i; + if(typeof expr === "function") { + return expr(obj); + } + if (!obj) { + return ""; + } + // reference the object itself + if(expr === "") + return obj; + + // reference to the index + if(expr === "$idx") + return idx; + + ret = obj[expr]; + if(!ret) { + try { + if(typeof expr === "string") { + prm = expr.split('.'); + } + + i = prm.length; + if(i) { + ret = obj; + while(ret && i--) { + p = prm.shift(); + // create the levels + if(create && !ret[p]) { + ret[p] = {}; + } + ret = ret[p]; + } + } + } catch(e) { /* ignore */ } + } + if(ret === null || ret === undefined) { + ret = ""; + } + // trim the return + if(ret.trim) { + return ret.trim(); + } + return ret; + }; + + /** + * Parse a dot notation that includes arrays + * http://stackoverflow.com/questions/13355278/javascript-how-to-convert-json-dot-string-into-object-reference + * @param obj + * @param path a dot notation path to search for. Use format parent[1].child + */ + JsForm.prototype._getValueWithArrays = function(obj, path) { + path = path.split('.'); + var arrayPattern = /(.*)\[(\d+)\]/; + for (var i = 1; i < path.length; i++) { + var match = arrayPattern.exec(path[i]); + try { + if (match) { + obj = obj[match[1]][parseInt(match[2], 10)]; + } else { + obj = obj[path[i]]; + } + } catch(e) { + this._debug(path + " " + e); + } + } + + return obj; + }; + + /** + * get the "parent" object of a given dot-notation. this will not return the actual + * element given in the dot notation but itws parent (i.e.: when using a.b.c -> it will return b) + * @param obj the object to start with + * @param the child to get (dot notation) + * @param create set to true and non-existant levels will be created (always returns non-null) + * @private + */ + JsForm.prototype._getParent = function(obj, expr, create) { + if(expr.indexOf('.') === -1) + return obj; + + expr = expr.substring(0, expr.lastIndexOf('.')); + return this._get(obj, expr, create); + }; + + /** + * helper function to get the number of a value + * @param num the string + * @returns a number or null + * @private + */ + JsForm.prototype._getNumber = function(num) { + if (!num) { + return null; + } + + // check if we have jsForm controls (internationalization) + if($.jsFormControls) + return $.jsFormControls.Format._getNumber(num); + + // remove thousand seperator... + if(num.indexOf(",") != -1) + { + num = num.replace(new RegExp(",", 'g'), ""); + } + + + return Number(num); + }; + + /** + * checks if a variable is empty. This will check array, and whole objects. If a json object + * only contains empty "elements" then it is considered as empty. + * Empty for a number is 0/-1 + * Empty for a boolena is false + * + * @param pojo the pojo to check + * @returns {Boolean} true if it is empty + * @private + */ + JsForm.prototype._isEmpty = function(pojo) { + // boolean false, null, undefined + if(!pojo) { + return true; + } + + // array + if($.isArray(pojo)) { + // zero length + if(pojo.length === 0) { + return true; + } + + // check each element + for(var i = 0; i < pojo.length; i++) { + if(!this._isEmpty()) { + return false; + } + } + return true; + } + // an object + if($.isPlainObject(pojo)) { + if($.isEmptyObject(pojo)) { + return true; + } + + for(var f in pojo){ + if(!this._isEmpty(pojo[f])) { + return false; + } + } + return true; + } + + // a number + if(!isNaN(pojo)) { + if (Number(pojo) === 0 || Number(pojo) === -1) { + return true; + } + return false; + } + + // a string + return (pojo === "" || pojo === " "); + }; + + /** + * compares two objects. note: empty string or null is the same as not existant + * @param a the object to compare + * @param b the object to compare with + * @param idField if set then used for sub-objects instead of complete compare + * @return true if they contain the same content, false otherwise + */ + JsForm.prototype._equals = function(a, b, idField) + { + // empty arrays + if(!a && b && b.length && b.length === 0) { + return true; + } + if(!b && a && a.length && a.length === 0) { + return true; + } + + if(!a && !b) { + return true; + } + + var p = null; + for(p in a) { + if(typeof(b[p]) === 'undefined' && a[p] !== null && a[p] !== "" && a[p].length !== 0) { + // 0 == undefined + if((a[p] === "0" || a[p] === 0) && !b[p]) + continue; + return false; + } + + if (a[p]) { + switch(typeof(a[p])) { + case 'object': + if(idField && a[p][idField]) { + if (a[p][idField] === b[p][idField]) + continue; + } + // go deep + if (!this._equals(a[p], b[p])) { + return false; + } + break; + case 'function': // skip functions + break; + default: + // both are "false" + if(!a[p] && !b[p]) { + break; + } + + if((a === true || a === false) && a !== b) { + return false; + } + if(!isNaN(a[p]) || !isNaN(b[p])) { + if(Math.abs(Number(a[p]) - Number(b[p])) < 0.0000001) { + break; + } + return false; + } + + if(("" + a[p]).length !== ("" +b[p]).length) { + return false; + } + + if (a[p] !== b[p] && Number(a[p]) !== Number(b[p])) { + return false; + } + } + } else { + if (b[p]) { + return false; + } + } + } + + for(p in b) { + if((!a || typeof(a[p]) === 'undefined') && b[p] !== null && b[p] !== "") { + return false; + } + } + + return true; + }; + + /** + * Compares a pojo with the current generated object + * @param pojo the pojo to compare with + * @return true if any change between formfields and the pojo is found + */ + JsForm.prototype.equals = function(pojo, idField) { + var obj = this.get(false); + return this._equals(obj, pojo, idField); + }; + + /** + * Compares the current form with the last time the form was filled. + * + * @returns {Boolean} true if the form has changed since the last fill + */ + JsForm.prototype.changed = function() { + if(!this.options.trackChanges) + return false; + + var changed = false; + var that = this; + $.each(this._getForm(), function(){ + if($("." + that.options.trackChanges, this).size() > 0) { + changed = true; + return false; + } + }); + + return changed; + }; + + /** + * Resets any changes and updates the dat abased on the input + */ + JsForm.prototype.resetChanged = function() { + if(!this.options.trackChanges) + return false; + + var changed = false; + var that = this; + $.each(this._getForm(), function(){ + $("." + that.options.trackChanges, this).each(function(){ + $(this).removeClass(that.options.trackChanges); + $(this).data().orig = $(this).val(); + }); + }); + + return changed; + }; + + JsForm.prototype._equalsCollection = function(form, prefix, pojo) { + var that = this; + var differs = false; + + $(".collection", form).each(function() { + if(differs) { + return; + } + + var fieldname = $(this).attr("data-field"); + // only collections with the correct prefix + if(!fieldname || fieldname.indexOf(prefix+".") !== 0) { + return; + } + + fieldname = fieldname.substring((prefix+".").length); + if(fieldname.length < 1) { + return; + } + + var childCounter = 0; + // go through all direct childs - each one is an element + $(this).children().each(function(){ + if(differs) { + return; + } + + // check if we have more elements + if(childCounter >= pojo[fieldname].length) { + differs = true; + return; + } + + var ele = pojo[fieldname][childCounter++]; + if(that._pojoDifferFromInput($(this), fieldname, ele)) { + differs = true; + } + + if(!that._equalsCollection($(this), fieldname, ele)) + differs = true; + }); + + if(pojo[fieldname] && childCounter < pojo[fieldname].length) { + differs = true; + } + }); + + // we want to know if its equals -> return not + return !differs; + }; + + /** + * fill the form with data. + * + * @param data {object} the data + */ + JsForm.prototype.fill = function(pojo) { + // set the new data + this.options.data = $.extend({}, pojo); + // fill everything + this._fill(); + }; + + /** + * re-evaluate the conditionals in the form based on the given data. + * if no data is given, the form is serialized + * @param data {object} the data + */ + JsForm.prototype.applyConditions = function(pojo) { + // set the new data + if(!pojo) + pojo = this.get(true); + + // evaluate everything + this._evaluateConditionals(this.element, pojo); + }; + + /** + * reset a form with the last data, overwriting any changes. + */ + JsForm.prototype.reset = function() { + // fill with empty object + this.fill({}); + }; + + /** + * Clear all fields in a form + */ + JsForm.prototype.clear = function() { + var that = this; + $.each(this._getForm(), function(){ + that._clear(this, that.options.prefix); + }); + }; + + /** + * destroy the jsform and its resources. + * @private + */ + JsForm.prototype.destroy = function( ) { + return $(this.element).each(function(){ + $(this).removeData('jsForm'); + + if($.jsFormControls) { + // handle multiple form parts + $(this).jsFormControls("destroy"); + } + }); + }; + + // init and call methods + $.fn.jsForm = function ( method ) { + // Method calling logic + if ( typeof method === 'object' || ! method ) { + return this.each(function () { + if (!$(this).data('jsForm')) { + $(this).data('jsForm', new JsForm( this, method )); + } + }); + } else { + var args = Array.prototype.slice.call( arguments, 1 ), + jsForm; + // none found + if(this.length === 0) { + return null; + } + // only one - return directly + if(this.length === 1) { + jsForm = $(this).data('jsForm'); + if (jsForm) { + if(method.indexOf("_") !== 0 && jsForm[method]) { + var ret = jsForm[method].apply(jsForm, args); + return ret; + } + + $.error( 'Method ' + method + ' does not exist on jQuery.jsForm' ); + return false; + } + } + + return this.each(function () { + jsForm = $.data(this, 'jsForm'); + if (jsForm) { + if(method.indexOf("_") !== 0 && jsForm[method]) { + return jsForm[method].apply(jsForm, args); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.jsForm' ); + return false; + } + } + }); + } + }; + + /** + * global jsForm function for intialisation + */ + $.jsForm = function ( name, initFunc ) { + var jsForms = JSFORM_MAP[name]; + // initFunc is a function -> initialize + if($.isFunction(initFunc)) { + // call init if already initialized + if(jsForms) { + $.each(jsForms, function(){ + initFunc(this, $(this.element)); + }); + } + + // remember for future initializations + JSFORM_INIT_FUNCTIONS[name] = initFunc; + } else { + // call init if already initialized + if(jsForms) { + var method = initFunc; + var args = Array.prototype.slice.call( arguments, 2 ); + $.each(portlets, function(){ + this[method].apply(this, args); + }); + } + } + }; + +})( jQuery, window ); + +/** + * jquery.jsForm.controls + * ---------------------- + * UI Controls and Field validation + * @version 1.0 + * @class + * @author Niko Berger + * @license MIT License GPL + */ +;(function( $, window, undefined ){ + "use strict"; + + var JSFORM_INIT_FUNCTIONS = {}, // remember initialization functions + JSFORM_MAP = {}; // remember all forms + + /** + * handlebars extension (+simple date format) + */ + if(typeof Handlebars !== "undefined") { + Handlebars.registerHelper("currency", function(data){ + if(!data) + return $.jsFormControls.Format.currency(0); + return $.jsFormControls.Format.currency(data); + }); + Handlebars.registerHelper("dec", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.decimal(data); + }); + Handlebars.registerHelper("percent", function(data){ + if(!data) + return "0"; + return $.jsFormControls.Format.decimal(data*100); + }); + Handlebars.registerHelper("date", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.date(data); + }); + Handlebars.registerHelper("time", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.time(data); + }); + Handlebars.registerHelper("datetime", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.dateTime(data); + }); + Handlebars.registerHelper("dateTime", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.dateTime(data); + }); + Handlebars.registerHelper("timespan", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.humanTime(data); + }); + Handlebars.registerHelper("byte", function(data){ + if(!data) + return ""; + return $.jsFormControls.Format.byte(data); + }); + } + + function JsFormControls(element) { + this.element = element; + + // init the dom functionality + this._domInit(); + } + + /** + * init the dom. This can be called multiple times. + * this will also enable "add", "insert" and "delete" for collections + * @private + */ + JsFormControls.prototype._domInit = function() { + var location = $(this.element); + // validation + // check required (this is the first check) + location.find("input.mandatory,textarea.mandatory").on("keyup", function(){ + // check for "null" as value as well + if($(this).val().length > 0 && $(this).val() !== "null") { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + }); + + location.find("input.mandatory,textarea.mandatory").on("change", function(){ + if($(this).hasClass("object")) { + if($(this).data().pojo) { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + return; + } + // check for "null" as value as well + if($(this).val().length > 0 && $(this).val() !== "null") { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + }).change(); + + location.find("select.mandatory").change(function(){ + // check for "null" as value as well + if($(this).val() !== null && $(this).val() !== "null" && $(this).val().length > 0) { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + }).change(); + + // show datepicker for all inputs + location.find("input.date").each(function(){ + var format = $(this).attr("data-format"); + // only if jquery ui is available + if($(this).datepicker) { + if(format) + $(this).datepicker({dateFormat: format}); + else + $(this).datepicker(); + } + }); + + + // input validation (number) + var numberRegexp = new RegExp("^[0-9.,-]+$"); + location.find("input.number").keyup(function(){ + var val = $(this).val(); + if($(this).hasClass("currency") && val) + val = $.jsFormControls.Format._getNumber(val); + if(val.length > 0) { + if($(this).hasClass("autoclean")) { + $(this).val(val.replace(/[^0-9.,-]/g, "")); + } + else { + if(numberRegexp.test($(this).val())) { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + } + } + }).keyup(); + + // currency formatting (add decimal) + location.find("input.currency").each(function(){ + $(this).on("change blur", function(){ + var val = $(this).val(); + if(val.length > 0) { + $(this).val($.jsFormControls.Format.currency($.jsFormControls.Format._getNumber(val))); + } + }); + + $(this).focus(function(){ + var val = $(this).val(); + if(val.length > 0) { + $(this).val($.jsFormControls.Format._getNumber(val)); + } + }); + }); + + location.find("input.percent").change(function(){ + var val = $(this).val(); + if(val.length > 0) { + $(this).val($.jsFormControls.Format.decimal($.jsFormControls.Format._getNumber(val))); + } + + $(this).focus(function(){ + var val = $(this).val(); + if(val.length > 0) { + $(this).val($.jsFormControls.Format._getNumber(val)); + } + }); + }); + + + // decimal formatting (add decimal) + location.find("input.decimal").change(function(){ + var val = $(this).val(); + if(val.length > 0) { + $(this).val($.jsFormControls.Format.decimal($.jsFormControls.Format._getNumber(val))); + } + }); + + var integerRegexp = new RegExp("^[0-9]+$"); + location.find("input.integer").keyup(function(){ + var val = $(this).val(); + if(val.length > 0) { + if($(this).hasClass("autoclean")) { + $(this).val(val.replace(/[^0-9]/g, "")); + } + else { + if(integerRegexp.test($(this).val())) { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + } + } + }).keyup(); + + // regular expression + location.find("input.regexp").each(function(){ + if($(this).hasClass("autoclean")) { + $(this).data("regexp", new RegExp($(this).attr("data-regexp"), 'g')); + } + else { + $(this).data("regexp", new RegExp($(this).attr("data-regexp"))); + } + + $(this).keyup(function(){ + var val = $(this).val(); + if(val.length > 0) { + var regexp = $(this).data("regexp"); + if($(this).hasClass("autoclean")) { + $(this).val(val.replace(regexp, "")); + } + else { + if(regexp.test($(this).val())) { + $(this).addClass("valid").removeClass("invalid"); + } else { + $(this).removeClass("valid").addClass("invalid"); + } + } + } else { + // if not mandatory: nothing is valid + if(!$(this).hasClass("mandatory")) { + $(this).removeClass("invalid").addClass("valid"); + } + } + }).keyup(); + $(this).change(function(){ + $(this).keyup(); + }); + }); + + /* rotatestate stontrol */ + location.find("input.rotatestate").each(function(){ + var states = $(this).attr("data-state-values"); + var defaultClass = $(this).attr("data-state-class"); + // no need to continue if there are no states + if(!states) { + return; + } + + try { + states = JSON.parse(states); + } catch (ex) { + // do not need to continue if we cannot parse the states + return; + } + + var stateControl = $(""); + if($(this).attr("title")) { + stateControl.attr("title", $(this).attr("title")); + } + if($(this).attr("data-state-style")) { + stateControl.attr("style", $(this).attr("data-state-style")); + } + stateControl.data("states", states); + stateControl.data("control", this); + stateControl.data("activeState", null); + $(this).data("control", stateControl); + if(defaultClass) { + stateControl.addClass(defaultClass); + } + + // click on the control starts rotating + stateControl.click(function(){ + var cState = $(this).data().activeState; + var cStates = $(this).data().states; + var control = $(this).data().control; + var newState = null; + + if(cState !== null) { + // go to the 'next' state + for(var i = 0; i < cStates.length; i++) { + if(cStates[i].value === cState.value) { + // last element + if(i === cStates.length - 1) { + newState = cStates[0]; + } else { + newState = cStates[i+1]; + } + break; + } + } + } else { + // no state yet - set the first entry as state + newState = cStates[0]; + } + + $(control).attr("value", newState.value); + // trigger change + $(control).change(); + }); + + // make sure to update state if the value is changed + $(this).change(function(){ + var control = $($(this).data().control); + var cState = control.data().activeState; + var cStates = control.data().states; + + if(cState !== null) { + // remove "old state" + control.removeClass(cState['class']); + } + + // add new State + var val = $(this).val(); + $.each(cStates, function(){ + if(this.value === val) { + control.data().activeState = this; + if(this.title) { + control.attr("title", this.title); + } + control.addClass(this['class']); + return false; + } + }); + }); + + // trigger initial state + $(this).change(); + $(this).after(stateControl); + $(this).hide(); + }); + }; + + + /** + * validate a given form + * @return true if the form has no invalid fields, false otherwise + */ + JsFormControls.prototype.validate = function() { + // validation + $(".required,.regexp,.date,.mandatory,.number,.validate", this.element).change(); + + // check for invalid fields + if($(".invalid", this.element).length > 0) { + return false; + } + + return true; + }; + + /** + * destroy the jsformcontrols and its resources. + * @private + */ + JsFormControls.prototype.destroy = function( ) { + return $(this.element).each(function(){ + $(this).removeData('jsFormControls'); + }); + }; + + + // init and call methods + $.fn.jsFormControls = function ( method ) { + // Method calling logic + if ( typeof method === 'object' || ! method ) { + return this.each(function () { + if (!$(this).data('jsFormControls')) { + $(this).data('jsFormControls', new JsFormControls( this, method )); + } + }); + } else { + var args = Array.prototype.slice.call( arguments, 1 ); + + // only one - return directly + if(this.length == 1) { + var jsFormControls = $(this).data('jsFormControls'); + if (jsFormControls) { + if(method.indexOf("_") !== 0 && jsFormControls[method]) { + var ret = jsFormControls[method].apply(jsFormControls, args); + return ret; + } + + $.error( 'Method ' + method + ' does not exist on jQuery.jsFormControls' ); + return false; + } + } + + return this.each(function () { + var jsFormControls = $.data(this, 'jsFormControls'); + if (jsFormControls) { + if(method.indexOf("_") !== 0 && jsFormControls[method]) { + return jsFormControls[method].apply(jsFormControls, args); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.jsFormControls' ); + return false; + } + } + }); + } + }; + + /** + * global jsForm function for intialisation + */ + $.jsFormControls = function ( name, initFunc ) { + var jsForms; + // initFunc is a function -> initialize + if($.isFunction(initFunc)) { + // call init if already initialized + jsForms = JSFORM_MAP[name]; + if(jsForms) { + $.each(jsForms, function(){ + initFunc(this, $(this.element)); + }); + } + + // remember for future initializations + JSFORM_INIT_FUNCTIONS[name] = initFunc; + } else { + // call init if already initialized + jsForms = JSFORM_MAP[name]; + if(jsForms) { + var method = initFunc; + var args = Array.prototype.slice.call( arguments, 2 ); + $.each(portlets, function(){ + this[method].apply(this, args); + }); + } + } + }; + + $.jsFormControls.Format = { + /** + * format a string based on teh classes in a dom element + */ + format: function(ele, cdata) { + if($(ele).hasClass("dateTime")) { + if(isNaN(cdata)) + return cdata; + return $.jsFormControls.Format.dateTime(cdata); + } if($(ele).hasClass("datetime")) { + if(isNaN(cdata)) + return cdata; + return $.jsFormControls.Format.dateTime(cdata); + } else if($(ele).hasClass("date")) { + if(isNaN(cdata)) + return cdata; + return $.jsFormControls.Format.date(cdata); + } else if($(ele).hasClass("currency")) { + return $.jsFormControls.Format.currency(cdata); + } else if($(ele).hasClass("byte")) { + if(isNaN(cdata)) + return cdata; + return $.jsFormControls.Format.byte(cdata); + } else if($(ele).hasClass("decimal")) { + return $.jsFormControls.Format.decimal(cdata); + } else if($(ele).hasClass("percent")) { + return $.jsFormControls.Format.decimal(cdata); + } + + return cdata; + }, + + /** + * internal function that tries to identify where the value is. + * This is necessary to support direct call, jqGrid and slickGrid + * @param row + * @param cell + * @param value + * @param columnDef + * @param dataContext + * @private + */ + _getValue: function(row, cell, value, columnDef, dataContext) { + // if value is undefined: this is probably a direct call + if(typeof cell === "undefined" && typeof value === "undefined") { + return row; + } + + // check for slickGrid: row/cell/value + if(!isNaN(row) && typeof cell !== "undefined" && typeof value !== "undefined") { + return value; + } + }, + + /** + * format boolean into an ui-icon + * @param value true or false + * @returns the ui-icon span + */ + checkBox: function(row, cell, value, columnDef, dataContext) { + value = $.jsFormControls.Format._getValue(row, cell, value, columnDef); + + if(value) { + return ' '; + } else { + return ' '; + } + + return value; + }, + + + /** + * take a string and convert it into a number + * @private + */ + _getNumber: function(num) { + if (!num) { + return null; + } + + // default number format + var numberformat = { + format: "#,##0.###", + groupingSeparator: ",", + decimalSeparator: "." + }; + var pre = null, post = null; + if(typeof i18n !== "undefined") { + numberformat = i18n.number; + if(i18n.currency) { + pre = i18n.currency.prefix; + post = i18n.currency.suffix; + } + } + else if($(document).data().i18n && $(document).data().i18n.number) { + numberformat = $(document).data().i18n.number; + if($(document).data().i18n.currency) { + pre = $(document).data().i18n.currency.prefix; + post = $(document).data().i18n.currency.suffix; + } + } + + // make sure num is a string + num = "" + num; + + // check for currency pre/postfix + if(pre && pre.length > 0){ + if(num.indexOf(pre) === 0) + num = num.substring(pre.length); + } + if(post && post.length > 0){ + if(num.indexOf(post) > 0) + num = num.substring(0, num.length - post.length); + } + + num = $.trim(num); + // get rid of the grouping seperator (if any exist) + if(num.indexOf(numberformat.groupingSeparator) !== -1) + num = num.replace(new RegExp("\\" +numberformat.groupingSeparator, 'g'), ""); + // now convert the decimal seperator into a "real" decimal + if(numberformat.decimalSeparator !== '.' && num.indexOf(numberformat.decimalSeparator) !== -1) { + num = num.replace(new RegExp(numberformat.decimalSeparator, 'g'), "."); + } + + return Number(num); + }, + + + /** + * @private + */ + _pad: function(val) { + var o = (val < 10) ? "0" : ""; + o += val; + return o; + }, + + asNumber: function(value) { + return $.jsFormControls.Format._getNumber(value); + }, + + byte: function(bytes) { + if (bytes === "" || !bytes || isNaN(bytes)) { + return bytes; + } + + var unit = 1024; + if (bytes < unit) return bytes + " B"; + var exp = Math.floor(Math.log(bytes) / Math.log(unit)); + var pre = "KMGTPE".charAt(exp-1) + "B"; + return Math.round(bytes*10 / Math.pow(unit, exp))/10 + pre; + }, + + /** + * @private + */ + decimal: function(num) { + if (num === "" || !num || isNaN(num)) { + return num; + } + + // default number format + var numberformat = { + format: "#,##0.###", + groupingSeparator: ",", + decimalSeparator: "." + }; + + if(typeof i18n !== "undefined") + numberformat = i18n.number; + else if($(document).data().i18n && $(document).data().i18n.number) + numberformat = $(document).data().i18n.number; + + var comma = 0; + if (Math.abs(num - Math.floor(num)) > 0.001) { + comma = 2; + } + // convert to a nice number for display + var n = num, + c = isNaN(c = Math.abs(comma)) ? 2 : comma, + d = numberformat.decimalSeparator, // decimal d == undefined ? "," : d, + t = numberformat.groupingSeparator, // thousand: t == undefined ? "." : t, + i = parseInt(n = Math.abs( +n || 0).toFixed(c), 10) + "", + j = (j = i.length) > 3 ? j % 3 : 0; + return (num<0 ? "-" : "") + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); + }, + + + /** + * @private + */ + currency: function(row, cell, value, columnDef, dataContext) { + value = $.jsFormControls.Format._getValue(row, cell, value, columnDef); + + if(!value) { + if(cell) { + return " "; + } + value = 0; + } + + var num = $.jsFormControls.Format.decimal(value); + // check for currency + var pre = null, post = null; + if(typeof i18n !== "undefined") { + if(i18n.currency) { + pre = i18n.currency.prefix; + post = i18n.currency.suffix; + } + } + else if($(document).data().i18n && $(document).data().i18n.number) { + if($(document).data().i18n.currency) { + pre = $(document).data().i18n.currency.prefix; + post = $(document).data().i18n.currency.suffix; + } + } + if(pre) + num = pre + num; + if(post) + num = num + post; + return num; + }, + + /** + * @private + */ + dateTime: function(row, cell, value, columnDef, dataContext) { + value = $.jsFormControls.Format._getValue(row, cell, value, columnDef); + + if(!value) { + if(cell) { + return " "; + } + return ""; + } + + return (this.date(value) + " " + this.time(value)); + }, + + /** + * @private + */ + date: function(row, cell, value, columnDef, dataContext) { + value = $.jsFormControls.Format._getValue(row, cell, value, columnDef); + if(!value || value === "" || isNaN(value)) { + if(cell) { + return " "; + } + return ""; + } + + var d = new Date(); + d.setTime(value); + var year = d.getYear(); + if(year < 1900) { + year += 1900; + } + + // default number format + var dateformat = null; + + if(typeof i18n !== "undefined") + dateformat = i18n.date; + else if($(document).data().i18n && $(document).data().i18n.date) + dateformat = $(document).data().i18n.date; + + if($.format) + return $.format.date(d, dateformat.shortDateFormat); + else + return this._pad(d.getDate()) + "." + this._pad((d.getMonth()+1)) + "." + this._pad(year); + }, + + /** + * @private + */ + time: function(row, cell, value, columnDef, dataContext) { + value = $.jsFormControls.Format._getValue(row, cell, value, columnDef); + if(!value || value === "" || isNaN(value)) { + if(cell) { + return " "; + } + return ""; + } + + var d = new Date(); + d.setTime(value); + + var timeFormat = "HH:mm"; + if(typeof i18n !== "undefined") { + if(i18n.timeFormat) + timeFormat = i18n.timeFormat; + else if (i18n.date && i18n.date.timeFormat) + timeFormat = i18n.date.timeFormat; + } else if($(document).data().i18n && typeof $(document).data().i18n.timeFormat !== "undefined") + timeFormat = $(document).data().i18n.timeFormat; + + if($.format) + return $.format.date(d, timeFormat); + else + return this._pad(d.getHours()) + ":" + this._pad(d.getMinutes()); // + ":" + pad(d.getSeconds()); don't need seconds + }, + + /** + * + * @param value a string value to format + * @param allowms true to allow komma (i.e. 00.00) + * @return something in the form of 00:00.00 + * @private + */ + timespan: function(row, cell, value, columnDef, dataContext) { + value = $.jsFormControls.Format._getValue(row, cell, value, columnDef); + + var tokens = value.split(":"); + // check each token + for(var i=0; i 0) { + out += h + "h "; + // ignore seconds and milliseconds if we have hours + s = 0; + value = 0; + } + if (m > 0) { + out += m + "m "; + // ignore milliseconds + value = 0; + } + if (s > 0) { + out += s + "s "; + value = 0; + } + + if (value > 0) { + out += value + "ms"; + } + // trim output + return out.trim(); + } + }; + +})( jQuery, window ); + + +/** + * @returns the trimmed string + */ +String.prototype.trim = function() { + return this.replace(/^\s+|\s+$/g, ""); +}; + +/* check start of a string */ +String.prototype.startsWith = function(str) { + if((this === null) || (this.length <= 0)) + return false; + if((str === null) || (str == "null") || (str.length <= 0)) + return false; + if(this.substr(0, str.length) == str) + return true; + return false; +}; + +/* check start of a string */ +String.prototype.startsWithIgnoreCase = function(str) { + if((this === null) || (this.length <= 0)) + return false; + if((str === null) || (str == "null") || (str.length <= 0)) + return false; + if(this.substr(0, str.length).toLowerCase() == str.toLowerCase()) + return true; + return false; +}; + +/* check end of a string */ +String.prototype.endsWith = function(str) { + if((this === null) || (this.length <= 0)) + return false; + if((str === null) || (str == "null") || (str.length <= 0) || (str.length > this.length)) + return false; + if(this.substr(this.length - str.length) == str) + return true; + return false; +}; \ No newline at end of file diff --git a/dist/jquery.jsForm.1.1.3.min.js b/dist/jquery.jsForm.1.1.3.min.js new file mode 100644 index 0000000..42fa34d --- /dev/null +++ b/dist/jquery.jsForm.1.1.3.min.js @@ -0,0 +1,7 @@ +/*! + * jQuery.jsForm v1.1.3 | (c) 2013 Niko Berger http://www.gargan.org/ + * Usage: https://github.com/corinis/jsForm + */ +(function(t,e,a){"use strict";function i(e,a){var i=t(e);this.options=t.extend({},{controls:!0,data:null,prefix:"data",trackChanges:"changed",validateHidden:!0,skipEmpty:!1,renderer:null,processors:null,connect:null,viewClass:"value"},a),!i.attr("data-prefix")||"data"!==this.options.prefix&&""!==this.options.prefix||""!==i.attr("data-prefix")&&(this.options.prefix=i.attr("data-prefix")),this.element=e,this._init()}var s={},n={};i.prototype._init=function(){if(this._domInit(),this.options.controls)if(t.jsFormControls)t.each(this._getForm(),function(){t(this).jsFormControls()});else try{"undefined"!=typeof console&&console.log("jquery.JsForm.controls not available!")}catch(e){}this._fill(this.options)},i.prototype.connect=function(e){this._initCollection(e,this.options.prefix),this._initConditional(e,this.options.prefix,this.options),this.options.controls&&t.jsFormControls&&t(e).jsFormControls(),this._fillDom(e),this.options.connect||(this.options.connect=[]),this.options.connect.push(e)},i.prototype.getNodes=function(){return this._getForm()},i.prototype._domInit=function(){var e=this;t.each(this._getForm(),function(){e._initCollection(this,e.options.prefix),e._initConditional(this,e.options.prefix,e.options)})},i.prototype._debug=function(a,i){try{if(!e.console||!e.console.log)return;var s=null;s=t.isPlainObject(i)?JSON.stringify(i,null," "):i,s||(s=""),e.console.log(a+s)}catch(n){}},i.prototype._initConditional=function(e,a,i){var s=this,n=function(e,a,i){var n=!1;t.each(i,function(){var t=s._getValueWithArrays(a,this);if(t&&""!==t&&0!==t&&-1!==t)return n=!0,!1}),n?e.show():e.hide()},r=function(e,a,i){var n=!1;t.each(i,function(){var t=s._getValueWithArrays(a,this);if(t&&""!==t&&0!==t&&-1!==t)return n=!0,!1}),n?e.hide():e.show()};this.conditionals=t(e).find(".conditional"),this.conditionals.each(function(){t(this).data().conditionalEval=[];var e=t(this).attr("data-show");e&&e.length>0&&t(this).data().conditionalEval.push({func:n,field:e.split(" ")}),e=t(this).attr("data-hide"),e&&e.length>0&&t(this).data().conditionalEval.push({func:r,field:e.split(" ")}),e=t(this).attr("data-eval"),e&&e.length>0&&i.conditionals[e]&&t(this).data().conditionalEval.push({func:i.conditionals[e]})})},i.prototype._evaluateConditionals=function(e,a){this.conditionals.each(function(){var e=t(this);t.each(e.data().conditionalEval,function(){this.func(e,a,this.field)})})},i.prototype._initCollection=function(e,a){var i={},s=this;t(e).data().collections=i,t(".collection",e).each(function(){var e=t(this).attr("data-field");if(e&&0===e.indexOf(a+".")){var n=t(this),r=i[e];if(r?r.push(n):i[e]=[n],s._initList(n),!n.hasClass("ui-sortable")&&n.hasClass("sortable")&&n.sortable){var o=n.attr("data-sortable");o=o?JSON.parse(o):{},n.sortable(o),n.on("sortstop",function(){s._reorder(n)})}}}),t(".add",e).each(function(){var e=t(this).attr("data-field");e&&(t(this).data("collections")||(t(this).data().collections=i[e],t(this).click(function(a){a.preventDefault(),t.each(t(this).data("collections"),function(){var a=t(this).data("template");if(a){var i=a.clone(!0);t(i).addClass("POJO"),t(i).data().pojo={};var n=t(this).data("prefill");n||(n=t(this).val("data-prefill")),n&&(t.isFunction(n)?n(t(i).data().pojo,t(i)):n.substring?t(i).data().pojo=JSON.parse(n):t.isPlainObject(n)&&(t(i).data().pojo=n)),t(this).append(i),s._enableTracking(t("input,textarea,select",i)),s.options.trackChanges&&t("input,textarea,select",i).addClass(s.options.trackChanges),s._addCollectionControls(i),s._initCollection(i,e.substring(e.indexOf(".")+1)),t(this).trigger("addCollection",[i,t(i).data().pojo]);var r=t(this).children(".POJO").length;s._fillData(i,t(i).data().pojo,e.substring(e.indexOf(".")+1),r),t(this).trigger("postAddCollection",[i,t(i).data().pojo])}})})))}),t(".insert",e).each(function(){var e=t(this).attr("data-field");e&&(t(this).data("collections")||(t(this).data("collections",i[t(this).attr("data-field")]),t(this).on("insert",function(a,i){if(i||(i=t(this).data().pojo),i){var n=t(this).data("beforeInsert");n&&t.isFunction(n)&&!(i=n(i))||(t.each(t(this).data("collections"),function(){var a=t(this).data("template");if(a){var n=a.clone(!0);n.addClass("POJO"),n.data().pojo=i,s._addCollectionControls(n),s._initCollection(n),t(this).trigger("addCollection",[n,i]);var r=t(this).children(".POJO").length;s._fillData(n,i,e.substring(e.indexOf(".")+1),r),t(this).append(n),t(this).trigger("postAddCollection",[n,i])}}),t(this).val(""),t(this).data().pojo=null,t(this).focus())}})))}),t(".insertAction",e).each(function(){var e=t(this).attr("data-field");if(e&&!t(this).data("inserter")){var a=t(this).parent().find(".insert");a&&(t(this).data("inserter",a),t(this).click(function(e){return e.preventDefault(),t(this).data("inserter").trigger("insert"),!1}))}}),t("input.object",e).each(function(){t(this).on("update",function(){var e=t(this).data().pojo;e&&t(this).attr("data-display")&&t(this).val(s._renderObject(e,t(this).attr("data-display")))})}),t("input.blob",e).each(function(){if("file"===t(this).attr("type")){var e=t(this);t(this).on("change",function(a){var i=t(this).val().split(/\\/).pop();e.data("name",i);var s=a.target.files;s&&s.length&&t.each(s,function(){var a=new FileReader;a.onload=function(t){e.data("blob",t.target.result)},a.readAsDataURL(this),t(this).trigger("fileChange")})})}})},i.prototype._initList=function(t){if(!t.data("template")){var e=t.children().detach();e.removeAttr("id"),t.data("template",e)}},i.prototype._getForm=function(){var e=[t(this.element)];return this.options.connect&&t.each(this.options.connect,function(){e.push(t(this))}),e},i.prototype._clear=function(e,a){a||(a=this.options.prefix),t(e).removeData("pojo"),t("input,select,textarea",e).each(function(){var e=t(this).attr("name");e&&0===e.indexOf(a+".")&&(e=e.substring((a+".").length),1>e.length||(t(this).removeData("pojo"),"checkbox"===t(this).attr("type")?t(this).prop("checked",!1):t(this).val(""),t(this).hasClass("blob")&&t(this).removeData("blob"),t(this).is("select")&&(t('option[selected="selected"]',this).prop("selected",!1),t("option:first",this).prop("selected",!0),t(this).val(t("option:first",this).val()).change()),t(this).change()))}),t(".collection",e).each(function(){var e=t(this).attr("data-field");e&&0===e.indexOf(a+".")&&t(this).empty()})},i.prototype._createPojoFromInput=function(e,i,s){var n=null,r=this;return t(e).data("pojo")&&(n=t(e).data("pojo")),n&&t.extend(!0,s,n),t(e).find("input,select,textarea,.jsobject").each(function(){var e=t(this).attr("data-name");if(e||(e=t(this).attr("name")),e&&!t(this).hasClass("transient")&&0===e.indexOf(i+".")){t(this).trigger("validate",!0),e=e.substring((i+".").length);var n=t(this).val();if(t(this).hasClass("jsobject"))n=t(this).data("pojo");else{if(r.options.skipEmpty&&(!n||""===n||""===n.trim()))return;if(!t(this).hasClass("emptynull")||n&&""!==n&&"null"!==n&&""!==n.trim())if(t(this).hasClass("object")||t(this).hasClass("POJO"))if(n=t("option:selected",this).data()&&t("option:selected",this).data().pojo?t("option:selected",this).data().pojo:t(this).data("pojo"),t.isFunction(t(this).data().processor))n=t(this).data().processor(n);else{var o=t(this).attr("data-processor");o&&r.options.processors[o]&&(n=r.options.processors[o](n))}else t(this).hasClass("blob")?n=t(this).data("blob"):""===n&&(t(this).hasClass("number")||t(this).hasClass("percent")||t(this).hasClass("integer")||t(this).hasClass("dateFilter")||t(this).hasClass("dateTimeFilter"))&&(n=null);else n=null;if(t(this).hasClass("percent"))n=r._getNumber(n),isNaN(n)?n=0:n/=100;else if(t(this).hasClass("number")||t(this).hasClass("integer")){if(t(this).hasClass("date")&&isNaN(n))if(t.format){var l=t.format.date(n);l.setHours(0),l.setMinutes(0),l.setSeconds(0),l.setMilliseconds(0),n=l.getTime()}else n=new Date(n).getTime();else n=r._getNumber(n);isNaN(n)&&(n=0)}else"checkbox"===t(this).attr("type")||"CHECKBOX"===t(this).attr("type")?n=t(this).hasClass("array")?t(this).val():t(this).is(":checked"):t(this).hasClass("bool")&&(n="true"===t(this).val())}if(1>e.length)return s=n,!1;if(-1===e.indexOf("."))if(t(this).hasClass("array"))if(s[e]||(s[e]=[]),"checkbox"===t(this).attr("type")||"CHECKBOX"===t(this).attr("type")){var h=t(this).is(":checked"),c=!0;t.each(s[e],function(t,i){return this==n?(c=!1,h||s[e].splice(i,1),!1):a}),c&&h&&s[e].push(n)}else{var d=t(this).attr("data-array");d=!d||isNaN(d)?null:Number(d),null===d?s[e].push(n):s[e][d]=n}else s[e]=n;else{var u,f,p=e.split("."),m=s[p[0]];m&&t.isPlainObject(m)||(s[p[0]]={},m=s[p[0]]),2===p.length?m[p[1]]=n:3===p.length?(u=m[p[1]],(u===a||null===u)&&(u={},m[p[1]]=u),u[p[2]]=n):4===p.length&&(u=m[p[1]],(null===u||u===a)&&(u={},m[p[1]]=u),f=u[p[2]],(f===a||null===u)&&(f={},u[p[2]]=f),u[p[2]]=n,f[p[3]]=n)}}}),s},i.prototype._enableTracking=function(e){var a=this;a.options.trackChanges&&!t(e).data().track&&(t(e).data().track=!0,t(e).change(function(){t(this).val()!==t(this).data().orig?t(this).addClass(a.options.trackChanges):t(this).removeClass(a.options.trackChanges)}))},i.prototype._fillData=function(e,i,s,n){var r=this,o=t(e);o.find(".field").each(function(){var e=t(this).data("name");if(e||("A"===this.nodeName.toUpperCase()?(e=t(this).attr("href"),t(this).attr("href","#")):"IMG"===this.nodeName.toUpperCase()?(e=t(this).attr("src"),0===e.indexOf("#")&&(e=e.substring(1)),t(this).attr("src","#")):e=t(this).text(),t(this).data("name",e),t(this).show()),!s||e.indexOf(s+".")>=0){var a=e;s&&(a=a.substring(s.length+1));var o=r._get(i,a,!1,n);o||0===o||o===!1||(o=""),t(this).hasClass("percent")&&!isNaN(o)?o=100*Number(o):t(this).hasClass("currency")&&(o||(o=0)),t.jsFormControls&&(o=t.jsFormControls.Format.format(this,o)),"A"===this.nodeName.toUpperCase()?t(this).attr("href",o):"IMG"===this.nodeName.toUpperCase()?t(this).attr("src",o):"DIV"===this.nodeName.toUpperCase()?t(this).html(o):t(this).text(o)}}),t("input, textarea",o).each(function(){var e=t(this).attr("name");if(e&&(r._enableTracking(this),"file"!=t(this).attr("type")&&(!s||e.indexOf(s+".")>=0))){var o=e;s&&(o=o.substring(s.length+1));var l=r._get(i,o,!1,n);if(t(this).hasClass("object")?(t(this).data().pojo=l,t(this).addClass("POJO"),(t(this).attr("data-display")||t(this).attr("data-render"))&&(l=r._renderObject(l,t(this).attr("data-display"),t(this).attr("data-render")))):t(this).hasClass("jsobject")?(t(this).data().pojo=l,t(this).addClass("POJO")):t(this).hasClass("percent")&&!isNaN(l)?l=100*Number(l):t.isPlainObject(l)&&(t(this).data().pojo=l,t(this).addClass("POJO"),l=r._renderObject(l,t(this).attr("data-display"),t(this).attr("data-render"))),"checkbox"===t(this).attr("type"))if(t(this).hasClass("array")){var h=t(this).val(),c=!1;l&&t.each(l,function(){return this==h?(c=!0,!1):a}),t(this).prop("checked",c)}else t(this).prop("checked",l===!0||"true"===l);else if(l||(l=""),t.jsFormControls&&(l=t.jsFormControls.Format.format(this,l)),t(this).hasClass("array")){var d=t(this).attr("data-array");d=!d||isNaN(d)?null:Number(d),null!==d&&l&&l.length>d?t(this).val(l[d]):t(this).val("")}else t(this).val(l);r.options.trackChanges&&(t(this).data().orig=t(this).val()),t(this).change(),t(this).trigger("fill")}}),t("select",o).each(function(){var e=t(this).attr("name");if(e&&(!s||e.indexOf(s+".")>=0)){var o=e;s&&(o=o.substring(s.length+1)),r._enableTracking(this),t(this).children("option:selected").prop("selected",!1);var l=t(this).attr("data-key");l||(l="id");var h=r._get(i,o,!1,n);if(h[l]||!isNaN(h[l]))return t(this).children("option[value='"+h[l]+"']").prop("selected",!0),t(this).val(h[l]).change(),a;t(this).hasClass("bool")&&(h=h?"true":"false"),t(this).children("option[value='"+h+"']").prop("selected",!0),t(this).val(h),r.options.trackChanges&&(t(this).data().orig=t(this).val()),t(this).change().trigger("fill")}})},i.prototype.get=function(e){var a=this,i=this.options.data,s=this.options.prefix,n={};i&&t.isPlainObject(i)&&(n=t.extend({},i));var r=!1;return t.each(this._getForm(),function(){a._createPojoFromInput(this,s,n),a.options.validateHidden?this.find(".invalid").each(function(){return r=!0,t(this).focus(),!1}):this.find(".invalid").filter(":visible").each(function(){return r=!0,t(this).focus(),e||a._debug("Found invalid field: "+t(this).attr("name")),!1}),a._getCollection(this,s,n,e)&&(r=!0)}),!e&&r?null:n},i.prototype._getCollection=function(e,a,i,s){var n=this,r=!1;return e.find(".collection").each(function(){if(s||!r){var e=t(this).attr("data-field");if(e&&0===e.indexOf(a+".")){e=e.substring((a+".").length);var o=n._getParent(i,e,!0);-1!==e.indexOf(".")&&(e=e.substring(e.lastIndexOf(".")+1)),o[e]=[],t(this).children().each(function(){var a={};if(a=n._createPojoFromInput(t(this),e,a),n._getCollection(t(this),e,a,s),n._isEmpty(a))t(".invalid",this).removeClass("invalid");else{if(t(".invalid",this).length>0&&(r=!0,!s))return!1;o[e].push(a)}})}}}),r},i.prototype.getData=function(){return this.options.data||(this.options.data={}),this.options.data},i.prototype.preventEditing=function(e){var i=t(this.element),s=this.options.viewClass;if(e===a)e=i.data("disabled")?!1:!0;else if(e===i.data("disabled"))return;e?(i.find("input, textarea").each(function(){if(!t(this).closest("span."+s)[0]&&"hidden"!=t(this).attr("type")){var e=t(this).val();("null"===e||null===e||"submit"===t(this).attr("type"))&&(e=""),t(this).hasClass("trueFalse")&&(e=t(this).is(":checked")?"X":" "),e=e.replace(//g,">").replace(/\n/g,"
");var a=t(''+e+"");t(this).parent().hasClass("ui-wrapper")?t(this).parent().hide().wrap(a):t(this).hide().wrap(a)}}),i.find("select").each(function(){if(!t(this).closest("span."+s)[0]){var e=t(this).children(":selected").html();("null"===e||null===e)&&(e="");var a=t(''+e+"");t(this).hasClass("ui-toggle-switch")?t(this).prev().hide().wrap(a):t(this).hide().wrap(a)}})):i.find("span."+s).each(function(){var e=t(this).children("input,select,textarea,.ui-wrapper,.ui-toggle-switch").show().detach();t(this).before(e),t(this).remove()}),i.data("disabled",e)},i.prototype.validate=function(){var e=!0;return t.each(this._getForm(),function(){t(".required,.regexp,.date,.mandatory,.number,.validate,.integer",this).change(),t(".invalid",this).length>0&&(e=!1)}),e},i.prototype._fill=function(){var e=this;t(this.element).addClass("POJO"),t(this.element).data("pojo",this.options.data),t.each(this._getForm(),function(){e._fillDom(this)})},i.prototype._fillDom=function(t){var e=this;e._clear(t,e.options.prefix),e._fillData(t,e.options.data,e.options.prefix),e._fillCollection(t,e.options.data,e.options.prefix),e._evaluateConditionals(t,e.options.data)},i.prototype._fillCollection=function(e,a,i){var s=this;t(".collection",e).each(function(){var e=t(this),n=t(this).attr("data-field");if(a&&n&&0===n.indexOf(i+".")){var r=null,o=n;i&&(o=o.substring(i.length+1)),r=s._get(a,o),r&&s._fillList(e,r,o)}})},i.prototype._fillList=function(e,a,i,s){var n=e.data("template"),r=this;if(n&&(e.empty(),t.isArray(a))){if(-1!==i.indexOf(".")&&(i=i.substring(i.lastIndexOf(".")+1)),e.hasClass("sort")){var o=e.attr("data-sort");if(o){switch(e.attr("data-sorttype")){case"alpha":a.sort();break;case"alphainsensitiv":a.sort(function(t,e){return t=t[o],e=e[o],t&&(t=t.toLowerCase()),e&&(e=e.toLowerCase()),e>t?-1:t>e?1:0});break;default:a.sort(function(t,e){return t[o]-e[o]})}e.attr("data-sortdesc")&&a.reverse()}}s||t.isFunction(i)&&(s=i,i=null);for(var l=0;a.length>l;l++){var h=a[l],c=n.clone(!0);c.data().pojo=h,c.addClass("POJO"),s&&s(c,h)===!1||(r._addCollectionControls(c),e.trigger("addCollection",[c,h]),i&&(r._fillData(c,h,i,l+1),r._initCollection(c,i),r._fillCollection(c,h,i)),e.append(c),e.trigger("postAddCollection",[c,t(c).data().pojo]))}}},i.prototype._addCollectionControls=function(e){var a=this;t.jsFormControls&&t(e).jsFormControls(),t(".delete",e).click(function(){var e=t(this).closest(".POJO"),a=t(e).data().pojo,i=t(this).closest(".collection");e.detach(),t(i).trigger("deleteCollection",[e,a])}),t(".sortUp",e).click(function(){var e=t(this).closest(".POJO"),i=e.prev(".POJO");0!==i.size()&&(e.detach(),i.before(e),a._reorder(e))}),t(".sortDown",e).click(function(){var e=t(this).closest(".POJO"),i=e.next(".POJO");0!==i.size()&&(e.detach(),i.after(e),a._reorder(e))});var i=t(e).closest(".collection");i.hasClass("sortable")&&t(i).sortable&&i.sortable("refresh")},i.prototype._reorder=function(e){e.attr("data-sort")||(e=e.closest(".collection"));var a=t(e).attr("data-sort");if(!(!a||t(e).attr("data-sorttype")&&"number"!==t(e).attr("data-sorttype")||t(e).attr("data-sortdesc")&&"false"!==t(e).attr("data-sortdesc"))){var i=0;t.each(t(e).children(),function(){var e=t(this).data("pojo");e||(e={},t(this).data("pojo",e)),e[a]=i++})}},i.prototype._renderObject=function(e,a,i){if(!e||!a&&!i)return"";if(i)return this.options.renderer&&this.options.renderer[i]?this.options.renderer[i](e):(this._debug("Unable to find renderer: "+i),"");var s=this,n="";return t.each(a.split(","),function(){var t=this.trim();n+=0===t.indexOf("'")||0===t.indexOf('"')?t.substring(1,t.length-1):s._get(e,t)}),n},i.prototype._get=function(t,e,i,s){var n,r,o,l="";if("function"==typeof e)return e(t);if(!t)return"";if(""===e)return t;if("$idx"===e)return s;if(n=t[e],!n)try{if("string"==typeof e&&(l=e.split(".")),o=l.length)for(n=t;n&&o--;)r=l.shift(),i&&!n[r]&&(n[r]={}),n=n[r]}catch(h){}return(null===n||n===a)&&(n=""),n.trim?n.trim():n},i.prototype._getValueWithArrays=function(t,e){e=e.split(".");for(var a=/(.*)\[(\d+)\]/,i=1;e.length>i;i++){var s=a.exec(e[i]);try{t=s?t[s[1]][parseInt(s[2],10)]:t[e[i]]}catch(n){this._debug(e+" "+n)}}return t},i.prototype._getParent=function(t,e,a){return-1===e.indexOf(".")?t:(e=e.substring(0,e.lastIndexOf(".")),this._get(t,e,a))},i.prototype._getNumber=function(e){return e?t.jsFormControls?t.jsFormControls.Format._getNumber(e):(-1!=e.indexOf(",")&&(e=e.replace(RegExp(",","g"),"")),Number(e)):null},i.prototype._isEmpty=function(e){if(!e)return!0;if(t.isArray(e)){if(0===e.length)return!0;for(var a=0;e.length>a;a++)if(!this._isEmpty())return!1;return!0}if(t.isPlainObject(e)){if(t.isEmptyObject(e))return!0;for(var i in e)if(!this._isEmpty(e[i]))return!1;return!0}return isNaN(e)?""===e||" "===e:0===Number(e)||-1===Number(e)?!0:!1},i.prototype._equals=function(t,e,i){if(!t&&e&&e.length&&0===e.length)return!0;if(!e&&t&&t.length&&0===t.length)return!0;if(!t&&!e)return!0;var s=null;for(s in t){if(e[s]===a&&null!==t[s]&&""!==t[s]&&0!==t[s].length){if(("0"===t[s]||0===t[s])&&!e[s])continue;return!1}if(t[s])switch(typeof t[s]){case"object":if(i&&t[s][i]&&t[s][i]===e[s][i])continue;if(!this._equals(t[s],e[s]))return!1;break;case"function":break;default:if(!t[s]&&!e[s])break;if((t===!0||t===!1)&&t!==e)return!1;if(!isNaN(t[s])||!isNaN(e[s])){if(1e-7>Math.abs(Number(t[s])-Number(e[s])))break;return!1}if((""+t[s]).length!==(""+e[s]).length)return!1;if(t[s]!==e[s]&&Number(t[s])!==Number(e[s]))return!1}else if(e[s])return!1}for(s in e)if((!t||t[s]===a)&&null!==e[s]&&""!==e[s])return!1;return!0},i.prototype.equals=function(t,e){var a=this.get(!1);return this._equals(a,t,e)},i.prototype.changed=function(){if(!this.options.trackChanges)return!1;var e=!1,i=this;return t.each(this._getForm(),function(){return t("."+i.options.trackChanges,this).size()>0?(e=!0,!1):a}),e},i.prototype.resetChanged=function(){if(!this.options.trackChanges)return!1;var e=!1,a=this;return t.each(this._getForm(),function(){t("."+a.options.trackChanges,this).each(function(){t(this).removeClass(a.options.trackChanges),t(this).data().orig=t(this).val()})}),e},i.prototype._equalsCollection=function(e,i,s){var n=this,r=!1;return t(".collection",e).each(function(){if(!r){var e=t(this).attr("data-field");if(e&&0===e.indexOf(i+".")&&(e=e.substring((i+".").length),!(1>e.length))){var o=0;t(this).children().each(function(){if(!r){if(o>=s[e].length)return r=!0,a;var i=s[e][o++];n._pojoDifferFromInput(t(this),e,i)&&(r=!0),n._equalsCollection(t(this),e,i)||(r=!0)}}),s[e]&&s[e].length>o&&(r=!0)}}}),!r},i.prototype.fill=function(e){this.options.data=t.extend({},e),this._fill()},i.prototype.applyConditions=function(t){t||(t=this.get(!0)),this._evaluateConditionals(this.element,t)},i.prototype.reset=function(){this.fill({})},i.prototype.clear=function(){var e=this;t.each(this._getForm(),function(){e._clear(this,e.options.prefix)})},i.prototype.destroy=function(){return t(this.element).each(function(){t(this).removeData("jsForm"),t.jsFormControls&&t(this).jsFormControls("destroy")})},t.fn.jsForm=function(e){if("object"!=typeof e&&e){var s,n=Array.prototype.slice.call(arguments,1);if(0===this.length)return null;if(1===this.length&&(s=t(this).data("jsForm"))){if(0!==e.indexOf("_")&&s[e]){var r=s[e].apply(s,n);return r}return t.error("Method "+e+" does not exist on jQuery.jsForm"),!1}return this.each(function(){return s=t.data(this,"jsForm"),s?0!==e.indexOf("_")&&s[e]?s[e].apply(s,n):(t.error("Method "+e+" does not exist on jQuery.jsForm"),!1):a})}return this.each(function(){t(this).data("jsForm")||t(this).data("jsForm",new i(this,e))})},t.jsForm=function(e,a){var i=n[e];if(t.isFunction(a))i&&t.each(i,function(){a(this,t(this.element))}),s[e]=a;else if(i){var r=a,o=Array.prototype.slice.call(arguments,2);t.each(portlets,function(){this[r].apply(this,o)})}}})(jQuery,window),function(t){"use strict";function e(t){this.element=t,this._domInit()}var a={},i={};"undefined"!=typeof Handlebars&&(Handlebars.registerHelper("currency",function(e){return e?t.jsFormControls.Format.currency(e):t.jsFormControls.Format.currency(0)}),Handlebars.registerHelper("dec",function(e){return e?t.jsFormControls.Format.decimal(e):""}),Handlebars.registerHelper("percent",function(e){return e?t.jsFormControls.Format.decimal(100*e):"0"}),Handlebars.registerHelper("date",function(e){return e?t.jsFormControls.Format.date(e):""}),Handlebars.registerHelper("time",function(e){return e?t.jsFormControls.Format.time(e):""}),Handlebars.registerHelper("datetime",function(e){return e?t.jsFormControls.Format.dateTime(e):""}),Handlebars.registerHelper("dateTime",function(e){return e?t.jsFormControls.Format.dateTime(e):""}),Handlebars.registerHelper("timespan",function(e){return e?t.jsFormControls.Format.humanTime(e):""}),Handlebars.registerHelper("byte",function(e){return e?t.jsFormControls.Format.byte(e):""})),e.prototype._domInit=function(){var e=t(this.element);e.find("input.mandatory,textarea.mandatory").on("keyup",function(){t(this).val().length>0&&"null"!==t(this).val()?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid")}),e.find("input.mandatory,textarea.mandatory").on("change",function(){return t(this).hasClass("object")?(t(this).data().pojo?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid"),undefined):(t(this).val().length>0&&"null"!==t(this).val()?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid"),undefined)}).change(),e.find("select.mandatory").change(function(){null!==t(this).val()&&"null"!==t(this).val()&&t(this).val().length>0?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid")}).change(),e.find("input.date").each(function(){var e=t(this).attr("data-format");t(this).datepicker&&(e?t(this).datepicker({dateFormat:e}):t(this).datepicker())});var a=RegExp("^[0-9.,-]+$");e.find("input.number").keyup(function(){var e=t(this).val();t(this).hasClass("currency")&&e&&(e=t.jsFormControls.Format._getNumber(e)),e.length>0&&(t(this).hasClass("autoclean")?t(this).val(e.replace(/[^0-9.,-]/g,"")):a.test(t(this).val())?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid"))}).keyup(),e.find("input.currency").each(function(){t(this).on("change blur",function(){var e=t(this).val();e.length>0&&t(this).val(t.jsFormControls.Format.currency(t.jsFormControls.Format._getNumber(e)))}),t(this).focus(function(){var e=t(this).val();e.length>0&&t(this).val(t.jsFormControls.Format._getNumber(e))})}),e.find("input.percent").change(function(){var e=t(this).val();e.length>0&&t(this).val(t.jsFormControls.Format.decimal(t.jsFormControls.Format._getNumber(e))),t(this).focus(function(){var e=t(this).val();e.length>0&&t(this).val(t.jsFormControls.Format._getNumber(e))})}),e.find("input.decimal").change(function(){var e=t(this).val();e.length>0&&t(this).val(t.jsFormControls.Format.decimal(t.jsFormControls.Format._getNumber(e)))});var i=RegExp("^[0-9]+$");e.find("input.integer").keyup(function(){var e=t(this).val();e.length>0&&(t(this).hasClass("autoclean")?t(this).val(e.replace(/[^0-9]/g,"")):i.test(t(this).val())?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid"))}).keyup(),e.find("input.regexp").each(function(){t(this).hasClass("autoclean")?t(this).data("regexp",RegExp(t(this).attr("data-regexp"),"g")):t(this).data("regexp",RegExp(t(this).attr("data-regexp"))),t(this).keyup(function(){var e=t(this).val();if(e.length>0){var a=t(this).data("regexp");t(this).hasClass("autoclean")?t(this).val(e.replace(a,"")):a.test(t(this).val())?t(this).addClass("valid").removeClass("invalid"):t(this).removeClass("valid").addClass("invalid")}else t(this).hasClass("mandatory")||t(this).removeClass("invalid").addClass("valid")}).keyup(),t(this).change(function(){t(this).keyup()})}),e.find("input.rotatestate").each(function(){var e=t(this).attr("data-state-values"),a=t(this).attr("data-state-class");if(e){try{e=JSON.parse(e)}catch(i){return}var s=t("");t(this).attr("title")&&s.attr("title",t(this).attr("title")),t(this).attr("data-state-style")&&s.attr("style",t(this).attr("data-state-style")),s.data("states",e),s.data("control",this),s.data("activeState",null),t(this).data("control",s),a&&s.addClass(a),s.click(function(){var e=t(this).data().activeState,a=t(this).data().states,i=t(this).data().control,s=null;if(null!==e){for(var n=0;a.length>n;n++)if(a[n].value===e.value){s=n===a.length-1?a[0]:a[n+1];break}}else s=a[0];t(i).attr("value",s.value),t(i).change()}),t(this).change(function(){var e=t(t(this).data().control),a=e.data().activeState,i=e.data().states;null!==a&&e.removeClass(a["class"]);var s=t(this).val();t.each(i,function(){return this.value===s?(e.data().activeState=this,this.title&&e.attr("title",this.title),e.addClass(this["class"]),!1):undefined})}),t(this).change(),t(this).after(s),t(this).hide()}})},e.prototype.validate=function(){return t(".required,.regexp,.date,.mandatory,.number,.validate",this.element).change(),t(".invalid",this.element).length>0?!1:!0},e.prototype.destroy=function(){return t(this.element).each(function(){t(this).removeData("jsFormControls")})},t.fn.jsFormControls=function(a){if("object"!=typeof a&&a){var i=Array.prototype.slice.call(arguments,1);if(1==this.length){var s=t(this).data("jsFormControls");if(s){if(0!==a.indexOf("_")&&s[a]){var n=s[a].apply(s,i);return n}return t.error("Method "+a+" does not exist on jQuery.jsFormControls"),!1}}return this.each(function(){var e=t.data(this,"jsFormControls");return e?0!==a.indexOf("_")&&e[a]?e[a].apply(e,i):(t.error("Method "+a+" does not exist on jQuery.jsFormControls"),!1):undefined})}return this.each(function(){t(this).data("jsFormControls")||t(this).data("jsFormControls",new e(this,a))})},t.jsFormControls=function(e,s){var n;if(t.isFunction(s))n=i[e],n&&t.each(n,function(){s(this,t(this.element))}),a[e]=s;else if(n=i[e]){var r=s,o=Array.prototype.slice.call(arguments,2);t.each(portlets,function(){this[r].apply(this,o)})}},t.jsFormControls.Format={format:function(e,a){return t(e).hasClass("dateTime")?isNaN(a)?a:t.jsFormControls.Format.dateTime(a):t(e).hasClass("datetime")?isNaN(a)?a:t.jsFormControls.Format.dateTime(a):t(e).hasClass("date")?isNaN(a)?a:t.jsFormControls.Format.date(a):t(e).hasClass("currency")?t.jsFormControls.Format.currency(a):t(e).hasClass("byte")?isNaN(a)?a:t.jsFormControls.Format.byte(a):t(e).hasClass("decimal")?t.jsFormControls.Format.decimal(a):t(e).hasClass("percent")?t.jsFormControls.Format.decimal(a):a},_getValue:function(t,e,a){return e===undefined&&a===undefined?t:isNaN(t)||e===undefined||a===undefined?undefined:a},checkBox:function(e,a,i,s){return i=t.jsFormControls.Format._getValue(e,a,i,s),i?' ':' '},_getNumber:function(e){if(!e)return null;var a={format:"#,##0.###",groupingSeparator:",",decimalSeparator:"."},i=null,s=null;return"undefined"!=typeof i18n?(a=i18n.number,i18n.currency&&(i=i18n.currency.prefix,s=i18n.currency.suffix)):t(document).data().i18n&&t(document).data().i18n.number&&(a=t(document).data().i18n.number,t(document).data().i18n.currency&&(i=t(document).data().i18n.currency.prefix,s=t(document).data().i18n.currency.suffix)),e=""+e,i&&i.length>0&&0===e.indexOf(i)&&(e=e.substring(i.length)),s&&s.length>0&&e.indexOf(s)>0&&(e=e.substring(0,e.length-s.length)),e=t.trim(e),-1!==e.indexOf(a.groupingSeparator)&&(e=e.replace(RegExp("\\"+a.groupingSeparator,"g"),"")),"."!==a.decimalSeparator&&-1!==e.indexOf(a.decimalSeparator)&&(e=e.replace(RegExp(a.decimalSeparator,"g"),".")),Number(e)},_pad:function(t){var e=10>t?"0":"";return e+=t},asNumber:function(e){return t.jsFormControls.Format._getNumber(e)},"byte":function(t){if(""===t||!t||isNaN(t))return t;var e=1024;if(e>t)return t+" B";var a=Math.floor(Math.log(t)/Math.log(e)),i="KMGTPE".charAt(a-1)+"B";return Math.round(10*t/Math.pow(e,a))/10+i},decimal:function(e){if(""===e||!e||isNaN(e))return e;var a={format:"#,##0.###",groupingSeparator:",",decimalSeparator:"."};"undefined"!=typeof i18n?a=i18n.number:t(document).data().i18n&&t(document).data().i18n.number&&(a=t(document).data().i18n.number);var i=0;Math.abs(e-Math.floor(e))>.001&&(i=2);var s=e,n=isNaN(n=Math.abs(i))?2:i,r=a.decimalSeparator,o=a.groupingSeparator,l=parseInt(s=Math.abs(+s||0).toFixed(n),10)+"",h=(h=l.length)>3?h%3:0;return(0>e?"-":"")+(h?l.substr(0,h)+o:"")+l.substr(h).replace(/(\d{3})(?=\d)/g,"$1"+o)+(n?r+Math.abs(s-l).toFixed(n).slice(2):"")},currency:function(e,a,i,s){if(i=t.jsFormControls.Format._getValue(e,a,i,s),!i){if(a)return" ";i=0}var n=t.jsFormControls.Format.decimal(i),r=null,o=null;return"undefined"!=typeof i18n?i18n.currency&&(r=i18n.currency.prefix,o=i18n.currency.suffix):t(document).data().i18n&&t(document).data().i18n.number&&t(document).data().i18n.currency&&(r=t(document).data().i18n.currency.prefix,o=t(document).data().i18n.currency.suffix),r&&(n=r+n),o&&(n+=o),n},dateTime:function(e,a,i,s){return i=t.jsFormControls.Format._getValue(e,a,i,s),i?this.date(i)+" "+this.time(i):a?" ":""},date:function(e,a,i,s){if(i=t.jsFormControls.Format._getValue(e,a,i,s),!i||""===i||isNaN(i))return a?" ":"";var n=new Date;n.setTime(i);var r=n.getYear();1900>r&&(r+=1900);var o=null;return"undefined"!=typeof i18n?o=i18n.date:t(document).data().i18n&&t(document).data().i18n.date&&(o=t(document).data().i18n.date),t.format?t.format.date(n,o.shortDateFormat):this._pad(n.getDate())+"."+this._pad(n.getMonth()+1)+"."+this._pad(r)},time:function(e,a,i,s){if(i=t.jsFormControls.Format._getValue(e,a,i,s),!i||""===i||isNaN(i))return a?" ":"";var n=new Date;n.setTime(i);var r="HH:mm";return"undefined"!=typeof i18n?i18n.timeFormat?r=i18n.timeFormat:i18n.date&&i18n.date.timeFormat&&(r=i18n.date.timeFormat):t(document).data().i18n&&t(document).data().i18n.timeFormat!==undefined&&(r=t(document).data().i18n.timeFormat),t.format?t.format.date(n,r):this._pad(n.getHours())+":"+this._pad(n.getMinutes())},timespan:function(e,a,i,s){i=t.jsFormControls.Format._getValue(e,a,i,s);for(var n=i.split(":"),r=0;n.length>r;r++){var o=Number(n[r]);o&&"NaN"!==o||(o=0),n[r]=this._pad(o)}return 0>=n.length?"0:00":1==n.length?"0:"+this._pad(allowkomma?n[0]:Math.floor(n[0])):2==n.length?allowkomma?n[0]:Math.floor(n[0])+":"+this._pad(allowkomma?n[1]:Math.floor(n[1])):allowkomma?n[0]:Math.floor(n[0])+":"+this._pad(allowkomma?n[1]:Math.floor(n[1]))+":"+pad(allowkomma?n[2]:Math.floor(n[2]))},humanTime:function(e,a,i,s){if(i=t.jsFormControls.Format._getValue(e,a,i,s),isNaN(i))return i&&0!==i.length?i:"-"; +var n=Math.floor(i/36e5);i-=36e5*n;var r=Math.floor(i/6e4);i-=6e4*r;var o=Math.floor(i/1e3);i-=1e3*o;var l="";return n>0&&(l+=n+"h ",o=0,i=0),r>0&&(l+=r+"m ",i=0),o>0&&(l+=o+"s ",i=0),i>0&&(l+=i+"ms"),l.trim()}}}(jQuery,window),String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")},String.prototype.startsWith=function(t){return null===this||0>=this.length?!1:null===t||"null"==t||0>=t.length?!1:this.substr(0,t.length)==t?!0:!1},String.prototype.startsWithIgnoreCase=function(t){return null===this||0>=this.length?!1:null===t||"null"==t||0>=t.length?!1:this.substr(0,t.length).toLowerCase()==t.toLowerCase()?!0:!1},String.prototype.endsWith=function(t){return null===this||0>=this.length?!1:null===t||"null"==t||0>=t.length||t.length>this.length?!1:this.substr(this.length-t.length)==t?!0:!1}; +//@ sourceMappingURL=dist/jquery.jsForm.min.map \ No newline at end of file diff --git a/dist/jquery.jsForm.min.map b/dist/jquery.jsForm.min.map index d616986..a90a9ea 100644 --- a/dist/jquery.jsForm.min.map +++ b/dist/jquery.jsForm.min.map @@ -1 +1 @@ -{"version":3,"file":"dist/jquery.jsForm.1.1.2.min.js","sources":["dist/jquery.jsForm-1.1.2.js"],"names":["$","window","undefined","JsForm","element","options","$this","this","extend","controls","data","prefix","trackChanges","validateHidden","skipEmpty","renderer","processors","connect","attr","_init","JSFORM_INIT_FUNCTIONS","JSFORM_MAP","prototype","_domInit","jsFormControls","each","_getForm","console","log","ex","_fill","ele","_initCollection","_initConditional","_fillDom","push","getNodes","that","_debug","msg","param","p","isPlainObject","JSON","stringify","form","showEvaluator","fields","show","value","_getValueWithArrays","hide","hideEvaluator","conditionals","find","conditionalEval","length","func","field","split","_evaluateConditionals","collectionMap","collections","colName","indexOf","container","cols","_initList","hasClass","sortable","config","parse","on","_reorder","fieldName","click","ev","preventDefault","tmpl","line","clone","addClass","pojo","append","_enableTracking","_addCollectionControls","trigger","substring","beforeInsertCallback","isFunction","idx","children","_fillData","val","focus","inserter","parent","_renderObject","blobInput","evt","fileName","pop","files","target","reader","FileReader","onload","e","result","readAsDataURL","detach","removeAttr","_clear","removeData","name","prop","is","change","fieldname","empty","_createPojoFromInput","start","startObj","trim","processor","_getNumber","isNaN","format","d","date","setHours","setMinutes","setSeconds","setMilliseconds","getTime","Date","use","pushVal","index","splice","num","Number","d1","d2","parts","d0","track","orig","removeClass","$parent","nodeName","toUpperCase","text","cname","cdata","_get","Format","html","cbVal","found","pk","get","ignoreInvalid","originalPojo","invalid","filter","_getCollection","colParent","_getParent","lastIndexOf","_isEmpty","getData","preventEditing","prevent","closest","replace","thespan","wrap","prev","before","remove","validate","valid","_fillCollection","colData","_fillList","lineFunc","isArray","sortField","sort","a","b","toLowerCase","reverse","i","cur","size","next","after","prio","obj","skin","ret","expr","create","prm","shift","path","arrayPattern","match","exec","parseInt","isEmptyObject","f","_equals","idField","Math","abs","equals","changed","_equalsCollection","differs","childCounter","_pojoDifferFromInput","fill","applyConditions","reset","clear","destroy","unbind","fn","jsForm","method","args","Array","slice","call","arguments","apply","error","initFunc","jsForms","portlets","jQuery","JsFormControls","Handlebars","registerHelper","currency","decimal","time","dateTime","humanTime","byte","location","datepicker","dateFormat","numberRegexp","RegExp","keyup","test","integerRegexp","regexp","states","defaultClass","stateControl","cState","activeState","cStates","control","newState","title","_getValue","row","cell","checkBox","columnDef","numberformat","groupingSeparator","decimalSeparator","i18n","number","document","_pad","o","asNumber","bytes","unit","exp","floor","pre","charAt","round","pow","comma","n","c","t","toFixed","j","substr","setTime","year","getYear","dateformat","shortDateFormat","getDate","getMonth","timeFormat","getHours","getMinutes","timespan","tokens","nt","allowkomma","pad","h","m","s","out","String","startsWith","str","startsWithIgnoreCase","endsWith"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dist/jquery.jsForm.1.1.3.min.js","sources":["dist/jquery.jsForm-1.1.3.js"],"names":["$","window","undefined","JsForm","element","options","$this","this","extend","controls","data","prefix","trackChanges","validateHidden","skipEmpty","renderer","processors","connect","viewClass","attr","_init","JSFORM_INIT_FUNCTIONS","JSFORM_MAP","prototype","_domInit","jsFormControls","each","_getForm","console","log","ex","_fill","ele","_initCollection","_initConditional","_fillDom","push","getNodes","that","_debug","msg","param","p","isPlainObject","JSON","stringify","form","showEvaluator","fields","show","value","_getValueWithArrays","hide","hideEvaluator","conditionals","find","conditionalEval","length","func","field","split","_evaluateConditionals","collectionMap","collections","colName","indexOf","container","cols","_initList","hasClass","sortable","config","parse","on","_reorder","fieldName","click","ev","preventDefault","tmpl","line","clone","addClass","pojo","prefill","val","isFunction","substring","append","_enableTracking","_addCollectionControls","trigger","idx","children","_fillData","beforeInsertCallback","focus","inserter","parent","_renderObject","blobInput","evt","fileName","pop","files","target","reader","FileReader","onload","e","result","readAsDataURL","detach","removeAttr","_clear","removeData","name","prop","is","change","fieldname","empty","_createPojoFromInput","start","startObj","trim","processor","_getNumber","isNaN","format","d","date","setHours","setMinutes","setSeconds","setMilliseconds","getTime","Date","use","pushVal","index","splice","num","Number","d1","d2","parts","d0","track","orig","removeClass","$parent","nodeName","toUpperCase","text","cname","cdata","_get","Format","html","cbVal","found","pk","get","ignoreInvalid","originalPojo","invalid","filter","_getCollection","colParent","_getParent","lastIndexOf","_isEmpty","getData","preventEditing","prevent","closest","replace","thespan","wrap","prev","before","remove","validate","valid","_fillCollection","colData","_fillList","lineFunc","isArray","sortField","sort","a","b","toLowerCase","reverse","i","cur","base","size","next","after","prio","obj","skin","ret","expr","create","prm","shift","path","arrayPattern","match","exec","parseInt","RegExp","isEmptyObject","f","_equals","idField","Math","abs","equals","changed","resetChanged","_equalsCollection","differs","childCounter","_pojoDifferFromInput","fill","applyConditions","reset","clear","destroy","fn","jsForm","method","args","Array","slice","call","arguments","apply","error","initFunc","jsForms","portlets","jQuery","JsFormControls","Handlebars","registerHelper","currency","decimal","time","dateTime","humanTime","byte","location","datepicker","dateFormat","numberRegexp","keyup","test","integerRegexp","regexp","states","defaultClass","stateControl","cState","activeState","cStates","control","newState","title","_getValue","row","cell","checkBox","columnDef","numberformat","groupingSeparator","decimalSeparator","pre","post","i18n","number","suffix","document","_pad","o","asNumber","bytes","unit","exp","floor","charAt","round","pow","comma","n","c","t","toFixed","j","substr","setTime","year","getYear","dateformat","shortDateFormat","getDate","getMonth","timeFormat","getHours","getMinutes","timespan","tokens","nt","allowkomma","pad","h","m","s","out","String","startsWith","str","startsWithIgnoreCase","endsWith"],"mappings":"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"} \ No newline at end of file diff --git a/src/jquery.jsForm.controls.js b/src/jquery.jsForm.controls.js index c7f2b3d..11a3805 100644 --- a/src/jquery.jsForm.controls.js +++ b/src/jquery.jsForm.controls.js @@ -539,7 +539,7 @@ // check for currency pre/postfix if(pre && pre.length > 0){ - if(num.indexOf(pre) == 0) + if(num.indexOf(pre) === 0) num = num.substring(pre.length); } if(post && post.length > 0){