Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
template.js.plugins.grid.celledit.js Maven / Gradle / Ivy
/**
* jqGrid extension for cellediting Grid Data
* Tony Tomov [email protected]
* http://trirand.com/blog/
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl-2.0.html
**/
(function (a) {
a.jgrid.extend({editCell: function (d, c, b) {
return this.each(function () {
var i = this, m, j, g, k;
if (!i.grid || i.p.cellEdit !== true) {
return
}
c = parseInt(c, 10);
i.p.selrow = i.rows[d].id;
if (!i.p.knv) {
a(i).jqGrid("GridNav")
}
if (i.p.savedRow.length > 0) {
if (b === true) {
if (d == i.p.iRow && c == i.p.iCol) {
return
}
}
a(i).jqGrid("saveCell", i.p.savedRow[0].id, i.p.savedRow[0].ic)
} else {
window.setTimeout(function () {
a("#" + a.jgrid.jqID(i.p.knv)).attr("tabindex", "-1").focus()
}, 0)
}
k = i.p.colModel[c];
m = k.name;
if (m === "subgrid" || m === "cb" || m === "rn") {
return
}
g = a("td:eq(" + c + ")", i.rows[d]);
if (k.editable === true && b === true && !g.hasClass("not-editable-cell")) {
if (parseInt(i.p.iCol, 10) >= 0 && parseInt(i.p.iRow, 10) >= 0) {
a("td:eq(" + i.p.iCol + ")", i.rows[i.p.iRow]).removeClass("edit-cell ui-state-highlight");
a(i.rows[i.p.iRow]).removeClass("selected-row ui-state-hover")
}
a(g).addClass("edit-cell ui-state-highlight");
a(i.rows[d]).addClass("selected-row ui-state-hover");
try {
j = a.unformat.call(i, g, {rowId: i.rows[d].id, colModel: k}, c)
} catch (l) {
j = (k.edittype && k.edittype === "textarea") ? a(g).text() : a(g).html()
}
if (i.p.autoencode) {
j = a.jgrid.htmlDecode(j)
}
if (!k.edittype) {
k.edittype = "text"
}
i.p.savedRow.push({id: d, ic: c, name: m, v: j});
if (j === " " || j === " " || (j.length === 1 && j.charCodeAt(0) === 160)) {
j = ""
}
if (a.isFunction(i.p.formatCell)) {
var h = i.p.formatCell.call(i, i.rows[d].id, m, j, d, c);
if (h !== undefined) {
j = h
}
}
a(i).triggerHandler("jqGridBeforeEditCell", [i.rows[d].id, m, j, d, c]);
if (a.isFunction(i.p.beforeEditCell)) {
i.p.beforeEditCell.call(i, i.rows[d].id, m, j, d, c)
}
var f = a.extend({}, k.editoptions || {}, {id: d + "_" + m, name: m});
var e = a.jgrid.createEl.call(i, k.edittype, f, j, true, a.extend({}, a.jgrid.ajaxOptions, i.p.ajaxSelectOptions || {}));
a(g).html("").append(e).attr("tabindex", "0");
a.jgrid.bindEv.call(i, e, f);
window.setTimeout(function () {
a(e).focus()
}, 0);
a("input, select, textarea", g).bind("keydown", function (n) {
if (n.keyCode === 27) {
if (a("input.hasDatepicker", g).length > 0) {
if (a(".ui-datepicker").is(":hidden")) {
a(i).jqGrid("restoreCell", d, c)
} else {
a("input.hasDatepicker", g).datepicker("hide")
}
} else {
a(i).jqGrid("restoreCell", d, c)
}
}
if (n.keyCode === 13) {
a(i).jqGrid("saveCell", d, c);
return false
}
if (n.keyCode === 9) {
if (!i.grid.hDiv.loading) {
if (n.shiftKey) {
a(i).jqGrid("prevCell", d, c)
} else {
a(i).jqGrid("nextCell", d, c)
}
} else {
return false
}
}
n.stopPropagation()
});
a(i).triggerHandler("jqGridAfterEditCell", [i.rows[d].id, m, j, d, c]);
if (a.isFunction(i.p.afterEditCell)) {
i.p.afterEditCell.call(i, i.rows[d].id, m, j, d, c)
}
} else {
if (parseInt(i.p.iCol, 10) >= 0 && parseInt(i.p.iRow, 10) >= 0) {
a("td:eq(" + i.p.iCol + ")", i.rows[i.p.iRow]).removeClass("edit-cell ui-state-highlight");
a(i.rows[i.p.iRow]).removeClass("selected-row ui-state-hover")
}
g.addClass("edit-cell ui-state-highlight");
a(i.rows[d]).addClass("selected-row ui-state-hover");
j = g.html().replace(/\ \;/ig, "");
a(i).triggerHandler("jqGridSelectCell", [i.rows[d].id, m, j, d, c]);
if (a.isFunction(i.p.onSelectCell)) {
i.p.onSelectCell.call(i, i.rows[d].id, m, j, d, c)
}
}
i.p.iCol = c;
i.p.iRow = d
})
}, saveCell: function (c, b) {
return this.each(function () {
var u = this, h;
if (!u.grid || u.p.cellEdit !== true) {
return
}
if (u.p.savedRow.length >= 1) {
h = 0
} else {
h = null
}
if (h !== null) {
var p = a("td:eq(" + b + ")", u.rows[c]), n, d, j = u.p.colModel[b], f = j.name, i = a.jgrid.jqID(f);
switch (j.edittype) {
case"select":
if (!j.editoptions.multiple) {
n = a("#" + c + "_" + i + " option:selected", u.rows[c]).val();
d = a("#" + c + "_" + i + " option:selected", u.rows[c]).text()
} else {
var t = a("#" + c + "_" + i, u.rows[c]), s = [];
n = a(t).val();
if (n) {
n.join(",")
} else {
n = ""
}
a("option:selected", t).each(function (e, v) {
s[e] = a(v).text()
});
d = s.join(",")
}
if (j.formatter) {
d = n
}
break;
case"checkbox":
var q = ["Yes", "No"];
if (j.editoptions) {
q = j.editoptions.value.split(":")
}
n = a("#" + c + "_" + i, u.rows[c]).is(":checked") ? q[0] : q[1];
d = n;
break;
case"password":
case"text":
case"textarea":
case"button":
n = a("#" + c + "_" + i, u.rows[c]).val();
d = n;
break;
case"custom":
try {
if (j.editoptions && a.isFunction(j.editoptions.custom_value)) {
n = j.editoptions.custom_value.call(u, a(".customelement", p), "get");
if (n === undefined) {
throw"e2"
} else {
d = n
}
} else {
throw"e1"
}
} catch (w) {
if (w === "e1") {
a.jgrid.info_dialog(a.jgrid.errors.errcap, "function 'custom_value' " + a.jgrid.edit.msg.nodefined, a.jgrid.edit.bClose)
}
if (w === "e2") {
a.jgrid.info_dialog(a.jgrid.errors.errcap, "function 'custom_value' " + a.jgrid.edit.msg.novalue, a.jgrid.edit.bClose)
} else {
a.jgrid.info_dialog(a.jgrid.errors.errcap, w.message, a.jgrid.edit.bClose)
}
}
break
}
if (d !== u.p.savedRow[h].v) {
var y = a(u).triggerHandler("jqGridBeforeSaveCell", [u.rows[c].id, f, n, c, b]);
if (y) {
n = y;
d = y
}
if (a.isFunction(u.p.beforeSaveCell)) {
var r = u.p.beforeSaveCell.call(u, u.rows[c].id, f, n, c, b);
if (r) {
n = r;
d = r
}
}
var g = a.jgrid.checkValues.call(u, n, b);
if (g[0] === true) {
var l = a(u).triggerHandler("jqGridBeforeSubmitCell", [u.rows[c].id, f, n, c, b]) || {};
if (a.isFunction(u.p.beforeSubmitCell)) {
l = u.p.beforeSubmitCell.call(u, u.rows[c].id, f, n, c, b);
if (!l) {
l = {}
}
}
if (a("input.hasDatepicker", p).length > 0) {
a("input.hasDatepicker", p).datepicker("hide")
}
if (u.p.cellsubmit === "remote") {
if (u.p.cellurl) {
var x = {};
if (u.p.autoencode) {
n = a.jgrid.htmlEncode(n)
}
x[f] = n;
var o, m, k;
k = u.p.prmNames;
o = k.id;
m = k.oper;
x[o] = a.jgrid.stripPref(u.p.idPrefix, u.rows[c].id);
x[m] = k.editoper;
x = a.extend(l, x);
a("#lui_" + a.jgrid.jqID(u.p.id)).show();
u.grid.hDiv.loading = true;
a.ajax(a.extend({url: u.p.cellurl, data: a.isFunction(u.p.serializeCellData) ? u.p.serializeCellData.call(u, x) : x, type: "POST", complete: function (e, z) {
a("#lui_" + u.p.id).hide();
u.grid.hDiv.loading = false;
if (z === "success") {
var v = a(u).triggerHandler("jqGridAfterSubmitCell", [u, e, x.id, f, n, c, b]) || [true, ""];
if (v[0] === true && a.isFunction(u.p.afterSubmitCell)) {
v = u.p.afterSubmitCell.call(u, e, x.id, f, n, c, b)
}
if (v[0] === true) {
a(p).empty();
a(u).jqGrid("setCell", u.rows[c].id, b, d, false, false, true);
a(p).addClass("dirty-cell");
a(u.rows[c]).addClass("edited");
a(u).triggerHandler("jqGridAfterSaveCell", [u.rows[c].id, f, n, c, b]);
if (a.isFunction(u.p.afterSaveCell)) {
u.p.afterSaveCell.call(u, u.rows[c].id, f, n, c, b)
}
u.p.savedRow.splice(0, 1)
} else {
a.jgrid.info_dialog(a.jgrid.errors.errcap, v[1], a.jgrid.edit.bClose);
a(u).jqGrid("restoreCell", c, b)
}
}
}, error: function (e, v, z) {
a("#lui_" + a.jgrid.jqID(u.p.id)).hide();
u.grid.hDiv.loading = false;
a(u).triggerHandler("jqGridErrorCell", [e, v, z]);
if (a.isFunction(u.p.errorCell)) {
u.p.errorCell.call(u, e, v, z);
a(u).jqGrid("restoreCell", c, b)
} else {
a.jgrid.info_dialog(a.jgrid.errors.errcap, e.status + " : " + e.statusText + " " + v, a.jgrid.edit.bClose);
a(u).jqGrid("restoreCell", c, b)
}
}}, a.jgrid.ajaxOptions, u.p.ajaxCellOptions || {}))
} else {
try {
a.jgrid.info_dialog(a.jgrid.errors.errcap, a.jgrid.errors.nourl, a.jgrid.edit.bClose);
a(u).jqGrid("restoreCell", c, b)
} catch (w) {
}
}
}
if (u.p.cellsubmit === "clientArray") {
a(p).empty();
a(u).jqGrid("setCell", u.rows[c].id, b, d, false, false, true);
a(p).addClass("dirty-cell");
a(u.rows[c]).addClass("edited");
a(u).triggerHandler("jqGridAfterSaveCell", [u.rows[c].id, f, n, c, b]);
if (a.isFunction(u.p.afterSaveCell)) {
u.p.afterSaveCell.call(u, u.rows[c].id, f, n, c, b)
}
u.p.savedRow.splice(0, 1)
}
} else {
try {
window.setTimeout(function () {
a.jgrid.info_dialog(a.jgrid.errors.errcap, n + " " + g[1], a.jgrid.edit.bClose)
}, 100);
a(u).jqGrid("restoreCell", c, b)
} catch (w) {
}
}
} else {
a(u).jqGrid("restoreCell", c, b)
}
}
window.setTimeout(function () {
a("#" + a.jgrid.jqID(u.p.knv)).attr("tabindex", "-1").focus()
}, 0)
})
}, restoreCell: function (c, b) {
return this.each(function () {
var h = this, d;
if (!h.grid || h.p.cellEdit !== true) {
return
}
if (h.p.savedRow.length >= 1) {
d = 0
} else {
d = null
}
if (d !== null) {
var g = a("td:eq(" + b + ")", h.rows[c]);
if (a.isFunction(a.fn.datepicker)) {
try {
a("input.hasDatepicker", g).datepicker("hide")
} catch (f) {
}
}
a(g).empty().attr("tabindex", "-1");
a(h).jqGrid("setCell", h.rows[c].id, b, h.p.savedRow[d].v, false, false, true);
a(h).triggerHandler("jqGridAfterRestoreCell", [h.rows[c].id, h.p.savedRow[d].v, c, b]);
if (a.isFunction(h.p.afterRestoreCell)) {
h.p.afterRestoreCell.call(h, h.rows[c].id, h.p.savedRow[d].v, c, b)
}
h.p.savedRow.splice(0, 1)
}
window.setTimeout(function () {
a("#" + h.p.knv).attr("tabindex", "-1").focus()
}, 0)
})
}, nextCell: function (c, b) {
return this.each(function () {
var f = this, e = false, d;
if (!f.grid || f.p.cellEdit !== true) {
return
}
for (d = b + 1; d < f.p.colModel.length; d++) {
if (f.p.colModel[d].editable === true) {
e = d;
break
}
}
if (e !== false) {
a(f).jqGrid("editCell", c, e, true)
} else {
if (f.p.savedRow.length > 0) {
a(f).jqGrid("saveCell", c, b)
}
}
})
}, prevCell: function (c, b) {
return this.each(function () {
var f = this, e = false, d;
if (!f.grid || f.p.cellEdit !== true) {
return
}
for (d = b - 1; d >= 0; d--) {
if (f.p.colModel[d].editable === true) {
e = d;
break
}
}
if (e !== false) {
a(f).jqGrid("editCell", c, e, true)
} else {
if (f.p.savedRow.length > 0) {
a(f).jqGrid("saveCell", c, b)
}
}
})
}, GridNav: function () {
return this.each(function () {
var g = this;
if (!g.grid || g.p.cellEdit !== true) {
return
}
g.p.knv = g.p.id + "_kn";
var f = a(""), d, c;
function e(p, n, o) {
if (o.substr(0, 1) === "v") {
var h = a(g.grid.bDiv)[0].clientHeight, q = a(g.grid.bDiv)[0].scrollTop, r = g.rows[p].offsetTop + g.rows[p].clientHeight, l = g.rows[p].offsetTop;
if (o === "vd") {
if (r >= h) {
a(g.grid.bDiv)[0].scrollTop = a(g.grid.bDiv)[0].scrollTop + g.rows[p].clientHeight
}
}
if (o === "vu") {
if (l < q) {
a(g.grid.bDiv)[0].scrollTop = a(g.grid.bDiv)[0].scrollTop - g.rows[p].clientHeight
}
}
}
if (o === "h") {
var k = a(g.grid.bDiv)[0].clientWidth, j = a(g.grid.bDiv)[0].scrollLeft, i = g.rows[p].cells[n].offsetLeft + g.rows[p].cells[n].clientWidth, m = g.rows[p].cells[n].offsetLeft;
if (i >= k + parseInt(j, 10)) {
a(g.grid.bDiv)[0].scrollLeft = a(g.grid.bDiv)[0].scrollLeft + g.rows[p].cells[n].clientWidth
} else {
if (m < j) {
a(g.grid.bDiv)[0].scrollLeft = a(g.grid.bDiv)[0].scrollLeft - g.rows[p].cells[n].clientWidth
}
}
}
}
function b(l, h) {
var k, j;
if (h === "lft") {
k = l + 1;
for (j = l; j >= 0; j--) {
if (g.p.colModel[j].hidden !== true) {
k = j;
break
}
}
}
if (h === "rgt") {
k = l - 1;
for (j = l; j < g.p.colModel.length; j++) {
if (g.p.colModel[j].hidden !== true) {
k = j;
break
}
}
}
return k
}
a(f).insertBefore(g.grid.cDiv);
a("#" + g.p.knv).focus().keydown(function (h) {
c = h.keyCode;
if (g.p.direction === "rtl") {
if (c === 37) {
c = 39
} else {
if (c === 39) {
c = 37
}
}
}
switch (c) {
case 38:
if (g.p.iRow - 1 > 0) {
e(g.p.iRow - 1, g.p.iCol, "vu");
a(g).jqGrid("editCell", g.p.iRow - 1, g.p.iCol, false)
}
break;
case 40:
if (g.p.iRow + 1 <= g.rows.length - 1) {
e(g.p.iRow + 1, g.p.iCol, "vd");
a(g).jqGrid("editCell", g.p.iRow + 1, g.p.iCol, false)
}
break;
case 37:
if (g.p.iCol - 1 >= 0) {
d = b(g.p.iCol - 1, "lft");
e(g.p.iRow, d, "h");
a(g).jqGrid("editCell", g.p.iRow, d, false)
}
break;
case 39:
if (g.p.iCol + 1 <= g.p.colModel.length - 1) {
d = b(g.p.iCol + 1, "rgt");
e(g.p.iRow, d, "h");
a(g).jqGrid("editCell", g.p.iRow, d, false)
}
break;
case 13:
if (parseInt(g.p.iCol, 10) >= 0 && parseInt(g.p.iRow, 10) >= 0) {
a(g).jqGrid("editCell", g.p.iRow, g.p.iCol, true)
}
break;
default:
return true
}
return false
})
})
}, getChangedCells: function (c) {
var b = [];
if (!c) {
c = "all"
}
this.each(function () {
var e = this, d;
if (!e.grid || e.p.cellEdit !== true) {
return
}
a(e.rows).each(function (f) {
var g = {};
if (a(this).hasClass("edited")) {
a("td", this).each(function (h) {
d = e.p.colModel[h].name;
if (d !== "cb" && d !== "subgrid") {
if (c === "dirty") {
if (a(this).hasClass("dirty-cell")) {
try {
g[d] = a.unformat.call(e, this, {rowId: e.rows[f].id, colModel: e.p.colModel[h]}, h)
} catch (j) {
g[d] = a.jgrid.htmlDecode(a(this).html())
}
}
} else {
try {
g[d] = a.unformat.call(e, this, {rowId: e.rows[f].id, colModel: e.p.colModel[h]}, h)
} catch (j) {
g[d] = a.jgrid.htmlDecode(a(this).html())
}
}
}
});
g.id = this.id;
b.push(g)
}
})
});
return b
}})
})(jQuery);