libre-jqgrid 4.17.2 → 4.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.tscache/all/hashes/free-jqgrid.d.ts-74303c8b076937117540c0cb798f2053 +1 -0
- package/.tscache/all/hashes/test.ts-0d81877a31bc5d7ac52dd35a66602f01 +1 -0
- package/.tscache/all/timestamp +0 -0
- package/dist/css/ui.jqgrid.css +1618 -0
- package/dist/css/ui.jqgrid.min.css +4 -0
- package/dist/css/ui.jqgrid.min.css.map +1 -0
- package/dist/i18n/grid.locale-ar.js +198 -0
- package/dist/i18n/grid.locale-bg.js +201 -0
- package/dist/i18n/grid.locale-bs.js +230 -0
- package/dist/i18n/grid.locale-ca.js +204 -0
- package/dist/i18n/grid.locale-cn.js +237 -0
- package/dist/i18n/grid.locale-cs.js +197 -0
- package/dist/i18n/grid.locale-da.js +196 -0
- package/dist/i18n/grid.locale-de.js +240 -0
- package/dist/i18n/grid.locale-el.js +195 -0
- package/dist/i18n/grid.locale-en.js +256 -0
- package/dist/i18n/grid.locale-es.js +202 -0
- package/dist/i18n/grid.locale-fa.js +211 -0
- package/dist/i18n/grid.locale-fi.js +201 -0
- package/dist/i18n/grid.locale-fr.js +197 -0
- package/dist/i18n/grid.locale-gl.js +197 -0
- package/dist/i18n/grid.locale-he.js +198 -0
- package/dist/i18n/grid.locale-hr.js +231 -0
- package/dist/i18n/grid.locale-hu.js +196 -0
- package/dist/i18n/grid.locale-id.js +238 -0
- package/dist/i18n/grid.locale-is.js +197 -0
- package/dist/i18n/grid.locale-it.js +189 -0
- package/dist/i18n/grid.locale-ja.js +203 -0
- package/dist/i18n/grid.locale-kr.js +194 -0
- package/dist/i18n/grid.locale-lt.js +199 -0
- package/dist/i18n/grid.locale-me.js +198 -0
- package/dist/i18n/grid.locale-nl.js +208 -0
- package/dist/i18n/grid.locale-no.js +180 -0
- package/dist/i18n/grid.locale-pl.js +204 -0
- package/dist/i18n/grid.locale-pt-br.js +210 -0
- package/dist/i18n/grid.locale-pt.js +196 -0
- package/dist/i18n/grid.locale-ro.js +210 -0
- package/dist/i18n/grid.locale-ru.js +196 -0
- package/dist/i18n/grid.locale-sk.js +198 -0
- package/dist/i18n/grid.locale-sl.js +230 -0
- package/dist/i18n/grid.locale-sr.js +199 -0
- package/dist/i18n/grid.locale-sv.js +198 -0
- package/dist/i18n/grid.locale-th.js +195 -0
- package/dist/i18n/grid.locale-tr.js +197 -0
- package/dist/i18n/grid.locale-tw.js +199 -0
- package/dist/i18n/grid.locale-ua.js +199 -0
- package/dist/i18n/grid.locale-vi.js +238 -0
- package/dist/i18n/min/grid.locale-ar.js +10 -0
- package/dist/i18n/min/grid.locale-ar.js.map +1 -0
- package/dist/i18n/min/grid.locale-bg.js +10 -0
- package/dist/i18n/min/grid.locale-bg.js.map +1 -0
- package/dist/i18n/min/grid.locale-ca.js +15 -0
- package/dist/i18n/min/grid.locale-ca.js.map +1 -0
- package/dist/i18n/min/grid.locale-cn.js +10 -0
- package/dist/i18n/min/grid.locale-cn.js.map +1 -0
- package/dist/i18n/min/grid.locale-cs.js +11 -0
- package/dist/i18n/min/grid.locale-cs.js.map +1 -0
- package/dist/i18n/min/grid.locale-da.js +10 -0
- package/dist/i18n/min/grid.locale-da.js.map +1 -0
- package/dist/i18n/min/grid.locale-de.js +21 -0
- package/dist/i18n/min/grid.locale-de.js.map +1 -0
- package/dist/i18n/min/grid.locale-el.js +10 -0
- package/dist/i18n/min/grid.locale-el.js.map +1 -0
- package/dist/i18n/min/grid.locale-en.js +11 -0
- package/dist/i18n/min/grid.locale-en.js.map +1 -0
- package/dist/i18n/min/grid.locale-es.js +16 -0
- package/dist/i18n/min/grid.locale-es.js.map +1 -0
- package/dist/i18n/min/grid.locale-fa.js +8 -0
- package/dist/i18n/min/grid.locale-fa.js.map +1 -0
- package/dist/i18n/min/grid.locale-fi.js +11 -0
- package/dist/i18n/min/grid.locale-fi.js.map +1 -0
- package/dist/i18n/min/grid.locale-fr.js +10 -0
- package/dist/i18n/min/grid.locale-fr.js.map +1 -0
- package/dist/i18n/min/grid.locale-gl.js +9 -0
- package/dist/i18n/min/grid.locale-gl.js.map +1 -0
- package/dist/i18n/min/grid.locale-he.js +10 -0
- package/dist/i18n/min/grid.locale-he.js.map +1 -0
- package/dist/i18n/min/grid.locale-hr.js +11 -0
- package/dist/i18n/min/grid.locale-hr.js.map +1 -0
- package/dist/i18n/min/grid.locale-hu.js +10 -0
- package/dist/i18n/min/grid.locale-hu.js.map +1 -0
- package/dist/i18n/min/grid.locale-id.js +10 -0
- package/dist/i18n/min/grid.locale-id.js.map +1 -0
- package/dist/i18n/min/grid.locale-is.js +9 -0
- package/dist/i18n/min/grid.locale-is.js.map +1 -0
- package/dist/i18n/min/grid.locale-it.js +2 -0
- package/dist/i18n/min/grid.locale-it.js.map +1 -0
- package/dist/i18n/min/grid.locale-ja.js +10 -0
- package/dist/i18n/min/grid.locale-ja.js.map +1 -0
- package/dist/i18n/min/grid.locale-kr.js +2 -0
- package/dist/i18n/min/grid.locale-kr.js.map +1 -0
- package/dist/i18n/min/grid.locale-lt.js +10 -0
- package/dist/i18n/min/grid.locale-lt.js.map +1 -0
- package/dist/i18n/min/grid.locale-me.js +10 -0
- package/dist/i18n/min/grid.locale-me.js.map +1 -0
- package/dist/i18n/min/grid.locale-nl.js +2 -0
- package/dist/i18n/min/grid.locale-nl.js.map +1 -0
- package/dist/i18n/min/grid.locale-no.js +2 -0
- package/dist/i18n/min/grid.locale-no.js.map +1 -0
- package/dist/i18n/min/grid.locale-pl.js +18 -0
- package/dist/i18n/min/grid.locale-pl.js.map +1 -0
- package/dist/i18n/min/grid.locale-pt-br.js +21 -0
- package/dist/i18n/min/grid.locale-pt-br.js.map +1 -0
- package/dist/i18n/min/grid.locale-pt.js +9 -0
- package/dist/i18n/min/grid.locale-pt.js.map +1 -0
- package/dist/i18n/min/grid.locale-ro.js +10 -0
- package/dist/i18n/min/grid.locale-ro.js.map +1 -0
- package/dist/i18n/min/grid.locale-ru.js +10 -0
- package/dist/i18n/min/grid.locale-ru.js.map +1 -0
- package/dist/i18n/min/grid.locale-sk.js +10 -0
- package/dist/i18n/min/grid.locale-sk.js.map +1 -0
- package/dist/i18n/min/grid.locale-sr.js +10 -0
- package/dist/i18n/min/grid.locale-sr.js.map +1 -0
- package/dist/i18n/min/grid.locale-sv.js +10 -0
- package/dist/i18n/min/grid.locale-sv.js.map +1 -0
- package/dist/i18n/min/grid.locale-th.js +10 -0
- package/dist/i18n/min/grid.locale-th.js.map +1 -0
- package/dist/i18n/min/grid.locale-tr.js +10 -0
- package/dist/i18n/min/grid.locale-tr.js.map +1 -0
- package/dist/i18n/min/grid.locale-tw.js +11 -0
- package/dist/i18n/min/grid.locale-tw.js.map +1 -0
- package/dist/i18n/min/grid.locale-ua.js +10 -0
- package/dist/i18n/min/grid.locale-ua.js.map +1 -0
- package/dist/i18n/min/grid.locale-vi.js +10 -0
- package/dist/i18n/min/grid.locale-vi.js.map +1 -0
- package/dist/jquery.jqgrid.min.js +11 -0
- package/dist/jquery.jqgrid.min.js.map +1 -0
- package/{js/jquery.jqgrid.src.js.1 → dist/jquery.jqgrid.src.js} +1 -1
- package/dist/modules/grid.base.js +8518 -0
- package/dist/modules/grid.celledit.js +673 -0
- package/dist/modules/grid.common.js +844 -0
- package/dist/modules/grid.custom.js +1795 -0
- package/dist/modules/grid.filter.js +897 -0
- package/dist/modules/grid.formedit.js +2537 -0
- package/dist/modules/grid.grouping.js +737 -0
- package/dist/modules/grid.import.js +251 -0
- package/dist/modules/grid.inlinedit.js +784 -0
- package/dist/modules/grid.jqueryui.js +965 -0
- package/dist/modules/grid.pivot.js +862 -0
- package/dist/modules/grid.subgrid.js +379 -0
- package/dist/modules/grid.tbltogrid.js +141 -0
- package/dist/modules/grid.treegrid.js +683 -0
- package/dist/modules/jqdnr.js +188 -0
- package/dist/modules/jqmodal.js +292 -0
- package/dist/modules/jquery.fmatter.js +1061 -0
- package/dist/modules/jsonxml.js +343 -0
- package/dist/modules/min/grid.base.js +11 -0
- package/dist/modules/min/grid.base.js.map +1 -0
- package/dist/modules/min/grid.celledit.js +2 -0
- package/dist/modules/min/grid.celledit.js.map +1 -0
- package/dist/modules/min/grid.common.js +2 -0
- package/dist/modules/min/grid.common.js.map +1 -0
- package/dist/modules/min/grid.custom.js +2 -0
- package/dist/modules/min/grid.custom.js.map +1 -0
- package/dist/modules/min/grid.filter.js +2 -0
- package/dist/modules/min/grid.filter.js.map +1 -0
- package/dist/modules/min/grid.formedit.js +2 -0
- package/dist/modules/min/grid.formedit.js.map +1 -0
- package/dist/modules/min/grid.grouping.js +2 -0
- package/dist/modules/min/grid.grouping.js.map +1 -0
- package/dist/modules/min/grid.import.js +2 -0
- package/dist/modules/min/grid.import.js.map +1 -0
- package/dist/modules/min/grid.inlinedit.js +2 -0
- package/dist/modules/min/grid.inlinedit.js.map +1 -0
- package/dist/modules/min/grid.jqueryui.js +2 -0
- package/dist/modules/min/grid.jqueryui.js.map +1 -0
- package/dist/modules/min/grid.pivot.js +2 -0
- package/dist/modules/min/grid.pivot.js.map +1 -0
- package/dist/modules/min/grid.subgrid.js +2 -0
- package/dist/modules/min/grid.subgrid.js.map +1 -0
- package/dist/modules/min/grid.tbltogrid.js +2 -0
- package/dist/modules/min/grid.tbltogrid.js.map +1 -0
- package/dist/modules/min/grid.treegrid.js +2 -0
- package/dist/modules/min/grid.treegrid.js.map +1 -0
- package/dist/modules/min/jqdnr.js +2 -0
- package/dist/modules/min/jqdnr.js.map +1 -0
- package/dist/modules/min/jqmodal.js +2 -0
- package/dist/modules/min/jqmodal.js.map +1 -0
- package/dist/modules/min/jquery.fmatter.js +2 -0
- package/dist/modules/min/jquery.fmatter.js.map +1 -0
- package/dist/modules/min/jsonxml.js +2 -0
- package/dist/modules/min/jsonxml.js.map +1 -0
- package/dist/plugins/css/ui.multiselect.css +30 -0
- package/dist/plugins/css/ui.multiselect.min.css +2 -0
- package/dist/plugins/css/ui.multiselect.min.css.map +1 -0
- package/dist/plugins/grid.odata.js +1313 -0
- package/dist/plugins/jqgrid_download.js +109 -0
- package/dist/plugins/jquery.contextmenu-ui.js +304 -0
- package/dist/plugins/jquery.contextmenu.js +174 -0
- package/dist/plugins/jquery.createcontexmenufromnavigatorbuttons.js +172 -0
- package/dist/plugins/jquery.jqgrid.showhidecolumnmenu.js +201 -0
- package/dist/plugins/min/grid.odata.js +11 -0
- package/dist/plugins/min/grid.odata.js.map +1 -0
- package/dist/plugins/min/jquery.contextmenu-ui.js +26 -0
- package/dist/plugins/min/jquery.contextmenu-ui.js.map +1 -0
- package/dist/plugins/min/jquery.contextmenu.js +19 -0
- package/dist/plugins/min/jquery.contextmenu.js.map +1 -0
- package/dist/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js +12 -0
- package/dist/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js.map +1 -0
- package/dist/plugins/min/jquery.jqgrid.showhidecolumnmenu.js +10 -0
- package/dist/plugins/min/jquery.jqgrid.showhidecolumnmenu.js.map +1 -0
- package/dist/plugins/min/ui.multiselect.js +30 -0
- package/dist/plugins/min/ui.multiselect.js.map +1 -0
- package/dist/plugins/ui.multiselect.js +389 -0
- package/dist/ts/free-jqgrid.d.ts +2132 -0
- package/js/jquery.jqgrid.min.js +1 -1
- package/js/jquery.jqgrid.min.js.map +1 -1
- package/js/jquery.jqgrid.src.js +8 -3
- package/libre-jqgrid-4.17.4.tgz +0 -0
- package/package.json +1 -1
- package/.github/workflows/npm.yml +0 -47
|
@@ -0,0 +1,784 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jqGrid extension for manipulating Grid Data
|
|
3
|
+
* Copyright (c) 2008-2014, Tony Tomov, tony@trirand.com, http://trirand.com/blog/
|
|
4
|
+
* Copyright (c) 2014-2019, Oleg Kiriljuk, oleg.kiriljuk@ok-soft-gmbh.com
|
|
5
|
+
* Copyright (c) 2023, rany2, ranygh@riseup.net
|
|
6
|
+
* Dual licensed under the MIT and GPL licenses:
|
|
7
|
+
* http://www.opensource.org/licenses/mit-license.php
|
|
8
|
+
* http://www.gnu.org/licenses/gpl-2.0.html
|
|
9
|
+
**/
|
|
10
|
+
|
|
11
|
+
/*jslint browser: true, eqeq: true, nomen: true, vars: true, devel: true, unparam: true, plusplus: true, white: true, todo: true */
|
|
12
|
+
/*global jQuery, define, exports, module, require */
|
|
13
|
+
(function (factory) {
|
|
14
|
+
"use strict";
|
|
15
|
+
if (typeof define === "function" && define.amd) {
|
|
16
|
+
// AMD. Register as an anonymous module.
|
|
17
|
+
define([
|
|
18
|
+
"jquery",
|
|
19
|
+
"./grid.base",
|
|
20
|
+
"./jquery.fmatter",
|
|
21
|
+
"./grid.common"
|
|
22
|
+
], factory);
|
|
23
|
+
} else if (typeof module === "object" && module.exports) {
|
|
24
|
+
// Node/CommonJS
|
|
25
|
+
module.exports = function (root, $) {
|
|
26
|
+
if (!root) {
|
|
27
|
+
root = window;
|
|
28
|
+
}
|
|
29
|
+
if ($ === undefined) {
|
|
30
|
+
// require("jquery") returns a factory that requires window to
|
|
31
|
+
// build a jQuery instance, we normalize how we use modules
|
|
32
|
+
// that require this pattern but the window provided is a noop
|
|
33
|
+
// if it's defined (how jquery works)
|
|
34
|
+
$ = typeof window !== "undefined" ?
|
|
35
|
+
require("jquery") :
|
|
36
|
+
require("jquery")(root);
|
|
37
|
+
}
|
|
38
|
+
require("./grid.base");
|
|
39
|
+
require("./jquery.fmatter");
|
|
40
|
+
require("./grid.common");
|
|
41
|
+
factory($);
|
|
42
|
+
return $;
|
|
43
|
+
};
|
|
44
|
+
} else {
|
|
45
|
+
// Browser globals
|
|
46
|
+
factory(jQuery);
|
|
47
|
+
}
|
|
48
|
+
}(function ($) {
|
|
49
|
+
"use strict";
|
|
50
|
+
var jgrid = $.jgrid, fullBoolFeedback = jgrid.fullBoolFeedback, hasOneFromClasses = jgrid.hasOneFromClasses,
|
|
51
|
+
base = $.fn.jqGrid,
|
|
52
|
+
getGuiStateStyles = function (path) {
|
|
53
|
+
return base.getGuiStyles.call(this, "states." + path);
|
|
54
|
+
};
|
|
55
|
+
// begin module grid.inlinedit
|
|
56
|
+
var editFeedback = function (o) {
|
|
57
|
+
var args = $.makeArray(arguments).slice(1);
|
|
58
|
+
args.unshift("");
|
|
59
|
+
args.unshift("Inline");
|
|
60
|
+
args.unshift(o);
|
|
61
|
+
return jgrid.feedback.apply(this, args);
|
|
62
|
+
};
|
|
63
|
+
jgrid.inlineEdit = jgrid.inlineEdit || {};
|
|
64
|
+
jgrid.extend({
|
|
65
|
+
//Editing
|
|
66
|
+
editRow: function (rowid, keys, oneditfunc, successfunc, url, extraparam, aftersavefunc, errorfunc, afterrestorefunc, beforeEditRow) {
|
|
67
|
+
// Compatible mode old versions
|
|
68
|
+
var oMuligrid = {}, args = $.makeArray(arguments).slice(1);
|
|
69
|
+
|
|
70
|
+
if ($.type(args[0]) === "object") {
|
|
71
|
+
oMuligrid = args[0];
|
|
72
|
+
} else {
|
|
73
|
+
if (keys !== undefined) { oMuligrid.keys = keys; }
|
|
74
|
+
if ($.jgrid.isFunction(oneditfunc)) { oMuligrid.oneditfunc = oneditfunc; }
|
|
75
|
+
if ($.jgrid.isFunction(successfunc)) { oMuligrid.successfunc = successfunc; }
|
|
76
|
+
if (url !== undefined) { oMuligrid.url = url; }
|
|
77
|
+
if (extraparam != null) { oMuligrid.extraparam = extraparam; }
|
|
78
|
+
if ($.jgrid.isFunction(aftersavefunc)) { oMuligrid.aftersavefunc = aftersavefunc; }
|
|
79
|
+
if ($.jgrid.isFunction(errorfunc)) { oMuligrid.errorfunc = errorfunc; }
|
|
80
|
+
if ($.jgrid.isFunction(afterrestorefunc)) { oMuligrid.afterrestorefunc = afterrestorefunc; }
|
|
81
|
+
if ($.jgrid.isFunction(beforeEditRow)) { oMuligrid.beforeEditRow = beforeEditRow; }
|
|
82
|
+
// last two not as param, but as object (sorry)
|
|
83
|
+
//if (restoreAfterError !== undefined) { oMuligrid.restoreAfterError = restoreAfterError; }
|
|
84
|
+
//if (mtype !== undefined) { oMuligrid.mtype = mtype || "POST"; }
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// End compatible
|
|
88
|
+
return this.each(function () {
|
|
89
|
+
var $t = this, $self = $($t), p = $t.p, cnt = 0, focus = null, svr = {}, editableValues = {}, colModel = p.colModel, opers = p.prmNames;
|
|
90
|
+
if (!$t.grid) { return; }
|
|
91
|
+
var o = $.extend(true, {
|
|
92
|
+
keys: false,
|
|
93
|
+
oneditfunc: null,
|
|
94
|
+
successfunc: null,
|
|
95
|
+
url: null,
|
|
96
|
+
extraparam: {},
|
|
97
|
+
aftersavefunc: null,
|
|
98
|
+
errorfunc: null,
|
|
99
|
+
afterrestorefunc: null,
|
|
100
|
+
restoreAfterError: true,
|
|
101
|
+
beforeEditRow: null,
|
|
102
|
+
//mtype: "POST",
|
|
103
|
+
focusField: true
|
|
104
|
+
}, jgrid.inlineEdit, p.inlineEditing || {}, oMuligrid),
|
|
105
|
+
ind = $self.jqGrid("getInd", rowid, true),
|
|
106
|
+
focusField = o.focusField,
|
|
107
|
+
td = typeof focusField === "object" && focusField != null ?
|
|
108
|
+
$(focusField.target || focusField).closest("tr.jqgrow>td")[0] : null;
|
|
109
|
+
|
|
110
|
+
if (ind === false) { return; }
|
|
111
|
+
|
|
112
|
+
if (o.extraparam[opers.oper] !== opers.addoper) {
|
|
113
|
+
if (!editFeedback.call($t, o, "beforeEditRow", o, rowid)) { return; }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (($(ind).attr("editable") || "0") === "0" && !$(ind).hasClass("not-editable-row")) {
|
|
117
|
+
var editingInfo = jgrid.detectRowEditing.call($t, rowid);
|
|
118
|
+
if (editingInfo != null && editingInfo.mode === "cellEditing") {
|
|
119
|
+
var savedRowInfo = editingInfo.savedRow, tr = $t.rows[savedRowInfo.id],
|
|
120
|
+
highlightClass = getGuiStateStyles.call($t, "select");
|
|
121
|
+
$self.jqGrid("restoreCell", savedRowInfo.id, savedRowInfo.ic);
|
|
122
|
+
// remove highlighting of the cell
|
|
123
|
+
$(tr.cells[savedRowInfo.ic]).removeClass("edit-cell " + highlightClass);
|
|
124
|
+
$(tr).addClass(highlightClass).attr({ "aria-selected": "true", "tabindex": "0" });
|
|
125
|
+
}
|
|
126
|
+
jgrid.enumEditableCells.call($t, ind, $(ind).hasClass("jqgrid-new-row") ? "add" : "edit", function (options) {
|
|
127
|
+
var cm = options.cm, $dataFiled = $(options.dataElement), dataWidth = options.dataWidth, tmp, opt, elc,
|
|
128
|
+
nm = cm.name, edittype = cm.edittype, iCol = options.iCol, editoptions = cm.editoptions || {};
|
|
129
|
+
editableValues[nm] = options.editable;
|
|
130
|
+
if (options.editable === "hidden") { return; }
|
|
131
|
+
try {
|
|
132
|
+
tmp = $.unformat.call(this, options.td, { rowId: rowid, colModel: cm }, iCol);
|
|
133
|
+
} catch (_) {
|
|
134
|
+
tmp = edittype === "textarea" ? $dataFiled.text() : $dataFiled.html();
|
|
135
|
+
}
|
|
136
|
+
svr[nm] = tmp; // include only editable fields in svr object
|
|
137
|
+
$dataFiled.html("");
|
|
138
|
+
opt = $.extend({}, editoptions,
|
|
139
|
+
{ id: rowid + "_" + nm, name: nm, rowId: rowid, mode: options.mode, cm: cm, iCol: iCol });
|
|
140
|
+
if (tmp === " " || tmp === " " || (tmp.length === 1 && tmp.charCodeAt(0) === 160)) { tmp = ""; }
|
|
141
|
+
elc = jgrid.createEl.call($t, edittype, opt, tmp, true, $.extend({}, jgrid.ajaxOptions, p.ajaxSelectOptions || {}));
|
|
142
|
+
$(elc).addClass("editable");
|
|
143
|
+
$dataFiled.append(elc);
|
|
144
|
+
if (dataWidth) {
|
|
145
|
+
// change the width from auto or the value from editoptions
|
|
146
|
+
// in case of editing ExpandColumn of TreeGrid
|
|
147
|
+
$(elc).width(options.dataWidth);
|
|
148
|
+
}
|
|
149
|
+
jgrid.bindEv.call($t, elc, opt);
|
|
150
|
+
//Again IE
|
|
151
|
+
if (edittype === "select" && editoptions.multiple === true && editoptions.dataUrl === undefined && jgrid.msie) {
|
|
152
|
+
$(elc).width($(elc).width());
|
|
153
|
+
}
|
|
154
|
+
if (focus === null) { focus = iCol; }
|
|
155
|
+
cnt++;
|
|
156
|
+
});
|
|
157
|
+
if (cnt > 0) {
|
|
158
|
+
svr.id = rowid;
|
|
159
|
+
p.savedRow.push(svr);
|
|
160
|
+
p.editingInfo[rowid] = {
|
|
161
|
+
mode: "inlineEditing",
|
|
162
|
+
savedRow: svr,
|
|
163
|
+
editable: editableValues
|
|
164
|
+
};
|
|
165
|
+
$(ind).attr("editable", "1");
|
|
166
|
+
if (focusField) {
|
|
167
|
+
if (typeof focusField === "number" && parseInt(focusField, 10) <= colModel.length) {
|
|
168
|
+
focus = focusField;
|
|
169
|
+
} else if (typeof focusField === "string") {
|
|
170
|
+
focus = p.iColByName[focusField];
|
|
171
|
+
} else if (td != null) {
|
|
172
|
+
focus = td.cellIndex;
|
|
173
|
+
}
|
|
174
|
+
setTimeout(function () {
|
|
175
|
+
// we want to use ":focusable"
|
|
176
|
+
var nFrozenColumns = $self.jqGrid("getNumberOfFrozenColumns"),
|
|
177
|
+
getTdByColIndex = function (iCol) {
|
|
178
|
+
return p.frozenColumns && nFrozenColumns > 0 && focus < nFrozenColumns ?
|
|
179
|
+
$t.grid.fbRows[ind.rowIndex].cells[iCol] :
|
|
180
|
+
ind.cells[iCol];
|
|
181
|
+
},
|
|
182
|
+
getFocusable = function (elem) {
|
|
183
|
+
return $(elem).find("input,textarea,select,button,object,*[tabindex]")
|
|
184
|
+
.filter(":input:visible:not(:disabled)");
|
|
185
|
+
},
|
|
186
|
+
getFirstFocusable = function () {
|
|
187
|
+
return getFocusable(p.frozenColumns && nFrozenColumns > 0 ? $t.grid.fbRows[ind.rowIndex] : ind)
|
|
188
|
+
.first();
|
|
189
|
+
},
|
|
190
|
+
$fe = getFocusable(getTdByColIndex(focus));
|
|
191
|
+
|
|
192
|
+
if ($fe.length > 0) {
|
|
193
|
+
$fe.first().focus();
|
|
194
|
+
} else if (typeof o.defaultFocusField === "number" || typeof o.defaultFocusField === "string") {
|
|
195
|
+
$fe = getFocusable(getTdByColIndex(typeof o.defaultFocusField === "number" ? o.defaultFocusField : p.iColByName[o.defaultFocusField]));
|
|
196
|
+
if ($fe.length === 0) {
|
|
197
|
+
$fe = getFirstFocusable();
|
|
198
|
+
}
|
|
199
|
+
$fe.first().focus();
|
|
200
|
+
} else {
|
|
201
|
+
getFirstFocusable().focus();
|
|
202
|
+
}
|
|
203
|
+
}, 0);
|
|
204
|
+
}
|
|
205
|
+
if (o.keys === true) {
|
|
206
|
+
var $ind = $(ind);
|
|
207
|
+
if (p.frozenColumns) {
|
|
208
|
+
$ind = $ind.add($t.grid.fbRows[ind.rowIndex]);
|
|
209
|
+
}
|
|
210
|
+
$ind.on("keydown", function (e) {
|
|
211
|
+
if (e.keyCode === 27) {
|
|
212
|
+
$self.jqGrid("restoreRow", rowid, o.afterrestorefunc);
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
if (e.keyCode === 13) {
|
|
216
|
+
var ta = e.target;
|
|
217
|
+
if (ta.tagName === "TEXTAREA") { return true; }
|
|
218
|
+
$self.jqGrid("saveRow", rowid, o);
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
fullBoolFeedback.call($t, o.oneditfunc, "jqGridInlineEditRow", rowid, o);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
},
|
|
228
|
+
saveRow: function (rowid, successfunc, url, extraparam, aftersavefunc, errorfunc, afterrestorefunc, beforeSaveRow) {
|
|
229
|
+
// Compatible mode old versions
|
|
230
|
+
var args = $.makeArray(arguments).slice(1), o = {}, $t = this[0], $self = $($t),
|
|
231
|
+
p = $t != null ? $t.p : null, editOrAdd, infoDialog = jgrid.info_dialog,
|
|
232
|
+
isFunction = $.jgrid.isFunction,
|
|
233
|
+
fatalErrorFunction = jgrid.defaults != null && isFunction(jgrid.defaults.fatalError) ? jgrid.defaults.fatalError : alert;
|
|
234
|
+
if (!$t.grid || p == null) { return; }
|
|
235
|
+
|
|
236
|
+
if ($.type(args[0]) === "object") {
|
|
237
|
+
o = args[0];
|
|
238
|
+
} else {
|
|
239
|
+
if (isFunction(successfunc)) { o.successfunc = successfunc; }
|
|
240
|
+
if (url !== undefined) { o.url = url; }
|
|
241
|
+
if (extraparam !== undefined) { o.extraparam = extraparam; }
|
|
242
|
+
if (isFunction(aftersavefunc)) { o.aftersavefunc = aftersavefunc; }
|
|
243
|
+
if (isFunction(errorfunc)) { o.errorfunc = errorfunc; }
|
|
244
|
+
if (isFunction(afterrestorefunc)) { o.afterrestorefunc = afterrestorefunc; }
|
|
245
|
+
if (isFunction(beforeSaveRow)) { o.beforeSaveRow = beforeSaveRow; }
|
|
246
|
+
}
|
|
247
|
+
var getRes = function (path) { return $self.jqGrid("getGridRes", path); };
|
|
248
|
+
o = $.extend(true, {
|
|
249
|
+
successfunc: null,
|
|
250
|
+
url: null,
|
|
251
|
+
extraparam: {},
|
|
252
|
+
aftersavefunc: null,
|
|
253
|
+
errorfunc: null,
|
|
254
|
+
afterrestorefunc: null,
|
|
255
|
+
restoreAfterError: true,
|
|
256
|
+
beforeSaveRow: null,
|
|
257
|
+
ajaxSaveOptions: {},
|
|
258
|
+
serializeSaveData: null,
|
|
259
|
+
mtype: "POST",
|
|
260
|
+
saveui: "enable",
|
|
261
|
+
savetext: getRes("defaults.savetext") || "Saving..."
|
|
262
|
+
}, jgrid.inlineEdit, p.inlineEditing || {}, o);
|
|
263
|
+
// End compatible
|
|
264
|
+
// TODO: add return this.each(function(){....}
|
|
265
|
+
var tmp = {}, tmp2 = {}, postData = {}, editable, k, fr, resp, cv, editingInfo, ind = $self.jqGrid("getInd", rowid, true), $tr = $(ind),
|
|
266
|
+
opers = p.prmNames, errcap = getRes("errors.errcap"), bClose = getRes("edit.bClose"), isRemoteSave, isError,
|
|
267
|
+
displayErrorMessage = function (text, relativeElem) {
|
|
268
|
+
try {
|
|
269
|
+
var relativeRect = jgrid.getRelativeRect.call($t, relativeElem);
|
|
270
|
+
|
|
271
|
+
infoDialog.call($t, errcap, text, bClose, {
|
|
272
|
+
top: relativeRect.top,
|
|
273
|
+
left: relativeRect.left + $($t).closest(".ui-jqgrid").offset().left
|
|
274
|
+
});
|
|
275
|
+
} catch (e) {
|
|
276
|
+
fatalErrorFunction(text);
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
if (ind === false) { return; }
|
|
281
|
+
|
|
282
|
+
editOrAdd = o.extraparam[opers.oper] === opers.addoper ? "add" : "edit";
|
|
283
|
+
|
|
284
|
+
if (!editFeedback.call($t, o, "beforeSaveRow", o, rowid, editOrAdd)) { return; }
|
|
285
|
+
|
|
286
|
+
editable = $tr.attr("editable");
|
|
287
|
+
o.url = o.url || p.editurl;
|
|
288
|
+
isRemoteSave = o.url !== "clientArray";
|
|
289
|
+
if (editable === "1") {
|
|
290
|
+
editingInfo = $.jgrid.detectRowEditing.call($t, rowid);
|
|
291
|
+
jgrid.enumEditableCells.call($t, ind, $tr.hasClass("jqgrid-new-row") ? "add" : "edit", function (options) {
|
|
292
|
+
var cm = options.cm, formatter = cm.formatter, editoptions = cm.editoptions || {},
|
|
293
|
+
formatoptions = cm.formatoptions || {}, valueText = {},
|
|
294
|
+
v = jgrid.getEditedValue.call($t, $(options.dataElement), cm, valueText, options.editable);
|
|
295
|
+
|
|
296
|
+
if (cm.edittype === "select" && cm.formatter !== "select") {
|
|
297
|
+
tmp2[cm.name] = valueText.text;
|
|
298
|
+
}
|
|
299
|
+
cv = jgrid.checkValues.call($t, v, options.iCol, undefined, undefined,
|
|
300
|
+
$.extend(options, {
|
|
301
|
+
oldValue: editingInfo != null ? editingInfo.savedRow[cm.name] : null,
|
|
302
|
+
newValue: v,
|
|
303
|
+
oldRowData: editingInfo != null ? editingInfo.savedRow : null }));
|
|
304
|
+
if (cv != null && cv[0] === false) {
|
|
305
|
+
isError = true;
|
|
306
|
+
displayErrorMessage(cv[1], options.td);
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
if (formatter === "date" && formatoptions.sendFormatted !== true) {
|
|
310
|
+
// TODO: call all other predefined formatters!!! Not only formatter: "date" have the problem.
|
|
311
|
+
// Floating point separator for example
|
|
312
|
+
v = $.unformat.date.call($t, v, cm);
|
|
313
|
+
}
|
|
314
|
+
if (isRemoteSave && editoptions.NullIfEmpty === true) {
|
|
315
|
+
if (v === "") {
|
|
316
|
+
v = "null";
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
tmp[cm.name] = v;
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
if (isError) {
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
var idname;
|
|
326
|
+
opers = p.prmNames;
|
|
327
|
+
if (p.keyName === false) {
|
|
328
|
+
idname = opers.id;
|
|
329
|
+
} else {
|
|
330
|
+
idname = p.keyName;
|
|
331
|
+
}
|
|
332
|
+
if (tmp) {
|
|
333
|
+
tmp[opers.oper] = opers.editoper;
|
|
334
|
+
if (tmp[idname] === undefined || tmp[idname] === "") {
|
|
335
|
+
tmp[idname] = jgrid.stripPref(p.idPrefix, rowid);
|
|
336
|
+
}
|
|
337
|
+
tmp = $.extend({}, tmp, p.inlineData || {}, o.extraparam);
|
|
338
|
+
}
|
|
339
|
+
var validationOptions = {
|
|
340
|
+
options: o,
|
|
341
|
+
rowid: rowid,
|
|
342
|
+
tr: ind,
|
|
343
|
+
iRow: ind.rowIndex,
|
|
344
|
+
savedRow: editingInfo.savedRow,
|
|
345
|
+
newData: tmp,
|
|
346
|
+
mode: editOrAdd
|
|
347
|
+
};
|
|
348
|
+
if (!editFeedback.call($t, o, "saveRowValidation", validationOptions)) {
|
|
349
|
+
if (validationOptions.errorText) {
|
|
350
|
+
displayErrorMessage(validationOptions.errorText, ind);
|
|
351
|
+
}
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
if (!isRemoteSave) {
|
|
355
|
+
tmp = $.extend({}, tmp, tmp2);
|
|
356
|
+
resp = $self.jqGrid("setRowData", rowid, tmp);
|
|
357
|
+
$tr.attr("editable", "0");
|
|
358
|
+
for (k = 0; k < p.savedRow.length; k++) {
|
|
359
|
+
if (String(p.savedRow[k].id) === String(rowid)) { fr = k; break; }
|
|
360
|
+
}
|
|
361
|
+
if (fr >= 0) {
|
|
362
|
+
p.savedRow.splice(fr, 1);
|
|
363
|
+
delete p.editingInfo[rowid];
|
|
364
|
+
}
|
|
365
|
+
fullBoolFeedback.call($t, o.aftersavefunc, "jqGridInlineAfterSaveRow", rowid, resp, tmp, o);
|
|
366
|
+
$tr.removeClass("jqgrid-new-row").off("keydown");
|
|
367
|
+
if (ind.id !== p.idPrefix + tmp[idname]) {
|
|
368
|
+
$self.jqGrid("changeRowid", ind.id, p.idPrefix + tmp[idname]);
|
|
369
|
+
}
|
|
370
|
+
} else {
|
|
371
|
+
$self.jqGrid("progressBar", { method: "show", loadtype: o.saveui, htmlcontent: o.savetext });
|
|
372
|
+
postData = $.extend({}, tmp, postData);
|
|
373
|
+
postData[idname] = jgrid.stripPref(p.idPrefix, postData[idname]);
|
|
374
|
+
if (p.autoEncodeOnEdit) {
|
|
375
|
+
$.each(postData, function (n, v) {
|
|
376
|
+
if (!isFunction(v)) {
|
|
377
|
+
postData[n] = jgrid.oldEncodePostedData(v);
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
if (ind.id !== p.idPrefix + postData[idname] && opers.idold != null &&
|
|
382
|
+
!postData.hasOwnProperty(opers.idold)) {
|
|
383
|
+
postData[opers.idold] = jgrid.stripPref(p.idPrefix, ind.id);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
$.ajax($.extend({
|
|
387
|
+
url: isFunction(o.url) ? o.url.call($t, postData[idname], editOrAdd, postData, o) : o.url,
|
|
388
|
+
data: jgrid.serializeFeedback.call($t,
|
|
389
|
+
isFunction(o.serializeSaveData) ? o.serializeSaveData : p.serializeRowData,
|
|
390
|
+
"jqGridInlineSerializeSaveData",
|
|
391
|
+
postData),
|
|
392
|
+
type: isFunction(o.mtype) ? o.mtype.call($t, editOrAdd, o, postData[idname], postData) : o.mtype,
|
|
393
|
+
complete: function (jqXHR, textStatus) {
|
|
394
|
+
$self.jqGrid("progressBar", { method: "hide", loadtype: o.saveui });
|
|
395
|
+
// textStatus can be "abort", "timeout", "error", "parsererror" or some text from text part of HTTP error occurs
|
|
396
|
+
// see the answer http://stackoverflow.com/a/3617710/315935 about xhr.readyState === 4 && xhr.status === 0
|
|
397
|
+
if ((jqXHR.status < 300 || jqXHR.status === 304) && (jqXHR.status !== 0 || jqXHR.readyState !== 4)) {
|
|
398
|
+
var ret, sucret, j;
|
|
399
|
+
sucret = $self.triggerHandler("jqGridInlineSuccessSaveRow", [jqXHR, rowid, o, editOrAdd, postData]);
|
|
400
|
+
if (sucret == null || sucret === true) { sucret = [true, tmp]; }
|
|
401
|
+
if (sucret[0] && isFunction(o.successfunc)) { sucret = o.successfunc.call($t, jqXHR, rowid, o, editOrAdd, postData); }
|
|
402
|
+
if (Array.isArray(sucret)) {
|
|
403
|
+
// expect array - status, data, rowid
|
|
404
|
+
ret = sucret[0];
|
|
405
|
+
tmp = sucret[1] || tmp;
|
|
406
|
+
} else {
|
|
407
|
+
ret = sucret;
|
|
408
|
+
}
|
|
409
|
+
if (ret === true) {
|
|
410
|
+
if (p.autoEncodeOnEdit) {
|
|
411
|
+
$.each(tmp, function (n, v) {
|
|
412
|
+
tmp[n] = jgrid.oldDecodePostedData(v);
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
tmp = $.extend({}, tmp, tmp2);
|
|
416
|
+
$self.jqGrid("setRowData", rowid, tmp);
|
|
417
|
+
$tr.attr("editable", "0");
|
|
418
|
+
for (j = 0; j < p.savedRow.length; j++) {
|
|
419
|
+
if (String(p.savedRow[j].id) === String(rowid)) { fr = j; break; }
|
|
420
|
+
}
|
|
421
|
+
if (fr >= 0) {
|
|
422
|
+
p.savedRow.splice(fr, 1);
|
|
423
|
+
delete p.editingInfo[rowid];
|
|
424
|
+
}
|
|
425
|
+
fullBoolFeedback.call($t, o.aftersavefunc, "jqGridInlineAfterSaveRow", rowid, jqXHR, tmp, o);
|
|
426
|
+
if (sucret[2] != null) {
|
|
427
|
+
$self.jqGrid("changeRowid", rowid, p.idPrefix + sucret[2]);
|
|
428
|
+
} else if (ind.id !== p.idPrefix + tmp[idname]) {
|
|
429
|
+
$self.jqGrid("changeRowid", ind.id, p.idPrefix + tmp[idname]);
|
|
430
|
+
}
|
|
431
|
+
$tr.removeClass("jqgrid-new-row").off("keydown");
|
|
432
|
+
} else {
|
|
433
|
+
fullBoolFeedback.call($t, o.errorfunc, "jqGridInlineErrorSaveRow", rowid, jqXHR, textStatus, null, o);
|
|
434
|
+
if (o.restoreAfterError === true) {
|
|
435
|
+
$self.jqGrid("restoreRow", rowid, o.afterrestorefunc);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
error: function (res, stat, err) {
|
|
441
|
+
$self.triggerHandler("jqGridInlineErrorSaveRow", [rowid, res, stat, err, o]);
|
|
442
|
+
if (isFunction(o.errorfunc)) {
|
|
443
|
+
o.errorfunc.call($t, rowid, res, stat, err);
|
|
444
|
+
} else {
|
|
445
|
+
var rT = res.responseText || res.statusText;
|
|
446
|
+
try {
|
|
447
|
+
infoDialog.call($t, errcap, '<div class="' + getGuiStateStyles.call($t, "error") + '">' + rT + "</div>", bClose, { buttonalign: "right" });
|
|
448
|
+
} catch (e1) {
|
|
449
|
+
fatalErrorFunction(rT);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
if (o.restoreAfterError === true) {
|
|
453
|
+
$self.jqGrid("restoreRow", rowid, o.afterrestorefunc);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}, jgrid.ajaxOptions, p.ajaxRowOptions, o.ajaxSaveOptions || {}));
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return;
|
|
460
|
+
},
|
|
461
|
+
restoreRow: function (rowid, afterrestorefunc) {
|
|
462
|
+
// Compatible mode old versions
|
|
463
|
+
var args = $.makeArray(arguments).slice(1), oMuligrid = {};
|
|
464
|
+
|
|
465
|
+
if ($.type(args[0]) === "object") {
|
|
466
|
+
oMuligrid = args[0];
|
|
467
|
+
} else {
|
|
468
|
+
if ($.jgrid.isFunction(afterrestorefunc)) { oMuligrid.afterrestorefunc = afterrestorefunc; }
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// End compatible
|
|
472
|
+
|
|
473
|
+
return this.each(function () {
|
|
474
|
+
var $t = this, $self = $($t), p = $t.p, fr = -1, ares = {}, k;
|
|
475
|
+
if (!$t.grid) { return; }
|
|
476
|
+
|
|
477
|
+
var o = $.extend(true, {}, jgrid.inlineEdit, p.inlineEditing || {}, oMuligrid);
|
|
478
|
+
var ind = $self.jqGrid("getInd", rowid, true);
|
|
479
|
+
if (ind === false) { return; }
|
|
480
|
+
|
|
481
|
+
if (!editFeedback.call($t, o, "beforeCancelRow", o, rowid)) { return; }
|
|
482
|
+
|
|
483
|
+
for (k = 0; k < p.savedRow.length; k++) {
|
|
484
|
+
if (String(p.savedRow[k].id) === String(rowid)) {
|
|
485
|
+
fr = k;
|
|
486
|
+
break;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
if (fr >= 0) {
|
|
490
|
+
if ($.jgrid.isFunction($.fn.datepicker)) {
|
|
491
|
+
try {
|
|
492
|
+
$("input.hasDatepicker", "#" + jgrid.jqID(ind.id)).datepicker("hide");
|
|
493
|
+
} catch (ignore) { }
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
$.each(p.colModel, function () {
|
|
497
|
+
var nm = this.name;
|
|
498
|
+
if (p.savedRow[fr].hasOwnProperty(nm)) {
|
|
499
|
+
ares[nm] = p.savedRow[fr][nm];
|
|
500
|
+
if (this.formatter && this.formatter === "date" && (this.formatoptions == null || this.formatoptions.sendFormatted !== true)) {
|
|
501
|
+
// TODO: call all other predefined formatters!!! Not only formatter: "date" have the problem.
|
|
502
|
+
// Floating point separator for example
|
|
503
|
+
ares[nm] = $.unformat.date.call($t, ares[nm], this);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
$self.jqGrid("setRowData", rowid, ares);
|
|
508
|
+
$(ind).attr("editable", "0").off("keydown");
|
|
509
|
+
p.savedRow.splice(fr, 1);
|
|
510
|
+
delete p.editingInfo[rowid];
|
|
511
|
+
if ($("#" + jgrid.jqID(rowid), $t).hasClass("jqgrid-new-row")) {
|
|
512
|
+
setTimeout(function () {
|
|
513
|
+
$self.jqGrid("delRowData", rowid);
|
|
514
|
+
$self.jqGrid("showAddEditButtons", false);
|
|
515
|
+
}, 0);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
fullBoolFeedback.call($t, o.afterrestorefunc, "jqGridInlineAfterRestoreRow", rowid);
|
|
519
|
+
});
|
|
520
|
+
},
|
|
521
|
+
addRow: function (oMuligrid) {
|
|
522
|
+
return this.each(function () {
|
|
523
|
+
if (!this.grid) { return; }
|
|
524
|
+
|
|
525
|
+
var $t = this, $self = $($t), p = $t.p,
|
|
526
|
+
o = $.extend(true, {
|
|
527
|
+
rowID: null,
|
|
528
|
+
initdata: {},
|
|
529
|
+
position: "first",
|
|
530
|
+
useDefValues: true,
|
|
531
|
+
useFormatter: false,
|
|
532
|
+
beforeAddRow: null,
|
|
533
|
+
//srcRowid: undefined,
|
|
534
|
+
addRowParams: { extraparam: {} }
|
|
535
|
+
}, jgrid.inlineEdit, p.inlineEditing || {}, oMuligrid || {});
|
|
536
|
+
if (!editFeedback.call($t, o, "beforeAddRow", o.addRowParams)) { return; }
|
|
537
|
+
|
|
538
|
+
o.rowID = $.jgrid.isFunction(o.rowID) ? o.rowID.call($t, o) : ((o.rowID != null) ? o.rowID : jgrid.randId());
|
|
539
|
+
if (o.useDefValues === true) {
|
|
540
|
+
$(p.colModel).each(function () {
|
|
541
|
+
if (this.editoptions && this.editoptions.defaultValue) {
|
|
542
|
+
var opt = this.editoptions.defaultValue;
|
|
543
|
+
o.initdata[this.name] = $.jgrid.isFunction(opt) ? opt.call($t, o) : opt;
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
o.rowID = p.idPrefix + o.rowID;
|
|
548
|
+
$self.jqGrid("addRowData", o.rowID, o.initdata, o.position, o.srcRowid);
|
|
549
|
+
$("#" + jgrid.jqID(o.rowID), $t).addClass("jqgrid-new-row");
|
|
550
|
+
if (o.useFormatter) {
|
|
551
|
+
$("#" + jgrid.jqID(o.rowID) + " .ui-inline-edit", $t).click();
|
|
552
|
+
} else {
|
|
553
|
+
var opers = p.prmNames, oper = opers.oper;
|
|
554
|
+
o.addRowParams.extraparam[oper] = opers.addoper;
|
|
555
|
+
$self.jqGrid("editRow", o.rowID, o.addRowParams);
|
|
556
|
+
$self.jqGrid("setSelection", o.rowID);
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
},
|
|
560
|
+
inlineNav: function (elem, oMuligrid) {
|
|
561
|
+
if (typeof elem === "object") {
|
|
562
|
+
// the option pager are skipped
|
|
563
|
+
oMuligrid = elem;
|
|
564
|
+
elem = undefined;
|
|
565
|
+
}
|
|
566
|
+
return this.each(function () {
|
|
567
|
+
var $t = this, $self = $($t), p = $t.p;
|
|
568
|
+
if (!this.grid || p == null) { return; }
|
|
569
|
+
var $elem, gID = elem === p.toppager ? p.idSel + "_top" : p.idSel,
|
|
570
|
+
gid = elem === p.toppager ? p.id + "_top" : p.id, disabledClass = getGuiStateStyles.call($t, "disabled"),
|
|
571
|
+
o = $.extend(true,
|
|
572
|
+
{
|
|
573
|
+
edit: true,
|
|
574
|
+
editicon: "ui-icon-pencil",
|
|
575
|
+
add: true,
|
|
576
|
+
addicon: "ui-icon-plus",
|
|
577
|
+
save: true,
|
|
578
|
+
saveicon: "ui-icon-disk",
|
|
579
|
+
cancel: true,
|
|
580
|
+
cancelicon: "ui-icon-cancel",
|
|
581
|
+
commonIconClass: "ui-icon",
|
|
582
|
+
iconsOverText: false,
|
|
583
|
+
//alertToTop: false, use undefined to be able to use defaults from $.jgrid.jqModal or later from p.jqModal
|
|
584
|
+
addParams: { addRowParams: { extraparam: {} } },
|
|
585
|
+
editParams: {},
|
|
586
|
+
restoreAfterSelect: true
|
|
587
|
+
},
|
|
588
|
+
//TODO make getRes(locales[p.locale], "nav"), jgrid.nav || {}, p.navOptions || {}
|
|
589
|
+
// as the result of working getRes("nav")
|
|
590
|
+
//getRes(locales[p.locale], "nav"),
|
|
591
|
+
$self.jqGrid("getGridRes", "nav"),
|
|
592
|
+
jgrid.nav || {},
|
|
593
|
+
p.navOptions || {},
|
|
594
|
+
jgrid.inlineNav || {},
|
|
595
|
+
p.inlineNavOptions || {},
|
|
596
|
+
oMuligrid || {}
|
|
597
|
+
),
|
|
598
|
+
viewModalAlert = function () {
|
|
599
|
+
$t.modalAlert();
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
if (elem === undefined) {
|
|
603
|
+
if (p.pager) {
|
|
604
|
+
$self.jqGrid("inlineNav", p.pager, o);
|
|
605
|
+
if (p.toppager) {
|
|
606
|
+
elem = p.toppager;
|
|
607
|
+
gID = p.idSel + "_top";
|
|
608
|
+
gid = p.id + "_top";
|
|
609
|
+
} else {
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
} else if (p.toppager) {
|
|
613
|
+
elem = p.toppager;
|
|
614
|
+
gID = p.idSel + "_top";
|
|
615
|
+
gid = p.id + "_top";
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
if (elem === undefined) {
|
|
619
|
+
return; // error
|
|
620
|
+
}
|
|
621
|
+
$elem = $(elem);
|
|
622
|
+
if ($elem.length <= 0) {
|
|
623
|
+
return; // error
|
|
624
|
+
}
|
|
625
|
+
if ($elem.find(".navtable").length <= 0) {
|
|
626
|
+
// create navigator bar if it is not yet exist
|
|
627
|
+
$self.jqGrid("navGrid", elem, { add: false, edit: false, del: false, search: false, refresh: false, view: false });
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
p._inlinenav = true;
|
|
631
|
+
// detect the formatactions column
|
|
632
|
+
if (o.addParams.useFormatter === true) {
|
|
633
|
+
var cm = p.colModel, i, defaults, ap;
|
|
634
|
+
for (i = 0; i < cm.length; i++) {
|
|
635
|
+
if (cm[i].formatter && cm[i].formatter === "actions") {
|
|
636
|
+
if (cm[i].formatoptions) {
|
|
637
|
+
defaults = {
|
|
638
|
+
keys: false,
|
|
639
|
+
onEdit: null,
|
|
640
|
+
onSuccess: null,
|
|
641
|
+
afterSave: null,
|
|
642
|
+
onError: null,
|
|
643
|
+
afterRestore: null,
|
|
644
|
+
extraparam: {},
|
|
645
|
+
url: null
|
|
646
|
+
};
|
|
647
|
+
ap = $.extend(defaults, cm[i].formatoptions);
|
|
648
|
+
o.addParams.addRowParams = {
|
|
649
|
+
"keys": ap.keys,
|
|
650
|
+
"oneditfunc": ap.onEdit,
|
|
651
|
+
"successfunc": ap.onSuccess,
|
|
652
|
+
"url": ap.url,
|
|
653
|
+
"extraparam": ap.extraparam,
|
|
654
|
+
"aftersavefunc": ap.afterSave,
|
|
655
|
+
"errorfunc": ap.onError,
|
|
656
|
+
"afterrestorefunc": ap.afterRestore
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
break;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
if (o.add) {
|
|
664
|
+
$self.jqGrid("navButtonAdd", elem, {
|
|
665
|
+
caption: o.addtext,
|
|
666
|
+
title: o.addtitle,
|
|
667
|
+
commonIconClass: o.commonIconClass,
|
|
668
|
+
buttonicon: o.addicon,
|
|
669
|
+
iconsOverText: o.iconsOverText,
|
|
670
|
+
id: gid + "_iladd",
|
|
671
|
+
onClickButton: function () {
|
|
672
|
+
if (!hasOneFromClasses(this, disabledClass)) {
|
|
673
|
+
$self.jqGrid("addRow", o.addParams);
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
if (o.edit) {
|
|
679
|
+
$self.jqGrid("navButtonAdd", elem, {
|
|
680
|
+
caption: o.edittext,
|
|
681
|
+
title: o.edittitle,
|
|
682
|
+
commonIconClass: o.commonIconClass,
|
|
683
|
+
buttonicon: o.editicon,
|
|
684
|
+
iconsOverText: o.iconsOverText,
|
|
685
|
+
id: gid + "_iledit",
|
|
686
|
+
onClickButton: function () {
|
|
687
|
+
if (!hasOneFromClasses(this, disabledClass)) {
|
|
688
|
+
var sr = p.selrow;
|
|
689
|
+
if (sr) {
|
|
690
|
+
$self.jqGrid("editRow", sr, o.editParams);
|
|
691
|
+
} else {
|
|
692
|
+
viewModalAlert();
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
if (o.save) {
|
|
699
|
+
$self.jqGrid("navButtonAdd", elem, {
|
|
700
|
+
caption: o.savetext,
|
|
701
|
+
title: o.savetitle,
|
|
702
|
+
commonIconClass: o.commonIconClass,
|
|
703
|
+
buttonicon: o.saveicon,
|
|
704
|
+
iconsOverText: o.iconsOverText,
|
|
705
|
+
id: gid + "_ilsave",
|
|
706
|
+
onClickButton: function () {
|
|
707
|
+
if (!hasOneFromClasses(this, disabledClass) && p.savedRow.length > 0) {
|
|
708
|
+
var sr = p.savedRow[0].id;
|
|
709
|
+
if (sr) {
|
|
710
|
+
var opers = p.prmNames, oper = opers.oper, tmpParams = o.editParams;
|
|
711
|
+
if ($("#" + jgrid.jqID(sr), $t).hasClass("jqgrid-new-row")) {
|
|
712
|
+
o.addParams.addRowParams.extraparam[oper] = opers.addoper;
|
|
713
|
+
tmpParams = o.addParams.addRowParams;
|
|
714
|
+
} else {
|
|
715
|
+
if (!o.editParams.extraparam) {
|
|
716
|
+
o.editParams.extraparam = {};
|
|
717
|
+
}
|
|
718
|
+
o.editParams.extraparam[oper] = opers.editoper;
|
|
719
|
+
}
|
|
720
|
+
$self.jqGrid("saveRow", sr, tmpParams);
|
|
721
|
+
} else {
|
|
722
|
+
viewModalAlert();
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
});
|
|
727
|
+
$(gID + "_ilsave").addClass(disabledClass);
|
|
728
|
+
}
|
|
729
|
+
if (o.cancel) {
|
|
730
|
+
$self.jqGrid("navButtonAdd", elem, {
|
|
731
|
+
caption: o.canceltext,
|
|
732
|
+
title: o.canceltitle,
|
|
733
|
+
commonIconClass: o.commonIconClass,
|
|
734
|
+
buttonicon: o.cancelicon,
|
|
735
|
+
iconsOverText: o.iconsOverText,
|
|
736
|
+
id: gid + "_ilcancel",
|
|
737
|
+
onClickButton: function () {
|
|
738
|
+
if (!hasOneFromClasses(this, disabledClass) && p.savedRow.length > 0) {
|
|
739
|
+
var sr = p.savedRow[0].id, cancelPrm = o.editParams;
|
|
740
|
+
if (sr) {
|
|
741
|
+
if ($("#" + jgrid.jqID(sr), $t).hasClass("jqgrid-new-row")) {
|
|
742
|
+
cancelPrm = o.addParams.addRowParams;
|
|
743
|
+
}
|
|
744
|
+
$self.jqGrid("restoreRow", sr, cancelPrm);
|
|
745
|
+
} else {
|
|
746
|
+
viewModalAlert();
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
$(gID + "_ilcancel").addClass(disabledClass);
|
|
752
|
+
}
|
|
753
|
+
if (o.restoreAfterSelect === true) {
|
|
754
|
+
$self.on("jqGridSelectRow", function (e, rowid) {
|
|
755
|
+
if (p.savedRow.length > 0 && p._inlinenav === true) {
|
|
756
|
+
var editingRowId = p.savedRow[0].id;
|
|
757
|
+
if (rowid !== editingRowId && typeof editingRowId !== "number") {
|
|
758
|
+
$self.jqGrid("restoreRow", editingRowId, o.editParams);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
$self.on("jqGridInlineAfterRestoreRow jqGridInlineAfterSaveRow", function () {
|
|
764
|
+
$self.jqGrid("showAddEditButtons", false);
|
|
765
|
+
});
|
|
766
|
+
$self.on("jqGridInlineEditRow", function (e, rowid) {
|
|
767
|
+
$self.jqGrid("showAddEditButtons", true, rowid);
|
|
768
|
+
});
|
|
769
|
+
});
|
|
770
|
+
},
|
|
771
|
+
showAddEditButtons: function (isEditing) {
|
|
772
|
+
return this.each(function () {
|
|
773
|
+
var $t = this;
|
|
774
|
+
if (!$t.grid) { return; }
|
|
775
|
+
var p = $t.p, idSel = p.idSel, disabledClass = getGuiStateStyles.call($t, "disabled"),
|
|
776
|
+
saveCancel = idSel + "_ilsave," + idSel + "_ilcancel" + (p.toppager ? "," + idSel + "_top_ilsave," + idSel + "_top_ilcancel" : ""),
|
|
777
|
+
addEdit = idSel + "_iladd," + idSel + "_iledit" + (p.toppager ? "," + idSel + "_top_iladd," + idSel + "_top_iledit" : "");
|
|
778
|
+
$(isEditing ? addEdit : saveCancel).addClass(disabledClass);
|
|
779
|
+
$(isEditing ? saveCancel : addEdit).removeClass(disabledClass);
|
|
780
|
+
});
|
|
781
|
+
}
|
|
782
|
+
});
|
|
783
|
+
// end module grid.inlinedit
|
|
784
|
+
}));
|