var gj = {}; gj.widget = function() { var a = this; a.xhr = null, a.generateGUID = function() { function a() { return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1) } return a() + a() + "-" + a() + "-" + a() + "-" + a() + "-" + a() + a() + a() }, a.mouseX = function(a) { if (a) { if (a.pageX) return a.pageX; if (a.clientX) return a.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); if (a.touches && a.touches.length) return a.touches[0].pageX; if (a.changedTouches && a.changedTouches.length) return a.changedTouches[0].pageX; if (a.originalEvent && a.originalEvent.touches && a.originalEvent.touches.length) return a.originalEvent.touches[0].pageX; if (a.originalEvent && a.originalEvent.changedTouches && a.originalEvent.changedTouches.length) return a.originalEvent.touches[0].pageX } return null }, a.mouseY = function(a) { if (a) { if (a.pageY) return a.pageY; if (a.clientY) return a.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); if (a.touches && a.touches.length) return a.touches[0].pageY; if (a.changedTouches && a.changedTouches.length) return a.changedTouches[0].pageY; if (a.originalEvent && a.originalEvent.touches && a.originalEvent.touches.length) return a.originalEvent.touches[0].pageY; if (a.originalEvent && a.originalEvent.changedTouches && a.originalEvent.changedTouches.length) return a.originalEvent.touches[0].pageY } return null } }, gj.widget.prototype.init = function(a, b) { var c, d, e; this.attr("data-type", b), d = $.extend(!0, {}, this.getHTMLConfig() || {}), $.extend(!0, d, a || {}), e = this.getConfig(d, b), this.attr("data-guid", e.guid), this.data(e); for (c in e) gj[b].events.hasOwnProperty(c) && (this.on(c, e[c]), delete e[c]); for (plugin in gj[b].plugins) gj[b].plugins.hasOwnProperty(plugin) && gj[b].plugins[plugin].configure(this, e, d); return this }, gj.widget.prototype.getConfig = function(a, b) { var c, d, e, f; c = $.extend(!0, {}, gj[b].config.base), d = a.hasOwnProperty("uiLibrary") ? a.uiLibrary : c.uiLibrary, gj[b].config[d] && $.extend(!0, c, gj[b].config[d]), e = a.hasOwnProperty("iconsLibrary") ? a.iconsLibrary : c.iconsLibrary, gj[b].config[e] && $.extend(!0, c, gj[b].config[e]); for (f in gj[b].plugins) gj[b].plugins.hasOwnProperty(f) && ($.extend(!0, c, gj[b].plugins[f].config.base), gj[b].plugins[f].config[d] && $.extend(!0, c, gj[b].plugins[f].config[d]), gj[b].plugins[f].config[e] && $.extend(!0, c, gj[b].plugins[f].config[e])); return $.extend(!0, c, a), c.guid || (c.guid = this.generateGUID()), c }, gj.widget.prototype.getHTMLConfig = function() { var a = this.data(), b = this[0].attributes; return b.width && (a.width = b.width.value), b.height && (a.height = b.height.value), b.value && (a.value = b.value.value), b.align && (a.align = b.align.value), a && a.source && (a.dataSource = a.source, delete a.source), a }, gj.widget.prototype.createDoneHandler = function() { var a = this; return function(b) { "string" == typeof b && JSON && (b = JSON.parse(b)), gj[a.data("type")].methods.render(a, b) } }, gj.widget.prototype.createErrorHandler = function() { return function(a) { a && a.statusText && "abort" !== a.statusText && alert(a.statusText) } }, gj.widget.prototype.reload = function(a) { var b, c, d = this.data(), e = this.data("type"); return void 0 === d.dataSource && gj[e].methods.useHtmlDataSource(this, d), $.extend(d.params, a), $.isArray(d.dataSource) ? (c = gj[e].methods.filter(this), gj[e].methods.render(this, c)) : "string" == typeof d.dataSource ? (b = { url: d.dataSource, data: d.params }, this.xhr && this.xhr.abort(), this.xhr = $.ajax(b).done(this.createDoneHandler()).fail(this.createErrorHandler())) : "object" == typeof d.dataSource && (d.dataSource.data || (d.dataSource.data = {}), $.extend(d.dataSource.data, d.params), b = $.extend(!0, {}, d.dataSource), "json" === b.dataType && "object" == typeof b.data && (b.data = JSON.stringify(b.data)), b.success || (b.success = this.createDoneHandler()), b.error || (b.error = this.createErrorHandler()), this.xhr && this.xhr.abort(), this.xhr = $.ajax(b)), this }, gj.documentManager = { events: {}, subscribeForEvent: function(a, b, c) { if (gj.documentManager.events[a] && 0 !== gj.documentManager.events[a].length) { if (gj.documentManager.events[a][b]) throw "Event " + a + ' for widget with guid="' + b + '" is already attached.'; gj.documentManager.events[a].push({ widgetId: b, callback: c }) } else gj.documentManager.events[a] = [{ widgetId: b, callback: c }], $(document).on(a, gj.documentManager.executeCallbacks) }, executeCallbacks: function(a) { var b = gj.documentManager.events[a.type]; if (b) for (var c = 0; c < b.length; c++) b[c].callback(a) }, unsubscribeForEvent: function(a, b) { var c = !1, d = gj.documentManager.events[a]; if (d) for (var e = 0; e < d.length; e++) d[e].widgetId === b && (d.splice(e, 1), c = !0, 0 === d.length && ($(document).off(a), delete gj.documentManager.events[a])); if (!c) throw 'The "' + a + '" for widget with guid="' + b + "\" can't be removed." } }, gj.core = { messages: { "en-us": { monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthShortNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], weekDaysMin: ["S", "M", "T", "W", "T", "F", "S"], weekDaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], weekDays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], am: "AM", pm: "PM", ok: "Ok", cancel: "Cancel", titleFormat: "mmmm yyyy" } }, parseDate: function(a, b, c) { var d, e, f, g, h = 0, i = 0, j = 1, k = 0, l = 0; if (a && "string" == typeof a) { if (/^\d+$/.test(a)) g = new Date(a); else if (a.indexOf("/Date(") > -1) g = new Date(parseInt(a.substr(6), 10)); else if (a) { for (f = b.split(/[\s,-\.\/\/\:]+/), e = a.split(/[\s]+/), e.length != f.length && (e = a.split(/[\s,-\.\/\/\:]+/)), d = 0; d < f.length; d++)["d", "dd"].indexOf(f[d]) > -1 ? j = parseInt(e[d], 10) : ["m", "mm"].indexOf(f[d]) > -1 ? i = parseInt(e[d], 10) - 1 : "mmm" === f[d] ? i = gj.core.messages[c || "en-us"].monthShortNames.indexOf(e[d]) : "mmmm" === f[d] ? i = gj.core.messages[c || "en-us"].monthNames.indexOf(e[d]) : ["yy", "yyyy"].indexOf(f[d]) > -1 ? (h = parseInt(e[d], 10), "yy" === f[d] && (h += 2e3)) : ["h", "hh", "H", "HH"].indexOf(f[d]) > -1 ? k = parseInt(e[d], 10) : ["M", "MM"].indexOf(f[d]) > -1 && (l = parseInt(e[d], 10)); g = new Date(h, i, j, k, l) } } else "number" == typeof a ? g = new Date(a) : a instanceof Date && (g = a); return g }, formatDate: function(a, b, c) { var d, e, f = "", g = b.split(/[\s,-\.\/\/\:]+/), h = b.split(/s+|M+|H+|h+|t+|T+|d+|m+|y+/); for (h = h.splice(1, h.length - 2), i = 0; i < g.length; i++) switch (d = h[i] || "", g[i]) { case "s": f += a.getSeconds() + d; break; case "ss": f += gj.core.pad(a.getSeconds()) + d; break; case "M": f += a.getMinutes() + d; break; case "MM": f += gj.core.pad(a.getMinutes()) + d; break; case "H": f += a.getHours() + d; break; case "HH": f += gj.core.pad(a.getHours()) + d; break; case "h": e = a.getHours() > 12 ? a.getHours() % 12 : a.getHours(), f += e + d; break; case "hh": e = a.getHours() > 12 ? a.getHours() % 12 : a.getHours(), f += gj.core.pad(e) + d; break; case "tt": f += (a.getHours() >= 12 ? "pm" : "am") + d; break; case "TT": f += (a.getHours() >= 12 ? "PM" : "AM") + d; break; case "d": f += a.getDate() + d; break; case "dd": f += gj.core.pad(a.getDate()) + d; break; case "ddd": f += gj.core.messages[c || "en-us"].weekDaysShort[a.getDay()] + d; break; case "dddd": f += gj.core.messages[c || "en-us"].weekDays[a.getDay()] + d; break; case "m": f += a.getMonth() + 1 + d; break; case "mm": f += gj.core.pad(a.getMonth() + 1) + d; break; case "mmm": f += gj.core.messages[c || "en-us"].monthShortNames[a.getMonth()] + d; break; case "mmmm": f += gj.core.messages[c || "en-us"].monthNames[a.getMonth()] + d; break; case "yy": f += a.getFullYear().toString().substr(2) + d; break; case "yyyy": f += a.getFullYear() + d } return f }, pad: function(a, b) { for (a = String(a), b = b || 2; a.length < b;) a = "0" + a; return a }, center: function(a) { var b = $(window).width() / 2 - a.width() / 2, c = $(window).height() / 2 - a.height() / 2; a.css("position", "absolute"), a.css("left", b > 0 ? b : 0), a.css("top", c > 0 ? c : 0) }, isIE: function() { return !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g) }, setChildPosition: function(a, b) { var c = a.getBoundingClientRect(), d = gj.core.height(a, !0), e = gj.core.height(b, !0), f = gj.core.width(a, !0), g = gj.core.width(b, !0), h = window.scrollY || window.pageYOffset || 0, i = window.scrollX || window.pageXOffset || 0; c.top + d + e > window.innerHeight && c.top > e ? b.style.top = Math.round(c.top + h - e - 3) + "px" : b.style.top = Math.round(c.top + h + d + 3) + "px", c.left + g > document.body.clientWidth ? b.style.left = Math.round(c.left + i + f - g) + "px" : b.style.left = Math.round(c.left + i) + "px" }, height: function(a, b) { var c, d = window.getComputedStyle(a); return "border-box" === d.boxSizing ? (c = parseInt(d.height, 10), gj.core.isIE() && (c += parseInt(d.paddingTop || 0, 10) + parseInt(d.paddingBottom || 0, 10), c += parseInt(d.borderTopWidth || 0, 10) + parseInt(d.borderBottomWidth || 0, 10))) : (c = parseInt(d.height, 10), c += parseInt(d.paddingTop || 0, 10) + parseInt(d.paddingBottom || 0, 10), c += parseInt(d.borderTopWidth || 0, 10) + parseInt(d.borderBottomWidth || 0, 10)), b && (c += parseInt(d.marginTop || 0, 10) + parseInt(d.marginBottom || 0, 10)), c }, width: function(a, b) { var c, d = window.getComputedStyle(a); return "border-box" === d.boxSizing ? c = parseInt(d.width, 10) : (c = parseInt(d.width, 10), c += parseInt(d.paddingLeft || 0, 10) + parseInt(d.paddingRight || 0, 10), c += parseInt(d.borderLeftWidth || 0, 10) + parseInt(d.borderRightWidth || 0, 10)), b && (c += parseInt(d.marginLeft || 0, 10) + parseInt(d.marginRight || 0, 10)), c }, addClasses: function(a, b) { var c, d; if (b) for (d = b.split(" "), c = 0; c < d.length; c++) a.classList.add(d[c]) }, position: function(a) { for (var b, c, d = 0, e = 0, f = gj.core.height(a), g = gj.core.width(a); a;) "BODY" == a.tagName ? (b = a.scrollLeft || document.documentElement.scrollLeft, c = a.scrollTop || document.documentElement.scrollTop, d += a.offsetLeft - b, e += a.offsetTop - c) : (d += a.offsetLeft - a.scrollLeft, e += a.offsetTop - a.scrollTop), a = a.offsetParent; return { top: e, left: d, bottom: e + f, right: d + g } }, setCaretAtEnd: function(a) { var b; if (a) if (b = a.value.length, document.selection) { a.focus(); var c = document.selection.createRange(); c.moveStart("character", -b), c.moveStart("character", b), c.moveEnd("character", 0), c.select() } else(a.selectionStart || "0" == a.selectionStart) && (a.selectionStart = b, a.selectionEnd = b, a.focus()) }, getScrollParent: function(a) { return null == a ? null : a.scrollHeight > a.clientHeight ? a : gj.core.getScrollParent(a.parentNode) } }, gj.picker = { messages: { "en-us": {} } }, gj.picker.methods = { initialize: function(a, b, c) { var d, e = c.createPicker(a, b), f = a.parent('div[role="wrapper"]'); d = "bootstrap" === b.uiLibrary ? $('' + b.icons.rightIcon + "") : "bootstrap4" === b.uiLibrary ? $('") : $(b.icons.rightIcon), d.attr("role", "right-icon"), 0 === f.length ? (f = $('
').addClass(b.style.wrapper), a.wrap(f)) : f.addClass(b.style.wrapper), f = a.parent('div[role="wrapper"]'), b.width && f.css("width", b.width), a.val(b.value).addClass(b.style.input).attr("role", "input"), b.fontSize && a.css("font-size", b.fontSize), "bootstrap" === b.uiLibrary || "bootstrap4" === b.uiLibrary ? "small" === b.size ? (f.addClass("input-group-sm"), a.addClass("form-control-sm")) : "large" === b.size && (f.addClass("input-group-lg"), a.addClass("form-control-lg")) : "small" === b.size ? f.addClass("small") : "large" === b.size && f.addClass("large"), d.on("click", function(b) { e.is(":visible") ? a.close() : a.open() }), f.append(d), !0 !== b.footer && (a.on("blur", function() { a.timeout = setTimeout(function() { a.close() }, 500) }), e.mousedown(function() { return clearTimeout(a.timeout), a.focus(), !1 }), e.on("click", function() { clearTimeout(a.timeout), a.focus() })) } }, gj.picker.widget = function(a, b) { var c = this, d = gj.picker.methods; return c.destroy = function() { return d.destroy(this) }, a }, gj.picker.widget.prototype = new gj.widget, gj.picker.widget.constructor = gj.picker.widget, gj.picker.widget.prototype.init = function(a, b, c) { return gj.widget.prototype.init.call(this, a, b), this.attr("data-" + b, "true"), gj.picker.methods.initialize(this, this.data(), gj[b].methods), this }, gj.picker.widget.prototype.open = function(a) { var b = this.data(), c = $("body").find('[role="picker"][guid="' + this.attr("data-guid") + '"]'); return c.show(), c.closest('div[role="modal"]').show(), b.modal ? gj.core.center(c) : (gj.core.setChildPosition(this[0], c[0]), this.focus()), clearTimeout(this.timeout), gj[a].events.open(this), this }, gj.picker.widget.prototype.close = function(a) { var b = $("body").find('[role="picker"][guid="' + this.attr("data-guid") + '"]'); return b.hide(), b.closest('div[role="modal"]').hide(), gj[a].events.close(this), this }, gj.picker.widget.prototype.destroy = function(a) { var b = this.data(), c = this.parent(), d = $("body").find('[role="picker"][guid="' + this.attr("data-guid") + '"]'); return b && (this.off(), d.parent('[role="modal"]').length > 0 && d.unwrap(), d.remove(), this.removeData(), this.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-" + a), this.removeClass(), c.children('[role="right-icon"]').remove(), this.unwrap()), this }, gj.dialog = { plugins: {}, messages: {} }, gj.dialog.config = { base: { autoOpen: !0, closeButtonInHeader: !0, closeOnEscape: !0, draggable: !0, height: "auto", locale: "en-us", maxHeight: void 0, maxWidth: void 0, minHeight: void 0, minWidth: void 0, modal: !1, resizable: !1, scrollable: !1, title: void 0, uiLibrary: void 0, width: 300, style: { modal: "gj-modal", content: "gj-dialog-md", header: "gj-dialog-md-header gj-unselectable", headerTitle: "gj-dialog-md-title", headerCloseButton: "gj-dialog-md-close", body: "gj-dialog-md-body", footer: "gj-dialog-footer gj-dialog-md-footer" } }, bootstrap: { style: { modal: "modal", content: "modal-content gj-dialog-bootstrap", header: "modal-header", headerTitle: "modal-title", headerCloseButton: "close", body: "modal-body", footer: "gj-dialog-footer modal-footer" } }, bootstrap4: { style: { modal: "modal", content: "modal-content gj-dialog-bootstrap4", header: "modal-header", headerTitle: "modal-title", headerCloseButton: "close", body: "modal-body", footer: "gj-dialog-footer modal-footer" } } }, gj.dialog.events = { initialized: function(a) { a.trigger("initialized") }, opening: function(a) { a.trigger("opening") }, opened: function(a) { a.trigger("opened") }, closing: function(a) { a.trigger("closing") }, closed: function(a) { a.trigger("closed") }, drag: function(a) { a.trigger("drag") }, dragStart: function(a) { a.trigger("dragStart") }, dragStop: function(a) { a.trigger("dragStop") }, resize: function(a) { a.trigger("resize") }, resizeStart: function(a) { a.trigger("resizeStart") }, resizeStop: function(a) { a.trigger("resizeStop") } }, gj.dialog.methods = { init: function(a) { return gj.widget.prototype.init.call(this, a, "dialog"), gj.dialog.methods.localization(this), gj.dialog.methods.initialize(this), gj.dialog.events.initialized(this), this }, localization: function(a) { var b = a.data(); void 0 === b.title && (b.title = gj.dialog.messages[b.locale].DefaultTitle) }, getHTMLConfig: function() { var a = gj.widget.prototype.getHTMLConfig.call(this), b = this[0].attributes; return b.title && (a.title = b.title.value), a }, initialize: function(a) { var b, c, d, e = a.data(); a.addClass(e.style.content), gj.dialog.methods.setSize(a), e.closeOnEscape && $(document).keyup(function(b) { 27 === b.keyCode && a.close() }), c = a.children('div[data-role="body"]'), 0 === c.length ? (c = $('
').addClass(e.style.body), a.wrapInner(c)) : c.addClass(e.style.body), b = gj.dialog.methods.renderHeader(a), d = a.children('div[data-role="footer"]').addClass(e.style.footer), a.find('[data-role="close"]').on("click", function() { a.close() }), gj.draggable && (e.draggable && gj.dialog.methods.draggable(a, b), e.resizable && gj.dialog.methods.resizable(a)), e.scrollable && e.height && (a.addClass("gj-dialog-scrollable"), a.on("opened", function() { a.children('div[data-role="body"]').css("height", e.height - b.outerHeight() - (d.length ? d.outerHeight() : 0)) })), gj.core.center(a), e.modal && a.wrapAll('
'), e.autoOpen && a.open() }, setSize: function(a) { var b = a.data(); b.width && a.css("width", b.width), b.height && a.css("height", b.height) }, renderHeader: function(a) { var b, c, d, e = a.data(); return b = a.children('div[data-role="header"]'), 0 === b.length && (b = $('
'), a.prepend(b)), b.addClass(e.style.header), c = b.find('[data-role="title"]'), 0 === c.length && (c = $('

' + e.title + "

"), b.append(c)), c.addClass(e.style.headerTitle), d = b.find('[data-role="close"]'), 0 === d.length && e.closeButtonInHeader ? (d = $(''), d.addClass(e.style.headerCloseButton), b.append(d)) : d.length > 0 && !1 === e.closeButtonInHeader ? d.hide() : d.addClass(e.style.headerCloseButton), b }, draggable: function(a, b) { a.appendTo("body"), b.addClass("gj-draggable"), a.draggable({ handle: b, start: function() { a.addClass("gj-unselectable"), gj.dialog.events.dragStart(a) }, stop: function() { a.removeClass("gj-unselectable"), gj.dialog.events.dragStop(a) } }) }, resizable: function(a) { var b = { drag: gj.dialog.methods.resize, start: function() { a.addClass("gj-unselectable"), gj.dialog.events.resizeStart(a) }, stop: function() { this.removeAttribute("style"), a.removeClass("gj-unselectable"), gj.dialog.events.resizeStop(a) } }; a.append($('
').draggable($.extend(!0, { horizontal: !1 }, b))), a.append($('
').draggable($.extend(!0, { vertical: !1 }, b))), a.append($('
').draggable($.extend(!0, { horizontal: !1 }, b))), a.append($('
').draggable($.extend(!0, { vertical: !1 }, b))), a.append($('
').draggable($.extend(!0, {}, b))), a.append($('
').draggable($.extend(!0, {}, b))), a.append($('
').draggable($.extend(!0, {}, b))), a.append($('
').draggable($.extend(!0, {}, b))) }, resize: function(a, b) { var c, d, e, f, g, h, i, j, k = !1; return c = $(this), d = c.parent(), e = gj.core.position(this), offset = { top: b.top - e.top, left: b.left - e.left }, f = d.data(), c.hasClass("gj-resizable-n") ? (g = d.height() - offset.top, i = d.offset().top + offset.top) : c.hasClass("gj-resizable-e") ? h = d.width() + offset.left : c.hasClass("gj-resizable-s") ? g = d.height() + offset.top : c.hasClass("gj-resizable-w") ? (h = d.width() - offset.left, j = d.offset().left + offset.left) : c.hasClass("gj-resizable-ne") ? (g = d.height() - offset.top, i = d.offset().top + offset.top, h = d.width() + offset.left) : c.hasClass("gj-resizable-nw") ? (g = d.height() - offset.top, i = d.offset().top + offset.top, h = d.width() - offset.left, j = d.offset().left + offset.left) : c.hasClass("gj-resizable-se") ? (g = d.height() + offset.top, h = d.width() + offset.left) : c.hasClass("gj-resizable-sw") && (g = d.height() + offset.top, h = d.width() - offset.left, j = d.offset().left + offset.left), g && (!f.minHeight || g >= f.minHeight) && (!f.maxHeight || g <= f.maxHeight) && (d.height(g), i && d.css("top", i), k = !0), h && (!f.minWidth || h >= f.minWidth) && (!f.maxWidth || h <= f.maxWidth) && (d.width(h), j && d.css("left", j), k = !0), k && gj.dialog.events.resize(d), k }, open: function(a, b) { var c; return gj.dialog.events.opening(a), a.css("display", "block"), a.closest('div[data-role="modal"]').css("display", "block"), c = a.children('div[data-role="footer"]'), c.length && c.outerHeight() && a.children('div[data-role="body"]').css("margin-bottom", c.outerHeight()), void 0 !== b && a.find('[data-role="title"]').html(b), gj.dialog.events.opened(a), a }, close: function(a) { return a.is(":visible") && (gj.dialog.events.closing(a), a.css("display", "none"), a.closest('div[data-role="modal"]').css("display", "none"), gj.dialog.events.closed(a)), a }, isOpen: function(a) { return a.is(":visible") }, content: function(a, b) { var c = a.children('div[data-role="body"]'); return void 0 === b ? c.html() : c.html(b) }, destroy: function(a, b) { var c = a.data(); return c && (!1 === b ? a.remove() : (a.close(), a.off(), a.removeData(), a.removeAttr("data-type"), a.removeClass(c.style.content), a.find('[data-role="header"]').removeClass(c.style.header), a.find('[data-role="title"]').removeClass(c.style.headerTitle), a.find('[data-role="close"]').remove(), a.find('[data-role="body"]').removeClass(c.style.body), a.find('[data-role="footer"]').removeClass(c.style.footer))), a } }, gj.dialog.widget = function(a, b) { var c = this, d = gj.dialog.methods; return c.open = function(a) { return d.open(this, a) }, c.close = function() { return d.close(this) }, c.isOpen = function() { return d.isOpen(this) }, c.content = function(a) { return d.content(this, a) }, c.destroy = function(a) { return d.destroy(this, a) }, $.extend(a, c), "dialog" !== a.attr("data-type") && d.init.call(a, b), a }, gj.dialog.widget.prototype = new gj.widget, gj.dialog.widget.constructor = gj.dialog.widget, gj.dialog.widget.prototype.getHTMLConfig = gj.dialog.methods.getHTMLConfig, function(a) { a.fn.dialog = function(a) { var b; if (this && this.length) { if ("object" != typeof a && a) { if (b = new gj.dialog.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); throw "Method " + a + " does not exist." } return new gj.dialog.widget(this, a) } } }(jQuery), gj.dialog.messages["en-us"] = { Close: "Close", DefaultTitle: "Dialog" }, gj.draggable = { plugins: {} }, gj.draggable.config = { base: { handle: void 0, vertical: !0, horizontal: !0, containment: void 0 } }, gj.draggable.methods = { init: function(a) { var b, c, d = this; return gj.widget.prototype.init.call(this, a, "draggable"), c = this.data(), d.attr("data-draggable", "true"), b = gj.draggable.methods.getHandleElement(d), b.on("touchstart mousedown", function(a) { var e = gj.core.position(d[0]); d[0].style.top = e.top + "px", d[0].style.left = e.left + "px", d[0].style.position = "fixed", d.attr("draggable-dragging", !0), d.removeAttr("draggable-x").removeAttr("draggable-y"), gj.documentManager.subscribeForEvent("touchmove", d.data("guid"), gj.draggable.methods.createMoveHandler(d, b, c)), gj.documentManager.subscribeForEvent("mousemove", d.data("guid"), gj.draggable.methods.createMoveHandler(d, b, c)) }), gj.documentManager.subscribeForEvent("mouseup", d.data("guid"), gj.draggable.methods.createUpHandler(d)), gj.documentManager.subscribeForEvent("touchend", d.data("guid"), gj.draggable.methods.createUpHandler(d)), gj.documentManager.subscribeForEvent("touchcancel", d.data("guid"), gj.draggable.methods.createUpHandler(d)), d }, getHandleElement: function(a) { var b = a.data("handle"); return b && b.length ? b : a }, createUpHandler: function(a) { return function(b) { "true" === a.attr("draggable-dragging") && (a.attr("draggable-dragging", !1), gj.documentManager.unsubscribeForEvent("mousemove", a.data("guid")), gj.documentManager.unsubscribeForEvent("touchmove", a.data("guid")), gj.draggable.events.stop(a, { x: a.mouseX(b), y: a.mouseY(b) })) } }, createMoveHandler: function(a, b, c) { return function(b) { var d, e, f, g, h, i; "true" === a.attr("draggable-dragging") && (d = Math.round(a.mouseX(b)), e = Math.round(a.mouseY(b)), h = a.attr("draggable-x"), i = a.attr("draggable-y"), h && i ? (f = c.horizontal ? d - parseInt(h, 10) : 0, g = c.vertical ? e - parseInt(i, 10) : 0, gj.draggable.methods.move(a[0], c, f, g, d, e)) : gj.draggable.events.start(a, d, e), a.attr("draggable-x", d), a.attr("draggable-y", e)) } }, move: function(a, b, c, d, e, f) { var g, h, i, j = gj.core.position(a), k = j.top + d, l = j.left + c; b.containment && (g = gj.core.position(b.containment), h = g.top + gj.core.height(b.containment) - gj.core.height(a), i = g.left + gj.core.width(b.containment) - gj.core.width(a), k > g.top && k < h ? (g.top >= f || g.bottom <= f) && (k = j.top) : k = k <= g.top ? g.top + 1 : h - 1, l > g.left && l < i ? (g.left >= e || g.right <= e) && (l = j.left) : l = l <= g.left ? g.left + 1 : i - 1), !1 !== gj.draggable.events.drag($(a), l, k, e, f) && (a.style.top = k + "px", a.style.left = l + "px") }, destroy: function(a) { return "true" === a.attr("data-draggable") && (gj.documentManager.unsubscribeForEvent("mouseup", a.data("guid")), a.removeData(), a.removeAttr("data-guid").removeAttr("data-type").removeAttr("data-draggable"), a.removeAttr("draggable-x").removeAttr("draggable-y").removeAttr("draggable-dragging"), a[0].style.top = "", a[0].style.left = "", a[0].style.position = "", a.off("drag").off("start").off("stop"), gj.draggable.methods.getHandleElement(a).off("mousedown")), a } }, gj.draggable.events = { drag: function(a, b, c, d, e) { return a.triggerHandler("drag", [{ left: b, top: c }, { x: d, y: e }]) }, start: function(a, b, c) { a.triggerHandler("start", [{ x: b, y: c }]) }, stop: function(a, b) { a.triggerHandler("stop", [b]) } }, gj.draggable.widget = function(a, b) { var c = this, d = gj.draggable.methods; return a.destroy || (c.destroy = function() { return d.destroy(this) }), $.extend(a, c), "true" !== a.attr("data-draggable") && d.init.call(a, b), a }, gj.draggable.widget.prototype = new gj.widget, gj.draggable.widget.constructor = gj.draggable.widget, function(a) { a.fn.draggable = function(a) { var b; if (this && this.length) { if ("object" != typeof a && a) { if (b = new gj.draggable.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); throw "Method " + a + " does not exist." } return new gj.draggable.widget(this, a) } } }(jQuery), gj.droppable = { plugins: {} }, gj.droppable.config = { hoverClass: void 0 }, gj.droppable.methods = { init: function(a) { var b = this; return gj.widget.prototype.init.call(this, a, "droppable"), b.attr("data-droppable", "true"), gj.documentManager.subscribeForEvent("mousedown", b.data("guid"), gj.droppable.methods.createMouseDownHandler(b)), gj.documentManager.subscribeForEvent("mousemove", b.data("guid"), gj.droppable.methods.createMouseMoveHandler(b)), gj.documentManager.subscribeForEvent("mouseup", b.data("guid"), gj.droppable.methods.createMouseUpHandler(b)), b }, createMouseDownHandler: function(a) { return function(b) { a.isDragging = !0 } }, createMouseMoveHandler: function(a) { return function(b) { if (a.isDragging) { var c = a.data("hoverClass"), d = { x: a.mouseX(b), y: a.mouseY(b) }, e = gj.droppable.methods.isOver(a, d); e != a.isOver && (e ? (c && a.addClass(c), gj.droppable.events.over(a, d)) : (c && a.removeClass(c), gj.droppable.events.out(a))), a.isOver = e } } }, createMouseUpHandler: function(a) { return function(b) { var c = { left: a.mouseX(b), top: a.mouseY(b) }; a.isDragging = !1, gj.droppable.methods.isOver(a, c) && gj.droppable.events.drop(a) } }, isOver: function(a, b) { var c = a.offset().top, d = a.offset().left; return b.x > d && b.x < d + a.outerWidth(!0) && b.y > c && b.y < c + a.outerHeight(!0) }, destroy: function(a) { return "true" === a.attr("data-droppable") && (gj.documentManager.unsubscribeForEvent("mousedown", a.data("guid")), gj.documentManager.unsubscribeForEvent("mousemove", a.data("guid")), gj.documentManager.unsubscribeForEvent("mouseup", a.data("guid")), a.removeData(), a.removeAttr("data-guid"), a.removeAttr("data-droppable"), a.off("drop").off("over").off("out")), a } }, gj.droppable.events = { drop: function(a, b, c) { a.trigger("drop", [{ top: c, left: b }]) }, over: function(a, b) { a.trigger("over", [b]) }, out: function(a) { a.trigger("out") } }, gj.droppable.widget = function(a, b) { var c = this, d = gj.droppable.methods; return c.isOver = !1, c.isDragging = !1, c.destroy = function() { return d.destroy(this) }, c.isOver = function(a) { return d.isOver(this, a) }, $.extend(a, c), "true" !== a.attr("data-droppable") && d.init.call(a, b), a }, gj.droppable.widget.prototype = new gj.widget, gj.droppable.widget.constructor = gj.droppable.widget, function(a) { a.fn.droppable = function(a) { var b; if (this && this.length) { if ("object" != typeof a && a) { if (b = new gj.droppable.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); throw "Method " + a + " does not exist." } return new gj.droppable.widget(this, a) } } }(jQuery), gj.grid = { plugins: {}, messages: {} }, gj.grid.config = { base: { dataSource: void 0, columns: [], autoGenerateColumns: !1, defaultColumnSettings: { hidden: !1, width: void 0, sortable: !1, type: "text", title: void 0, field: void 0, align: void 0, cssClass: void 0, headerCssClass: void 0, tooltip: void 0, icon: void 0, events: void 0, format: "mm/dd/yyyy", decimalDigits: void 0, tmpl: void 0, stopPropagation: !1, renderer: void 0, filter: void 0 }, mapping: { dataField: "records", totalRecordsField: "total" }, params: {}, paramNames: { sortBy: "sortBy", direction: "direction" }, uiLibrary: "materialdesign", iconsLibrary: "materialicons", selectionType: "single", selectionMethod: "basic", autoLoad: !0, notFoundText: void 0, width: void 0, minWidth: void 0, headerRowHeight: "fixed", bodyRowHeight: "autogrow", fontSize: void 0, primaryKey: void 0, locale: "en-us", defaultIconColumnWidth: 70, defaultCheckBoxColumnWidth: 70, style: { wrapper: "gj-grid-wrapper", table: "gj-grid gj-grid-md", loadingCover: "gj-grid-loading-cover", loadingText: "gj-grid-loading-text", header: { cell: void 0, sortable: "gj-cursor-pointer gj-unselectable" }, content: { rowSelected: "gj-grid-md-select" } }, icons: { asc: "▲", desc: "▼" } }, bootstrap: { style: { wrapper: "gj-grid-wrapper", table: "gj-grid gj-grid-bootstrap gj-grid-bootstrap-3 table table-bordered table-hover", content: { rowSelected: "active" } }, iconsLibrary: "glyphicons", defaultIconColumnWidth: 34, defaultCheckBoxColumnWidth: 36 }, bootstrap4: { style: { wrapper: "gj-grid-wrapper", table: "gj-grid gj-grid-bootstrap gj-grid-bootstrap-4 table table-bordered table-hover", content: { rowSelected: "active" } }, defaultIconColumnWidth: 42, defaultCheckBoxColumnWidth: 44 }, materialicons: { icons: { asc: '', desc: '' } }, fontawesome: { icons: { asc: '', desc: '' } }, glyphicons: { icons: { asc: '', desc: '' } } }, gj.grid.events = { beforeEmptyRowInsert: function(a, b) { return a.triggerHandler("beforeEmptyRowInsert", [b]) }, dataBinding: function(a, b) { return a.triggerHandler("dataBinding", [b]) }, dataBound: function(a, b, c) { return a.triggerHandler("dataBound", [b, c]) }, rowDataBound: function(a, b, c, d) { return a.triggerHandler("rowDataBound", [b, c, d]) }, cellDataBound: function(a, b, c, d, e) { return a.triggerHandler("cellDataBound", [b, c, d, e]) }, rowSelect: function(a, b, c, d) { return a.triggerHandler("rowSelect", [b, c, d]) }, rowUnselect: function(a, b, c, d) { return a.triggerHandler("rowUnselect", [b, c, d]) }, rowRemoving: function(a, b, c, d) { return a.triggerHandler("rowRemoving", [b, c, d]) }, destroying: function(a) { return a.triggerHandler("destroying") }, columnHide: function(a, b) { return a.triggerHandler("columnHide", [b]) }, columnShow: function(a, b) { return a.triggerHandler("columnShow", [b]) }, initialized: function(a) { return a.triggerHandler("initialized") }, dataFiltered: function(a, b) { return a.triggerHandler("dataFiltered", [b]) } }, gj.grid.methods = { init: function(a) { return gj.widget.prototype.init.call(this, a, "grid"), gj.grid.methods.initialize(this), this.data("autoLoad") && this.reload(), this }, getConfig: function(a, b) { var c = gj.widget.prototype.getConfig.call(this, a, b); return gj.grid.methods.setDefaultColumnConfig(c.columns, c.defaultColumnSettings), c }, setDefaultColumnConfig: function(a, b) { var c, d; if (a && a.length) for (d = 0; d < a.length; d++) c = $.extend(!0, {}, b), $.extend(!0, c, a[d]), a[d] = c }, getHTMLConfig: function() { var a = gj.widget.prototype.getHTMLConfig.call(this); return a.columns = [], this.find("thead > tr > th").each(function() { var b = $(this), c = b.text(), d = gj.widget.prototype.getHTMLConfig.call(b); d.title = c, d.field || (d.field = c), d.events && (d.events = gj.grid.methods.eventsParser(d.events)), a.columns.push(d) }), a }, eventsParser: function(events) { var result = {}, list, i, key, func, position; for (list = events.split(","), i = 0; i < list.length; i++)(position = list[i].indexOf(":")) > 0 && (key = $.trim(list[i].substr(0, position)), func = $.trim(list[i].substr(position + 1, list[i].length)), result[key] = eval("window." + func)); return result }, initialize: function(a) { var b = a.data(), c = a.parent('div[data-role="wrapper"]'); gj.grid.methods.localization(b), 0 === c.length ? (c = $('
').addClass(b.style.wrapper), a.wrap(c)) : c.addClass(b.style.wrapper), b.width && a.parent().css("width", b.width), b.minWidth && a.css("min-width", b.minWidth), b.fontSize && a.css("font-size", b.fontSize), "autogrow" === b.headerRowHeight && a.addClass("autogrow-header-row"), "fixed" === b.bodyRowHeight && a.addClass("fixed-body-rows"), a.addClass(b.style.table), "checkbox" === b.selectionMethod && b.columns.splice(gj.grid.methods.getColumnPositionNotInRole(a), 0, { title: "", width: b.defaultCheckBoxColumnWidth, align: "center", type: "checkbox", role: "selectRow", events: { click: function(b) { gj.grid.methods.setSelected(a, b.data.id, $(this).closest("tr")) } }, headerCssClass: "gj-grid-select-all", stopPropagation: !0 }), 0 === a.children("tbody").length && a.append($("")), gj.grid.methods.renderHeader(a), gj.grid.methods.appendEmptyRow(a, " "), gj.grid.events.initialized(a) }, localization: function(a) { a.notFoundText || (a.notFoundText = gj.grid.messages[a.locale].NoRecordsFound) }, renderHeader: function(a) { var b, c, d, e, f, g, h, i, j; for (b = a.data(), c = b.columns, d = b.style.header, e = a.children("thead"), 0 === e.length && (e = $(""), a.prepend(e)), f = $(''), i = 0; i < c.length; i += 1) g = $(''), c[i].width ? g.attr("width", c[i].width) : "checkbox" === c[i].type && g.attr("width", b.defaultIconColumnWidth), g.addClass(d.cell), c[i].headerCssClass && g.addClass(c[i].headerCssClass), g.css("text-align", c[i].align || "left"), "checkbox" === b.selectionMethod && "multiple" === b.selectionType && "checkbox" === c[i].type && "selectRow" === c[i].role ? (j = g.find('input[data-role="selectAll"]'), 0 === j.length && (j = $(''), g.append(j), j.checkbox({ uiLibrary: b.uiLibrary })), j.off("click").on("click", function() { this.checked ? a.selectAll() : a.unSelectAll() })) : (h = $('
').html(void 0 === c[i].title ? c[i].field : c[i].title), g.append(h), c[i].sortable && (h.addClass(d.sortable), h.on("click", gj.grid.methods.createSortHandler(a, c[i])))), c[i].hidden && g.hide(), f.append(g); e.empty().append(f) }, createSortHandler: function(a, b) { return function() { var c, d = {}; a.count() > 0 && (c = a.data(), d[c.paramNames.sortBy] = b.field, b.direction = "asc" === b.direction ? "desc" : "asc", d[c.paramNames.direction] = b.direction, a.reload(d)) } }, updateHeader: function(a) { var b, c, d = a.data(), e = d.params[d.paramNames.sortBy], f = d.params[d.paramNames.direction]; a.find('thead tr th [data-role="sorticon"]').remove(), e && (position = gj.grid.methods.getColumnPosition(a.data("columns"), e), position > -1 && (c = a.find("thead tr th:eq(" + position + ') div[data-role="title"]'), b = $('
').append("desc" === f ? d.icons.desc : d.icons.asc), c.after(b))) }, useHtmlDataSource: function(a, b) { var c, d, e, f, g = [], h = a.find('tbody tr[data-role != "empty"]'); for (c = 0; c < h.length; c++) { for (e = $(h[c]).find("td"), f = {}, d = 0; d < e.length; d++) f[b.columns[d].field] = $(e[d]).html(); g.push(f) } b.dataSource = g }, startLoading: function(a) { var b, c, d, e, f, g, h; gj.grid.methods.stopLoading(a), h = a.data(), 0 !== a.outerHeight() && (b = a.children("tbody"), e = b.outerWidth(!1), f = b.outerHeight(!1), g = Math.abs(a.parent().offset().top - b.offset().top), c = $('
').addClass(h.style.loadingCover).css({ width: e, height: f, top: g }), d = $('
' + gj.grid.messages[h.locale].Loading + "
").addClass(h.style.loadingText), d.insertAfter(a), c.insertAfter(a), d.css({ top: g + f / 2 - d.outerHeight(!1) / 2, left: e / 2 - d.outerWidth(!1) / 2 })) }, stopLoading: function(a) { a.parent().find('div[data-role="loading-cover"]').remove(), a.parent().find('div[data-role="loading-text"]').remove() }, appendEmptyRow: function(a, b) { var c, d, e, f; c = a.data(), d = $(''), e = $("").css({ width: "100%", "text-align": "center" }), e.attr("colspan", gj.grid.methods.countVisibleColumns(a)), f = $("
").html(b || c.notFoundText), e.append(f), d.append(e), gj.grid.events.beforeEmptyRowInsert(a, d), a.append(d) }, autoGenerateColumns: function(a, b) { var c, d, e, f, g = a.data(); if (g.columns = [], b.length > 0) { for (c = Object.getOwnPropertyNames(b[0]), f = 0; f < c.length; f++) d = b[0][c[f]], e = "text", d && ("number" == typeof d ? e = "number" : d.indexOf("/Date(") > -1 && (e = "date")), g.columns.push({ field: c[f], type: e }); gj.grid.methods.setDefaultColumnConfig(g.columns, g.defaultColumnSettings) } gj.grid.methods.renderHeader(a) }, loadData: function(a) { var b, c, d, e, f, g, h, i; for (b = a.data(), c = a.getAll(), gj.grid.events.dataBinding(a, c), e = c.length, gj.grid.methods.stopLoading(a), b.autoGenerateColumns && gj.grid.methods.autoGenerateColumns(a, c), g = a.children("tbody"), "checkbox" === b.selectionMethod && "multiple" === b.selectionType && a.find('thead input[data-role="selectAll"]').prop("checked", !1), g.children("tr").not('[data-role="row"]').remove(), 0 === e && (g.empty(), gj.grid.methods.appendEmptyRow(a)), h = g.children("tr"), f = h.length, d = 0; d < f; d++) { if (!(d < e)) { g.find('tr[data-role="row"]:gt(' + (d - 1) + ")").remove(); break } i = h.eq(d), gj.grid.methods.renderRow(a, i, c[d], d) } for (d = f; d < e; d++) gj.grid.methods.renderRow(a, null, c[d], d); gj.grid.events.dataBound(a, c, b.totalRecords) }, getId: function(a, b, c) { return b && a[b] ? a[b] : c }, renderRow: function(a, b, c, d) { var e, f, g, h, i; for (h = a.data(), b && 0 !== b.length ? (i = "update", b.removeClass(h.style.content.rowSelected).removeAttr("data-selected").off("click")) : (i = "create", b = $(''), a.children("tbody").append(b)), e = gj.grid.methods.getId(c, h.primaryKey, d + 1), b.attr("data-position", d + 1), "checkbox" !== h.selectionMethod && b.on("click", gj.grid.methods.createRowClickHandler(a, e)), g = 0; g < h.columns.length; g++) "update" === i ? (f = b.find("td:eq(" + g + ")"), gj.grid.methods.renderCell(a, f, h.columns[g], c, e)) : (f = gj.grid.methods.renderCell(a, null, h.columns[g], c, e), b.append(f)); gj.grid.events.rowDataBound(a, b, e, c) }, renderCell: function(a, b, c, d, e, f) { var g, h; if (b && 0 !== b.length ? (g = b.find('div[data-role="display"]'), f = "update") : (b = $(""), g = $('
'), c.align && b.css("text-align", c.align), c.cssClass && b.addClass(c.cssClass), b.append(g), f = "create"), gj.grid.methods.renderDisplayElement(a, g, c, d, e, f), "update" === f && (b.off(), g.off()), c.events) for (h in c.events) c.events.hasOwnProperty(h) && b.on(h, { id: e, field: c.field, record: d }, gj.grid.methods.createCellEventHandler(c, c.events[h])); return c.hidden && b.hide(), gj.grid.events.cellDataBound(a, g, e, c, d), b }, createCellEventHandler: function(a, b) { return function(c) { a.stopPropagation && c.stopPropagation(), b.call(this, c) } }, renderDisplayElement: function(a, b, c, d, e, f) { var g, h; "checkbox" === c.type && gj.checkbox ? "create" === f ? (h = $('').val(e).prop("checked", !!d[c.field]), c.role && h.attr("data-role", c.role), b.append(h), h.checkbox({ uiLibrary: a.data("uiLibrary") }), "selectRow" === c.role ? h.on("click", function() { return !1 }) : h.prop("disabled", !0)) : b.find('input[type="checkbox"]').val(e).prop("checked", !!d[c.field]) : "icon" === c.type ? "create" === f && (b.append($("").addClass(c.icon).css({ cursor: "pointer" })), "bootstrap" === a.data().uiLibrary && b.children("span").addClass("glyphicon"), c.stopPropagation = !0) : c.tmpl ? (g = c.tmpl, c.tmpl.replace(/\{(.+?)\}/g, function(a, b) { g = g.replace(a, gj.grid.methods.formatText(d[b], c)) }), b.html(g)) : c.renderer && "function" == typeof c.renderer ? (g = c.renderer(d[c.field], d, b.parent(), b, e, a)) && b.html(g) : (d[c.field] = gj.grid.methods.formatText(d[c.field], c), !c.tooltip && d[c.field] && b.attr("title", d[c.field]), b.html(d[c.field])), c.tooltip && "create" === f && b.attr("title", c.tooltip) }, formatText: function(a, b) { return a = a && ["date", "time", "datetime"].indexOf(b.type) > -1 ? gj.core.formatDate(gj.core.parseDate(a, b.format), b.format) : void 0 === a || null === a ? "" : a.toString(), b.decimalDigits && a && (a = parseFloat(a).toFixed(b.decimalDigits)), a }, setRecordsData: function(a, b) { var c = [], d = 0, e = a.data(); return $.isArray(b) ? (c = b, d = b.length) : e && e.mapping && $.isArray(b[e.mapping.dataField]) && (c = b[e.mapping.dataField], (d = b[e.mapping.totalRecordsField]) && !isNaN(d) || (d = 0)), a.data("records", c), a.data("totalRecords", d), c }, createRowClickHandler: function(a, b) { return function() { gj.grid.methods.setSelected(a, b, $(this)) } }, selectRow: function(a, b, c, d) { var e; return c.addClass(b.style.content.rowSelected), c.attr("data-selected", "true"), "checkbox" === b.selectionMethod && (e = c.find('input[type="checkbox"][data-role="selectRow"]'), e.length && !e.prop("checked") && e.prop("checked", !0), "multiple" === b.selectionType && a.getSelections().length === a.count(!1) && a.find('thead input[data-role="selectAll"]').prop("checked", !0)), gj.grid.events.rowSelect(a, c, d, a.getById(d)) }, unselectRow: function(a, b, c, d) { var e; if ("true" === c.attr("data-selected")) return c.removeClass(b.style.content.rowSelected), "checkbox" === b.selectionMethod && (e = c.find('td input[type="checkbox"][data-role="selectRow"]'), e.length && e.prop("checked") && e.prop("checked", !1), "multiple" === b.selectionType && a.find('thead input[data-role="selectAll"]').prop("checked", !1)), c.removeAttr("data-selected"), gj.grid.events.rowUnselect(a, c, d, a.getById(d)) }, setSelected: function(a, b, c) { var d = a.data(); return c && c.length || (c = gj.grid.methods.getRowById(a, b)), c && ("true" === c.attr("data-selected") ? gj.grid.methods.unselectRow(a, d, c, b) : ("single" === d.selectionType && c.siblings('[data-selected="true"]').each(function() { var b = $(this), c = gj.grid.methods.getId(b, d.primaryKey, b.data("position")); gj.grid.methods.unselectRow(a, d, b, c) }), gj.grid.methods.selectRow(a, d, c, b))), a }, selectAll: function(a) { var b = a.data(); return a.find('tbody tr[data-role="row"]').each(function() { var c = $(this), d = c.data("position"), e = a.get(d), f = gj.grid.methods.getId(e, b.primaryKey, d); gj.grid.methods.selectRow(a, b, c, f) }), a.find('thead input[data-role="selectAll"]').prop("checked", !0), a }, unSelectAll: function(a) { var b = a.data(); return a.find("tbody tr").each(function() { var c = $(this), d = c.data("position"), e = a.get(d), f = gj.grid.methods.getId(e, b.primaryKey, d); gj.grid.methods.unselectRow(a, b, c, f), c.find('input[type="checkbox"][data-role="selectRow"]').prop("checked", !1) }), a.find('thead input[data-role="selectAll"]').prop("checked", !1), a }, getSelected: function(a) { var b, c, d, e = null; return b = a.find('tbody>tr[data-selected="true"]'), b.length > 0 && (d = $(b[0]).data("position"), c = a.get(d), e = gj.grid.methods.getId(c, a.data().primaryKey, d)), e }, getSelectedRows: function(a) { a.data(); return a.find('tbody>tr[data-selected="true"]') }, getSelections: function(a) { var b, c, d = [], e = a.data(), f = gj.grid.methods.getSelectedRows(a); return 0 < f.length && f.each(function() { b = $(this).data("position"), c = a.get(b), d.push(gj.grid.methods.getId(c, e.primaryKey, b)) }), d }, getById: function(a, b) { var c, d = null, e = a.data("primaryKey"), f = a.data("records"); if (e) { for (c = 0; c < f.length; c++) if (f[c][e] == b) { d = f[c]; break } } else d = a.get(b); return d }, getRecVPosById: function(a, b) { var c, d = b, e = a.data(); if (e.primaryKey) for (c = 0; c < e.dataSource.length; c++) if (e.dataSource[c][e.primaryKey] == b) { d = c; break } return d }, getRowById: function(a, b) { var c, d, e = a.getAll(!1), f = a.data("primaryKey"), g = void 0; if (f) { for (d = 0; d < e.length; d++) if (e[d][f] == b) { c = d + 1; break } } else c = b; return c && (g = a.children("tbody").children('tr[data-position="' + c + '"]')), g }, getByPosition: function(a, b) { return a.getAll(!1)[b - 1] }, getColumnPosition: function(a, b) { var c, d = -1; for (c = 0; c < a.length; c++) if (a[c].field === b) { d = c; break } return d }, getColumnInfo: function(a, b) { var c, d = {}, e = a.data(); for (c = 0; c < e.columns.length; c += 1) if (e.columns[c].field === b) { d = e.columns[c]; break } return d }, getCell: function(a, b, c) { var d, e, f = null; return d = gj.grid.methods.getColumnPosition(a.data("columns"), c), d > -1 && (e = gj.grid.methods.getRowById(a, b), f = e.find("td:eq(" + d + ') div[data-role="display"]')), f }, setCellContent: function(a, b, c, d) { var e, f = gj.grid.methods.getCell(a, b, c); f && (f.empty(), "object" == typeof d ? f.append(d) : (e = gj.grid.methods.getColumnInfo(a, c), gj.grid.methods.renderDisplayElement(a, f, e, a.getById(b), b, "update"))) }, clone: function(a) { var b = []; return $.each(a, function() { b.push(this.clone()) }), b }, getAll: function(a) { return a.data("records") }, countVisibleColumns: function(a) { var b, c, d; for (b = a.data().columns, c = 0, d = 0; d < b.length; d++) !0 !== b[d].hidden && c++; return c }, clear: function(a, b) { var c = a.data(); return a.xhr && a.xhr.abort(), a.children("tbody").empty(), c.records = [], gj.grid.methods.stopLoading(a), gj.grid.methods.appendEmptyRow(a, b ? c.notFoundText : " "), gj.grid.events.dataBound(a, [], 0), a }, render: function(a, b) { return b && (gj.grid.methods.setRecordsData(a, b), gj.grid.methods.updateHeader(a), gj.grid.methods.loadData(a)), a }, filter: function(a) { var b, c, d = a.data(), e = d.dataSource.slice(); d.params[d.paramNames.sortBy] && (c = gj.grid.methods.getColumnInfo(a, d.params[d.paramNames.sortBy]), e.sort(c.sortable.sorter ? c.sortable.sorter(c.direction, c) : gj.grid.methods.createDefaultSorter(c.direction, c.field))); for (b in d.params) d.params[b] && !d.paramNames[b] && (c = gj.grid.methods.getColumnInfo(a, b), e = $.grep(e, function(a) { var e = a[b] || "", f = d.params[b] || ""; return c && "function" == typeof c.filter ? c.filter(e, f) : e.toUpperCase().indexOf(f.toUpperCase()) > -1 })); return gj.grid.events.dataFiltered(a, e), e }, createDefaultSorter: function(a, b) { return function(c, d) { var e = (c[b] || "").toString(), f = (d[b] || "").toString(); return "asc" === a ? e.localeCompare(f) : f.localeCompare(e) } }, destroy: function(a, b, c) { return a.data() && (gj.grid.events.destroying(a), gj.grid.methods.stopLoading(a), a.xhr && a.xhr.abort(), a.off(), !1 === c && a.parent('div[data-role="wrapper"]').length > 0 && a.unwrap(), a.removeData(), !1 === b ? a.remove() : a.removeClass().empty(), a.removeAttr("data-type")), a }, showColumn: function(a, b) { var c, d = a.data(), e = gj.grid.methods.getColumnPosition(d.columns, b); return e > -1 && (a.find("thead>tr").each(function() { $(this).children("th").eq(e).show() }), $.each(a.find("tbody>tr"), function() { $(this).children("td").eq(e).show() }), d.columns[e].hidden = !1, c = a.find('tbody > tr[data-role="empty"] > td'), c && c.length && c.attr("colspan", gj.grid.methods.countVisibleColumns(a)), gj.grid.events.columnShow(a, d.columns[e])), a }, hideColumn: function(a, b) { var c, d = a.data(), e = gj.grid.methods.getColumnPosition(d.columns, b); return e > -1 && (a.find("thead>tr").each(function() { $(this).children("th").eq(e).hide() }), $.each(a.find("tbody>tr"), function() { $(this).children("td").eq(e).hide() }), d.columns[e].hidden = !0, c = a.find('tbody > tr[data-role="empty"] > td'), c && c.length && c.attr("colspan", gj.grid.methods.countVisibleColumns(a)), gj.grid.events.columnHide(a, d.columns[e])), a }, isLastRecordVisible: function() { return !0 }, addRow: function(a, b) { var c = a.data(); return c.totalRecords = a.data("totalRecords") + 1, gj.grid.events.dataBinding(a, [b]), c.records.push(b), $.isArray(c.dataSource) && c.dataSource.push(b), 1 === c.totalRecords && a.children("tbody").empty(), gj.grid.methods.isLastRecordVisible(a) && gj.grid.methods.renderRow(a, null, b, a.count() - 1), gj.grid.events.dataBound(a, [b], c.totalRecords), a }, updateRow: function(a, b, c) { var d, e = gj.grid.methods.getRowById(a, b), f = a.data(); return f.records[e.data("position") - 1] = c, $.isArray(f.dataSource) && (d = gj.grid.methods.getRecVPosById(a, b), f.dataSource[d] = c), gj.grid.methods.renderRow(a, e, c, e.index()), a }, removeRow: function(a, b) { var c, d = a.data(), e = gj.grid.methods.getRowById(a, b); return gj.grid.events.rowRemoving(a, e, b, a.getById(b)), $.isArray(d.dataSource) && (c = gj.grid.methods.getRecVPosById(a, b), d.dataSource.splice(c, 1)), a.reload(), a }, count: function(a, b) { return b ? a.data().totalRecords : a.getAll().length }, getColumnPositionByRole: function(a, b) { var c, d, e = a.data("columns"); for (c = 0; c < e.length; c++) if (e[c].role === b) { d = c; break } return d }, getColumnPositionNotInRole: function(a) { var b, c = 0, d = a.data("columns"); for (b = 0; b < d.length; b++) if (!d[b].role) { c = b; break } return c } }, gj.grid.widget = function(a, b) { var c = this, d = gj.grid.methods; return c.reload = function(a) { return d.startLoading(this), gj.widget.prototype.reload.call(this, a) }, c.clear = function(a) { return d.clear(this, a) }, c.count = function(a) { return d.count(this, a) }, c.render = function(b) { return d.render(a, b) }, c.destroy = function(a, b) { return d.destroy(this, a, b) }, c.setSelected = function(a) { return d.setSelected(this, a) }, c.getSelected = function() { return d.getSelected(this) }, c.getSelections = function() { return d.getSelections(this) }, c.selectAll = function() { return d.selectAll(this) }, c.unSelectAll = function() { return d.unSelectAll(this) }, c.getById = function(a) { return d.getById(this, a) }, c.get = function(a) { return d.getByPosition(this, a) }, c.getAll = function(a) { return d.getAll(this, a) }, c.showColumn = function(a) { return d.showColumn(this, a) }, c.hideColumn = function(a) { return d.hideColumn(this, a) }, c.addRow = function(a) { return d.addRow(this, a) }, c.updateRow = function(a, b) { return d.updateRow(this, a, b) }, c.setCellContent = function(a, b, c) { d.setCellContent(this, a, b, c) }, c.removeRow = function(a) { return d.removeRow(this, a) }, $.extend(a, c), "grid" !== a.attr("data-type") && d.init.call(a, b), a }, gj.grid.widget.prototype = new gj.widget, gj.grid.widget.constructor = gj.grid.widget, gj.grid.widget.prototype.getConfig = gj.grid.methods.getConfig, gj.grid.widget.prototype.getHTMLConfig = gj.grid.methods.getHTMLConfig, function(a) { a.fn.grid = function(a) { var b; if (this && this.length) { if ("object" != typeof a && a) { if (b = new gj.grid.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); throw "Method " + a + " does not exist." } return new gj.grid.widget(this, a) } } }(jQuery), gj.grid.plugins.fixedHeader = { config: { base: { fixedHeader: !1, height: 300 } }, private: { init: function(a) { var b = a.data(), c = a.children("tbody"), d = a.children("thead"), e = b.height - d.outerHeight() - (a.children("tfoot").outerHeight() || 0); a.addClass("gj-grid-scrollable"), c.css("width", d.outerWidth()), c.height(e) }, refresh: function(a) { var b, c, d = (a.data(), a.children("tbody")), e = a.children("thead"), f = a.find('tbody tr[data-role="row"] td'), g = a.find('thead tr[data-role="caption"] th'); for (a.children("tbody").height() < gj.grid.plugins.fixedHeader.private.getRowsHeight(a) ? d.css("width", e.outerWidth() + gj.grid.plugins.fixedHeader.private.getScrollBarWidth() + (navigator.userAgent.toLowerCase().indexOf("firefox") > -1 ? 1 : 0)) : d.css("width", e.outerWidth()), b = 0; b < g.length; b++) c = $(g[b]).outerWidth(), 0 === b && gj.core.isIE() && (c -= 1), $(f[b]).attr("width", c) }, getRowsHeight: function(a) { var b = 0; return a.find("tbody tr").each(function() { b += $(this).height() }), b }, getScrollBarWidth: function() { var a = document.createElement("p"); a.style.width = "100%", a.style.height = "200px"; var b = document.createElement("div"); b.style.position = "absolute", b.style.top = "0px", b.style.left = "0px", b.style.visibility = "hidden", b.style.width = "200px", b.style.height = "150px", b.style.overflow = "hidden", b.appendChild(a), document.body.appendChild(b); var c = a.offsetWidth; b.style.overflow = "scroll"; var d = a.offsetWidth; return c == d && (d = b.clientWidth), document.body.removeChild(b), c - d } }, public: {}, events: {}, configure: function(a, b, c) { $.extend(!0, a, gj.grid.plugins.fixedHeader.public); a.data(); c.fixedHeader && (a.on("initialized", function() { gj.grid.plugins.fixedHeader.private.init(a) }), a.on("dataBound", function() { gj.grid.plugins.fixedHeader.private.refresh(a) }), a.on("resize", function() { gj.grid.plugins.fixedHeader.private.refresh(a) })) } }, gj.grid.plugins.expandCollapseRows = { config: { base: { detailTemplate: void 0, keepExpandedRows: !0, expandedRows: [], icons: { expandRow: '', collapseRow: '' } }, fontawesome: { icons: { expandRow: '', collapseRow: '' } }, glyphicons: { icons: { expandRow: '', collapseRow: '' } } }, private: { expandDetail: function(a, b, c) { var d = b.closest("tr"), e = $(''), f = $(''), g = $('
'), h = a.data(), i = d.data("position"), j = a.get(i), k = gj.grid.plugins.expandCollapseRows; void 0 === typeof c && (c = gj.grid.methods.getId(j, h.primaryKey, j)), e.append(f.append(g.append(d.data("details")))), e.insertAfter(d), b.children('div[data-role="display"]').empty().append(h.icons.collapseRow), a.updateDetails(d), k.private.keepSelection(a, c), k.events.detailExpand(a, e.find("td>div"), c) }, collapseDetail: function(a, b, c) { var d = b.closest("tr"), e = d.next('tr[data-role="details"]'), f = a.data(), g = gj.grid.plugins.expandCollapseRows; void 0 === typeof c && (c = gj.grid.methods.getId(record, f.primaryKey, record)), e.remove(), b.children('div[data-role="display"]').empty().append(f.icons.expandRow), g.private.removeSelection(a, c), g.events.detailCollapse(a, e.find("td>div"), c) }, keepSelection: function(a, b) { var c = a.data(); c.keepExpandedRows && ($.isArray(c.expandedRows) ? -1 == c.expandedRows.indexOf(b) && c.expandedRows.push(b) : c.expandedRows = [b]) }, removeSelection: function(a, b) { var c = a.data(); c.keepExpandedRows && $.isArray(c.expandedRows) && c.expandedRows.indexOf(b) > -1 && c.expandedRows.splice(c.expandedRows.indexOf(b), 1) }, updateDetailsColSpan: function(a) { var b = a.find('tbody > tr[data-role="details"] > td'); b && b.length && b.attr("colspan", gj.grid.methods.countVisibleColumns(a)) } }, public: { collapseAll: function() { var a, b = this, c = b.data(); return void 0 !== c.detailTemplate && (a = gj.grid.methods.getColumnPositionByRole(b, "expander"), b.find('tbody tr[data-role="row"]').each(function() { gj.grid.plugins.expandCollapseRows.private.collapseDetail(b, $(this).find("td:eq(" + a + ")")) })), void 0 !== c.grouping && b.find('tbody tr[role="group"]').each(function() { gj.grid.plugins.grouping.private.collapseGroup(c, $(this).find("td:eq(0)")) }), b }, expandAll: function() { var a, b = this, c = b.data(); return void 0 !== c.detailTemplate && (a = gj.grid.methods.getColumnPositionByRole(b, "expander"), b.find('tbody tr[data-role="row"]').each(function() { gj.grid.plugins.expandCollapseRows.private.expandDetail(b, $(this).find("td:eq(" + a + ")")) })), void 0 !== c.grouping && b.find('tbody tr[role="group"]').each(function() { gj.grid.plugins.grouping.private.expandGroup(c, $(this).find("td:eq(0)")) }), b }, updateDetails: function(a) { var b = this, c = a.data("details"), d = c.html(), e = b.get(a.data("position")); return e && d && (c.html().replace(/\{(.+?)\}/g, function(a, c) { var f = gj.grid.methods.getColumnInfo(b, c); d = d.replace(a, gj.grid.methods.formatText(e[c], f)) }), c.html(d)), b } }, events: { detailExpand: function(a, b, c) { a.triggerHandler("detailExpand", [b, c]) }, detailCollapse: function(a, b, c) { a.triggerHandler("detailCollapse", [b, c]) } }, configure: function(a) { var b, c = a.data(); $.extend(!0, a, gj.grid.plugins.expandCollapseRows.public), void 0 !== c.detailTemplate && (b = { title: "", width: c.defaultIconColumnWidth, align: "center", stopPropagation: !0, cssClass: "gj-cursor-pointer gj-unselectable", tmpl: c.icons.expandRow, role: "expander", events: { click: function(b) { var c = $(this), d = gj.grid.plugins.expandCollapseRows.private; "details" === c.closest("tr").next().attr("data-role") ? d.collapseDetail(a, c, b.data.id) : d.expandDetail(a, $(this), b.data.id) } } }, c.columns = [b].concat(c.columns), a.on("rowDataBound", function(a, b, d, e) { b.data("details", $(c.detailTemplate)) }), a.on("columnShow", function(b, c) { gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a) }), a.on("columnHide", function(b, c) { gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a) }), a.on("rowRemoving", function(b, c, d, e) { gj.grid.plugins.expandCollapseRows.private.collapseDetail(a, c.children("td").first(), d) }), a.on("dataBinding", function() { a.collapseAll() }), a.on("pageChanging", function() { a.collapseAll() }), a.on("dataBound", function() { var b, c, d, e, f = a.data(); if (f.keepExpandedRows && $.isArray(f.expandedRows)) for (b = 0; b < f.expandedRows.length; b++)(d = gj.grid.methods.getRowById(a, f.expandedRows[b])) && d.length && (e = gj.grid.methods.getColumnPositionByRole(a, "expander"), (c = d.children("td:eq(" + e + ")")) && c.length && gj.grid.plugins.expandCollapseRows.private.expandDetail(a, c)) })) } }, gj.grid.plugins.inlineEditing = { renderers: { editManager: function(a, b, c, d, e, f) { var g = f.data(), h = $(g.inlineEditing.editButton).attr("key", e), i = $(g.inlineEditing.deleteButton).attr("key", e), j = $(g.inlineEditing.updateButton).attr("key", e).hide(), k = $(g.inlineEditing.cancelButton).attr("key", e).hide(); h.on("click", function(a) { f.edit($(this).attr("key")) }), i.on("click", function(a) { f.removeRow($(this).attr("key")) }), j.on("click", function(a) { f.update($(this).attr("key")) }), k.on("click", function(a) { f.cancel($(this).attr("key")) }), d.empty().append(h).append(i).append(j).append(k) } } }, gj.grid.plugins.inlineEditing.config = { base: { defaultColumnSettings: { editor: void 0, editField: void 0, mode: "readEdit" }, inlineEditing: { mode: "click", managementColumn: !0, managementColumnConfig: { width: 300, role: "managementColumn", align: "center", renderer: gj.grid.plugins.inlineEditing.renderers.editManager, cssClass: "gj-grid-management-column" } } }, bootstrap: { inlineEditing: { managementColumnConfig: { width: 200, role: "managementColumn", align: "center", renderer: gj.grid.plugins.inlineEditing.renderers.editManager, cssClass: "gj-grid-management-column" } } }, bootstrap4: { inlineEditing: { managementColumnConfig: { width: 280, role: "managementColumn", align: "center", renderer: gj.grid.plugins.inlineEditing.renderers.editManager, cssClass: "gj-grid-management-column" } } } }, gj.grid.plugins.inlineEditing.private = { localization: function(a) { "bootstrap" === a.uiLibrary ? (a.inlineEditing.editButton = '", a.inlineEditing.deleteButton = '", a.inlineEditing.updateButton = '", a.inlineEditing.cancelButton = '") : (a.inlineEditing.editButton = '", a.inlineEditing.deleteButton = '", a.inlineEditing.updateButton = '", a.inlineEditing.cancelButton = '") }, editMode: function(a, b, c, d) { var e, f, g, h, i, j = a.data(); if ("edit" !== b.attr("data-mode")) if (c.editor) { if (gj.grid.plugins.inlineEditing.private.updateOtherCells(a, c.mode), e = b.find('div[data-role="display"]').hide(), f = b.find('div[data-role="edit"]').show(), 0 === f.length && (f = $('
'), b.append(f)), h = d[c.editField || c.field], g = f.find("input, select, textarea").first(), g.length) switch (c.type) { case "checkbox": g.prop("checked", h); break; case "dropdown": g = g.dropdown("value", h); break; default: g.val(h) } else { if ("function" == typeof c.editor) c.editor(f, h, d), g = f.find("input, select, textarea").first(); else if (i = "object" == typeof c.editor ? c.editor : {}, i.uiLibrary = j.uiLibrary, i.iconsLibrary = j.iconsLibrary, i.fontSize = a.css("font-size"), i.showOnFocus = !1, "checkbox" === c.type && gj.checkbox) g = $('').prop("checked", h), f.append(g), g.checkbox(i); else if ("date" === c.type && gj.datepicker || "time" === c.type && gj.timepicker || "datetime" === c.type && gj.datetimepicker) { switch (g = $(''), f.append(g), c.format && (i.format = c.format), c.type) { case "date": g = g.datepicker(i); break; case "time": g = g.timepicker(i); break; case "datetime": g = g.datetimepicker(i) } g.value && g.value(e.html()) } else "dropdown" === c.type && gj.dropdown ? (g = $(''), "materialdesign" === j.uiLibrary && g.addClass("gj-textbox-md").css("font-size", a.css("font-size")), f.append(g)); "command" !== j.inlineEditing.mode && "editOnly" !== c.mode && (g = f.find("input, select, textarea").first(), g.on("keyup", function(d) { 13 !== d.keyCode && 27 !== d.keyCode || gj.grid.plugins.inlineEditing.private.displayMode(a, b, c) })) } "INPUT" === g.prop("tagName").toUpperCase() && "TEXT" === g.prop("type").toUpperCase() ? gj.core.setCaretAtEnd(g[0]) : g.focus(), b.attr("data-mode", "edit") } else "managementColumn" === c.role && (b.find('[role="edit"]').hide(), b.find('[role="delete"]').hide(), b.find('[role="update"]').show(), b.find('[role="cancel"]').show()) }, displayMode: function(a, b, c, d) { var e, f, g, h, i, j, k; "editOnly" !== c.mode && ("edit" === b.attr("data-mode") && (e = b.find('div[data-role="edit"]'), f = b.find('div[data-role="display"]'), g = e.find("input, select, textarea").first(), "SELECT" === g[0].tagName.toUpperCase() && g[0].selectedIndex > -1 ? (h = g[0].options[g[0].selectedIndex].innerHTML, i = g[0].value) : h = "INPUT" === g[0].tagName.toUpperCase() && "CHECKBOX" === g[0].type.toUpperCase() ? g[0].checked : g.val(), k = b.parent().data("position"), j = a.get(k), !0 !== d && h !== j[c.field] && (j[c.field] = "date" === c.type ? gj.core.parseDate(h, c.format) : h, c.editField && (j[c.editField] = i || h), "editOnly" !== c.mode && (gj.grid.methods.renderDisplayElement(a, f, c, j, gj.grid.methods.getId(j, a.data("primaryKey"), k), "update"), 0 === b.find("span.gj-dirty").length && b.prepend($(''))), gj.grid.plugins.inlineEditing.events.cellDataChanged(a, b, c, j, h), gj.grid.plugins.inlineEditing.private.updateChanges(a, c, j, h)), e.hide(), f.show(), b.attr("data-mode", "display")), "managementColumn" === c.role && (b.find('[role="update"]').hide(), b.find('[role="cancel"]').hide(), b.find('[role="edit"]').show(), b.find('[role="delete"]').show())) }, updateOtherCells: function(a, b) { var c = a.data(); "command" !== c.inlineEditing.mode && "editOnly" !== b && a.find('div[data-role="edit"]:visible').parent("td").each(function() { var b = $(this), d = c.columns[b.index()]; gj.grid.plugins.inlineEditing.private.displayMode(a, b, d) }) }, updateChanges: function(a, b, c, d) { var e, f, g, h = a.data(); h.guid || (h.guid = gj.grid.plugins.inlineEditing.private.generateGUID()), h.primaryKey && (e = JSON.parse(sessionStorage.getItem("gj.grid." + h.guid)), e ? f = e.filter(function(a) { return a[h.primaryKey] === c[h.primaryKey] }) : e = [], f && 1 === f.length ? f[0][b.field] = d : (g = {}, g[h.primaryKey] = c[h.primaryKey], h.primaryKey !== b.field && (g[b.field] = d), e.push(g)), sessionStorage.setItem("gj.grid." + h.guid, JSON.stringify(e))) }, generateGUID: function() { function a() { return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1) } return a() + a() + "-" + a() + "-" + a() + "-" + a() + "-" + a() + a() + a() } }, gj.grid.plugins.inlineEditing.public = { getChanges: function() { return JSON.parse(sessionStorage.getItem("gj.grid." + this.data().guid)) }, edit: function(a) { var b, c = this.getById(a), d = gj.grid.methods.getRowById(this, a).children("td"), e = this.data("columns"); for (b = 0; b < d.length; b++) gj.grid.plugins.inlineEditing.private.editMode(this, $(d[b]), e[b], c); return this }, update: function(a) { var b, c = this.getById(a), d = gj.grid.methods.getRowById(this, a).children("td"), e = this.data("columns"); for (b = 0; b < d.length; b++) gj.grid.plugins.inlineEditing.private.displayMode(this, $(d[b]), e[b], !1); return gj.grid.plugins.inlineEditing.events.rowDataChanged(this, a, c), this }, cancel: function(a) { var b, c = (this.getById(a), gj.grid.methods.getRowById(this, a).children("td")), d = this.data("columns"); for (b = 0; b < c.length; b++) gj.grid.plugins.inlineEditing.private.displayMode(this, $(c[b]), d[b], !0); return this } }, gj.grid.plugins.inlineEditing.events = { cellDataChanged: function(a, b, c, d, e, f) { a.triggerHandler("cellDataChanged", [b, c, d, e, f]) }, rowDataChanged: function(a, b, c) { a.triggerHandler("rowDataChanged", [b, c]) } }, gj.grid.plugins.inlineEditing.configure = function(a, b, c) { var d = a.data(); $.extend(!0, a, gj.grid.plugins.inlineEditing.public), c.inlineEditing && (a.on("dataBound", function() { a.find("span.gj-dirty").remove() }), a.on("rowDataBound", function(b, c, d, e) { a.cancel(d) })), "command" === d.inlineEditing.mode ? (gj.grid.plugins.inlineEditing.private.localization(d), b.inlineEditing.managementColumn && d.columns.push(b.inlineEditing.managementColumnConfig)) : a.on("cellDataBound", function(b, c, e, f, g) { f.editor && ("editOnly" === f.mode ? gj.grid.plugins.inlineEditing.private.editMode(a, c.parent(), f, g) : c.parent("td").on("dblclick" === d.inlineEditing.mode ? "dblclick" : "click", function() { gj.grid.plugins.inlineEditing.private.editMode(a, c.parent(), f, g) })) }) }, gj.grid.plugins.optimisticPersistence = { config: { base: { optimisticPersistence: { localStorage: void 0, sessionStorage: void 0 } } }, private: { applyParams: function(a) { var b, c = a.data(), d = {}; b = JSON.parse(sessionStorage.getItem("gj.grid." + c.guid)), b && b.optimisticPersistence && $.extend(d, b.optimisticPersistence), b = JSON.parse(localStorage.getItem("gj.grid." + c.guid)), b && b.optimisticPersistence && $.extend(d, b.optimisticPersistence), $.extend(c.params, d) }, saveParams: function(a) { var b, c, d = a.data(), e = { optimisticPersistence: {} }; if (d.optimisticPersistence.sessionStorage) { for (b = 0; b < d.optimisticPersistence.sessionStorage.length; b++) c = d.optimisticPersistence.sessionStorage[b], e.optimisticPersistence[c] = d.params[c]; e = $.extend(!0, JSON.parse(sessionStorage.getItem("gj.grid." + d.guid)), e), sessionStorage.setItem("gj.grid." + d.guid, JSON.stringify(e)) } if (d.optimisticPersistence.localStorage) { for (e = { optimisticPersistence: {} }, b = 0; b < d.optimisticPersistence.localStorage.length; b++) c = d.optimisticPersistence.localStorage[b], e.optimisticPersistence[c] = d.params[c]; e = $.extend(!0, JSON.parse(localStorage.getItem("gj.grid." + d.guid)), e), localStorage.setItem("gj.grid." + d.guid, JSON.stringify(e)) } } }, configure: function(a, b, c) { b.guid && (b.optimisticPersistence.localStorage || b.optimisticPersistence.sessionStorage) && (gj.grid.plugins.optimisticPersistence.private.applyParams(a), a.on("dataBound", function(b) { gj.grid.plugins.optimisticPersistence.private.saveParams(a) })) } }, gj.grid.plugins.pagination = { config: { base: { style: { pager: { panel: "", stateDisabled: "", activeButton: "" } }, paramNames: { page: "page", limit: "limit" }, pager: { limit: 10, sizes: [5, 10, 20, 100], leftControls: void 0, rightControls: void 0 } }, bootstrap: { style: { pager: { panel: "", stateDisabled: "" } } }, bootstrap4: { style: { pager: { panel: "btn-toolbar", stateDisabled: "" } } }, glyphicons: { icons: { first: '', previous: '', next: '', last: '', refresh: '' } }, materialicons: { icons: { first: '', previous: '', next: '', last: '', refresh: '' } }, fontawesome: { icons: { first: '', previous: '', next: '', last: '', refresh: '' } } }, private: { init: function(a) { var b, c, d, e, f, g, h, i, j, k; if (d = a.data(), d.pager) for (d.params[d.paramNames.page] || (d.params[d.paramNames.page] = 1), d.params[d.paramNames.limit] || (d.params[d.paramNames.limit] = d.pager.limit), gj.grid.plugins.pagination.private.localization(d), b = $(''), c = $(""), b.append(c), f = $('
').addClass(d.style.pager.panel).css({ float: "left" }), g = $('
').addClass(d.style.pager.panel).css({ float: "right" }), c.append(f).append(g), h = $("").append(b), a.append(h), gj.grid.plugins.pagination.private.updatePagerColSpan(a), i = gj.grid.methods.clone(d.pager.leftControls), $.each(i, function() { f.append(this) }), j = gj.grid.methods.clone(d.pager.rightControls), $.each(j, function() { g.append(this) }), e = a.find("tfoot [data-role]"), k = 0; k < e.length; k++) gj.grid.plugins.pagination.private.initPagerControl($(e[k]), a) }, localization: function(a) { "bootstrap" === a.uiLibrary ? gj.grid.plugins.pagination.private.localizationBootstrap(a) : "bootstrap4" === a.uiLibrary ? gj.grid.plugins.pagination.private.localizationBootstrap4(a) : gj.grid.plugins.pagination.private.localizationMaterialDesign(a) }, localizationBootstrap: function(a) { var b = gj.grid.messages[a.locale]; void 0 === a.pager.leftControls && (a.pager.leftControls = [$('").attr("title", b.FirstPageTooltip).attr("data-role", "page-first"), $('").attr("title", b.PreviousPageTooltip).attr("data-role", "page-previous"), $("
" + b.Page + "
"), $(''), $("
" + b.Of + "
"), $('
0
'), $('").attr("title", b.NextPageTooltip).attr("data-role", "page-next"), $('").attr("title", b.LastPageTooltip).attr("data-role", "page-last"), $('").attr("title", b.Refresh).attr("data-role", "page-refresh"), $('')]), void 0 === a.pager.rightControls && (a.pager.rightControls = [$("
" + b.DisplayingRecords + "
"), $('
0
'), $("
-
"), $('
0
'), $("
" + b.Of + "
"), $('
0
')]) }, localizationBootstrap4: function(a) { var b = gj.grid.messages[a.locale]; void 0 === a.pager.leftControls && (a.pager.leftControls = [$('").attr("title", b.FirstPageTooltip).attr("data-role", "page-first"), $('").attr("title", b.PreviousPageTooltip).attr("data-role", "page-previous"), $("
" + b.Page + "
"), $('
'), $("
" + b.Of + "
"), $('
0
'), $('").attr("title", b.NextPageTooltip).attr("data-role", "page-next"), $('").attr("title", b.LastPageTooltip).attr("data-role", "page-last"), $('").attr("title", b.Refresh).attr("data-role", "page-refresh"), $('')]), void 0 === a.pager.rightControls && (a.pager.rightControls = [$("
" + b.DisplayingRecords + " 
"), $('
0
'), $("
-
"), $('
0
'), $("
" + b.Of + "
"), $('
0
')]) }, localizationMaterialDesign: function(a) { var b = gj.grid.messages[a.locale]; void 0 === a.pager.leftControls && (a.pager.leftControls = []), void 0 === a.pager.rightControls && (a.pager.rightControls = [$('' + b.RowsPerPage + ""), $('
'), $(' '), $('0'), $('-'), $('0'), $('' + b.Of + ""), $('0'), $(' '), $('").attr("title", b.PreviousPageTooltip).attr("data-role", "page-previous").addClass(a.icons.first ? "gj-button-md-icon" : ""), $(' '), $('").attr("title", b.NextPageTooltip).attr("data-role", "page-next").addClass(a.icons.first ? "gj-button-md-icon" : "")]) }, initPagerControl: function(a, b) { var c = b.data(); switch (a.data("role")) { case "page-size": c.pager.sizes && 0 < c.pager.sizes.length ? (a.show(), $.each(c.pager.sizes, function() { a.append($("