29748 lines
1015 KiB
JavaScript
29748 lines
1015 KiB
JavaScript
/*
|
|
* Ext JS Library 3.4.0
|
|
* Copyright(c) 2006-2011 Sencha Inc.
|
|
* licensing@sencha.com
|
|
* http://www.sencha.com/license
|
|
*/
|
|
(function () {
|
|
var h = Ext.util, j = Ext.each, g = true, i = false;
|
|
h.Observable = function () {
|
|
var k = this, l = k.events;
|
|
if (k.listeners) {
|
|
k.on(k.listeners);
|
|
delete k.listeners
|
|
}
|
|
k.events = l || {}
|
|
};
|
|
h.Observable.prototype = {filterOptRe:/^(?:scope|delay|buffer|single)$/, fireEvent:function () {
|
|
var k = Array.prototype.slice.call(arguments, 0), m = k[0].toLowerCase(), n = this, l = g, p = n.events[m], s, o, r;
|
|
if (n.eventsSuspended === g) {
|
|
if (o = n.eventQueue) {
|
|
o.push(k)
|
|
}
|
|
} else {
|
|
if (typeof p == "object") {
|
|
if (p.bubble) {
|
|
if (p.fire.apply(p, k.slice(1)) === i) {
|
|
return i
|
|
}
|
|
r = n.getBubbleTarget && n.getBubbleTarget();
|
|
if (r && r.enableBubble) {
|
|
s = r.events[m];
|
|
if (!s || typeof s != "object" || !s.bubble) {
|
|
r.enableBubble(m)
|
|
}
|
|
return r.fireEvent.apply(r, k)
|
|
}
|
|
} else {
|
|
k.shift();
|
|
l = p.fire.apply(p, k)
|
|
}
|
|
}
|
|
}
|
|
return l
|
|
}, addListener:function (k, m, l, r) {
|
|
var n = this, q, s, p;
|
|
if (typeof k == "object") {
|
|
r = k;
|
|
for (q in r) {
|
|
s = r[q];
|
|
if (!n.filterOptRe.test(q)) {
|
|
n.addListener(q, s.fn || s, s.scope || r.scope, s.fn ? s : r)
|
|
}
|
|
}
|
|
} else {
|
|
k = k.toLowerCase();
|
|
p = n.events[k] || g;
|
|
if (typeof p == "boolean") {
|
|
n.events[k] = p = new h.Event(n, k)
|
|
}
|
|
p.addListener(m, l, typeof r == "object" ? r : {})
|
|
}
|
|
}, removeListener:function (k, m, l) {
|
|
var n = this.events[k.toLowerCase()];
|
|
if (typeof n == "object") {
|
|
n.removeListener(m, l)
|
|
}
|
|
}, purgeListeners:function () {
|
|
var m = this.events, k, l;
|
|
for (l in m) {
|
|
k = m[l];
|
|
if (typeof k == "object") {
|
|
k.clearListeners()
|
|
}
|
|
}
|
|
}, addEvents:function (n) {
|
|
var m = this;
|
|
m.events = m.events || {};
|
|
if (typeof n == "string") {
|
|
var k = arguments, l = k.length;
|
|
while (l--) {
|
|
m.events[k[l]] = m.events[k[l]] || g
|
|
}
|
|
} else {
|
|
Ext.applyIf(m.events, n)
|
|
}
|
|
}, hasListener:function (k) {
|
|
var l = this.events[k.toLowerCase()];
|
|
return typeof l == "object" && l.listeners.length > 0
|
|
}, suspendEvents:function (k) {
|
|
this.eventsSuspended = g;
|
|
if (k && !this.eventQueue) {
|
|
this.eventQueue = []
|
|
}
|
|
}, resumeEvents:function () {
|
|
var k = this, l = k.eventQueue || [];
|
|
k.eventsSuspended = i;
|
|
delete k.eventQueue;
|
|
j(l, function (m) {
|
|
k.fireEvent.apply(k, m)
|
|
})
|
|
}};
|
|
var d = h.Observable.prototype;
|
|
d.on = d.addListener;
|
|
d.un = d.removeListener;
|
|
h.Observable.releaseCapture = function (k) {
|
|
k.fireEvent = d.fireEvent
|
|
};
|
|
function e(l, m, k) {
|
|
return function () {
|
|
if (m.target == arguments[0]) {
|
|
l.apply(k, Array.prototype.slice.call(arguments, 0))
|
|
}
|
|
}
|
|
}
|
|
|
|
function b(n, p, k, m) {
|
|
k.task = new h.DelayedTask();
|
|
return function () {
|
|
k.task.delay(p.buffer, n, m, Array.prototype.slice.call(arguments, 0))
|
|
}
|
|
}
|
|
|
|
function c(m, n, l, k) {
|
|
return function () {
|
|
n.removeListener(l, k);
|
|
return m.apply(k, arguments)
|
|
}
|
|
}
|
|
|
|
function a(n, p, k, m) {
|
|
return function () {
|
|
var l = new h.DelayedTask(), o = Array.prototype.slice.call(arguments, 0);
|
|
if (!k.tasks) {
|
|
k.tasks = []
|
|
}
|
|
k.tasks.push(l);
|
|
l.delay(p.delay || 10, function () {
|
|
k.tasks.remove(l);
|
|
n.apply(m, o)
|
|
}, m)
|
|
}
|
|
}
|
|
|
|
h.Event = function (l, k) {
|
|
this.name = k;
|
|
this.obj = l;
|
|
this.listeners = []
|
|
};
|
|
h.Event.prototype = {addListener:function (o, n, m) {
|
|
var p = this, k;
|
|
n = n || p.obj;
|
|
if (!p.isListening(o, n)) {
|
|
k = p.createListener(o, n, m);
|
|
if (p.firing) {
|
|
p.listeners = p.listeners.slice(0)
|
|
}
|
|
p.listeners.push(k)
|
|
}
|
|
}, createListener:function (p, n, q) {
|
|
q = q || {};
|
|
n = n || this.obj;
|
|
var k = {fn:p, scope:n, options:q}, m = p;
|
|
if (q.target) {
|
|
m = e(m, q, n)
|
|
}
|
|
if (q.delay) {
|
|
m = a(m, q, k, n)
|
|
}
|
|
if (q.single) {
|
|
m = c(m, this, p, n)
|
|
}
|
|
if (q.buffer) {
|
|
m = b(m, q, k, n)
|
|
}
|
|
k.fireFn = m;
|
|
return k
|
|
}, findListener:function (o, n) {
|
|
var p = this.listeners, m = p.length, k;
|
|
n = n || this.obj;
|
|
while (m--) {
|
|
k = p[m];
|
|
if (k) {
|
|
if (k.fn == o && k.scope == n) {
|
|
return m
|
|
}
|
|
}
|
|
}
|
|
return -1
|
|
}, isListening:function (l, k) {
|
|
return this.findListener(l, k) != -1
|
|
}, removeListener:function (r, q) {
|
|
var p, m, n, s = this, o = i;
|
|
if ((p = s.findListener(r, q)) != -1) {
|
|
if (s.firing) {
|
|
s.listeners = s.listeners.slice(0)
|
|
}
|
|
m = s.listeners[p];
|
|
if (m.task) {
|
|
m.task.cancel();
|
|
delete m.task
|
|
}
|
|
n = m.tasks && m.tasks.length;
|
|
if (n) {
|
|
while (n--) {
|
|
m.tasks[n].cancel()
|
|
}
|
|
delete m.tasks
|
|
}
|
|
s.listeners.splice(p, 1);
|
|
o = g
|
|
}
|
|
return o
|
|
}, clearListeners:function () {
|
|
var n = this, k = n.listeners, m = k.length;
|
|
while (m--) {
|
|
n.removeListener(k[m].fn, k[m].scope)
|
|
}
|
|
}, fire:function () {
|
|
var q = this, p = q.listeners, k = p.length, o = 0, m;
|
|
if (k > 0) {
|
|
q.firing = g;
|
|
var n = Array.prototype.slice.call(arguments, 0);
|
|
for (; o < k; o++) {
|
|
m = p[o];
|
|
if (m && m.fireFn.apply(m.scope || q.obj || window, n) === i) {
|
|
return(q.firing = i)
|
|
}
|
|
}
|
|
}
|
|
q.firing = i;
|
|
return g
|
|
}}
|
|
})();
|
|
Ext.DomHelper = function () {
|
|
var x = null, k = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i, m = /^table|tbody|tr|td$/i, d = /tag|children|cn|html$/i, t = /td|tr|tbody/i, o = /([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi, v = /end/i, r, n = "afterbegin", p = "afterend", c = "beforebegin", q = "beforeend", a = "<table>", i = "</table>", b = a + "<tbody>", j = "</tbody>" + i, l = b + "<tr>", w = "</tr>" + j;
|
|
|
|
function h(B, D, C, E, A, y) {
|
|
var z = r.insertHtml(E, Ext.getDom(B), u(D));
|
|
return C ? Ext.get(z, true) : z
|
|
}
|
|
|
|
function u(D) {
|
|
var z = "", y, C, B, E;
|
|
if (typeof D == "string") {
|
|
z = D
|
|
} else {
|
|
if (Ext.isArray(D)) {
|
|
for (var A = 0; A < D.length; A++) {
|
|
if (D[A]) {
|
|
z += u(D[A])
|
|
}
|
|
}
|
|
} else {
|
|
z += "<" + (D.tag = D.tag || "div");
|
|
for (y in D) {
|
|
C = D[y];
|
|
if (!d.test(y)) {
|
|
if (typeof C == "object") {
|
|
z += " " + y + '="';
|
|
for (B in C) {
|
|
z += B + ":" + C[B] + ";"
|
|
}
|
|
z += '"'
|
|
} else {
|
|
z += " " + ({cls:"class", htmlFor:"for"}[y] || y) + '="' + C + '"'
|
|
}
|
|
}
|
|
}
|
|
if (k.test(D.tag)) {
|
|
z += "/>"
|
|
} else {
|
|
z += ">";
|
|
if ((E = D.children || D.cn)) {
|
|
z += u(E)
|
|
} else {
|
|
if (D.html) {
|
|
z += D.html
|
|
}
|
|
}
|
|
z += "</" + D.tag + ">"
|
|
}
|
|
}
|
|
}
|
|
return z
|
|
}
|
|
|
|
function g(F, C, B, D) {
|
|
x.innerHTML = [C, B, D].join("");
|
|
var y = -1, A = x, z;
|
|
while (++y < F) {
|
|
A = A.firstChild
|
|
}
|
|
if (z = A.nextSibling) {
|
|
var E = document.createDocumentFragment();
|
|
while (A) {
|
|
z = A.nextSibling;
|
|
E.appendChild(A);
|
|
A = z
|
|
}
|
|
A = E
|
|
}
|
|
return A
|
|
}
|
|
|
|
function e(y, z, B, A) {
|
|
var C, D;
|
|
x = x || document.createElement("div");
|
|
if (y == "td" && (z == n || z == q) || !t.test(y) && (z == c || z == p)) {
|
|
return
|
|
}
|
|
D = z == c ? B : z == p ? B.nextSibling : z == n ? B.firstChild : null;
|
|
if (z == c || z == p) {
|
|
B = B.parentNode
|
|
}
|
|
if (y == "td" || (y == "tr" && (z == q || z == n))) {
|
|
C = g(4, l, A, w)
|
|
} else {
|
|
if ((y == "tbody" && (z == q || z == n)) || (y == "tr" && (z == c || z == p))) {
|
|
C = g(3, b, A, j)
|
|
} else {
|
|
C = g(2, a, A, i)
|
|
}
|
|
}
|
|
B.insertBefore(C, D);
|
|
return C
|
|
}
|
|
|
|
function s(A) {
|
|
var D = document.createElement("div"), y = document.createDocumentFragment(), z = 0, B, C;
|
|
D.innerHTML = A;
|
|
C = D.childNodes;
|
|
B = C.length;
|
|
for (; z < B; z++) {
|
|
y.appendChild(C[z].cloneNode(true))
|
|
}
|
|
return y
|
|
}
|
|
|
|
r = {markup:function (y) {
|
|
return u(y)
|
|
}, applyStyles:function (y, z) {
|
|
if (z) {
|
|
var A;
|
|
y = Ext.fly(y);
|
|
if (typeof z == "function") {
|
|
z = z.call()
|
|
}
|
|
if (typeof z == "string") {
|
|
o.lastIndex = 0;
|
|
while ((A = o.exec(z))) {
|
|
y.setStyle(A[1], A[2])
|
|
}
|
|
} else {
|
|
if (typeof z == "object") {
|
|
y.setStyle(z)
|
|
}
|
|
}
|
|
}
|
|
}, insertHtml:function (D, y, E) {
|
|
var B = {}, A, F, C, G, H, z;
|
|
D = D.toLowerCase();
|
|
B[c] = ["BeforeBegin", "previousSibling"];
|
|
B[p] = ["AfterEnd", "nextSibling"];
|
|
if (y.insertAdjacentHTML) {
|
|
if (m.test(y.tagName) && (z = e(y.tagName.toLowerCase(), D, y, E))) {
|
|
return z
|
|
}
|
|
B[n] = ["AfterBegin", "firstChild"];
|
|
B[q] = ["BeforeEnd", "lastChild"];
|
|
if ((A = B[D])) {
|
|
y.insertAdjacentHTML(A[0], E);
|
|
return y[A[1]]
|
|
}
|
|
} else {
|
|
F = y.ownerDocument.createRange();
|
|
G = "setStart" + (v.test(D) ? "After" : "Before");
|
|
if (B[D]) {
|
|
F[G](y);
|
|
if (!F.createContextualFragment) {
|
|
H = s(E)
|
|
} else {
|
|
H = F.createContextualFragment(E)
|
|
}
|
|
y.parentNode.insertBefore(H, D == c ? y : y.nextSibling);
|
|
return y[(D == c ? "previous" : "next") + "Sibling"]
|
|
} else {
|
|
C = (D == n ? "first" : "last") + "Child";
|
|
if (y.firstChild) {
|
|
F[G](y[C]);
|
|
if (!F.createContextualFragment) {
|
|
H = s(E)
|
|
} else {
|
|
H = F.createContextualFragment(E)
|
|
}
|
|
if (D == n) {
|
|
y.insertBefore(H, y.firstChild)
|
|
} else {
|
|
y.appendChild(H)
|
|
}
|
|
} else {
|
|
y.innerHTML = E
|
|
}
|
|
return y[C]
|
|
}
|
|
}
|
|
throw'Illegal insertion point -> "' + D + '"'
|
|
}, insertBefore:function (y, A, z) {
|
|
return h(y, A, z, c)
|
|
}, insertAfter:function (y, A, z) {
|
|
return h(y, A, z, p, "nextSibling")
|
|
}, insertFirst:function (y, A, z) {
|
|
return h(y, A, z, n, "firstChild")
|
|
}, append:function (y, A, z) {
|
|
return h(y, A, z, q, "", true)
|
|
}, overwrite:function (y, A, z) {
|
|
y = Ext.getDom(y);
|
|
y.innerHTML = u(A);
|
|
return z ? Ext.get(y.firstChild) : y.firstChild
|
|
}, createHtml:u};
|
|
return r
|
|
}();
|
|
Ext.Template = function (h) {
|
|
var j = this, c = arguments, e = [], d;
|
|
if (Ext.isArray(h)) {
|
|
h = h.join("")
|
|
} else {
|
|
if (c.length > 1) {
|
|
for (var g = 0, b = c.length; g < b; g++) {
|
|
d = c[g];
|
|
if (typeof d == "object") {
|
|
Ext.apply(j, d)
|
|
} else {
|
|
e.push(d)
|
|
}
|
|
}
|
|
h = e.join("")
|
|
}
|
|
}
|
|
j.html = h;
|
|
if (j.compiled) {
|
|
j.compile()
|
|
}
|
|
};
|
|
Ext.Template.prototype = {re:/\{([\w\-]+)\}/g, applyTemplate:function (a) {
|
|
var b = this;
|
|
return b.compiled ? b.compiled(a) : b.html.replace(b.re, function (c, d) {
|
|
return a[d] !== undefined ? a[d] : ""
|
|
})
|
|
}, set:function (a, c) {
|
|
var b = this;
|
|
b.html = a;
|
|
b.compiled = null;
|
|
return c ? b.compile() : b
|
|
}, compile:function () {
|
|
var me = this, sep = Ext.isGecko ? "+" : ",";
|
|
|
|
function fn(m, name) {
|
|
name = "values['" + name + "']";
|
|
return"'" + sep + "(" + name + " == undefined ? '' : " + name + ")" + sep + "'"
|
|
}
|
|
|
|
eval("this.compiled = function(values){ return " + (Ext.isGecko ? "'" : "['") + me.html.replace(/\\/g, "\\\\").replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn) + (Ext.isGecko ? "';};" : "'].join('');};"));
|
|
return me
|
|
}, insertFirst:function (b, a, c) {
|
|
return this.doInsert("afterBegin", b, a, c)
|
|
}, insertBefore:function (b, a, c) {
|
|
return this.doInsert("beforeBegin", b, a, c)
|
|
}, insertAfter:function (b, a, c) {
|
|
return this.doInsert("afterEnd", b, a, c)
|
|
}, append:function (b, a, c) {
|
|
return this.doInsert("beforeEnd", b, a, c)
|
|
}, doInsert:function (c, e, b, a) {
|
|
e = Ext.getDom(e);
|
|
var d = Ext.DomHelper.insertHtml(c, e, this.applyTemplate(b));
|
|
return a ? Ext.get(d, true) : d
|
|
}, overwrite:function (b, a, c) {
|
|
b = Ext.getDom(b);
|
|
b.innerHTML = this.applyTemplate(a);
|
|
return c ? Ext.get(b.firstChild, true) : b.firstChild
|
|
}};
|
|
Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
|
|
Ext.Template.from = function (b, a) {
|
|
b = Ext.getDom(b);
|
|
return new Ext.Template(b.value || b.innerHTML, a || "")
|
|
};
|
|
Ext.DomQuery = function () {
|
|
var cache = {}, simpleCache = {}, valueCache = {}, nonSpace = /\S/, trimRe = /^\s+|\s+$/g, tplRe = /\{(\d+)\}/g, modeRe = /^(\s?[\/>+~]\s?|\s|$)/, tagTokenRe = /^(#)?([\w\-\*]+)/, nthRe = /(\d*)n\+?(\d*)/, nthRe2 = /\D/, isIE = window.ActiveXObject ? true : false, key = 30803;
|
|
eval("var batch = 30803;");
|
|
function child(parent, index) {
|
|
var i = 0, n = parent.firstChild;
|
|
while (n) {
|
|
if (n.nodeType == 1) {
|
|
if (++i == index) {
|
|
return n
|
|
}
|
|
}
|
|
n = n.nextSibling
|
|
}
|
|
return null
|
|
}
|
|
|
|
function next(n) {
|
|
while ((n = n.nextSibling) && n.nodeType != 1) {
|
|
}
|
|
return n
|
|
}
|
|
|
|
function prev(n) {
|
|
while ((n = n.previousSibling) && n.nodeType != 1) {
|
|
}
|
|
return n
|
|
}
|
|
|
|
function children(parent) {
|
|
var n = parent.firstChild, nodeIndex = -1, nextNode;
|
|
while (n) {
|
|
nextNode = n.nextSibling;
|
|
if (n.nodeType == 3 && !nonSpace.test(n.nodeValue)) {
|
|
parent.removeChild(n)
|
|
} else {
|
|
n.nodeIndex = ++nodeIndex
|
|
}
|
|
n = nextNode
|
|
}
|
|
return this
|
|
}
|
|
|
|
function byClassName(nodeSet, cls) {
|
|
if (!cls) {
|
|
return nodeSet
|
|
}
|
|
var result = [], ri = -1;
|
|
for (var i = 0, ci; ci = nodeSet[i]; i++) {
|
|
if ((" " + ci.className + " ").indexOf(cls) != -1) {
|
|
result[++ri] = ci
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
function attrValue(n, attr) {
|
|
if (!n.tagName && typeof n.length != "undefined") {
|
|
n = n[0]
|
|
}
|
|
if (!n) {
|
|
return null
|
|
}
|
|
if (attr == "for") {
|
|
return n.htmlFor
|
|
}
|
|
if (attr == "class" || attr == "className") {
|
|
return n.className
|
|
}
|
|
return n.getAttribute(attr) || n[attr]
|
|
}
|
|
|
|
function getNodes(ns, mode, tagName) {
|
|
var result = [], ri = -1, cs;
|
|
if (!ns) {
|
|
return result
|
|
}
|
|
tagName = tagName || "*";
|
|
if (typeof ns.getElementsByTagName != "undefined") {
|
|
ns = [ns]
|
|
}
|
|
if (!mode) {
|
|
for (var i = 0, ni; ni = ns[i]; i++) {
|
|
cs = ni.getElementsByTagName(tagName);
|
|
for (var j = 0, ci; ci = cs[j]; j++) {
|
|
result[++ri] = ci
|
|
}
|
|
}
|
|
} else {
|
|
if (mode == "/" || mode == ">") {
|
|
var utag = tagName.toUpperCase();
|
|
for (var i = 0, ni, cn; ni = ns[i]; i++) {
|
|
cn = ni.childNodes;
|
|
for (var j = 0, cj; cj = cn[j]; j++) {
|
|
if (cj.nodeName == utag || cj.nodeName == tagName || tagName == "*") {
|
|
result[++ri] = cj
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (mode == "+") {
|
|
var utag = tagName.toUpperCase();
|
|
for (var i = 0, n; n = ns[i]; i++) {
|
|
while ((n = n.nextSibling) && n.nodeType != 1) {
|
|
}
|
|
if (n && (n.nodeName == utag || n.nodeName == tagName || tagName == "*")) {
|
|
result[++ri] = n
|
|
}
|
|
}
|
|
} else {
|
|
if (mode == "~") {
|
|
var utag = tagName.toUpperCase();
|
|
for (var i = 0, n; n = ns[i]; i++) {
|
|
while ((n = n.nextSibling)) {
|
|
if (n.nodeName == utag || n.nodeName == tagName || tagName == "*") {
|
|
result[++ri] = n
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
function concat(a, b) {
|
|
if (b.slice) {
|
|
return a.concat(b)
|
|
}
|
|
for (var i = 0, l = b.length; i < l; i++) {
|
|
a[a.length] = b[i]
|
|
}
|
|
return a
|
|
}
|
|
|
|
function byTag(cs, tagName) {
|
|
if (cs.tagName || cs == document) {
|
|
cs = [cs]
|
|
}
|
|
if (!tagName) {
|
|
return cs
|
|
}
|
|
var result = [], ri = -1;
|
|
tagName = tagName.toLowerCase();
|
|
for (var i = 0, ci; ci = cs[i]; i++) {
|
|
if (ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName) {
|
|
result[++ri] = ci
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
function byId(cs, id) {
|
|
if (cs.tagName || cs == document) {
|
|
cs = [cs]
|
|
}
|
|
if (!id) {
|
|
return cs
|
|
}
|
|
var result = [], ri = -1;
|
|
for (var i = 0, ci; ci = cs[i]; i++) {
|
|
if (ci && ci.id == id) {
|
|
result[++ri] = ci;
|
|
return result
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
function byAttribute(cs, attr, value, op, custom) {
|
|
var result = [], ri = -1, useGetStyle = custom == "{", fn = Ext.DomQuery.operators[op], a, xml, hasXml;
|
|
for (var i = 0, ci; ci = cs[i]; i++) {
|
|
if (ci.nodeType != 1) {
|
|
continue
|
|
}
|
|
if (!hasXml) {
|
|
xml = Ext.DomQuery.isXml(ci);
|
|
hasXml = true
|
|
}
|
|
if (!xml) {
|
|
if (useGetStyle) {
|
|
a = Ext.DomQuery.getStyle(ci, attr)
|
|
} else {
|
|
if (attr == "class" || attr == "className") {
|
|
a = ci.className
|
|
} else {
|
|
if (attr == "for") {
|
|
a = ci.htmlFor
|
|
} else {
|
|
if (attr == "href") {
|
|
a = ci.getAttribute("href", 2)
|
|
} else {
|
|
a = ci.getAttribute(attr)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
a = ci.getAttribute(attr)
|
|
}
|
|
if ((fn && fn(a, value)) || (!fn && a)) {
|
|
result[++ri] = ci
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
function byPseudo(cs, name, value) {
|
|
return Ext.DomQuery.pseudos[name](cs, value)
|
|
}
|
|
|
|
function nodupIEXml(cs) {
|
|
var d = ++key, r;
|
|
cs[0].setAttribute("_nodup", d);
|
|
r = [cs[0]];
|
|
for (var i = 1, len = cs.length; i < len; i++) {
|
|
var c = cs[i];
|
|
if (!c.getAttribute("_nodup") != d) {
|
|
c.setAttribute("_nodup", d);
|
|
r[r.length] = c
|
|
}
|
|
}
|
|
for (var i = 0, len = cs.length; i < len; i++) {
|
|
cs[i].removeAttribute("_nodup")
|
|
}
|
|
return r
|
|
}
|
|
|
|
function nodup(cs) {
|
|
if (!cs) {
|
|
return[]
|
|
}
|
|
var len = cs.length, c, i, r = cs, cj, ri = -1;
|
|
if (!len || typeof cs.nodeType != "undefined" || len == 1) {
|
|
return cs
|
|
}
|
|
if (isIE && typeof cs[0].selectSingleNode != "undefined") {
|
|
return nodupIEXml(cs)
|
|
}
|
|
var d = ++key;
|
|
cs[0]._nodup = d;
|
|
for (i = 1; c = cs[i]; i++) {
|
|
if (c._nodup != d) {
|
|
c._nodup = d
|
|
} else {
|
|
r = [];
|
|
for (var j = 0; j < i; j++) {
|
|
r[++ri] = cs[j]
|
|
}
|
|
for (j = i + 1; cj = cs[j]; j++) {
|
|
if (cj._nodup != d) {
|
|
cj._nodup = d;
|
|
r[++ri] = cj
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
function quickDiffIEXml(c1, c2) {
|
|
var d = ++key, r = [];
|
|
for (var i = 0, len = c1.length; i < len; i++) {
|
|
c1[i].setAttribute("_qdiff", d)
|
|
}
|
|
for (var i = 0, len = c2.length; i < len; i++) {
|
|
if (c2[i].getAttribute("_qdiff") != d) {
|
|
r[r.length] = c2[i]
|
|
}
|
|
}
|
|
for (var i = 0, len = c1.length; i < len; i++) {
|
|
c1[i].removeAttribute("_qdiff")
|
|
}
|
|
return r
|
|
}
|
|
|
|
function quickDiff(c1, c2) {
|
|
var len1 = c1.length, d = ++key, r = [];
|
|
if (!len1) {
|
|
return c2
|
|
}
|
|
if (isIE && typeof c1[0].selectSingleNode != "undefined") {
|
|
return quickDiffIEXml(c1, c2)
|
|
}
|
|
for (var i = 0; i < len1; i++) {
|
|
c1[i]._qdiff = d
|
|
}
|
|
for (var i = 0, len = c2.length; i < len; i++) {
|
|
if (c2[i]._qdiff != d) {
|
|
r[r.length] = c2[i]
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
function quickId(ns, mode, root, id) {
|
|
if (ns == root) {
|
|
var d = root.ownerDocument || root;
|
|
return d.getElementById(id)
|
|
}
|
|
ns = getNodes(ns, mode, "*");
|
|
return byId(ns, id)
|
|
}
|
|
|
|
return{getStyle:function (el, name) {
|
|
return Ext.fly(el).getStyle(name)
|
|
}, compile:function (path, type) {
|
|
type = type || "select";
|
|
var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"], mode, lastPath, matchers = Ext.DomQuery.matchers, matchersLn = matchers.length, modeMatch, lmode = path.match(modeRe);
|
|
if (lmode && lmode[1]) {
|
|
fn[fn.length] = 'mode="' + lmode[1].replace(trimRe, "") + '";';
|
|
path = path.replace(lmode[1], "")
|
|
}
|
|
while (path.substr(0, 1) == "/") {
|
|
path = path.substr(1)
|
|
}
|
|
while (path && lastPath != path) {
|
|
lastPath = path;
|
|
var tokenMatch = path.match(tagTokenRe);
|
|
if (type == "select") {
|
|
if (tokenMatch) {
|
|
if (tokenMatch[1] == "#") {
|
|
fn[fn.length] = 'n = quickId(n, mode, root, "' + tokenMatch[2] + '");'
|
|
} else {
|
|
fn[fn.length] = 'n = getNodes(n, mode, "' + tokenMatch[2] + '");'
|
|
}
|
|
path = path.replace(tokenMatch[0], "")
|
|
} else {
|
|
if (path.substr(0, 1) != "@") {
|
|
fn[fn.length] = 'n = getNodes(n, mode, "*");'
|
|
}
|
|
}
|
|
} else {
|
|
if (tokenMatch) {
|
|
if (tokenMatch[1] == "#") {
|
|
fn[fn.length] = 'n = byId(n, "' + tokenMatch[2] + '");'
|
|
} else {
|
|
fn[fn.length] = 'n = byTag(n, "' + tokenMatch[2] + '");'
|
|
}
|
|
path = path.replace(tokenMatch[0], "")
|
|
}
|
|
}
|
|
while (!(modeMatch = path.match(modeRe))) {
|
|
var matched = false;
|
|
for (var j = 0; j < matchersLn; j++) {
|
|
var t = matchers[j];
|
|
var m = path.match(t.re);
|
|
if (m) {
|
|
fn[fn.length] = t.select.replace(tplRe, function (x, i) {
|
|
return m[i]
|
|
});
|
|
path = path.replace(m[0], "");
|
|
matched = true;
|
|
break
|
|
}
|
|
}
|
|
if (!matched) {
|
|
throw'Error parsing selector, parsing failed at "' + path + '"'
|
|
}
|
|
}
|
|
if (modeMatch[1]) {
|
|
fn[fn.length] = 'mode="' + modeMatch[1].replace(trimRe, "") + '";';
|
|
path = path.replace(modeMatch[1], "")
|
|
}
|
|
}
|
|
fn[fn.length] = "return nodup(n);\n}";
|
|
eval(fn.join(""));
|
|
return f
|
|
}, jsSelect:function (path, root, type) {
|
|
root = root || document;
|
|
if (typeof root == "string") {
|
|
root = document.getElementById(root)
|
|
}
|
|
var paths = path.split(","), results = [];
|
|
for (var i = 0, len = paths.length; i < len; i++) {
|
|
var subPath = paths[i].replace(trimRe, "");
|
|
if (!cache[subPath]) {
|
|
cache[subPath] = Ext.DomQuery.compile(subPath);
|
|
if (!cache[subPath]) {
|
|
throw subPath + " is not a valid selector"
|
|
}
|
|
}
|
|
var result = cache[subPath](root);
|
|
if (result && result != document) {
|
|
results = results.concat(result)
|
|
}
|
|
}
|
|
if (paths.length > 1) {
|
|
return nodup(results)
|
|
}
|
|
return results
|
|
}, isXml:function (el) {
|
|
var docEl = (el ? el.ownerDocument || el : 0).documentElement;
|
|
return docEl ? docEl.nodeName !== "HTML" : false
|
|
}, select:document.querySelectorAll ? function (path, root, type) {
|
|
root = root || document;
|
|
if (!Ext.DomQuery.isXml(root)) {
|
|
try {
|
|
var cs = root.querySelectorAll(path);
|
|
return Ext.toArray(cs)
|
|
} catch (ex) {
|
|
}
|
|
}
|
|
return Ext.DomQuery.jsSelect.call(this, path, root, type)
|
|
} : function (path, root, type) {
|
|
return Ext.DomQuery.jsSelect.call(this, path, root, type)
|
|
}, selectNode:function (path, root) {
|
|
return Ext.DomQuery.select(path, root)[0]
|
|
}, selectValue:function (path, root, defaultValue) {
|
|
path = path.replace(trimRe, "");
|
|
if (!valueCache[path]) {
|
|
valueCache[path] = Ext.DomQuery.compile(path, "select")
|
|
}
|
|
var n = valueCache[path](root), v;
|
|
n = n[0] ? n[0] : n;
|
|
if (typeof n.normalize == "function") {
|
|
n.normalize()
|
|
}
|
|
v = (n && n.firstChild ? n.firstChild.nodeValue : null);
|
|
return((v === null || v === undefined || v === "") ? defaultValue : v)
|
|
}, selectNumber:function (path, root, defaultValue) {
|
|
var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
|
|
return parseFloat(v)
|
|
}, is:function (el, ss) {
|
|
if (typeof el == "string") {
|
|
el = document.getElementById(el)
|
|
}
|
|
var isArray = Ext.isArray(el), result = Ext.DomQuery.filter(isArray ? el : [el], ss);
|
|
return isArray ? (result.length == el.length) : (result.length > 0)
|
|
}, filter:function (els, ss, nonMatches) {
|
|
ss = ss.replace(trimRe, "");
|
|
if (!simpleCache[ss]) {
|
|
simpleCache[ss] = Ext.DomQuery.compile(ss, "simple")
|
|
}
|
|
var result = simpleCache[ss](els);
|
|
return nonMatches ? quickDiff(result, els) : result
|
|
}, matchers:[
|
|
{re:/^\.([\w\-]+)/, select:'n = byClassName(n, " {1} ");'},
|
|
{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/, select:'n = byPseudo(n, "{1}", "{2}");'},
|
|
{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?(["']?)(.*?)\4)?[\]\}])/, select:'n = byAttribute(n, "{2}", "{5}", "{3}", "{1}");'},
|
|
{re:/^#([\w\-]+)/, select:'n = byId(n, "{1}");'},
|
|
{re:/^@([\w\-]+)/, select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}
|
|
], operators:{"=":function (a, v) {
|
|
return a == v
|
|
}, "!=":function (a, v) {
|
|
return a != v
|
|
}, "^=":function (a, v) {
|
|
return a && a.substr(0, v.length) == v
|
|
}, "$=":function (a, v) {
|
|
return a && a.substr(a.length - v.length) == v
|
|
}, "*=":function (a, v) {
|
|
return a && a.indexOf(v) !== -1
|
|
}, "%=":function (a, v) {
|
|
return(a % v) == 0
|
|
}, "|=":function (a, v) {
|
|
return a && (a == v || a.substr(0, v.length + 1) == v + "-")
|
|
}, "~=":function (a, v) {
|
|
return a && (" " + a + " ").indexOf(" " + v + " ") != -1
|
|
}}, pseudos:{"first-child":function (c) {
|
|
var r = [], ri = -1, n;
|
|
for (var i = 0, ci; ci = n = c[i]; i++) {
|
|
while ((n = n.previousSibling) && n.nodeType != 1) {
|
|
}
|
|
if (!n) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, "last-child":function (c) {
|
|
var r = [], ri = -1, n;
|
|
for (var i = 0, ci; ci = n = c[i]; i++) {
|
|
while ((n = n.nextSibling) && n.nodeType != 1) {
|
|
}
|
|
if (!n) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, "nth-child":function (c, a) {
|
|
var r = [], ri = -1, m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a), f = (m[1] || 1) - 0, l = m[2] - 0;
|
|
for (var i = 0, n; n = c[i]; i++) {
|
|
var pn = n.parentNode;
|
|
if (batch != pn._batch) {
|
|
var j = 0;
|
|
for (var cn = pn.firstChild; cn; cn = cn.nextSibling) {
|
|
if (cn.nodeType == 1) {
|
|
cn.nodeIndex = ++j
|
|
}
|
|
}
|
|
pn._batch = batch
|
|
}
|
|
if (f == 1) {
|
|
if (l == 0 || n.nodeIndex == l) {
|
|
r[++ri] = n
|
|
}
|
|
} else {
|
|
if ((n.nodeIndex + l) % f == 0) {
|
|
r[++ri] = n
|
|
}
|
|
}
|
|
}
|
|
return r
|
|
}, "only-child":function (c) {
|
|
var r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
if (!prev(ci) && !next(ci)) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, empty:function (c) {
|
|
var r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
var cns = ci.childNodes, j = 0, cn, empty = true;
|
|
while (cn = cns[j]) {
|
|
++j;
|
|
if (cn.nodeType == 1 || cn.nodeType == 3) {
|
|
empty = false;
|
|
break
|
|
}
|
|
}
|
|
if (empty) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, contains:function (c, v) {
|
|
var r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
if ((ci.textContent || ci.innerText || "").indexOf(v) != -1) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, nodeValue:function (c, v) {
|
|
var r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
if (ci.firstChild && ci.firstChild.nodeValue == v) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, checked:function (c) {
|
|
var r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
if (ci.checked == true) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, not:function (c, ss) {
|
|
return Ext.DomQuery.filter(c, ss, true)
|
|
}, any:function (c, selectors) {
|
|
var ss = selectors.split("|"), r = [], ri = -1, s;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
for (var j = 0; s = ss[j]; j++) {
|
|
if (Ext.DomQuery.is(ci, s)) {
|
|
r[++ri] = ci;
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return r
|
|
}, odd:function (c) {
|
|
return this["nth-child"](c, "odd")
|
|
}, even:function (c) {
|
|
return this["nth-child"](c, "even")
|
|
}, nth:function (c, a) {
|
|
return c[a - 1] || []
|
|
}, first:function (c) {
|
|
return c[0] || []
|
|
}, last:function (c) {
|
|
return c[c.length - 1] || []
|
|
}, has:function (c, ss) {
|
|
var s = Ext.DomQuery.select, r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
if (s(ss, ci).length > 0) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, next:function (c, ss) {
|
|
var is = Ext.DomQuery.is, r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
var n = next(ci);
|
|
if (n && is(n, ss)) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}, prev:function (c, ss) {
|
|
var is = Ext.DomQuery.is, r = [], ri = -1;
|
|
for (var i = 0, ci; ci = c[i]; i++) {
|
|
var n = prev(ci);
|
|
if (n && is(n, ss)) {
|
|
r[++ri] = ci
|
|
}
|
|
}
|
|
return r
|
|
}}}
|
|
}();
|
|
Ext.query = Ext.DomQuery.select;
|
|
Ext.util.DelayedTask = function (d, c, a) {
|
|
var e = this, g, b = function () {
|
|
clearInterval(g);
|
|
g = null;
|
|
d.apply(c, a || [])
|
|
};
|
|
e.delay = function (i, k, j, h) {
|
|
e.cancel();
|
|
d = k || d;
|
|
c = j || c;
|
|
a = h || a;
|
|
g = setInterval(b, i)
|
|
};
|
|
e.cancel = function () {
|
|
if (g) {
|
|
clearInterval(g);
|
|
g = null
|
|
}
|
|
}
|
|
};
|
|
(function () {
|
|
var h = document;
|
|
Ext.Element = function (l, m) {
|
|
var n = typeof l == "string" ? h.getElementById(l) : l, o;
|
|
if (!n) {
|
|
return null
|
|
}
|
|
o = n.id;
|
|
if (!m && o && Ext.elCache[o]) {
|
|
return Ext.elCache[o].el
|
|
}
|
|
this.dom = n;
|
|
this.id = o || Ext.id(n)
|
|
};
|
|
var d = Ext.DomHelper, e = Ext.Element, a = Ext.elCache;
|
|
e.prototype = {set:function (q, m) {
|
|
var n = this.dom, l, p, m = (m !== false) && !!n.setAttribute;
|
|
for (l in q) {
|
|
if (q.hasOwnProperty(l)) {
|
|
p = q[l];
|
|
if (l == "style") {
|
|
d.applyStyles(n, p)
|
|
} else {
|
|
if (l == "cls") {
|
|
n.className = p
|
|
} else {
|
|
if (m) {
|
|
n.setAttribute(l, p)
|
|
} else {
|
|
n[l] = p
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return this
|
|
}, defaultUnit:"px", is:function (l) {
|
|
return Ext.DomQuery.is(this.dom, l)
|
|
}, focus:function (o, n) {
|
|
var l = this, n = n || l.dom;
|
|
try {
|
|
if (Number(o)) {
|
|
l.focus.defer(o, null, [null, n])
|
|
} else {
|
|
n.focus()
|
|
}
|
|
} catch (m) {
|
|
}
|
|
return l
|
|
}, blur:function () {
|
|
try {
|
|
this.dom.blur()
|
|
} catch (l) {
|
|
}
|
|
return this
|
|
}, getValue:function (l) {
|
|
var m = this.dom.value;
|
|
return l ? parseInt(m, 10) : m
|
|
}, addListener:function (l, o, n, m) {
|
|
Ext.EventManager.on(this.dom, l, o, n || this, m);
|
|
return this
|
|
}, removeListener:function (l, n, m) {
|
|
Ext.EventManager.removeListener(this.dom, l, n, m || this);
|
|
return this
|
|
}, removeAllListeners:function () {
|
|
Ext.EventManager.removeAll(this.dom);
|
|
return this
|
|
}, purgeAllListeners:function () {
|
|
Ext.EventManager.purgeElement(this, true);
|
|
return this
|
|
}, addUnits:function (l) {
|
|
if (l === "" || l == "auto" || l === undefined) {
|
|
l = l || ""
|
|
} else {
|
|
if (!isNaN(l) || !i.test(l)) {
|
|
l = l + (this.defaultUnit || "px")
|
|
}
|
|
}
|
|
return l
|
|
}, load:function (m, n, l) {
|
|
Ext.Ajax.request(Ext.apply({params:n, url:m.url || m, callback:l, el:this.dom, indicatorText:m.indicatorText || ""}, Ext.isObject(m) ? m : {}));
|
|
return this
|
|
}, isBorderBox:function () {
|
|
return Ext.isBorderBox || Ext.isForcedBorderBox || g[(this.dom.tagName || "").toLowerCase()]
|
|
}, remove:function () {
|
|
var l = this, m = l.dom;
|
|
if (m) {
|
|
delete l.dom;
|
|
Ext.removeNode(m)
|
|
}
|
|
}, hover:function (m, l, o, n) {
|
|
var p = this;
|
|
p.on("mouseenter", m, o || p.dom, n);
|
|
p.on("mouseleave", l, o || p.dom, n);
|
|
return p
|
|
}, contains:function (l) {
|
|
return !l ? false : Ext.lib.Dom.isAncestor(this.dom, l.dom ? l.dom : l)
|
|
}, getAttributeNS:function (m, l) {
|
|
return this.getAttribute(l, m)
|
|
}, getAttribute:(function () {
|
|
var p = document.createElement("table"), o = false, m = "getAttribute" in p, l = /undefined|unknown/;
|
|
if (m) {
|
|
try {
|
|
p.getAttribute("ext:qtip")
|
|
} catch (n) {
|
|
o = true
|
|
}
|
|
return function (q, s) {
|
|
var r = this.dom, t;
|
|
if (r.getAttributeNS) {
|
|
t = r.getAttributeNS(s, q) || null
|
|
}
|
|
if (t == null) {
|
|
if (s) {
|
|
if (o && r.tagName.toUpperCase() == "TABLE") {
|
|
try {
|
|
t = r.getAttribute(s + ":" + q)
|
|
} catch (u) {
|
|
t = ""
|
|
}
|
|
} else {
|
|
t = r.getAttribute(s + ":" + q)
|
|
}
|
|
} else {
|
|
t = r.getAttribute(q) || r[q]
|
|
}
|
|
}
|
|
return t || ""
|
|
}
|
|
} else {
|
|
return function (q, s) {
|
|
var r = this.om, u, t;
|
|
if (s) {
|
|
t = r[s + ":" + q];
|
|
u = l.test(typeof t) ? undefined : t
|
|
} else {
|
|
u = r[q]
|
|
}
|
|
return u || ""
|
|
}
|
|
}
|
|
p = null
|
|
})(), update:function (l) {
|
|
if (this.dom) {
|
|
this.dom.innerHTML = l
|
|
}
|
|
return this
|
|
}};
|
|
var k = e.prototype;
|
|
e.addMethods = function (l) {
|
|
Ext.apply(k, l)
|
|
};
|
|
k.on = k.addListener;
|
|
k.un = k.removeListener;
|
|
k.autoBoxAdjust = true;
|
|
var i = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i, c;
|
|
e.get = function (m) {
|
|
var l, p, o;
|
|
if (!m) {
|
|
return null
|
|
}
|
|
if (typeof m == "string") {
|
|
if (!(p = h.getElementById(m))) {
|
|
return null
|
|
}
|
|
if (a[m] && a[m].el) {
|
|
l = a[m].el;
|
|
l.dom = p
|
|
} else {
|
|
l = e.addToCache(new e(p))
|
|
}
|
|
return l
|
|
} else {
|
|
if (m.tagName) {
|
|
if (!(o = m.id)) {
|
|
o = Ext.id(m)
|
|
}
|
|
if (a[o] && a[o].el) {
|
|
l = a[o].el;
|
|
l.dom = m
|
|
} else {
|
|
l = e.addToCache(new e(m))
|
|
}
|
|
return l
|
|
} else {
|
|
if (m instanceof e) {
|
|
if (m != c) {
|
|
if (Ext.isIE && (m.id == undefined || m.id == "")) {
|
|
m.dom = m.dom
|
|
} else {
|
|
m.dom = h.getElementById(m.id) || m.dom
|
|
}
|
|
}
|
|
return m
|
|
} else {
|
|
if (m.isComposite) {
|
|
return m
|
|
} else {
|
|
if (Ext.isArray(m)) {
|
|
return e.select(m)
|
|
} else {
|
|
if (m == h) {
|
|
if (!c) {
|
|
var n = function () {
|
|
};
|
|
n.prototype = e.prototype;
|
|
c = new n();
|
|
c.dom = h
|
|
}
|
|
return c
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
};
|
|
e.addToCache = function (l, m) {
|
|
m = m || l.id;
|
|
a[m] = {el:l, data:{}, events:{}};
|
|
return l
|
|
};
|
|
e.data = function (m, l, n) {
|
|
m = e.get(m);
|
|
if (!m) {
|
|
return null
|
|
}
|
|
var o = a[m.id].data;
|
|
if (arguments.length == 2) {
|
|
return o[l]
|
|
} else {
|
|
return(o[l] = n)
|
|
}
|
|
};
|
|
function j() {
|
|
if (!Ext.enableGarbageCollector) {
|
|
clearInterval(e.collectorThreadId)
|
|
} else {
|
|
var l, n, q, p;
|
|
for (l in a) {
|
|
p = a[l];
|
|
if (p.skipGC) {
|
|
continue
|
|
}
|
|
n = p.el;
|
|
q = n.dom;
|
|
if (!q || !q.parentNode || (!q.offsetParent && !h.getElementById(l))) {
|
|
if (Ext.enableListenerCollection) {
|
|
Ext.EventManager.removeAll(q)
|
|
}
|
|
delete a[l]
|
|
}
|
|
}
|
|
if (Ext.isIE) {
|
|
var m = {};
|
|
for (l in a) {
|
|
m[l] = a[l]
|
|
}
|
|
a = Ext.elCache = m
|
|
}
|
|
}
|
|
}
|
|
|
|
e.collectorThreadId = setInterval(j, 30000);
|
|
var b = function () {
|
|
};
|
|
b.prototype = e.prototype;
|
|
e.Flyweight = function (l) {
|
|
this.dom = l
|
|
};
|
|
e.Flyweight.prototype = new b();
|
|
e.Flyweight.prototype.isFlyweight = true;
|
|
e._flyweights = {};
|
|
e.fly = function (n, l) {
|
|
var m = null;
|
|
l = l || "_global";
|
|
if (n = Ext.getDom(n)) {
|
|
(e._flyweights[l] = e._flyweights[l] || new e.Flyweight()).dom = n;
|
|
m = e._flyweights[l]
|
|
}
|
|
return m
|
|
};
|
|
Ext.get = e.get;
|
|
Ext.fly = e.fly;
|
|
var g = Ext.isStrict ? {select:1} : {input:1, select:1, textarea:1};
|
|
if (Ext.isIE || Ext.isGecko) {
|
|
g.button = 1
|
|
}
|
|
})();
|
|
Ext.Element.addMethods(function () {
|
|
var d = "parentNode", b = "nextSibling", c = "previousSibling", e = Ext.DomQuery, a = Ext.get;
|
|
return{findParent:function (m, l, h) {
|
|
var j = this.dom, g = document.body, k = 0, i;
|
|
if (Ext.isGecko && Object.prototype.toString.call(j) == "[object XULElement]") {
|
|
return null
|
|
}
|
|
l = l || 50;
|
|
if (isNaN(l)) {
|
|
i = Ext.getDom(l);
|
|
l = Number.MAX_VALUE
|
|
}
|
|
while (j && j.nodeType == 1 && k < l && j != g && j != i) {
|
|
if (e.is(j, m)) {
|
|
return h ? a(j) : j
|
|
}
|
|
k++;
|
|
j = j.parentNode
|
|
}
|
|
return null
|
|
}, findParentNode:function (j, i, g) {
|
|
var h = Ext.fly(this.dom.parentNode, "_internal");
|
|
return h ? h.findParent(j, i, g) : null
|
|
}, up:function (h, g) {
|
|
return this.findParentNode(h, g, true)
|
|
}, select:function (g) {
|
|
return Ext.Element.select(g, this.dom)
|
|
}, query:function (g) {
|
|
return e.select(g, this.dom)
|
|
}, child:function (g, h) {
|
|
var i = e.selectNode(g, this.dom);
|
|
return h ? i : a(i)
|
|
}, down:function (g, h) {
|
|
var i = e.selectNode(" > " + g, this.dom);
|
|
return h ? i : a(i)
|
|
}, parent:function (g, h) {
|
|
return this.matchNode(d, d, g, h)
|
|
}, next:function (g, h) {
|
|
return this.matchNode(b, b, g, h)
|
|
}, prev:function (g, h) {
|
|
return this.matchNode(c, c, g, h)
|
|
}, first:function (g, h) {
|
|
return this.matchNode(b, "firstChild", g, h)
|
|
}, last:function (g, h) {
|
|
return this.matchNode(c, "lastChild", g, h)
|
|
}, matchNode:function (h, k, g, i) {
|
|
var j = this.dom[k];
|
|
while (j) {
|
|
if (j.nodeType == 1 && (!g || e.is(j, g))) {
|
|
return !i ? a(j) : j
|
|
}
|
|
j = j[h]
|
|
}
|
|
return null
|
|
}}
|
|
}());
|
|
Ext.Element.addMethods(function () {
|
|
var c = Ext.getDom, a = Ext.get, b = Ext.DomHelper;
|
|
return{appendChild:function (d) {
|
|
return a(d).appendTo(this)
|
|
}, appendTo:function (d) {
|
|
c(d).appendChild(this.dom);
|
|
return this
|
|
}, insertBefore:function (d) {
|
|
(d = c(d)).parentNode.insertBefore(this.dom, d);
|
|
return this
|
|
}, insertAfter:function (d) {
|
|
(d = c(d)).parentNode.insertBefore(this.dom, d.nextSibling);
|
|
return this
|
|
}, insertFirst:function (e, d) {
|
|
e = e || {};
|
|
if (e.nodeType || e.dom || typeof e == "string") {
|
|
e = c(e);
|
|
this.dom.insertBefore(e, this.dom.firstChild);
|
|
return !d ? a(e) : e
|
|
} else {
|
|
return this.createChild(e, this.dom.firstChild, d)
|
|
}
|
|
}, replace:function (d) {
|
|
d = a(d);
|
|
this.insertBefore(d);
|
|
d.remove();
|
|
return this
|
|
}, replaceWith:function (d) {
|
|
var e = this;
|
|
if (d.nodeType || d.dom || typeof d == "string") {
|
|
d = c(d);
|
|
e.dom.parentNode.insertBefore(d, e.dom)
|
|
} else {
|
|
d = b.insertBefore(e.dom, d)
|
|
}
|
|
delete Ext.elCache[e.id];
|
|
Ext.removeNode(e.dom);
|
|
e.id = Ext.id(e.dom = d);
|
|
Ext.Element.addToCache(e.isFlyweight ? new Ext.Element(e.dom) : e);
|
|
return e
|
|
}, createChild:function (e, d, g) {
|
|
e = e || {tag:"div"};
|
|
return d ? b.insertBefore(d, e, g !== true) : b[!this.dom.firstChild ? "overwrite" : "append"](this.dom, e, g !== true)
|
|
}, wrap:function (d, e) {
|
|
var g = b.insertBefore(this.dom, d || {tag:"div"}, !e);
|
|
g.dom ? g.dom.appendChild(this.dom) : g.appendChild(this.dom);
|
|
return g
|
|
}, insertHtml:function (e, g, d) {
|
|
var h = b.insertHtml(e, this.dom, g);
|
|
return d ? Ext.get(h) : h
|
|
}}
|
|
}());
|
|
Ext.Element.addMethods(function () {
|
|
var A = Ext.supports, h = {}, x = /(-[a-z])/gi, s = document.defaultView, D = /alpha\(opacity=(.*)\)/i, l = /^\s+|\s+$/g, B = Ext.Element, u = /\s+/, b = /\w/g, d = "padding", c = "margin", y = "border", t = "-left", q = "-right", w = "-top", o = "-bottom", j = "-width", r = Math, z = "hidden", e = "isClipped", k = "overflow", n = "overflow-x", m = "overflow-y", C = "originalClip", i = {l:y + t + j, r:y + q + j, t:y + w + j, b:y + o + j}, g = {l:d + t, r:d + q, t:d + w, b:d + o}, a = {l:c + t, r:c + q, t:c + w, b:c + o}, E = Ext.Element.data;
|
|
|
|
function p(F, G) {
|
|
return G.charAt(1).toUpperCase()
|
|
}
|
|
|
|
function v(F) {
|
|
return h[F] || (h[F] = F == "float" ? (A.cssFloat ? "cssFloat" : "styleFloat") : F.replace(x, p))
|
|
}
|
|
|
|
return{adjustWidth:function (F) {
|
|
var G = this;
|
|
var H = (typeof F == "number");
|
|
if (H && G.autoBoxAdjust && !G.isBorderBox()) {
|
|
F -= (G.getBorderWidth("lr") + G.getPadding("lr"))
|
|
}
|
|
return(H && F < 0) ? 0 : F
|
|
}, adjustHeight:function (F) {
|
|
var G = this;
|
|
var H = (typeof F == "number");
|
|
if (H && G.autoBoxAdjust && !G.isBorderBox()) {
|
|
F -= (G.getBorderWidth("tb") + G.getPadding("tb"))
|
|
}
|
|
return(H && F < 0) ? 0 : F
|
|
}, addClass:function (J) {
|
|
var K = this, I, F, H, G = [];
|
|
if (!Ext.isArray(J)) {
|
|
if (typeof J == "string" && !this.hasClass(J)) {
|
|
K.dom.className += " " + J
|
|
}
|
|
} else {
|
|
for (I = 0, F = J.length; I < F; I++) {
|
|
H = J[I];
|
|
if (typeof H == "string" && (" " + K.dom.className + " ").indexOf(" " + H + " ") == -1) {
|
|
G.push(H)
|
|
}
|
|
}
|
|
if (G.length) {
|
|
K.dom.className += " " + G.join(" ")
|
|
}
|
|
}
|
|
return K
|
|
}, removeClass:function (K) {
|
|
var L = this, J, G, F, I, H;
|
|
if (!Ext.isArray(K)) {
|
|
K = [K]
|
|
}
|
|
if (L.dom && L.dom.className) {
|
|
H = L.dom.className.replace(l, "").split(u);
|
|
for (J = 0, F = K.length; J < F; J++) {
|
|
I = K[J];
|
|
if (typeof I == "string") {
|
|
I = I.replace(l, "");
|
|
G = H.indexOf(I);
|
|
if (G != -1) {
|
|
H.splice(G, 1)
|
|
}
|
|
}
|
|
}
|
|
L.dom.className = H.join(" ")
|
|
}
|
|
return L
|
|
}, radioClass:function (I) {
|
|
var J = this.dom.parentNode.childNodes, G, H, F;
|
|
I = Ext.isArray(I) ? I : [I];
|
|
for (H = 0, F = J.length; H < F; H++) {
|
|
G = J[H];
|
|
if (G && G.nodeType == 1) {
|
|
Ext.fly(G, "_internal").removeClass(I)
|
|
}
|
|
}
|
|
return this.addClass(I)
|
|
}, toggleClass:function (F) {
|
|
return this.hasClass(F) ? this.removeClass(F) : this.addClass(F)
|
|
}, hasClass:function (F) {
|
|
return F && (" " + this.dom.className + " ").indexOf(" " + F + " ") != -1
|
|
}, replaceClass:function (G, F) {
|
|
return this.removeClass(G).addClass(F)
|
|
}, isStyle:function (F, G) {
|
|
return this.getStyle(F) == G
|
|
}, getStyle:function () {
|
|
return s && s.getComputedStyle ? function (K) {
|
|
var I = this.dom, F, H, G, J;
|
|
if (I == document) {
|
|
return null
|
|
}
|
|
K = v(K);
|
|
G = (F = I.style[K]) ? F : (H = s.getComputedStyle(I, "")) ? H[K] : null;
|
|
if (K == "marginRight" && G != "0px" && !A.correctRightMargin) {
|
|
J = I.style.display;
|
|
I.style.display = "inline-block";
|
|
G = s.getComputedStyle(I, "").marginRight;
|
|
I.style.display = J
|
|
}
|
|
if (K == "backgroundColor" && G == "rgba(0, 0, 0, 0)" && !A.correctTransparentColor) {
|
|
G = "transparent"
|
|
}
|
|
return G
|
|
} : function (J) {
|
|
var H = this.dom, F, G;
|
|
if (H == document) {
|
|
return null
|
|
}
|
|
if (J == "opacity") {
|
|
if (H.style.filter.match) {
|
|
if (F = H.style.filter.match(D)) {
|
|
var I = parseFloat(F[1]);
|
|
if (!isNaN(I)) {
|
|
return I ? I / 100 : 0
|
|
}
|
|
}
|
|
}
|
|
return 1
|
|
}
|
|
J = v(J);
|
|
return H.style[J] || ((G = H.currentStyle) ? G[J] : null)
|
|
}
|
|
}(), getColor:function (F, G, K) {
|
|
var I = this.getStyle(F), H = (typeof K != "undefined") ? K : "#", J;
|
|
if (!I || (/transparent|inherit/.test(I))) {
|
|
return G
|
|
}
|
|
if (/^r/.test(I)) {
|
|
Ext.each(I.slice(4, I.length - 1).split(","), function (L) {
|
|
J = parseInt(L, 10);
|
|
H += (J < 16 ? "0" : "") + J.toString(16)
|
|
})
|
|
} else {
|
|
I = I.replace("#", "");
|
|
H += I.length == 3 ? I.replace(/^(\w)(\w)(\w)$/, "$1$1$2$2$3$3") : I
|
|
}
|
|
return(H.length > 5 ? H.toLowerCase() : G)
|
|
}, setStyle:function (I, H) {
|
|
var F, G;
|
|
if (typeof I != "object") {
|
|
F = {};
|
|
F[I] = H;
|
|
I = F
|
|
}
|
|
for (G in I) {
|
|
H = I[G];
|
|
G == "opacity" ? this.setOpacity(H) : this.dom.style[v(G)] = H
|
|
}
|
|
return this
|
|
}, setOpacity:function (G, F) {
|
|
var J = this, H = J.dom.style;
|
|
if (!F || !J.anim) {
|
|
if (Ext.isIE) {
|
|
var I = G < 1 ? "alpha(opacity=" + G * 100 + ")" : "", K = H.filter.replace(D, "").replace(l, "");
|
|
H.zoom = 1;
|
|
H.filter = K + (K.length > 0 ? " " : "") + I
|
|
} else {
|
|
H.opacity = G
|
|
}
|
|
} else {
|
|
J.anim({opacity:{to:G}}, J.preanim(arguments, 1), null, 0.35, "easeIn")
|
|
}
|
|
return J
|
|
}, clearOpacity:function () {
|
|
var F = this.dom.style;
|
|
if (Ext.isIE) {
|
|
if (!Ext.isEmpty(F.filter)) {
|
|
F.filter = F.filter.replace(D, "").replace(l, "")
|
|
}
|
|
} else {
|
|
F.opacity = F["-moz-opacity"] = F["-khtml-opacity"] = ""
|
|
}
|
|
return this
|
|
}, getHeight:function (H) {
|
|
var G = this, J = G.dom, I = Ext.isIE && G.isStyle("display", "none"), F = r.max(J.offsetHeight, I ? 0 : J.clientHeight) || 0;
|
|
F = !H ? F : F - G.getBorderWidth("tb") - G.getPadding("tb");
|
|
return F < 0 ? 0 : F
|
|
}, getWidth:function (G) {
|
|
var H = this, J = H.dom, I = Ext.isIE && H.isStyle("display", "none"), F = r.max(J.offsetWidth, I ? 0 : J.clientWidth) || 0;
|
|
F = !G ? F : F - H.getBorderWidth("lr") - H.getPadding("lr");
|
|
return F < 0 ? 0 : F
|
|
}, setWidth:function (G, F) {
|
|
var H = this;
|
|
G = H.adjustWidth(G);
|
|
!F || !H.anim ? H.dom.style.width = H.addUnits(G) : H.anim({width:{to:G}}, H.preanim(arguments, 1));
|
|
return H
|
|
}, setHeight:function (F, G) {
|
|
var H = this;
|
|
F = H.adjustHeight(F);
|
|
!G || !H.anim ? H.dom.style.height = H.addUnits(F) : H.anim({height:{to:F}}, H.preanim(arguments, 1));
|
|
return H
|
|
}, getBorderWidth:function (F) {
|
|
return this.addStyles(F, i)
|
|
}, getPadding:function (F) {
|
|
return this.addStyles(F, g)
|
|
}, clip:function () {
|
|
var F = this, G = F.dom;
|
|
if (!E(G, e)) {
|
|
E(G, e, true);
|
|
E(G, C, {o:F.getStyle(k), x:F.getStyle(n), y:F.getStyle(m)});
|
|
F.setStyle(k, z);
|
|
F.setStyle(n, z);
|
|
F.setStyle(m, z)
|
|
}
|
|
return F
|
|
}, unclip:function () {
|
|
var F = this, H = F.dom;
|
|
if (E(H, e)) {
|
|
E(H, e, false);
|
|
var G = E(H, C);
|
|
if (G.o) {
|
|
F.setStyle(k, G.o)
|
|
}
|
|
if (G.x) {
|
|
F.setStyle(n, G.x)
|
|
}
|
|
if (G.y) {
|
|
F.setStyle(m, G.y)
|
|
}
|
|
}
|
|
return F
|
|
}, addStyles:function (M, L) {
|
|
var J = 0, K = M.match(b), I, H, G, F = K.length;
|
|
for (G = 0; G < F; G++) {
|
|
I = K[G];
|
|
H = I && parseInt(this.getStyle(L[I]), 10);
|
|
if (H) {
|
|
J += r.abs(H)
|
|
}
|
|
}
|
|
return J
|
|
}, margins:a}
|
|
}());
|
|
(function () {
|
|
var a = Ext.lib.Dom, b = "left", g = "right", d = "top", i = "bottom", h = "position", c = "static", e = "relative", j = "auto", k = "z-index";
|
|
Ext.Element.addMethods({getX:function () {
|
|
return a.getX(this.dom)
|
|
}, getY:function () {
|
|
return a.getY(this.dom)
|
|
}, getXY:function () {
|
|
return a.getXY(this.dom)
|
|
}, getOffsetsTo:function (l) {
|
|
var n = this.getXY(), m = Ext.fly(l, "_internal").getXY();
|
|
return[n[0] - m[0], n[1] - m[1]]
|
|
}, setX:function (l, m) {
|
|
return this.setXY([l, this.getY()], this.animTest(arguments, m, 1))
|
|
}, setY:function (m, l) {
|
|
return this.setXY([this.getX(), m], this.animTest(arguments, l, 1))
|
|
}, setLeft:function (l) {
|
|
this.setStyle(b, this.addUnits(l));
|
|
return this
|
|
}, setTop:function (l) {
|
|
this.setStyle(d, this.addUnits(l));
|
|
return this
|
|
}, setRight:function (l) {
|
|
this.setStyle(g, this.addUnits(l));
|
|
return this
|
|
}, setBottom:function (l) {
|
|
this.setStyle(i, this.addUnits(l));
|
|
return this
|
|
}, setXY:function (n, l) {
|
|
var m = this;
|
|
if (!l || !m.anim) {
|
|
a.setXY(m.dom, n)
|
|
} else {
|
|
m.anim({points:{to:n}}, m.preanim(arguments, 1), "motion")
|
|
}
|
|
return m
|
|
}, setLocation:function (l, n, m) {
|
|
return this.setXY([l, n], this.animTest(arguments, m, 2))
|
|
}, moveTo:function (l, n, m) {
|
|
return this.setXY([l, n], this.animTest(arguments, m, 2))
|
|
}, getLeft:function (l) {
|
|
return !l ? this.getX() : parseInt(this.getStyle(b), 10) || 0
|
|
}, getRight:function (l) {
|
|
var m = this;
|
|
return !l ? m.getX() + m.getWidth() : (m.getLeft(true) + m.getWidth()) || 0
|
|
}, getTop:function (l) {
|
|
return !l ? this.getY() : parseInt(this.getStyle(d), 10) || 0
|
|
}, getBottom:function (l) {
|
|
var m = this;
|
|
return !l ? m.getY() + m.getHeight() : (m.getTop(true) + m.getHeight()) || 0
|
|
}, position:function (p, o, l, n) {
|
|
var m = this;
|
|
if (!p && m.isStyle(h, c)) {
|
|
m.setStyle(h, e)
|
|
} else {
|
|
if (p) {
|
|
m.setStyle(h, p)
|
|
}
|
|
}
|
|
if (o) {
|
|
m.setStyle(k, o)
|
|
}
|
|
if (l || n) {
|
|
m.setXY([l || false, n || false])
|
|
}
|
|
}, clearPositioning:function (l) {
|
|
l = l || "";
|
|
this.setStyle({left:l, right:l, top:l, bottom:l, "z-index":"", position:c});
|
|
return this
|
|
}, getPositioning:function () {
|
|
var m = this.getStyle(b);
|
|
var n = this.getStyle(d);
|
|
return{position:this.getStyle(h), left:m, right:m ? "" : this.getStyle(g), top:n, bottom:n ? "" : this.getStyle(i), "z-index":this.getStyle(k)}
|
|
}, setPositioning:function (l) {
|
|
var n = this, m = n.dom.style;
|
|
n.setStyle(l);
|
|
if (l.right == j) {
|
|
m.right = ""
|
|
}
|
|
if (l.bottom == j) {
|
|
m.bottom = ""
|
|
}
|
|
return n
|
|
}, translatePoints:function (m, u) {
|
|
u = isNaN(m[1]) ? u : m[1];
|
|
m = isNaN(m[0]) ? m : m[0];
|
|
var q = this, r = q.isStyle(h, e), s = q.getXY(), n = parseInt(q.getStyle(b), 10), p = parseInt(q.getStyle(d), 10);
|
|
n = !isNaN(n) ? n : (r ? 0 : q.dom.offsetLeft);
|
|
p = !isNaN(p) ? p : (r ? 0 : q.dom.offsetTop);
|
|
return{left:(m - s[0] + n), top:(u - s[1] + p)}
|
|
}, animTest:function (m, l, n) {
|
|
return !!l && this.preanim ? this.preanim(m, n) : false
|
|
}})
|
|
})();
|
|
Ext.Element.addMethods({isScrollable:function () {
|
|
var a = this.dom;
|
|
return a.scrollHeight > a.clientHeight || a.scrollWidth > a.clientWidth
|
|
}, scrollTo:function (a, b) {
|
|
this.dom["scroll" + (/top/i.test(a) ? "Top" : "Left")] = b;
|
|
return this
|
|
}, getScroll:function () {
|
|
var i = this.dom, h = document, a = h.body, c = h.documentElement, b, g, e;
|
|
if (i == h || i == a) {
|
|
if (Ext.isIE && Ext.isStrict) {
|
|
b = c.scrollLeft;
|
|
g = c.scrollTop
|
|
} else {
|
|
b = window.pageXOffset;
|
|
g = window.pageYOffset
|
|
}
|
|
e = {left:b || (a ? a.scrollLeft : 0), top:g || (a ? a.scrollTop : 0)}
|
|
} else {
|
|
e = {left:i.scrollLeft, top:i.scrollTop}
|
|
}
|
|
return e
|
|
}});
|
|
Ext.Element.VISIBILITY = 1;
|
|
Ext.Element.DISPLAY = 2;
|
|
Ext.Element.OFFSETS = 3;
|
|
Ext.Element.ASCLASS = 4;
|
|
Ext.Element.visibilityCls = "x-hide-nosize";
|
|
Ext.Element.addMethods(function () {
|
|
var e = Ext.Element, p = "opacity", j = "visibility", g = "display", d = "hidden", n = "offsets", k = "asclass", m = "none", a = "nosize", b = "originalDisplay", c = "visibilityMode", h = "isVisible", i = e.data, l = function (r) {
|
|
var q = i(r, b);
|
|
if (q === undefined) {
|
|
i(r, b, q = "")
|
|
}
|
|
return q
|
|
}, o = function (r) {
|
|
var q = i(r, c);
|
|
if (q === undefined) {
|
|
i(r, c, q = 1)
|
|
}
|
|
return q
|
|
};
|
|
return{originalDisplay:"", visibilityMode:1, setVisibilityMode:function (q) {
|
|
i(this.dom, c, q);
|
|
return this
|
|
}, animate:function (r, t, s, u, q) {
|
|
this.anim(r, {duration:t, callback:s, easing:u}, q);
|
|
return this
|
|
}, anim:function (t, u, r, w, s, q) {
|
|
r = r || "run";
|
|
u = u || {};
|
|
var v = this, x = Ext.lib.Anim[r](v.dom, t, (u.duration || w) || 0.35, (u.easing || s) || "easeOut", function () {
|
|
if (q) {
|
|
q.call(v)
|
|
}
|
|
if (u.callback) {
|
|
u.callback.call(u.scope || v, v, u)
|
|
}
|
|
}, v);
|
|
u.anim = x;
|
|
return x
|
|
}, preanim:function (q, r) {
|
|
return !q[r] ? false : (typeof q[r] == "object" ? q[r] : {duration:q[r + 1], callback:q[r + 2], easing:q[r + 3]})
|
|
}, isVisible:function () {
|
|
var q = this, s = q.dom, r = i(s, h);
|
|
if (typeof r == "boolean") {
|
|
return r
|
|
}
|
|
r = !q.isStyle(j, d) && !q.isStyle(g, m) && !((o(s) == e.ASCLASS) && q.hasClass(q.visibilityCls || e.visibilityCls));
|
|
i(s, h, r);
|
|
return r
|
|
}, setVisible:function (t, q) {
|
|
var w = this, r, y, x, v, u = w.dom, s = o(u);
|
|
if (typeof q == "string") {
|
|
switch (q) {
|
|
case g:
|
|
s = e.DISPLAY;
|
|
break;
|
|
case j:
|
|
s = e.VISIBILITY;
|
|
break;
|
|
case n:
|
|
s = e.OFFSETS;
|
|
break;
|
|
case a:
|
|
case k:
|
|
s = e.ASCLASS;
|
|
break
|
|
}
|
|
w.setVisibilityMode(s);
|
|
q = false
|
|
}
|
|
if (!q || !w.anim) {
|
|
if (s == e.ASCLASS) {
|
|
w[t ? "removeClass" : "addClass"](w.visibilityCls || e.visibilityCls)
|
|
} else {
|
|
if (s == e.DISPLAY) {
|
|
return w.setDisplayed(t)
|
|
} else {
|
|
if (s == e.OFFSETS) {
|
|
if (!t) {
|
|
w.hideModeStyles = {position:w.getStyle("position"), top:w.getStyle("top"), left:w.getStyle("left")};
|
|
w.applyStyles({position:"absolute", top:"-10000px", left:"-10000px"})
|
|
} else {
|
|
w.applyStyles(w.hideModeStyles || {position:"", top:"", left:""});
|
|
delete w.hideModeStyles
|
|
}
|
|
} else {
|
|
w.fixDisplay();
|
|
u.style.visibility = t ? "visible" : d
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (t) {
|
|
w.setOpacity(0.01);
|
|
w.setVisible(true)
|
|
}
|
|
w.anim({opacity:{to:(t ? 1 : 0)}}, w.preanim(arguments, 1), null, 0.35, "easeIn", function () {
|
|
t || w.setVisible(false).setOpacity(1)
|
|
})
|
|
}
|
|
i(u, h, t);
|
|
return w
|
|
}, hasMetrics:function () {
|
|
var q = this.dom;
|
|
return this.isVisible() || (o(q) == e.VISIBILITY)
|
|
}, toggle:function (q) {
|
|
var r = this;
|
|
r.setVisible(!r.isVisible(), r.preanim(arguments, 0));
|
|
return r
|
|
}, setDisplayed:function (q) {
|
|
if (typeof q == "boolean") {
|
|
q = q ? l(this.dom) : m
|
|
}
|
|
this.setStyle(g, q);
|
|
return this
|
|
}, fixDisplay:function () {
|
|
var q = this;
|
|
if (q.isStyle(g, m)) {
|
|
q.setStyle(j, d);
|
|
q.setStyle(g, l(this.dom));
|
|
if (q.isStyle(g, m)) {
|
|
q.setStyle(g, "block")
|
|
}
|
|
}
|
|
}, hide:function (q) {
|
|
if (typeof q == "string") {
|
|
this.setVisible(false, q);
|
|
return this
|
|
}
|
|
this.setVisible(false, this.preanim(arguments, 0));
|
|
return this
|
|
}, show:function (q) {
|
|
if (typeof q == "string") {
|
|
this.setVisible(true, q);
|
|
return this
|
|
}
|
|
this.setVisible(true, this.preanim(arguments, 0));
|
|
return this
|
|
}}
|
|
}());
|
|
(function () {
|
|
var y = null, A = undefined, k = true, t = false, j = "setX", h = "setY", a = "setXY", n = "left", l = "bottom", s = "top", m = "right", q = "height", g = "width", i = "points", w = "hidden", z = "absolute", u = "visible", e = "motion", o = "position", r = "easeOut", d = new Ext.Element.Flyweight(), v = {}, x = function (B) {
|
|
return B || {}
|
|
}, p = function (B) {
|
|
d.dom = B;
|
|
d.id = Ext.id(B);
|
|
return d
|
|
}, c = function (B) {
|
|
if (!v[B]) {
|
|
v[B] = []
|
|
}
|
|
return v[B]
|
|
}, b = function (C, B) {
|
|
v[C] = B
|
|
};
|
|
Ext.enableFx = k;
|
|
Ext.Fx = {switchStatements:function (C, D, B) {
|
|
return D.apply(this, B[C])
|
|
}, slideIn:function (H, E) {
|
|
E = x(E);
|
|
var J = this, G = J.dom, M = G.style, O, B, L, D, C, M, I, N, K, F;
|
|
H = H || "t";
|
|
J.queueFx(E, function () {
|
|
O = p(G).getXY();
|
|
p(G).fixDisplay();
|
|
B = p(G).getFxRestore();
|
|
L = {x:O[0], y:O[1], 0:O[0], 1:O[1], width:G.offsetWidth, height:G.offsetHeight};
|
|
L.right = L.x + L.width;
|
|
L.bottom = L.y + L.height;
|
|
p(G).setWidth(L.width).setHeight(L.height);
|
|
D = p(G).fxWrap(B.pos, E, w);
|
|
M.visibility = u;
|
|
M.position = z;
|
|
function P() {
|
|
p(G).fxUnwrap(D, B.pos, E);
|
|
M.width = B.width;
|
|
M.height = B.height;
|
|
p(G).afterFx(E)
|
|
}
|
|
|
|
N = {to:[L.x, L.y]};
|
|
K = {to:L.width};
|
|
F = {to:L.height};
|
|
function Q(U, R, V, S, X, Z, ac, ab, aa, W, T) {
|
|
var Y = {};
|
|
p(U).setWidth(V).setHeight(S);
|
|
if (p(U)[X]) {
|
|
p(U)[X](Z)
|
|
}
|
|
R[ac] = R[ab] = "0";
|
|
if (aa) {
|
|
Y.width = aa
|
|
}
|
|
if (W) {
|
|
Y.height = W
|
|
}
|
|
if (T) {
|
|
Y.points = T
|
|
}
|
|
return Y
|
|
}
|
|
|
|
I = p(G).switchStatements(H.toLowerCase(), Q, {t:[D, M, L.width, 0, y, y, n, l, y, F, y], l:[D, M, 0, L.height, y, y, m, s, K, y, y], r:[D, M, L.width, L.height, j, L.right, n, s, y, y, N], b:[D, M, L.width, L.height, h, L.bottom, n, s, y, F, N], tl:[D, M, 0, 0, y, y, m, l, K, F, N], bl:[D, M, 0, 0, h, L.y + L.height, m, s, K, F, N], br:[D, M, 0, 0, a, [L.right, L.bottom], n, s, K, F, N], tr:[D, M, 0, 0, j, L.x + L.width, n, l, K, F, N]});
|
|
M.visibility = u;
|
|
p(D).show();
|
|
arguments.callee.anim = p(D).fxanim(I, E, e, 0.5, r, P)
|
|
});
|
|
return J
|
|
}, slideOut:function (F, D) {
|
|
D = x(D);
|
|
var H = this, E = H.dom, K = E.style, L = H.getXY(), C, B, I, J, G = {to:0};
|
|
F = F || "t";
|
|
H.queueFx(D, function () {
|
|
B = p(E).getFxRestore();
|
|
I = {x:L[0], y:L[1], 0:L[0], 1:L[1], width:E.offsetWidth, height:E.offsetHeight};
|
|
I.right = I.x + I.width;
|
|
I.bottom = I.y + I.height;
|
|
p(E).setWidth(I.width).setHeight(I.height);
|
|
C = p(E).fxWrap(B.pos, D, u);
|
|
K.visibility = u;
|
|
K.position = z;
|
|
p(C).setWidth(I.width).setHeight(I.height);
|
|
function M() {
|
|
D.useDisplay ? p(E).setDisplayed(t) : p(E).hide();
|
|
p(E).fxUnwrap(C, B.pos, D);
|
|
K.width = B.width;
|
|
K.height = B.height;
|
|
p(E).afterFx(D)
|
|
}
|
|
|
|
function N(O, W, U, X, S, V, R, T, Q) {
|
|
var P = {};
|
|
O[W] = O[U] = "0";
|
|
P[X] = S;
|
|
if (V) {
|
|
P[V] = R
|
|
}
|
|
if (T) {
|
|
P[T] = Q
|
|
}
|
|
return P
|
|
}
|
|
|
|
J = p(E).switchStatements(F.toLowerCase(), N, {t:[K, n, l, q, G], l:[K, m, s, g, G], r:[K, n, s, g, G, i, {to:[I.right, I.y]}], b:[K, n, s, q, G, i, {to:[I.x, I.bottom]}], tl:[K, m, l, g, G, q, G], bl:[K, m, s, g, G, q, G, i, {to:[I.x, I.bottom]}], br:[K, n, s, g, G, q, G, i, {to:[I.x + I.width, I.bottom]}], tr:[K, n, l, g, G, q, G, i, {to:[I.right, I.y]}]});
|
|
arguments.callee.anim = p(C).fxanim(J, D, e, 0.5, r, M)
|
|
});
|
|
return H
|
|
}, puff:function (H) {
|
|
H = x(H);
|
|
var F = this, G = F.dom, C = G.style, D, B, E;
|
|
F.queueFx(H, function () {
|
|
D = p(G).getWidth();
|
|
B = p(G).getHeight();
|
|
p(G).clearOpacity();
|
|
p(G).show();
|
|
E = p(G).getFxRestore();
|
|
function I() {
|
|
H.useDisplay ? p(G).setDisplayed(t) : p(G).hide();
|
|
p(G).clearOpacity();
|
|
p(G).setPositioning(E.pos);
|
|
C.width = E.width;
|
|
C.height = E.height;
|
|
C.fontSize = "";
|
|
p(G).afterFx(H)
|
|
}
|
|
|
|
arguments.callee.anim = p(G).fxanim({width:{to:p(G).adjustWidth(D * 2)}, height:{to:p(G).adjustHeight(B * 2)}, points:{by:[-D * 0.5, -B * 0.5]}, opacity:{to:0}, fontSize:{to:200, unit:"%"}}, H, e, 0.5, r, I)
|
|
});
|
|
return F
|
|
}, switchOff:function (F) {
|
|
F = x(F);
|
|
var D = this, E = D.dom, B = E.style, C;
|
|
D.queueFx(F, function () {
|
|
p(E).clearOpacity();
|
|
p(E).clip();
|
|
C = p(E).getFxRestore();
|
|
function G() {
|
|
F.useDisplay ? p(E).setDisplayed(t) : p(E).hide();
|
|
p(E).clearOpacity();
|
|
p(E).setPositioning(C.pos);
|
|
B.width = C.width;
|
|
B.height = C.height;
|
|
p(E).afterFx(F)
|
|
}
|
|
|
|
p(E).fxanim({opacity:{to:0.3}}, y, y, 0.1, y, function () {
|
|
p(E).clearOpacity();
|
|
(function () {
|
|
p(E).fxanim({height:{to:1}, points:{by:[0, p(E).getHeight() * 0.5]}}, F, e, 0.3, "easeIn", G)
|
|
}).defer(100)
|
|
})
|
|
});
|
|
return D
|
|
}, highlight:function (D, H) {
|
|
H = x(H);
|
|
var F = this, G = F.dom, B = H.attr || "backgroundColor", C = {}, E;
|
|
F.queueFx(H, function () {
|
|
p(G).clearOpacity();
|
|
p(G).show();
|
|
function I() {
|
|
G.style[B] = E;
|
|
p(G).afterFx(H)
|
|
}
|
|
|
|
E = G.style[B];
|
|
C[B] = {from:D || "ffff9c", to:H.endColor || p(G).getColor(B) || "ffffff"};
|
|
arguments.callee.anim = p(G).fxanim(C, H, "color", 1, "easeIn", I)
|
|
});
|
|
return F
|
|
}, frame:function (B, E, H) {
|
|
H = x(H);
|
|
var D = this, G = D.dom, C, F;
|
|
D.queueFx(H, function () {
|
|
B = B || "#C3DAF9";
|
|
if (B.length == 6) {
|
|
B = "#" + B
|
|
}
|
|
E = E || 1;
|
|
p(G).show();
|
|
var L = p(G).getXY(), J = {x:L[0], y:L[1], 0:L[0], 1:L[1], width:G.offsetWidth, height:G.offsetHeight}, I = function () {
|
|
C = p(document.body || document.documentElement).createChild({style:{position:z, "z-index":35000, border:"0px solid " + B}});
|
|
return C.queueFx({}, K)
|
|
};
|
|
arguments.callee.anim = {isAnimated:true, stop:function () {
|
|
E = 0;
|
|
C.stopFx()
|
|
}};
|
|
function K() {
|
|
var M = Ext.isBorderBox ? 2 : 1;
|
|
F = C.anim({top:{from:J.y, to:J.y - 20}, left:{from:J.x, to:J.x - 20}, borderWidth:{from:0, to:10}, opacity:{from:1, to:0}, height:{from:J.height, to:J.height + 20 * M}, width:{from:J.width, to:J.width + 20 * M}}, {duration:H.duration || 1, callback:function () {
|
|
C.remove();
|
|
--E > 0 ? I() : p(G).afterFx(H)
|
|
}});
|
|
arguments.callee.anim = {isAnimated:true, stop:function () {
|
|
F.stop()
|
|
}}
|
|
}
|
|
|
|
I()
|
|
});
|
|
return D
|
|
}, pause:function (D) {
|
|
var C = this.dom, B;
|
|
this.queueFx({}, function () {
|
|
B = setTimeout(function () {
|
|
p(C).afterFx({})
|
|
}, D * 1000);
|
|
arguments.callee.anim = {isAnimated:true, stop:function () {
|
|
clearTimeout(B);
|
|
p(C).afterFx({})
|
|
}}
|
|
});
|
|
return this
|
|
}, fadeIn:function (D) {
|
|
D = x(D);
|
|
var B = this, C = B.dom, E = D.endOpacity || 1;
|
|
B.queueFx(D, function () {
|
|
p(C).setOpacity(0);
|
|
p(C).fixDisplay();
|
|
C.style.visibility = u;
|
|
arguments.callee.anim = p(C).fxanim({opacity:{to:E}}, D, y, 0.5, r, function () {
|
|
if (E == 1) {
|
|
p(C).clearOpacity()
|
|
}
|
|
p(C).afterFx(D)
|
|
})
|
|
});
|
|
return B
|
|
}, fadeOut:function (E) {
|
|
E = x(E);
|
|
var C = this, D = C.dom, B = D.style, F = E.endOpacity || 0;
|
|
C.queueFx(E, function () {
|
|
arguments.callee.anim = p(D).fxanim({opacity:{to:F}}, E, y, 0.5, r, function () {
|
|
if (F == 0) {
|
|
Ext.Element.data(D, "visibilityMode") == Ext.Element.DISPLAY || E.useDisplay ? B.display = "none" : B.visibility = w;
|
|
p(D).clearOpacity()
|
|
}
|
|
p(D).afterFx(E)
|
|
})
|
|
});
|
|
return C
|
|
}, scale:function (B, C, D) {
|
|
this.shift(Ext.apply({}, D, {width:B, height:C}));
|
|
return this
|
|
}, shift:function (D) {
|
|
D = x(D);
|
|
var C = this.dom, B = {};
|
|
this.queueFx(D, function () {
|
|
for (var E in D) {
|
|
if (D[E] != A) {
|
|
B[E] = {to:D[E]}
|
|
}
|
|
}
|
|
B.width ? B.width.to = p(C).adjustWidth(D.width) : B;
|
|
B.height ? B.height.to = p(C).adjustWidth(D.height) : B;
|
|
if (B.x || B.y || B.xy) {
|
|
B.points = B.xy || {to:[B.x ? B.x.to : p(C).getX(), B.y ? B.y.to : p(C).getY()]}
|
|
}
|
|
arguments.callee.anim = p(C).fxanim(B, D, e, 0.35, r, function () {
|
|
p(C).afterFx(D)
|
|
})
|
|
});
|
|
return this
|
|
}, ghost:function (E, C) {
|
|
C = x(C);
|
|
var G = this, D = G.dom, J = D.style, H = {opacity:{to:0}, points:{}}, K = H.points, B, I, F;
|
|
E = E || "b";
|
|
G.queueFx(C, function () {
|
|
B = p(D).getFxRestore();
|
|
I = p(D).getWidth();
|
|
F = p(D).getHeight();
|
|
function L() {
|
|
C.useDisplay ? p(D).setDisplayed(t) : p(D).hide();
|
|
p(D).clearOpacity();
|
|
p(D).setPositioning(B.pos);
|
|
J.width = B.width;
|
|
J.height = B.height;
|
|
p(D).afterFx(C)
|
|
}
|
|
|
|
K.by = p(D).switchStatements(E.toLowerCase(), function (N, M) {
|
|
return[N, M]
|
|
}, {t:[0, -F], l:[-I, 0], r:[I, 0], b:[0, F], tl:[-I, -F], bl:[-I, F], br:[I, F], tr:[I, -F]});
|
|
arguments.callee.anim = p(D).fxanim(H, C, e, 0.5, r, L)
|
|
});
|
|
return G
|
|
}, syncFx:function () {
|
|
var B = this;
|
|
B.fxDefaults = Ext.apply(B.fxDefaults || {}, {block:t, concurrent:k, stopFx:t});
|
|
return B
|
|
}, sequenceFx:function () {
|
|
var B = this;
|
|
B.fxDefaults = Ext.apply(B.fxDefaults || {}, {block:t, concurrent:t, stopFx:t});
|
|
return B
|
|
}, nextFx:function () {
|
|
var B = c(this.dom.id)[0];
|
|
if (B) {
|
|
B.call(this)
|
|
}
|
|
}, hasActiveFx:function () {
|
|
return c(this.dom.id)[0]
|
|
}, stopFx:function (B) {
|
|
var C = this, E = C.dom.id;
|
|
if (C.hasActiveFx()) {
|
|
var D = c(E)[0];
|
|
if (D && D.anim) {
|
|
if (D.anim.isAnimated) {
|
|
b(E, [D]);
|
|
D.anim.stop(B !== undefined ? B : k)
|
|
} else {
|
|
b(E, [])
|
|
}
|
|
}
|
|
}
|
|
return C
|
|
}, beforeFx:function (B) {
|
|
if (this.hasActiveFx() && !B.concurrent) {
|
|
if (B.stopFx) {
|
|
this.stopFx();
|
|
return k
|
|
}
|
|
return t
|
|
}
|
|
return k
|
|
}, hasFxBlock:function () {
|
|
var B = c(this.dom.id);
|
|
return B && B[0] && B[0].block
|
|
}, queueFx:function (E, B) {
|
|
var C = p(this.dom);
|
|
if (!C.hasFxBlock()) {
|
|
Ext.applyIf(E, C.fxDefaults);
|
|
if (!E.concurrent) {
|
|
var D = C.beforeFx(E);
|
|
B.block = E.block;
|
|
c(C.dom.id).push(B);
|
|
if (D) {
|
|
C.nextFx()
|
|
}
|
|
} else {
|
|
B.call(C)
|
|
}
|
|
}
|
|
return C
|
|
}, fxWrap:function (H, F, D) {
|
|
var E = this.dom, C, B;
|
|
if (!F.wrap || !(C = Ext.getDom(F.wrap))) {
|
|
if (F.fixPosition) {
|
|
B = p(E).getXY()
|
|
}
|
|
var G = document.createElement("div");
|
|
G.style.visibility = D;
|
|
C = E.parentNode.insertBefore(G, E);
|
|
p(C).setPositioning(H);
|
|
if (p(C).isStyle(o, "static")) {
|
|
p(C).position("relative")
|
|
}
|
|
p(E).clearPositioning("auto");
|
|
p(C).clip();
|
|
C.appendChild(E);
|
|
if (B) {
|
|
p(C).setXY(B)
|
|
}
|
|
}
|
|
return C
|
|
}, fxUnwrap:function (C, F, E) {
|
|
var D = this.dom;
|
|
p(D).clearPositioning();
|
|
p(D).setPositioning(F);
|
|
if (!E.wrap) {
|
|
var B = p(C).dom.parentNode;
|
|
B.insertBefore(D, C);
|
|
p(C).remove()
|
|
}
|
|
}, getFxRestore:function () {
|
|
var B = this.dom.style;
|
|
return{pos:this.getPositioning(), width:B.width, height:B.height}
|
|
}, afterFx:function (C) {
|
|
var B = this.dom, D = B.id;
|
|
if (C.afterStyle) {
|
|
p(B).setStyle(C.afterStyle)
|
|
}
|
|
if (C.afterCls) {
|
|
p(B).addClass(C.afterCls)
|
|
}
|
|
if (C.remove == k) {
|
|
p(B).remove()
|
|
}
|
|
if (C.callback) {
|
|
C.callback.call(C.scope, p(B))
|
|
}
|
|
if (!C.concurrent) {
|
|
c(D).shift();
|
|
p(B).nextFx()
|
|
}
|
|
}, fxanim:function (E, F, C, G, D, B) {
|
|
C = C || "run";
|
|
F = F || {};
|
|
var H = Ext.lib.Anim[C](this.dom, E, (F.duration || G) || 0.35, (F.easing || D) || r, B, this);
|
|
F.anim = H;
|
|
return H
|
|
}};
|
|
Ext.Fx.resize = Ext.Fx.scale;
|
|
Ext.Element.addMethods(Ext.Fx)
|
|
})();
|
|
Ext.CompositeElementLite = function (b, a) {
|
|
this.elements = [];
|
|
this.add(b, a);
|
|
this.el = new Ext.Element.Flyweight()
|
|
};
|
|
Ext.CompositeElementLite.prototype = {isComposite:true, getElement:function (a) {
|
|
var b = this.el;
|
|
b.dom = a;
|
|
b.id = a.id;
|
|
return b
|
|
}, transformElement:function (a) {
|
|
return Ext.getDom(a)
|
|
}, getCount:function () {
|
|
return this.elements.length
|
|
}, add:function (d, b) {
|
|
var e = this, g = e.elements;
|
|
if (!d) {
|
|
return this
|
|
}
|
|
if (typeof d == "string") {
|
|
d = Ext.Element.selectorFunction(d, b)
|
|
} else {
|
|
if (d.isComposite) {
|
|
d = d.elements
|
|
} else {
|
|
if (!Ext.isIterable(d)) {
|
|
d = [d]
|
|
}
|
|
}
|
|
}
|
|
for (var c = 0, a = d.length; c < a; ++c) {
|
|
g.push(e.transformElement(d[c]))
|
|
}
|
|
return e
|
|
}, invoke:function (g, b) {
|
|
var h = this, d = h.elements, a = d.length, j, c;
|
|
for (c = 0; c < a; c++) {
|
|
j = d[c];
|
|
if (j) {
|
|
Ext.Element.prototype[g].apply(h.getElement(j), b)
|
|
}
|
|
}
|
|
return h
|
|
}, item:function (b) {
|
|
var d = this, c = d.elements[b], a = null;
|
|
if (c) {
|
|
a = d.getElement(c)
|
|
}
|
|
return a
|
|
}, addListener:function (b, j, h, g) {
|
|
var d = this.elements, a = d.length, c, k;
|
|
for (c = 0; c < a; c++) {
|
|
k = d[c];
|
|
if (k) {
|
|
Ext.EventManager.on(k, b, j, h || k, g)
|
|
}
|
|
}
|
|
return this
|
|
}, each:function (g, d) {
|
|
var h = this, c = h.elements, a = c.length, b, j;
|
|
for (b = 0; b < a; b++) {
|
|
j = c[b];
|
|
if (j) {
|
|
j = this.getElement(j);
|
|
if (g.call(d || j, j, h, b) === false) {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return h
|
|
}, fill:function (a) {
|
|
var b = this;
|
|
b.elements = [];
|
|
b.add(a);
|
|
return b
|
|
}, filter:function (a) {
|
|
var b = [], d = this, c = Ext.isFunction(a) ? a : function (e) {
|
|
return e.is(a)
|
|
};
|
|
d.each(function (h, e, g) {
|
|
if (c(h, g) !== false) {
|
|
b[b.length] = d.transformElement(h)
|
|
}
|
|
});
|
|
d.elements = b;
|
|
return d
|
|
}, indexOf:function (a) {
|
|
return this.elements.indexOf(this.transformElement(a))
|
|
}, replaceElement:function (e, c, a) {
|
|
var b = !isNaN(e) ? e : this.indexOf(e), g;
|
|
if (b > -1) {
|
|
c = Ext.getDom(c);
|
|
if (a) {
|
|
g = this.elements[b];
|
|
g.parentNode.insertBefore(c, g);
|
|
Ext.removeNode(g)
|
|
}
|
|
this.elements.splice(b, 1, c)
|
|
}
|
|
return this
|
|
}, clear:function () {
|
|
this.elements = []
|
|
}};
|
|
Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener;
|
|
Ext.CompositeElementLite.importElementMethods = function () {
|
|
var c, b = Ext.Element.prototype, a = Ext.CompositeElementLite.prototype;
|
|
for (c in b) {
|
|
if (typeof b[c] == "function") {
|
|
(function (d) {
|
|
a[d] = a[d] || function () {
|
|
return this.invoke(d, arguments)
|
|
}
|
|
}).call(a, c)
|
|
}
|
|
}
|
|
};
|
|
Ext.CompositeElementLite.importElementMethods();
|
|
if (Ext.DomQuery) {
|
|
Ext.Element.selectorFunction = Ext.DomQuery.select
|
|
}
|
|
Ext.Element.select = function (a, b) {
|
|
var c;
|
|
if (typeof a == "string") {
|
|
c = Ext.Element.selectorFunction(a, b)
|
|
} else {
|
|
if (a.length !== undefined) {
|
|
c = a
|
|
} else {
|
|
throw"Invalid selector"
|
|
}
|
|
}
|
|
return new Ext.CompositeElementLite(c)
|
|
};
|
|
Ext.select = Ext.Element.select;
|
|
(function () {
|
|
var b = "beforerequest", e = "requestcomplete", d = "requestexception", h = undefined, c = "load", i = "POST", a = "GET", g = window;
|
|
Ext.data.Connection = function (j) {
|
|
Ext.apply(this, j);
|
|
this.addEvents(b, e, d);
|
|
Ext.data.Connection.superclass.constructor.call(this)
|
|
};
|
|
Ext.extend(Ext.data.Connection, Ext.util.Observable, {timeout:30000, autoAbort:false, disableCaching:true, disableCachingParam:"_dc", request:function (n) {
|
|
var s = this;
|
|
if (s.fireEvent(b, s, n)) {
|
|
if (n.el) {
|
|
if (!Ext.isEmpty(n.indicatorText)) {
|
|
s.indicatorText = '<div class="loading-indicator">' + n.indicatorText + "</div>"
|
|
}
|
|
if (s.indicatorText) {
|
|
Ext.getDom(n.el).innerHTML = s.indicatorText
|
|
}
|
|
n.success = (Ext.isFunction(n.success) ? n.success : function () {
|
|
}).createInterceptor(function (o) {
|
|
Ext.getDom(n.el).innerHTML = o.responseText
|
|
})
|
|
}
|
|
var l = n.params, k = n.url || s.url, j, q = {success:s.handleResponse, failure:s.handleFailure, scope:s, argument:{options:n}, timeout:Ext.num(n.timeout, s.timeout)}, m, t;
|
|
if (Ext.isFunction(l)) {
|
|
l = l.call(n.scope || g, n)
|
|
}
|
|
l = Ext.urlEncode(s.extraParams, Ext.isObject(l) ? Ext.urlEncode(l) : l);
|
|
if (Ext.isFunction(k)) {
|
|
k = k.call(n.scope || g, n)
|
|
}
|
|
if ((m = Ext.getDom(n.form))) {
|
|
k = k || m.action;
|
|
if (n.isUpload || (/multipart\/form-data/i.test(m.getAttribute("enctype")))) {
|
|
return s.doFormUpload.call(s, n, l, k)
|
|
}
|
|
t = Ext.lib.Ajax.serializeForm(m);
|
|
l = l ? (l + "&" + t) : t
|
|
}
|
|
j = n.method || s.method || ((l || n.xmlData || n.jsonData) ? i : a);
|
|
if (j === a && (s.disableCaching && n.disableCaching !== false) || n.disableCaching === true) {
|
|
var r = n.disableCachingParam || s.disableCachingParam;
|
|
k = Ext.urlAppend(k, r + "=" + (new Date().getTime()))
|
|
}
|
|
n.headers = Ext.applyIf(n.headers || {}, s.defaultHeaders || {});
|
|
if (n.autoAbort === true || s.autoAbort) {
|
|
s.abort()
|
|
}
|
|
if ((j == a || n.xmlData || n.jsonData) && l) {
|
|
k = Ext.urlAppend(k, l);
|
|
l = ""
|
|
}
|
|
return(s.transId = Ext.lib.Ajax.request(j, k, q, l, n))
|
|
} else {
|
|
return n.callback ? n.callback.apply(n.scope, [n, h, h]) : null
|
|
}
|
|
}, isLoading:function (j) {
|
|
return j ? Ext.lib.Ajax.isCallInProgress(j) : !!this.transId
|
|
}, abort:function (j) {
|
|
if (j || this.isLoading()) {
|
|
Ext.lib.Ajax.abort(j || this.transId)
|
|
}
|
|
}, handleResponse:function (j) {
|
|
this.transId = false;
|
|
var k = j.argument.options;
|
|
j.argument = k ? k.argument : null;
|
|
this.fireEvent(e, this, j, k);
|
|
if (k.success) {
|
|
k.success.call(k.scope, j, k)
|
|
}
|
|
if (k.callback) {
|
|
k.callback.call(k.scope, k, true, j)
|
|
}
|
|
}, handleFailure:function (j, l) {
|
|
this.transId = false;
|
|
var k = j.argument.options;
|
|
j.argument = k ? k.argument : null;
|
|
this.fireEvent(d, this, j, k, l);
|
|
if (k.failure) {
|
|
k.failure.call(k.scope, j, k)
|
|
}
|
|
if (k.callback) {
|
|
k.callback.call(k.scope, k, false, j)
|
|
}
|
|
}, doFormUpload:function (q, j, k) {
|
|
var l = Ext.id(), v = document, r = v.createElement("iframe"), m = Ext.getDom(q.form), u = [], t, p = "multipart/form-data", n = {target:m.target, method:m.method, encoding:m.encoding, enctype:m.enctype, action:m.action};
|
|
Ext.fly(r).set({id:l, name:l, cls:"x-hidden", src:Ext.SSL_SECURE_URL});
|
|
v.body.appendChild(r);
|
|
if (Ext.isIE) {
|
|
document.frames[l].name = l
|
|
}
|
|
Ext.fly(m).set({target:l, method:i, enctype:p, encoding:p, action:k || n.action});
|
|
Ext.iterate(Ext.urlDecode(j, false), function (w, o) {
|
|
t = v.createElement("input");
|
|
Ext.fly(t).set({type:"hidden", value:o, name:w});
|
|
m.appendChild(t);
|
|
u.push(t)
|
|
});
|
|
function s() {
|
|
var x = this, w = {responseText:"", responseXML:null, argument:q.argument}, A, z;
|
|
try {
|
|
A = r.contentWindow.document || r.contentDocument || g.frames[l].document;
|
|
if (A) {
|
|
if (A.body) {
|
|
if (/textarea/i.test((z = A.body.firstChild || {}).tagName)) {
|
|
w.responseText = z.value
|
|
} else {
|
|
w.responseText = A.body.innerHTML
|
|
}
|
|
}
|
|
w.responseXML = A.XMLDocument || A
|
|
}
|
|
} catch (y) {
|
|
}
|
|
Ext.EventManager.removeListener(r, c, s, x);
|
|
x.fireEvent(e, x, w, q);
|
|
function o(D, C, B) {
|
|
if (Ext.isFunction(D)) {
|
|
D.apply(C, B)
|
|
}
|
|
}
|
|
|
|
o(q.success, q.scope, [w, q]);
|
|
o(q.callback, q.scope, [q, true, w]);
|
|
if (!x.debugUploads) {
|
|
setTimeout(function () {
|
|
Ext.removeNode(r)
|
|
}, 100)
|
|
}
|
|
}
|
|
|
|
Ext.EventManager.on(r, c, s, this);
|
|
m.submit();
|
|
Ext.fly(m).set(n);
|
|
Ext.each(u, function (o) {
|
|
Ext.removeNode(o)
|
|
})
|
|
}})
|
|
})();
|
|
Ext.Ajax = new Ext.data.Connection({autoAbort:false, serializeForm:function (a) {
|
|
return Ext.lib.Ajax.serializeForm(a)
|
|
}});
|
|
Ext.util.JSON = new (function () {
|
|
var useHasOwn = !!{}.hasOwnProperty, isNative = function () {
|
|
var useNative = null;
|
|
return function () {
|
|
if (useNative === null) {
|
|
useNative = Ext.USE_NATIVE_JSON && window.JSON && JSON.toString() == "[object JSON]"
|
|
}
|
|
return useNative
|
|
}
|
|
}(), pad = function (n) {
|
|
return n < 10 ? "0" + n : n
|
|
}, doDecode = function (json) {
|
|
return json ? eval("(" + json + ")") : ""
|
|
}, doEncode = function (o) {
|
|
if (!Ext.isDefined(o) || o === null) {
|
|
return"null"
|
|
} else {
|
|
if (Ext.isArray(o)) {
|
|
return encodeArray(o)
|
|
} else {
|
|
if (Ext.isDate(o)) {
|
|
return Ext.util.JSON.encodeDate(o)
|
|
} else {
|
|
if (Ext.isString(o)) {
|
|
return encodeString(o)
|
|
} else {
|
|
if (typeof o == "number") {
|
|
return isFinite(o) ? String(o) : "null"
|
|
} else {
|
|
if (Ext.isBoolean(o)) {
|
|
return String(o)
|
|
} else {
|
|
var a = ["{"], b, i, v;
|
|
for (i in o) {
|
|
if (!o.getElementsByTagName) {
|
|
if (!useHasOwn || o.hasOwnProperty(i)) {
|
|
v = o[i];
|
|
switch (typeof v) {
|
|
case"undefined":
|
|
case"function":
|
|
case"unknown":
|
|
break;
|
|
default:
|
|
if (b) {
|
|
a.push(",")
|
|
}
|
|
a.push(doEncode(i), ":", v === null ? "null" : doEncode(v));
|
|
b = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
a.push("}");
|
|
return a.join("")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, m = {"\b":"\\b", "\t":"\\t", "\n":"\\n", "\f":"\\f", "\r":"\\r", '"':'\\"', "\\":"\\\\"}, encodeString = function (s) {
|
|
if (/["\\\x00-\x1f]/.test(s)) {
|
|
return'"' + s.replace(/([\x00-\x1f\\"])/g, function (a, b) {
|
|
var c = m[b];
|
|
if (c) {
|
|
return c
|
|
}
|
|
c = b.charCodeAt();
|
|
return"\\u00" + Math.floor(c / 16).toString(16) + (c % 16).toString(16)
|
|
}) + '"'
|
|
}
|
|
return'"' + s + '"'
|
|
}, encodeArray = function (o) {
|
|
var a = ["["], b, i, l = o.length, v;
|
|
for (i = 0; i < l; i += 1) {
|
|
v = o[i];
|
|
switch (typeof v) {
|
|
case"undefined":
|
|
case"function":
|
|
case"unknown":
|
|
break;
|
|
default:
|
|
if (b) {
|
|
a.push(",")
|
|
}
|
|
a.push(v === null ? "null" : Ext.util.JSON.encode(v));
|
|
b = true
|
|
}
|
|
}
|
|
a.push("]");
|
|
return a.join("")
|
|
};
|
|
this.encodeDate = function (o) {
|
|
return'"' + o.getFullYear() + "-" + pad(o.getMonth() + 1) + "-" + pad(o.getDate()) + "T" + pad(o.getHours()) + ":" + pad(o.getMinutes()) + ":" + pad(o.getSeconds()) + '"'
|
|
};
|
|
this.encode = function () {
|
|
var ec;
|
|
return function (o) {
|
|
if (!ec) {
|
|
ec = isNative() ? JSON.stringify : doEncode
|
|
}
|
|
return ec(o)
|
|
}
|
|
}();
|
|
this.decode = function () {
|
|
var dc;
|
|
return function (json) {
|
|
if (!dc) {
|
|
dc = isNative() ? JSON.parse : doDecode
|
|
}
|
|
return dc(json)
|
|
}
|
|
}()
|
|
})();
|
|
Ext.encode = Ext.util.JSON.encode;
|
|
Ext.decode = Ext.util.JSON.decode;
|
|
Ext.EventManager = function () {
|
|
var z, p, j = false, l = Ext.isGecko || Ext.isWebKit || Ext.isSafari, o = Ext.lib.Event, q = Ext.lib.Dom, c = document, A = window, r = "DOMContentLoaded", t = "complete", g = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/, u = [];
|
|
|
|
function n(E) {
|
|
var H = false, D = 0, C = u.length, F = false, G;
|
|
if (E) {
|
|
if (E.getElementById || E.navigator) {
|
|
for (; D < C; ++D) {
|
|
G = u[D];
|
|
if (G.el === E) {
|
|
H = G.id;
|
|
break
|
|
}
|
|
}
|
|
if (!H) {
|
|
H = Ext.id(E);
|
|
u.push({id:H, el:E});
|
|
F = true
|
|
}
|
|
} else {
|
|
H = Ext.id(E)
|
|
}
|
|
if (!Ext.elCache[H]) {
|
|
Ext.Element.addToCache(new Ext.Element(E), H);
|
|
if (F) {
|
|
Ext.elCache[H].skipGC = true
|
|
}
|
|
}
|
|
}
|
|
return H
|
|
}
|
|
|
|
function m(E, G, J, F, D, L) {
|
|
E = Ext.getDom(E);
|
|
var C = n(E), K = Ext.elCache[C].events, H;
|
|
H = o.on(E, G, D);
|
|
K[G] = K[G] || [];
|
|
K[G].push([J, D, L, H, F]);
|
|
if (E.addEventListener && G == "mousewheel") {
|
|
var I = ["DOMMouseScroll", D, false];
|
|
E.addEventListener.apply(E, I);
|
|
Ext.EventManager.addListener(A, "unload", function () {
|
|
E.removeEventListener.apply(E, I)
|
|
})
|
|
}
|
|
if (E == c && G == "mousedown") {
|
|
Ext.EventManager.stoppedMouseDownEvent.addListener(D)
|
|
}
|
|
}
|
|
|
|
function d() {
|
|
if (window != top) {
|
|
return false
|
|
}
|
|
try {
|
|
c.documentElement.doScroll("left")
|
|
} catch (C) {
|
|
return false
|
|
}
|
|
b();
|
|
return true
|
|
}
|
|
|
|
function B(C) {
|
|
if (Ext.isIE && d()) {
|
|
return true
|
|
}
|
|
if (c.readyState == t) {
|
|
b();
|
|
return true
|
|
}
|
|
j || (p = setTimeout(arguments.callee, 2));
|
|
return false
|
|
}
|
|
|
|
var k;
|
|
|
|
function i(C) {
|
|
k || (k = Ext.query("style, link[rel=stylesheet]"));
|
|
if (k.length == c.styleSheets.length) {
|
|
b();
|
|
return true
|
|
}
|
|
j || (p = setTimeout(arguments.callee, 2));
|
|
return false
|
|
}
|
|
|
|
function y(C) {
|
|
c.removeEventListener(r, arguments.callee, false);
|
|
i()
|
|
}
|
|
|
|
function b(C) {
|
|
if (!j) {
|
|
j = true;
|
|
if (p) {
|
|
clearTimeout(p)
|
|
}
|
|
if (l) {
|
|
c.removeEventListener(r, b, false)
|
|
}
|
|
if (Ext.isIE && B.bindIE) {
|
|
c.detachEvent("onreadystatechange", B)
|
|
}
|
|
o.un(A, "load", arguments.callee)
|
|
}
|
|
if (z && !Ext.isReady) {
|
|
Ext.isReady = true;
|
|
z.fire();
|
|
z.listeners = []
|
|
}
|
|
}
|
|
|
|
function a() {
|
|
z || (z = new Ext.util.Event());
|
|
if (l) {
|
|
c.addEventListener(r, b, false)
|
|
}
|
|
if (Ext.isIE) {
|
|
if (!B()) {
|
|
B.bindIE = true;
|
|
c.attachEvent("onreadystatechange", B)
|
|
}
|
|
} else {
|
|
if (Ext.isOpera) {
|
|
(c.readyState == t && i()) || c.addEventListener(r, y, false)
|
|
} else {
|
|
if (Ext.isWebKit) {
|
|
B()
|
|
}
|
|
}
|
|
}
|
|
o.on(A, "load", b)
|
|
}
|
|
|
|
function x(C, D) {
|
|
return function () {
|
|
var E = Ext.toArray(arguments);
|
|
if (D.target == Ext.EventObject.setEvent(E[0]).target) {
|
|
C.apply(this, E)
|
|
}
|
|
}
|
|
}
|
|
|
|
function w(D, E, C) {
|
|
return function (F) {
|
|
C.delay(E.buffer, D, null, [new Ext.EventObjectImpl(F)])
|
|
}
|
|
}
|
|
|
|
function s(G, F, C, E, D) {
|
|
return function (H) {
|
|
Ext.EventManager.removeListener(F, C, E, D);
|
|
G(H)
|
|
}
|
|
}
|
|
|
|
function e(D, E, C) {
|
|
return function (G) {
|
|
var F = new Ext.util.DelayedTask(D);
|
|
if (!C.tasks) {
|
|
C.tasks = []
|
|
}
|
|
C.tasks.push(F);
|
|
F.delay(E.delay || 10, D, null, [new Ext.EventObjectImpl(G)])
|
|
}
|
|
}
|
|
|
|
function h(H, G, C, J, K) {
|
|
var D = (!C || typeof C == "boolean") ? {} : C, E = Ext.getDom(H), F;
|
|
J = J || D.fn;
|
|
K = K || D.scope;
|
|
if (!E) {
|
|
throw'Error listening for "' + G + '". Element "' + H + "\" doesn't exist."
|
|
}
|
|
function I(M) {
|
|
if (!Ext) {
|
|
return
|
|
}
|
|
M = Ext.EventObject.setEvent(M);
|
|
var L;
|
|
if (D.delegate) {
|
|
if (!(L = M.getTarget(D.delegate, E))) {
|
|
return
|
|
}
|
|
} else {
|
|
L = M.target
|
|
}
|
|
if (D.stopEvent) {
|
|
M.stopEvent()
|
|
}
|
|
if (D.preventDefault) {
|
|
M.preventDefault()
|
|
}
|
|
if (D.stopPropagation) {
|
|
M.stopPropagation()
|
|
}
|
|
if (D.normalized === false) {
|
|
M = M.browserEvent
|
|
}
|
|
J.call(K || E, M, L, D)
|
|
}
|
|
|
|
if (D.target) {
|
|
I = x(I, D)
|
|
}
|
|
if (D.delay) {
|
|
I = e(I, D, J)
|
|
}
|
|
if (D.single) {
|
|
I = s(I, E, G, J, K)
|
|
}
|
|
if (D.buffer) {
|
|
F = new Ext.util.DelayedTask(I);
|
|
I = w(I, D, F)
|
|
}
|
|
m(E, G, J, F, I, K);
|
|
return I
|
|
}
|
|
|
|
var v = {addListener:function (E, C, G, F, D) {
|
|
if (typeof C == "object") {
|
|
var J = C, H, I;
|
|
for (H in J) {
|
|
I = J[H];
|
|
if (!g.test(H)) {
|
|
if (Ext.isFunction(I)) {
|
|
h(E, H, J, I, J.scope)
|
|
} else {
|
|
h(E, H, I)
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
h(E, C, D, G, F)
|
|
}
|
|
}, removeListener:function (E, I, M, N) {
|
|
E = Ext.getDom(E);
|
|
var C = n(E), K = E && (Ext.elCache[C].events)[I] || [], D, H, F, G, J, L;
|
|
for (H = 0, J = K.length; H < J; H++) {
|
|
if (Ext.isArray(L = K[H]) && L[0] == M && (!N || L[2] == N)) {
|
|
if (L[4]) {
|
|
L[4].cancel()
|
|
}
|
|
G = M.tasks && M.tasks.length;
|
|
if (G) {
|
|
while (G--) {
|
|
M.tasks[G].cancel()
|
|
}
|
|
delete M.tasks
|
|
}
|
|
D = L[1];
|
|
o.un(E, I, o.extAdapter ? L[3] : D);
|
|
if (D && E.addEventListener && I == "mousewheel") {
|
|
E.removeEventListener("DOMMouseScroll", D, false)
|
|
}
|
|
if (D && E == c && I == "mousedown") {
|
|
Ext.EventManager.stoppedMouseDownEvent.removeListener(D)
|
|
}
|
|
K.splice(H, 1);
|
|
if (K.length === 0) {
|
|
delete Ext.elCache[C].events[I]
|
|
}
|
|
for (G in Ext.elCache[C].events) {
|
|
return false
|
|
}
|
|
Ext.elCache[C].events = {};
|
|
return false
|
|
}
|
|
}
|
|
}, removeAll:function (E) {
|
|
E = Ext.getDom(E);
|
|
var D = n(E), J = Ext.elCache[D] || {}, M = J.events || {}, I, H, K, F, L, G, C;
|
|
for (F in M) {
|
|
if (M.hasOwnProperty(F)) {
|
|
I = M[F];
|
|
for (H = 0, K = I.length; H < K; H++) {
|
|
L = I[H];
|
|
if (L[4]) {
|
|
L[4].cancel()
|
|
}
|
|
if (L[0].tasks && (G = L[0].tasks.length)) {
|
|
while (G--) {
|
|
L[0].tasks[G].cancel()
|
|
}
|
|
delete L.tasks
|
|
}
|
|
C = L[1];
|
|
o.un(E, F, o.extAdapter ? L[3] : C);
|
|
if (E.addEventListener && C && F == "mousewheel") {
|
|
E.removeEventListener("DOMMouseScroll", C, false)
|
|
}
|
|
if (C && E == c && F == "mousedown") {
|
|
Ext.EventManager.stoppedMouseDownEvent.removeListener(C)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Ext.elCache[D]) {
|
|
Ext.elCache[D].events = {}
|
|
}
|
|
}, getListeners:function (F, C) {
|
|
F = Ext.getDom(F);
|
|
var H = n(F), D = Ext.elCache[H] || {}, G = D.events || {}, E = [];
|
|
if (G && G[C]) {
|
|
return G[C]
|
|
} else {
|
|
return null
|
|
}
|
|
}, purgeElement:function (E, C, G) {
|
|
E = Ext.getDom(E);
|
|
var D = n(E), J = Ext.elCache[D] || {}, K = J.events || {}, F, I, H;
|
|
if (G) {
|
|
if (K && K.hasOwnProperty(G)) {
|
|
I = K[G];
|
|
for (F = 0, H = I.length; F < H; F++) {
|
|
Ext.EventManager.removeListener(E, G, I[F][0])
|
|
}
|
|
}
|
|
} else {
|
|
Ext.EventManager.removeAll(E)
|
|
}
|
|
if (C && E && E.childNodes) {
|
|
for (F = 0, H = E.childNodes.length; F < H; F++) {
|
|
Ext.EventManager.purgeElement(E.childNodes[F], C, G)
|
|
}
|
|
}
|
|
}, _unload:function () {
|
|
var C;
|
|
for (C in Ext.elCache) {
|
|
Ext.EventManager.removeAll(C)
|
|
}
|
|
delete Ext.elCache;
|
|
delete Ext.Element._flyweights;
|
|
var G, D, F, E = Ext.lib.Ajax;
|
|
(typeof E.conn == "object") ? D = E.conn : D = {};
|
|
for (F in D) {
|
|
G = D[F];
|
|
if (G) {
|
|
E.abort({conn:G, tId:F})
|
|
}
|
|
}
|
|
}, onDocumentReady:function (E, D, C) {
|
|
if (Ext.isReady) {
|
|
z || (z = new Ext.util.Event());
|
|
z.addListener(E, D, C);
|
|
z.fire();
|
|
z.listeners = []
|
|
} else {
|
|
if (!z) {
|
|
a()
|
|
}
|
|
C = C || {};
|
|
C.delay = C.delay || 1;
|
|
z.addListener(E, D, C)
|
|
}
|
|
}, fireDocReady:b};
|
|
v.on = v.addListener;
|
|
v.un = v.removeListener;
|
|
v.stoppedMouseDownEvent = new Ext.util.Event();
|
|
return v
|
|
}();
|
|
Ext.onReady = Ext.EventManager.onDocumentReady;
|
|
(function () {
|
|
var a = function () {
|
|
var c = document.body || document.getElementsByTagName("body")[0];
|
|
if (!c) {
|
|
return false
|
|
}
|
|
var b = [" ", Ext.isIE ? "ext-ie " + (Ext.isIE6 ? "ext-ie6" : (Ext.isIE7 ? "ext-ie7" : (Ext.isIE8 ? "ext-ie8" : "ext-ie9"))) : Ext.isGecko ? "ext-gecko " + (Ext.isGecko2 ? "ext-gecko2" : "ext-gecko3") : Ext.isOpera ? "ext-opera" : Ext.isWebKit ? "ext-webkit" : ""];
|
|
if (Ext.isSafari) {
|
|
b.push("ext-safari " + (Ext.isSafari2 ? "ext-safari2" : (Ext.isSafari3 ? "ext-safari3" : "ext-safari4")))
|
|
} else {
|
|
if (Ext.isChrome) {
|
|
b.push("ext-chrome")
|
|
}
|
|
}
|
|
if (Ext.isMac) {
|
|
b.push("ext-mac")
|
|
}
|
|
if (Ext.isLinux) {
|
|
b.push("ext-linux")
|
|
}
|
|
if (Ext.isStrict || Ext.isBorderBox) {
|
|
var d = c.parentNode;
|
|
if (d) {
|
|
if (!Ext.isStrict) {
|
|
Ext.fly(d, "_internal").addClass("x-quirks");
|
|
if (Ext.isIE && !Ext.isStrict) {
|
|
Ext.isIEQuirks = true
|
|
}
|
|
}
|
|
Ext.fly(d, "_internal").addClass(((Ext.isStrict && Ext.isIE) || (!Ext.enableForcedBoxModel && !Ext.isIE)) ? " ext-strict" : " ext-border-box")
|
|
}
|
|
}
|
|
if (Ext.enableForcedBoxModel && !Ext.isIE) {
|
|
Ext.isForcedBorderBox = true;
|
|
b.push("ext-forced-border-box")
|
|
}
|
|
Ext.fly(c, "_internal").addClass(b);
|
|
return true
|
|
};
|
|
if (!a()) {
|
|
Ext.onReady(a)
|
|
}
|
|
})();
|
|
(function () {
|
|
var b = Ext.apply(Ext.supports, {correctRightMargin:true, correctTransparentColor:true, cssFloat:true});
|
|
var a = function () {
|
|
var g = document.createElement("div"), e = document, c, d;
|
|
g.innerHTML = '<div style="height:30px;width:50px;"><div style="height:20px;width:20px;"></div></div><div style="float:left;background-color:transparent;">';
|
|
e.body.appendChild(g);
|
|
d = g.lastChild;
|
|
if ((c = e.defaultView)) {
|
|
if (c.getComputedStyle(g.firstChild.firstChild, null).marginRight != "0px") {
|
|
b.correctRightMargin = false
|
|
}
|
|
if (c.getComputedStyle(d, null).backgroundColor != "transparent") {
|
|
b.correctTransparentColor = false
|
|
}
|
|
}
|
|
b.cssFloat = !!d.style.cssFloat;
|
|
e.body.removeChild(g)
|
|
};
|
|
if (Ext.isReady) {
|
|
a()
|
|
} else {
|
|
Ext.onReady(a)
|
|
}
|
|
})();
|
|
Ext.EventObject = function () {
|
|
var b = Ext.lib.Event, c = /(dbl)?click/, a = {3:13, 63234:37, 63235:39, 63232:38, 63233:40, 63276:33, 63277:34, 63272:46, 63273:36, 63275:35}, d = Ext.isIE ? {1:0, 4:1, 2:2} : {0:0, 1:1, 2:2};
|
|
Ext.EventObjectImpl = function (g) {
|
|
if (g) {
|
|
this.setEvent(g.browserEvent || g)
|
|
}
|
|
};
|
|
Ext.EventObjectImpl.prototype = {setEvent:function (h) {
|
|
var g = this;
|
|
if (h == g || (h && h.browserEvent)) {
|
|
return h
|
|
}
|
|
g.browserEvent = h;
|
|
if (h) {
|
|
g.button = h.button ? d[h.button] : (h.which ? h.which - 1 : -1);
|
|
if (c.test(h.type) && g.button == -1) {
|
|
g.button = 0
|
|
}
|
|
g.type = h.type;
|
|
g.shiftKey = h.shiftKey;
|
|
g.ctrlKey = h.ctrlKey || h.metaKey || false;
|
|
g.altKey = h.altKey;
|
|
g.keyCode = h.keyCode;
|
|
g.charCode = h.charCode;
|
|
g.target = b.getTarget(h);
|
|
g.xy = b.getXY(h)
|
|
} else {
|
|
g.button = -1;
|
|
g.shiftKey = false;
|
|
g.ctrlKey = false;
|
|
g.altKey = false;
|
|
g.keyCode = 0;
|
|
g.charCode = 0;
|
|
g.target = null;
|
|
g.xy = [0, 0]
|
|
}
|
|
return g
|
|
}, stopEvent:function () {
|
|
var e = this;
|
|
if (e.browserEvent) {
|
|
if (e.browserEvent.type == "mousedown") {
|
|
Ext.EventManager.stoppedMouseDownEvent.fire(e)
|
|
}
|
|
b.stopEvent(e.browserEvent)
|
|
}
|
|
}, preventDefault:function () {
|
|
if (this.browserEvent) {
|
|
b.preventDefault(this.browserEvent)
|
|
}
|
|
}, stopPropagation:function () {
|
|
var e = this;
|
|
if (e.browserEvent) {
|
|
if (e.browserEvent.type == "mousedown") {
|
|
Ext.EventManager.stoppedMouseDownEvent.fire(e)
|
|
}
|
|
b.stopPropagation(e.browserEvent)
|
|
}
|
|
}, getCharCode:function () {
|
|
return this.charCode || this.keyCode
|
|
}, getKey:function () {
|
|
return this.normalizeKey(this.keyCode || this.charCode)
|
|
}, normalizeKey:function (e) {
|
|
return Ext.isSafari ? (a[e] || e) : e
|
|
}, getPageX:function () {
|
|
return this.xy[0]
|
|
}, getPageY:function () {
|
|
return this.xy[1]
|
|
}, getXY:function () {
|
|
return this.xy
|
|
}, getTarget:function (g, h, e) {
|
|
return g ? Ext.fly(this.target).findParent(g, h, e) : (e ? Ext.get(this.target) : this.target)
|
|
}, getRelatedTarget:function () {
|
|
return this.browserEvent ? b.getRelatedTarget(this.browserEvent) : null
|
|
}, getWheelDelta:function () {
|
|
var g = this.browserEvent;
|
|
var h = 0;
|
|
if (g.wheelDelta) {
|
|
h = g.wheelDelta / 120
|
|
} else {
|
|
if (g.detail) {
|
|
h = -g.detail / 3
|
|
}
|
|
}
|
|
return h
|
|
}, within:function (h, i, e) {
|
|
if (h) {
|
|
var g = this[i ? "getRelatedTarget" : "getTarget"]();
|
|
return g && ((e ? (g == Ext.getDom(h)) : false) || Ext.fly(h).contains(g))
|
|
}
|
|
return false
|
|
}};
|
|
return new Ext.EventObjectImpl()
|
|
}();
|
|
Ext.Loader = Ext.apply({}, {load:function (j, i, k, c) {
|
|
var k = k || this, g = document.getElementsByTagName("head")[0], b = document.createDocumentFragment(), a = j.length, h = 0, e = this;
|
|
var l = function (m) {
|
|
g.appendChild(e.buildScriptTag(j[m], d))
|
|
};
|
|
var d = function () {
|
|
h++;
|
|
if (a == h && typeof i == "function") {
|
|
i.call(k)
|
|
} else {
|
|
if (c === true) {
|
|
l(h)
|
|
}
|
|
}
|
|
};
|
|
if (c === true) {
|
|
l.call(this, 0)
|
|
} else {
|
|
Ext.each(j, function (n, m) {
|
|
b.appendChild(this.buildScriptTag(n, d))
|
|
}, this);
|
|
g.appendChild(b)
|
|
}
|
|
}, buildScriptTag:function (b, c) {
|
|
var a = document.createElement("script");
|
|
a.type = "text/javascript";
|
|
a.src = b;
|
|
if (a.readyState) {
|
|
a.onreadystatechange = function () {
|
|
if (a.readyState == "loaded" || a.readyState == "complete") {
|
|
a.onreadystatechange = null;
|
|
c()
|
|
}
|
|
}
|
|
} else {
|
|
a.onload = c
|
|
}
|
|
return a
|
|
}});
|
|
Ext.ns("Ext.grid", "Ext.list", "Ext.dd", "Ext.tree", "Ext.form", "Ext.menu", "Ext.state", "Ext.layout.boxOverflow", "Ext.app", "Ext.ux", "Ext.chart", "Ext.direct", "Ext.slider");
|
|
Ext.apply(Ext, function () {
|
|
var c = Ext, a = 0, b = null;
|
|
return{emptyFn:function () {
|
|
}, BLANK_IMAGE_URL:Ext.isIE6 || Ext.isIE7 || Ext.isAir ? "http://www.extjs.com/s.gif" : "data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==", extendX:function (d, e) {
|
|
return Ext.extend(d, e(d.prototype))
|
|
}, getDoc:function () {
|
|
return Ext.get(document)
|
|
}, num:function (e, d) {
|
|
e = Number(Ext.isEmpty(e) || Ext.isArray(e) || typeof e == "boolean" || (typeof e == "string" && e.trim().length == 0) ? NaN : e);
|
|
return isNaN(e) ? d : e
|
|
}, value:function (g, d, e) {
|
|
return Ext.isEmpty(g, e) ? d : g
|
|
}, escapeRe:function (d) {
|
|
return d.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1")
|
|
}, sequence:function (h, d, g, e) {
|
|
h[d] = h[d].createSequence(g, e)
|
|
}, addBehaviors:function (i) {
|
|
if (!Ext.isReady) {
|
|
Ext.onReady(function () {
|
|
Ext.addBehaviors(i)
|
|
})
|
|
} else {
|
|
var e = {}, h, d, g;
|
|
for (d in i) {
|
|
if ((h = d.split("@"))[1]) {
|
|
g = h[0];
|
|
if (!e[g]) {
|
|
e[g] = Ext.select(g)
|
|
}
|
|
e[g].on(h[1], i[d])
|
|
}
|
|
}
|
|
e = null
|
|
}
|
|
}, getScrollBarWidth:function (g) {
|
|
if (!Ext.isReady) {
|
|
return 0
|
|
}
|
|
if (g === true || b === null) {
|
|
var i = Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'), h = i.child("div", true);
|
|
var e = h.offsetWidth;
|
|
i.setStyle("overflow", (Ext.isWebKit || Ext.isGecko) ? "auto" : "scroll");
|
|
var d = h.offsetWidth;
|
|
i.remove();
|
|
b = e - d + 2
|
|
}
|
|
return b
|
|
}, combine:function () {
|
|
var g = arguments, e = g.length, j = [];
|
|
for (var h = 0; h < e; h++) {
|
|
var d = g[h];
|
|
if (Ext.isArray(d)) {
|
|
j = j.concat(d)
|
|
} else {
|
|
if (d.length !== undefined && !d.substr) {
|
|
j = j.concat(Array.prototype.slice.call(d, 0))
|
|
} else {
|
|
j.push(d)
|
|
}
|
|
}
|
|
}
|
|
return j
|
|
}, copyTo:function (d, e, g) {
|
|
if (typeof g == "string") {
|
|
g = g.split(/[,;\s]/)
|
|
}
|
|
Ext.each(g, function (h) {
|
|
if (e.hasOwnProperty(h)) {
|
|
d[h] = e[h]
|
|
}
|
|
}, this);
|
|
return d
|
|
}, destroy:function () {
|
|
Ext.each(arguments, function (d) {
|
|
if (d) {
|
|
if (Ext.isArray(d)) {
|
|
this.destroy.apply(this, d)
|
|
} else {
|
|
if (typeof d.destroy == "function") {
|
|
d.destroy()
|
|
} else {
|
|
if (d.dom) {
|
|
d.remove()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, this)
|
|
}, destroyMembers:function (l, j, g, h) {
|
|
for (var k = 1, e = arguments, d = e.length; k < d; k++) {
|
|
Ext.destroy(l[e[k]]);
|
|
delete l[e[k]]
|
|
}
|
|
}, clean:function (d) {
|
|
var e = [];
|
|
Ext.each(d, function (g) {
|
|
if (!!g) {
|
|
e.push(g)
|
|
}
|
|
});
|
|
return e
|
|
}, unique:function (d) {
|
|
var e = [], g = {};
|
|
Ext.each(d, function (h) {
|
|
if (!g[h]) {
|
|
e.push(h)
|
|
}
|
|
g[h] = true
|
|
});
|
|
return e
|
|
}, flatten:function (d) {
|
|
var g = [];
|
|
|
|
function e(h) {
|
|
Ext.each(h, function (i) {
|
|
if (Ext.isArray(i)) {
|
|
e(i)
|
|
} else {
|
|
g.push(i)
|
|
}
|
|
});
|
|
return g
|
|
}
|
|
|
|
return e(d)
|
|
}, min:function (d, e) {
|
|
var g = d[0];
|
|
e = e || function (i, h) {
|
|
return i < h ? -1 : 1
|
|
};
|
|
Ext.each(d, function (h) {
|
|
g = e(g, h) == -1 ? g : h
|
|
});
|
|
return g
|
|
}, max:function (d, e) {
|
|
var g = d[0];
|
|
e = e || function (i, h) {
|
|
return i > h ? 1 : -1
|
|
};
|
|
Ext.each(d, function (h) {
|
|
g = e(g, h) == 1 ? g : h
|
|
});
|
|
return g
|
|
}, mean:function (d) {
|
|
return d.length > 0 ? Ext.sum(d) / d.length : undefined
|
|
}, sum:function (d) {
|
|
var e = 0;
|
|
Ext.each(d, function (g) {
|
|
e += g
|
|
});
|
|
return e
|
|
}, partition:function (d, e) {
|
|
var g = [
|
|
[],
|
|
[]
|
|
];
|
|
Ext.each(d, function (j, k, h) {
|
|
g[(e && e(j, k, h)) || (!e && j) ? 0 : 1].push(j)
|
|
});
|
|
return g
|
|
}, invoke:function (d, e) {
|
|
var h = [], g = Array.prototype.slice.call(arguments, 2);
|
|
Ext.each(d, function (j, k) {
|
|
if (j && typeof j[e] == "function") {
|
|
h.push(j[e].apply(j, g))
|
|
} else {
|
|
h.push(undefined)
|
|
}
|
|
});
|
|
return h
|
|
}, pluck:function (d, g) {
|
|
var e = [];
|
|
Ext.each(d, function (h) {
|
|
e.push(h[g])
|
|
});
|
|
return e
|
|
}, zip:function () {
|
|
var n = Ext.partition(arguments, function (i) {
|
|
return typeof i != "function"
|
|
}), k = n[0], m = n[1][0], d = Ext.max(Ext.pluck(k, "length")), h = [];
|
|
for (var l = 0; l < d; l++) {
|
|
h[l] = [];
|
|
if (m) {
|
|
h[l] = m.apply(m, Ext.pluck(k, l))
|
|
} else {
|
|
for (var g = 0, e = k.length; g < e; g++) {
|
|
h[l].push(k[g][l])
|
|
}
|
|
}
|
|
}
|
|
return h
|
|
}, getCmp:function (d) {
|
|
return Ext.ComponentMgr.get(d)
|
|
}, useShims:c.isIE6 || (c.isMac && c.isGecko2), type:function (e) {
|
|
if (e === undefined || e === null) {
|
|
return false
|
|
}
|
|
if (e.htmlElement) {
|
|
return"element"
|
|
}
|
|
var d = typeof e;
|
|
if (d == "object" && e.nodeName) {
|
|
switch (e.nodeType) {
|
|
case 1:
|
|
return"element";
|
|
case 3:
|
|
return(/\S/).test(e.nodeValue) ? "textnode" : "whitespace"
|
|
}
|
|
}
|
|
if (d == "object" || d == "function") {
|
|
switch (e.constructor) {
|
|
case Array:
|
|
return"array";
|
|
case RegExp:
|
|
return"regexp";
|
|
case Date:
|
|
return"date"
|
|
}
|
|
if (typeof e.length == "number" && typeof e.item == "function") {
|
|
return"nodelist"
|
|
}
|
|
}
|
|
return d
|
|
}, intercept:function (h, d, g, e) {
|
|
h[d] = h[d].createInterceptor(g, e)
|
|
}, callback:function (d, h, g, e) {
|
|
if (typeof d == "function") {
|
|
if (e) {
|
|
d.defer(e, h, g || [])
|
|
} else {
|
|
d.apply(h, g || [])
|
|
}
|
|
}
|
|
}}
|
|
}());
|
|
Ext.apply(Function.prototype, {createSequence:function (b, a) {
|
|
var c = this;
|
|
return(typeof b != "function") ? this : function () {
|
|
var d = c.apply(this || window, arguments);
|
|
b.apply(a || this || window, arguments);
|
|
return d
|
|
}
|
|
}});
|
|
Ext.applyIf(String, {escape:function (a) {
|
|
return a.replace(/('|\\)/g, "\\$1")
|
|
}, leftPad:function (d, b, c) {
|
|
var a = String(d);
|
|
if (!c) {
|
|
c = " "
|
|
}
|
|
while (a.length < b) {
|
|
a = c + a
|
|
}
|
|
return a
|
|
}});
|
|
String.prototype.toggle = function (b, a) {
|
|
return this == b ? a : b
|
|
};
|
|
String.prototype.trim = function () {
|
|
var a = /^\s+|\s+$/g;
|
|
return function () {
|
|
return this.replace(a, "")
|
|
}
|
|
}();
|
|
Date.prototype.getElapsed = function (a) {
|
|
return Math.abs((a || new Date()).getTime() - this.getTime())
|
|
};
|
|
Ext.applyIf(Number.prototype, {constrain:function (b, a) {
|
|
return Math.min(Math.max(this, b), a)
|
|
}});
|
|
Ext.lib.Dom.getRegion = function (a) {
|
|
return Ext.lib.Region.getRegion(a)
|
|
};
|
|
Ext.lib.Region = function (d, g, a, c) {
|
|
var e = this;
|
|
e.top = d;
|
|
e[1] = d;
|
|
e.right = g;
|
|
e.bottom = a;
|
|
e.left = c;
|
|
e[0] = c
|
|
};
|
|
Ext.lib.Region.prototype = {contains:function (b) {
|
|
var a = this;
|
|
return(b.left >= a.left && b.right <= a.right && b.top >= a.top && b.bottom <= a.bottom)
|
|
}, getArea:function () {
|
|
var a = this;
|
|
return((a.bottom - a.top) * (a.right - a.left))
|
|
}, intersect:function (h) {
|
|
var g = this, d = Math.max(g.top, h.top), e = Math.min(g.right, h.right), a = Math.min(g.bottom, h.bottom), c = Math.max(g.left, h.left);
|
|
if (a >= d && e >= c) {
|
|
return new Ext.lib.Region(d, e, a, c)
|
|
}
|
|
}, union:function (h) {
|
|
var g = this, d = Math.min(g.top, h.top), e = Math.max(g.right, h.right), a = Math.max(g.bottom, h.bottom), c = Math.min(g.left, h.left);
|
|
return new Ext.lib.Region(d, e, a, c)
|
|
}, constrainTo:function (b) {
|
|
var a = this;
|
|
a.top = a.top.constrain(b.top, b.bottom);
|
|
a.bottom = a.bottom.constrain(b.top, b.bottom);
|
|
a.left = a.left.constrain(b.left, b.right);
|
|
a.right = a.right.constrain(b.left, b.right);
|
|
return a
|
|
}, adjust:function (d, c, a, g) {
|
|
var e = this;
|
|
e.top += d;
|
|
e.left += c;
|
|
e.right += g;
|
|
e.bottom += a;
|
|
return e
|
|
}};
|
|
Ext.lib.Region.getRegion = function (e) {
|
|
var h = Ext.lib.Dom.getXY(e), d = h[1], g = h[0] + e.offsetWidth, a = h[1] + e.offsetHeight, c = h[0];
|
|
return new Ext.lib.Region(d, g, a, c)
|
|
};
|
|
Ext.lib.Point = function (a, c) {
|
|
if (Ext.isArray(a)) {
|
|
c = a[1];
|
|
a = a[0]
|
|
}
|
|
var b = this;
|
|
b.x = b.right = b.left = b[0] = a;
|
|
b.y = b.top = b.bottom = b[1] = c
|
|
};
|
|
Ext.lib.Point.prototype = new Ext.lib.Region();
|
|
Ext.apply(Ext.DomHelper, function () {
|
|
var e, a = "afterbegin", h = "afterend", i = "beforebegin", d = "beforeend", b = /tag|children|cn|html$/i;
|
|
|
|
function g(m, p, n, q, l, j) {
|
|
m = Ext.getDom(m);
|
|
var k;
|
|
if (e.useDom) {
|
|
k = c(p, null);
|
|
if (j) {
|
|
m.appendChild(k)
|
|
} else {
|
|
(l == "firstChild" ? m : m.parentNode).insertBefore(k, m[l] || m)
|
|
}
|
|
} else {
|
|
k = Ext.DomHelper.insertHtml(q, m, Ext.DomHelper.createHtml(p))
|
|
}
|
|
return n ? Ext.get(k, true) : k
|
|
}
|
|
|
|
function c(j, r) {
|
|
var k, u = document, p, s, m, t;
|
|
if (Ext.isArray(j)) {
|
|
k = u.createDocumentFragment();
|
|
for (var q = 0, n = j.length; q < n; q++) {
|
|
c(j[q], k)
|
|
}
|
|
} else {
|
|
if (typeof j == "string") {
|
|
k = u.createTextNode(j)
|
|
} else {
|
|
k = u.createElement(j.tag || "div");
|
|
p = !!k.setAttribute;
|
|
for (var s in j) {
|
|
if (!b.test(s)) {
|
|
m = j[s];
|
|
if (s == "cls") {
|
|
k.className = m
|
|
} else {
|
|
if (p) {
|
|
k.setAttribute(s, m)
|
|
} else {
|
|
k[s] = m
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Ext.DomHelper.applyStyles(k, j.style);
|
|
if ((t = j.children || j.cn)) {
|
|
c(t, k)
|
|
} else {
|
|
if (j.html) {
|
|
k.innerHTML = j.html
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (r) {
|
|
r.appendChild(k)
|
|
}
|
|
return k
|
|
}
|
|
|
|
e = {createTemplate:function (k) {
|
|
var j = Ext.DomHelper.createHtml(k);
|
|
return new Ext.Template(j)
|
|
}, useDom:false, insertBefore:function (j, l, k) {
|
|
return g(j, l, k, i)
|
|
}, insertAfter:function (j, l, k) {
|
|
return g(j, l, k, h, "nextSibling")
|
|
}, insertFirst:function (j, l, k) {
|
|
return g(j, l, k, a, "firstChild")
|
|
}, append:function (j, l, k) {
|
|
return g(j, l, k, d, "", true)
|
|
}, createDom:c};
|
|
return e
|
|
}());
|
|
Ext.apply(Ext.Template.prototype, {disableFormats:false, re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, argsRe:/^\s*['"](.*)["']\s*$/, compileARe:/\\/g, compileBRe:/(\r\n|\n)/g, compileCRe:/'/g, applyTemplate:function (b) {
|
|
var g = this, a = g.disableFormats !== true, e = Ext.util.Format, c = g;
|
|
if (g.compiled) {
|
|
return g.compiled(b)
|
|
}
|
|
function d(j, l, p, k) {
|
|
if (p && a) {
|
|
if (p.substr(0, 5) == "this.") {
|
|
return c.call(p.substr(5), b[l], b)
|
|
} else {
|
|
if (k) {
|
|
var o = g.argsRe;
|
|
k = k.split(",");
|
|
for (var n = 0, h = k.length; n < h; n++) {
|
|
k[n] = k[n].replace(o, "$1")
|
|
}
|
|
k = [b[l]].concat(k)
|
|
} else {
|
|
k = [b[l]]
|
|
}
|
|
return e[p].apply(e, k)
|
|
}
|
|
} else {
|
|
return b[l] !== undefined ? b[l] : ""
|
|
}
|
|
}
|
|
|
|
return g.html.replace(g.re, d)
|
|
}, compile:function () {
|
|
var me = this, fm = Ext.util.Format, useF = me.disableFormats !== true, sep = Ext.isGecko ? "+" : ",", body;
|
|
|
|
function fn(m, name, format, args) {
|
|
if (format && useF) {
|
|
args = args ? "," + args : "";
|
|
if (format.substr(0, 5) != "this.") {
|
|
format = "fm." + format + "("
|
|
} else {
|
|
format = 'this.call("' + format.substr(5) + '", ';
|
|
args = ", values"
|
|
}
|
|
} else {
|
|
args = "";
|
|
format = "(values['" + name + "'] == undefined ? '' : "
|
|
}
|
|
return"'" + sep + format + "values['" + name + "']" + args + ")" + sep + "'"
|
|
}
|
|
|
|
if (Ext.isGecko) {
|
|
body = "this.compiled = function(values){ return '" + me.html.replace(me.compileARe, "\\\\").replace(me.compileBRe, "\\n").replace(me.compileCRe, "\\'").replace(me.re, fn) + "';};"
|
|
} else {
|
|
body = ["this.compiled = function(values){ return ['"];
|
|
body.push(me.html.replace(me.compileARe, "\\\\").replace(me.compileBRe, "\\n").replace(me.compileCRe, "\\'").replace(me.re, fn));
|
|
body.push("'].join('');};");
|
|
body = body.join("")
|
|
}
|
|
eval(body);
|
|
return me
|
|
}, call:function (c, b, a) {
|
|
return this[c](b, a)
|
|
}});
|
|
Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
|
|
Ext.util.Functions = {createInterceptor:function (c, b, a) {
|
|
var d = c;
|
|
if (!Ext.isFunction(b)) {
|
|
return c
|
|
} else {
|
|
return function () {
|
|
var g = this, e = arguments;
|
|
b.target = g;
|
|
b.method = c;
|
|
return(b.apply(a || g || window, e) !== false) ? c.apply(g || window, e) : null
|
|
}
|
|
}
|
|
}, createDelegate:function (c, d, b, a) {
|
|
if (!Ext.isFunction(c)) {
|
|
return c
|
|
}
|
|
return function () {
|
|
var g = b || arguments;
|
|
if (a === true) {
|
|
g = Array.prototype.slice.call(arguments, 0);
|
|
g = g.concat(b)
|
|
} else {
|
|
if (Ext.isNumber(a)) {
|
|
g = Array.prototype.slice.call(arguments, 0);
|
|
var e = [a, 0].concat(b);
|
|
Array.prototype.splice.apply(g, e)
|
|
}
|
|
}
|
|
return c.apply(d || window, g)
|
|
}
|
|
}, defer:function (d, c, e, b, a) {
|
|
d = Ext.util.Functions.createDelegate(d, e, b, a);
|
|
if (c > 0) {
|
|
return setTimeout(d, c)
|
|
}
|
|
d();
|
|
return 0
|
|
}, createSequence:function (c, b, a) {
|
|
if (!Ext.isFunction(b)) {
|
|
return c
|
|
} else {
|
|
return function () {
|
|
var d = c.apply(this || window, arguments);
|
|
b.apply(a || this || window, arguments);
|
|
return d
|
|
}
|
|
}
|
|
}};
|
|
Ext.defer = Ext.util.Functions.defer;
|
|
Ext.createInterceptor = Ext.util.Functions.createInterceptor;
|
|
Ext.createSequence = Ext.util.Functions.createSequence;
|
|
Ext.createDelegate = Ext.util.Functions.createDelegate;
|
|
Ext.apply(Ext.util.Observable.prototype, function () {
|
|
function a(j) {
|
|
var i = (this.methodEvents = this.methodEvents || {})[j], d, c, g, h = this;
|
|
if (!i) {
|
|
this.methodEvents[j] = i = {};
|
|
i.originalFn = this[j];
|
|
i.methodName = j;
|
|
i.before = [];
|
|
i.after = [];
|
|
var b = function (l, k, e) {
|
|
if ((c = l.apply(k || h, e)) !== undefined) {
|
|
if (typeof c == "object") {
|
|
if (c.returnValue !== undefined) {
|
|
d = c.returnValue
|
|
} else {
|
|
d = c
|
|
}
|
|
g = !!c.cancel
|
|
} else {
|
|
if (c === false) {
|
|
g = true
|
|
} else {
|
|
d = c
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this[j] = function () {
|
|
var l = Array.prototype.slice.call(arguments, 0), k;
|
|
d = c = undefined;
|
|
g = false;
|
|
for (var m = 0, e = i.before.length; m < e; m++) {
|
|
k = i.before[m];
|
|
b(k.fn, k.scope, l);
|
|
if (g) {
|
|
return d
|
|
}
|
|
}
|
|
if ((c = i.originalFn.apply(h, l)) !== undefined) {
|
|
d = c
|
|
}
|
|
for (var m = 0, e = i.after.length; m < e; m++) {
|
|
k = i.after[m];
|
|
b(k.fn, k.scope, l);
|
|
if (g) {
|
|
return d
|
|
}
|
|
}
|
|
return d
|
|
}
|
|
}
|
|
return i
|
|
}
|
|
|
|
return{beforeMethod:function (d, c, b) {
|
|
a.call(this, d).before.push({fn:c, scope:b})
|
|
}, afterMethod:function (d, c, b) {
|
|
a.call(this, d).after.push({fn:c, scope:b})
|
|
}, removeMethodListener:function (j, g, d) {
|
|
var h = this.getMethodEvent(j);
|
|
for (var c = 0, b = h.before.length; c < b; c++) {
|
|
if (h.before[c].fn == g && h.before[c].scope == d) {
|
|
h.before.splice(c, 1);
|
|
return
|
|
}
|
|
}
|
|
for (var c = 0, b = h.after.length; c < b; c++) {
|
|
if (h.after[c].fn == g && h.after[c].scope == d) {
|
|
h.after.splice(c, 1);
|
|
return
|
|
}
|
|
}
|
|
}, relayEvents:function (j, e) {
|
|
var h = this;
|
|
|
|
function g(i) {
|
|
return function () {
|
|
return h.fireEvent.apply(h, [i].concat(Array.prototype.slice.call(arguments, 0)))
|
|
}
|
|
}
|
|
|
|
for (var d = 0, b = e.length; d < b; d++) {
|
|
var c = e[d];
|
|
h.events[c] = h.events[c] || true;
|
|
j.on(c, g(c), h)
|
|
}
|
|
}, enableBubble:function (e) {
|
|
var g = this;
|
|
if (!Ext.isEmpty(e)) {
|
|
e = Ext.isArray(e) ? e : Array.prototype.slice.call(arguments, 0);
|
|
for (var d = 0, b = e.length; d < b; d++) {
|
|
var c = e[d];
|
|
c = c.toLowerCase();
|
|
var h = g.events[c] || true;
|
|
if (typeof h == "boolean") {
|
|
h = new Ext.util.Event(g, c);
|
|
g.events[c] = h
|
|
}
|
|
h.bubble = true
|
|
}
|
|
}
|
|
}}
|
|
}());
|
|
Ext.util.Observable.capture = function (c, b, a) {
|
|
c.fireEvent = c.fireEvent.createInterceptor(b, a)
|
|
};
|
|
Ext.util.Observable.observeClass = function (b, a) {
|
|
if (b) {
|
|
if (!b.fireEvent) {
|
|
Ext.apply(b, new Ext.util.Observable());
|
|
Ext.util.Observable.capture(b.prototype, b.fireEvent, b)
|
|
}
|
|
if (typeof a == "object") {
|
|
b.on(a)
|
|
}
|
|
return b
|
|
}
|
|
};
|
|
Ext.apply(Ext.EventManager, function () {
|
|
var d, k, g, b, a = Ext.lib.Dom, j = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/, c = Ext.EventManager._unload, i = 0, h = 0, e = Ext.isWebKit ? Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1]) >= 525 : !((Ext.isGecko && !Ext.isWindows) || Ext.isOpera);
|
|
return{_unload:function () {
|
|
Ext.EventManager.un(window, "resize", this.fireWindowResize, this);
|
|
c.call(Ext.EventManager)
|
|
}, doResizeEvent:function () {
|
|
var m = a.getViewHeight(), l = a.getViewWidth();
|
|
if (h != m || i != l) {
|
|
d.fire(i = l, h = m)
|
|
}
|
|
}, onWindowResize:function (n, m, l) {
|
|
if (!d) {
|
|
d = new Ext.util.Event();
|
|
k = new Ext.util.DelayedTask(this.doResizeEvent);
|
|
Ext.EventManager.on(window, "resize", this.fireWindowResize, this)
|
|
}
|
|
d.addListener(n, m, l)
|
|
}, fireWindowResize:function () {
|
|
if (d) {
|
|
k.delay(100)
|
|
}
|
|
}, onTextResize:function (o, n, l) {
|
|
if (!g) {
|
|
g = new Ext.util.Event();
|
|
var m = new Ext.Element(document.createElement("div"));
|
|
m.dom.className = "x-text-resize";
|
|
m.dom.innerHTML = "X";
|
|
m.appendTo(document.body);
|
|
b = m.dom.offsetHeight;
|
|
setInterval(function () {
|
|
if (m.dom.offsetHeight != b) {
|
|
g.fire(b, b = m.dom.offsetHeight)
|
|
}
|
|
}, this.textResizeInterval)
|
|
}
|
|
g.addListener(o, n, l)
|
|
}, removeResizeListener:function (m, l) {
|
|
if (d) {
|
|
d.removeListener(m, l)
|
|
}
|
|
}, fireResize:function () {
|
|
if (d) {
|
|
d.fire(a.getViewWidth(), a.getViewHeight())
|
|
}
|
|
}, textResizeInterval:50, ieDeferSrc:false, getKeyEvent:function () {
|
|
return e ? "keydown" : "keypress"
|
|
}, useKeydown:e}
|
|
}());
|
|
Ext.EventManager.on = Ext.EventManager.addListener;
|
|
Ext.apply(Ext.EventObjectImpl.prototype, {BACKSPACE:8, TAB:9, NUM_CENTER:12, ENTER:13, RETURN:13, SHIFT:16, CTRL:17, CONTROL:17, ALT:18, PAUSE:19, CAPS_LOCK:20, ESC:27, SPACE:32, PAGE_UP:33, PAGEUP:33, PAGE_DOWN:34, PAGEDOWN:34, END:35, HOME:36, LEFT:37, UP:38, RIGHT:39, DOWN:40, PRINT_SCREEN:44, INSERT:45, DELETE:46, ZERO:48, ONE:49, TWO:50, THREE:51, FOUR:52, FIVE:53, SIX:54, SEVEN:55, EIGHT:56, NINE:57, A:65, B:66, C:67, D:68, E:69, F:70, G:71, H:72, I:73, J:74, K:75, L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86, W:87, X:88, Y:89, Z:90, CONTEXT_MENU:93, NUM_ZERO:96, NUM_ONE:97, NUM_TWO:98, NUM_THREE:99, NUM_FOUR:100, NUM_FIVE:101, NUM_SIX:102, NUM_SEVEN:103, NUM_EIGHT:104, NUM_NINE:105, NUM_MULTIPLY:106, NUM_PLUS:107, NUM_MINUS:109, NUM_PERIOD:110, NUM_DIVISION:111, F1:112, F2:113, F3:114, F4:115, F5:116, F6:117, F7:118, F8:119, F9:120, F10:121, F11:122, F12:123, isNavKeyPress:function () {
|
|
var b = this, a = this.normalizeKey(b.keyCode);
|
|
return(a >= 33 && a <= 40) || a == b.RETURN || a == b.TAB || a == b.ESC
|
|
}, isSpecialKey:function () {
|
|
var a = this.normalizeKey(this.keyCode);
|
|
return(this.type == "keypress" && this.ctrlKey) || this.isNavKeyPress() || (a == this.BACKSPACE) || (a >= 16 && a <= 20) || (a >= 44 && a <= 46)
|
|
}, getPoint:function () {
|
|
return new Ext.lib.Point(this.xy[0], this.xy[1])
|
|
}, hasModifier:function () {
|
|
return((this.ctrlKey || this.altKey) || this.shiftKey)
|
|
}});
|
|
Ext.Element.addMethods({swallowEvent:function (a, b) {
|
|
var d = this;
|
|
|
|
function c(g) {
|
|
g.stopPropagation();
|
|
if (b) {
|
|
g.preventDefault()
|
|
}
|
|
}
|
|
|
|
if (Ext.isArray(a)) {
|
|
Ext.each(a, function (g) {
|
|
d.on(g, c)
|
|
});
|
|
return d
|
|
}
|
|
d.on(a, c);
|
|
return d
|
|
}, relayEvent:function (a, b) {
|
|
this.on(a, function (c) {
|
|
b.fireEvent(a, c)
|
|
})
|
|
}, clean:function (b) {
|
|
var d = this, e = d.dom, g = e.firstChild, c = -1;
|
|
if (Ext.Element.data(e, "isCleaned") && b !== true) {
|
|
return d
|
|
}
|
|
while (g) {
|
|
var a = g.nextSibling;
|
|
if (g.nodeType == 3 && !(/\S/.test(g.nodeValue))) {
|
|
e.removeChild(g)
|
|
} else {
|
|
g.nodeIndex = ++c
|
|
}
|
|
g = a
|
|
}
|
|
Ext.Element.data(e, "isCleaned", true);
|
|
return d
|
|
}, load:function () {
|
|
var a = this.getUpdater();
|
|
a.update.apply(a, arguments);
|
|
return this
|
|
}, getUpdater:function () {
|
|
return this.updateManager || (this.updateManager = new Ext.Updater(this))
|
|
}, update:function (html, loadScripts, callback) {
|
|
if (!this.dom) {
|
|
return this
|
|
}
|
|
html = html || "";
|
|
if (loadScripts !== true) {
|
|
this.dom.innerHTML = html;
|
|
if (typeof callback == "function") {
|
|
callback()
|
|
}
|
|
return this
|
|
}
|
|
var id = Ext.id(), dom = this.dom;
|
|
html += '<span id="' + id + '"></span>';
|
|
Ext.lib.Event.onAvailable(id, function () {
|
|
var DOC = document, hd = DOC.getElementsByTagName("head")[0], re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig, srcRe = /\ssrc=([\'\"])(.*?)\1/i, typeRe = /\stype=([\'\"])(.*?)\1/i, match, attrs, srcMatch, typeMatch, el, s;
|
|
while ((match = re.exec(html))) {
|
|
attrs = match[1];
|
|
srcMatch = attrs ? attrs.match(srcRe) : false;
|
|
if (srcMatch && srcMatch[2]) {
|
|
s = DOC.createElement("script");
|
|
s.src = srcMatch[2];
|
|
typeMatch = attrs.match(typeRe);
|
|
if (typeMatch && typeMatch[2]) {
|
|
s.type = typeMatch[2]
|
|
}
|
|
hd.appendChild(s)
|
|
} else {
|
|
if (match[2] && match[2].length > 0) {
|
|
if (window.execScript) {
|
|
window.execScript(match[2])
|
|
} else {
|
|
window.eval(match[2])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
el = DOC.getElementById(id);
|
|
if (el) {
|
|
Ext.removeNode(el)
|
|
}
|
|
if (typeof callback == "function") {
|
|
callback()
|
|
}
|
|
});
|
|
dom.innerHTML = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
|
|
return this
|
|
}, removeAllListeners:function () {
|
|
this.removeAnchor();
|
|
Ext.EventManager.removeAll(this.dom);
|
|
return this
|
|
}, createProxy:function (a, e, d) {
|
|
a = (typeof a == "object") ? a : {tag:"div", cls:a};
|
|
var c = this, b = e ? Ext.DomHelper.append(e, a, true) : Ext.DomHelper.insertBefore(c.dom, a, true);
|
|
if (d && c.setBox && c.getBox) {
|
|
b.setBox(c.getBox())
|
|
}
|
|
return b
|
|
}});
|
|
Ext.Element.prototype.getUpdateManager = Ext.Element.prototype.getUpdater;
|
|
Ext.Element.addMethods({getAnchorXY:function (e, l, q) {
|
|
e = (e || "tl").toLowerCase();
|
|
q = q || {};
|
|
var k = this, b = k.dom == document.body || k.dom == document, n = q.width || b ? Ext.lib.Dom.getViewWidth() : k.getWidth(), i = q.height || b ? Ext.lib.Dom.getViewHeight() : k.getHeight(), p, a = Math.round, c = k.getXY(), m = k.getScroll(), j = b ? m.left : !l ? c[0] : 0, g = b ? m.top : !l ? c[1] : 0, d = {c:[a(n * 0.5), a(i * 0.5)], t:[a(n * 0.5), 0], l:[0, a(i * 0.5)], r:[n, a(i * 0.5)], b:[a(n * 0.5), i], tl:[0, 0], bl:[0, i], br:[n, i], tr:[n, 0]};
|
|
p = d[e];
|
|
return[p[0] + j, p[1] + g]
|
|
}, anchorTo:function (b, h, c, a, k, l) {
|
|
var i = this, e = i.dom, j = !Ext.isEmpty(k), d = function () {
|
|
Ext.fly(e).alignTo(b, h, c, a);
|
|
Ext.callback(l, Ext.fly(e))
|
|
}, g = this.getAnchor();
|
|
this.removeAnchor();
|
|
Ext.apply(g, {fn:d, scroll:j});
|
|
Ext.EventManager.onWindowResize(d, null);
|
|
if (j) {
|
|
Ext.EventManager.on(window, "scroll", d, null, {buffer:!isNaN(k) ? k : 50})
|
|
}
|
|
d.call(i);
|
|
return i
|
|
}, removeAnchor:function () {
|
|
var b = this, a = this.getAnchor();
|
|
if (a && a.fn) {
|
|
Ext.EventManager.removeResizeListener(a.fn);
|
|
if (a.scroll) {
|
|
Ext.EventManager.un(window, "scroll", a.fn)
|
|
}
|
|
delete a.fn
|
|
}
|
|
return b
|
|
}, getAnchor:function () {
|
|
var b = Ext.Element.data, c = this.dom;
|
|
if (!c) {
|
|
return
|
|
}
|
|
var a = b(c, "_anchor");
|
|
if (!a) {
|
|
a = b(c, "_anchor", {})
|
|
}
|
|
return a
|
|
}, getAlignToXY:function (g, A, B) {
|
|
g = Ext.get(g);
|
|
if (!g || !g.dom) {
|
|
throw"Element.alignToXY with an element that doesn't exist"
|
|
}
|
|
B = B || [0, 0];
|
|
A = (!A || A == "?" ? "tl-bl?" : (!(/-/).test(A) && A !== "" ? "tl-" + A : A || "tl-bl")).toLowerCase();
|
|
var K = this, H = K.dom, M, L, n, l, s, F, v, t = Ext.lib.Dom.getViewWidth() - 10, G = Ext.lib.Dom.getViewHeight() - 10, b, i, j, k, u, z, N = document, J = N.documentElement, q = N.body, E = (J.scrollLeft || q.scrollLeft || 0) + 5, D = (J.scrollTop || q.scrollTop || 0) + 5, I = false, e = "", a = "", C = A.match(/^([a-z]+)-([a-z]+)(\?)?$/);
|
|
if (!C) {
|
|
throw"Element.alignTo with an invalid alignment " + A
|
|
}
|
|
e = C[1];
|
|
a = C[2];
|
|
I = !!C[3];
|
|
M = K.getAnchorXY(e, true);
|
|
L = g.getAnchorXY(a, false);
|
|
n = L[0] - M[0] + B[0];
|
|
l = L[1] - M[1] + B[1];
|
|
if (I) {
|
|
s = K.getWidth();
|
|
F = K.getHeight();
|
|
v = g.getRegion();
|
|
b = e.charAt(0);
|
|
i = e.charAt(e.length - 1);
|
|
j = a.charAt(0);
|
|
k = a.charAt(a.length - 1);
|
|
u = ((b == "t" && j == "b") || (b == "b" && j == "t"));
|
|
z = ((i == "r" && k == "l") || (i == "l" && k == "r"));
|
|
if (n + s > t + E) {
|
|
n = z ? v.left - s : t + E - s
|
|
}
|
|
if (n < E) {
|
|
n = z ? v.right : E
|
|
}
|
|
if (l + F > G + D) {
|
|
l = u ? v.top - F : G + D - F
|
|
}
|
|
if (l < D) {
|
|
l = u ? v.bottom : D
|
|
}
|
|
}
|
|
return[n, l]
|
|
}, alignTo:function (c, a, e, b) {
|
|
var d = this;
|
|
return d.setXY(d.getAlignToXY(c, a, e), d.preanim && !!b ? d.preanim(arguments, 3) : false)
|
|
}, adjustForConstraints:function (c, a, b) {
|
|
return this.getConstrainToXY(a || document, false, b, c) || c
|
|
}, getConstrainToXY:function (b, a, c, e) {
|
|
var d = {top:0, left:0, bottom:0, right:0};
|
|
return function (i, A, l, n) {
|
|
i = Ext.get(i);
|
|
l = l ? Ext.applyIf(l, d) : d;
|
|
var z, D, v = 0, u = 0;
|
|
if (i.dom == document.body || i.dom == document) {
|
|
z = Ext.lib.Dom.getViewWidth();
|
|
D = Ext.lib.Dom.getViewHeight()
|
|
} else {
|
|
z = i.dom.clientWidth;
|
|
D = i.dom.clientHeight;
|
|
if (!A) {
|
|
var t = i.getXY();
|
|
v = t[0];
|
|
u = t[1]
|
|
}
|
|
}
|
|
var r = i.getScroll();
|
|
v += l.left + r.left;
|
|
u += l.top + r.top;
|
|
z -= l.right;
|
|
D -= l.bottom;
|
|
var B = v + z, g = u + D, j = n || (!A ? this.getXY() : [this.getLeft(true), this.getTop(true)]), p = j[0], o = j[1], k = this.getConstrainOffset(), q = this.dom.offsetWidth + k, C = this.dom.offsetHeight + k;
|
|
var m = false;
|
|
if ((p + q) > B) {
|
|
p = B - q;
|
|
m = true
|
|
}
|
|
if ((o + C) > g) {
|
|
o = g - C;
|
|
m = true
|
|
}
|
|
if (p < v) {
|
|
p = v;
|
|
m = true
|
|
}
|
|
if (o < u) {
|
|
o = u;
|
|
m = true
|
|
}
|
|
return m ? [p, o] : false
|
|
}
|
|
}(), getConstrainOffset:function () {
|
|
return 0
|
|
}, getCenterXY:function () {
|
|
return this.getAlignToXY(document, "c-c")
|
|
}, center:function (a) {
|
|
return this.alignTo(a || document, "c-c")
|
|
}});
|
|
Ext.Element.addMethods({select:function (a, b) {
|
|
return Ext.Element.select(a, b, this.dom)
|
|
}});
|
|
Ext.apply(Ext.Element.prototype, function () {
|
|
var c = Ext.getDom, a = Ext.get, b = Ext.DomHelper;
|
|
return{insertSibling:function (i, g, h) {
|
|
var j = this, e, d = (g || "before").toLowerCase() == "after", k;
|
|
if (Ext.isArray(i)) {
|
|
k = j;
|
|
Ext.each(i, function (l) {
|
|
e = Ext.fly(k, "_internal").insertSibling(l, g, h);
|
|
if (d) {
|
|
k = e
|
|
}
|
|
});
|
|
return e
|
|
}
|
|
i = i || {};
|
|
if (i.nodeType || i.dom) {
|
|
e = j.dom.parentNode.insertBefore(c(i), d ? j.dom.nextSibling : j.dom);
|
|
if (!h) {
|
|
e = a(e)
|
|
}
|
|
} else {
|
|
if (d && !j.dom.nextSibling) {
|
|
e = b.append(j.dom.parentNode, i, !h)
|
|
} else {
|
|
e = b[d ? "insertAfter" : "insertBefore"](j.dom, i, !h)
|
|
}
|
|
}
|
|
return e
|
|
}}
|
|
}());
|
|
Ext.Element.boxMarkup = '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
|
|
Ext.Element.addMethods(function () {
|
|
var a = "_internal", b = /(\d+\.?\d+)px/;
|
|
return{applyStyles:function (c) {
|
|
Ext.DomHelper.applyStyles(this.dom, c);
|
|
return this
|
|
}, getStyles:function () {
|
|
var c = {};
|
|
Ext.each(arguments, function (d) {
|
|
c[d] = this.getStyle(d)
|
|
}, this);
|
|
return c
|
|
}, setOverflow:function (c) {
|
|
var d = this.dom;
|
|
if (c == "auto" && Ext.isMac && Ext.isGecko2) {
|
|
d.style.overflow = "hidden";
|
|
(function () {
|
|
d.style.overflow = "auto"
|
|
}).defer(1)
|
|
} else {
|
|
d.style.overflow = c
|
|
}
|
|
}, boxWrap:function (c) {
|
|
c = c || "x-box";
|
|
var d = Ext.get(this.insertHtml("beforeBegin", "<div class='" + c + "'>" + String.format(Ext.Element.boxMarkup, c) + "</div>"));
|
|
Ext.DomQuery.selectNode("." + c + "-mc", d.dom).appendChild(this.dom);
|
|
return d
|
|
}, setSize:function (e, c, d) {
|
|
var g = this;
|
|
if (typeof e == "object") {
|
|
c = e.height;
|
|
e = e.width
|
|
}
|
|
e = g.adjustWidth(e);
|
|
c = g.adjustHeight(c);
|
|
if (!d || !g.anim) {
|
|
g.dom.style.width = g.addUnits(e);
|
|
g.dom.style.height = g.addUnits(c)
|
|
} else {
|
|
g.anim({width:{to:e}, height:{to:c}}, g.preanim(arguments, 2))
|
|
}
|
|
return g
|
|
}, getComputedHeight:function () {
|
|
var d = this, c = Math.max(d.dom.offsetHeight, d.dom.clientHeight);
|
|
if (!c) {
|
|
c = parseFloat(d.getStyle("height")) || 0;
|
|
if (!d.isBorderBox()) {
|
|
c += d.getFrameWidth("tb")
|
|
}
|
|
}
|
|
return c
|
|
}, getComputedWidth:function () {
|
|
var c = Math.max(this.dom.offsetWidth, this.dom.clientWidth);
|
|
if (!c) {
|
|
c = parseFloat(this.getStyle("width")) || 0;
|
|
if (!this.isBorderBox()) {
|
|
c += this.getFrameWidth("lr")
|
|
}
|
|
}
|
|
return c
|
|
}, getFrameWidth:function (d, c) {
|
|
return c && this.isBorderBox() ? 0 : (this.getPadding(d) + this.getBorderWidth(d))
|
|
}, addClassOnOver:function (c) {
|
|
this.hover(function () {
|
|
Ext.fly(this, a).addClass(c)
|
|
}, function () {
|
|
Ext.fly(this, a).removeClass(c)
|
|
});
|
|
return this
|
|
}, addClassOnFocus:function (c) {
|
|
this.on("focus", function () {
|
|
Ext.fly(this, a).addClass(c)
|
|
}, this.dom);
|
|
this.on("blur", function () {
|
|
Ext.fly(this, a).removeClass(c)
|
|
}, this.dom);
|
|
return this
|
|
}, addClassOnClick:function (c) {
|
|
var d = this.dom;
|
|
this.on("mousedown", function () {
|
|
Ext.fly(d, a).addClass(c);
|
|
var g = Ext.getDoc(), e = function () {
|
|
Ext.fly(d, a).removeClass(c);
|
|
g.removeListener("mouseup", e)
|
|
};
|
|
g.on("mouseup", e)
|
|
});
|
|
return this
|
|
}, getViewSize:function () {
|
|
var g = document, h = this.dom, c = (h == g || h == g.body);
|
|
if (c) {
|
|
var e = Ext.lib.Dom;
|
|
return{width:e.getViewWidth(), height:e.getViewHeight()}
|
|
} else {
|
|
return{width:h.clientWidth, height:h.clientHeight}
|
|
}
|
|
}, getStyleSize:function () {
|
|
var j = this, c, i, l = document, m = this.dom, e = (m == l || m == l.body), g = m.style;
|
|
if (e) {
|
|
var k = Ext.lib.Dom;
|
|
return{width:k.getViewWidth(), height:k.getViewHeight()}
|
|
}
|
|
if (g.width && g.width != "auto") {
|
|
c = parseFloat(g.width);
|
|
if (j.isBorderBox()) {
|
|
c -= j.getFrameWidth("lr")
|
|
}
|
|
}
|
|
if (g.height && g.height != "auto") {
|
|
i = parseFloat(g.height);
|
|
if (j.isBorderBox()) {
|
|
i -= j.getFrameWidth("tb")
|
|
}
|
|
}
|
|
return{width:c || j.getWidth(true), height:i || j.getHeight(true)}
|
|
}, getSize:function (c) {
|
|
return{width:this.getWidth(c), height:this.getHeight(c)}
|
|
}, repaint:function () {
|
|
var c = this.dom;
|
|
this.addClass("x-repaint");
|
|
setTimeout(function () {
|
|
Ext.fly(c).removeClass("x-repaint")
|
|
}, 1);
|
|
return this
|
|
}, unselectable:function () {
|
|
this.dom.unselectable = "on";
|
|
return this.swallowEvent("selectstart", true).applyStyles("-moz-user-select:none;-khtml-user-select:none;").addClass("x-unselectable")
|
|
}, getMargins:function (d) {
|
|
var e = this, c, g = {t:"top", l:"left", r:"right", b:"bottom"}, h = {};
|
|
if (!d) {
|
|
for (c in e.margins) {
|
|
h[g[c]] = parseFloat(e.getStyle(e.margins[c])) || 0
|
|
}
|
|
return h
|
|
} else {
|
|
return e.addStyles.call(e, d, e.margins)
|
|
}
|
|
}}
|
|
}());
|
|
Ext.Element.addMethods({setBox:function (e, g, b) {
|
|
var d = this, a = e.width, c = e.height;
|
|
if ((g && !d.autoBoxAdjust) && !d.isBorderBox()) {
|
|
a -= (d.getBorderWidth("lr") + d.getPadding("lr"));
|
|
c -= (d.getBorderWidth("tb") + d.getPadding("tb"))
|
|
}
|
|
d.setBounds(e.x, e.y, a, c, d.animTest.call(d, arguments, b, 2));
|
|
return d
|
|
}, getBox:function (j, p) {
|
|
var m = this, v, e, o, d = m.getBorderWidth, q = m.getPadding, g, a, u, n;
|
|
if (!p) {
|
|
v = m.getXY()
|
|
} else {
|
|
e = parseInt(m.getStyle("left"), 10) || 0;
|
|
o = parseInt(m.getStyle("top"), 10) || 0;
|
|
v = [e, o]
|
|
}
|
|
var c = m.dom, s = c.offsetWidth, i = c.offsetHeight, k;
|
|
if (!j) {
|
|
k = {x:v[0], y:v[1], 0:v[0], 1:v[1], width:s, height:i}
|
|
} else {
|
|
g = d.call(m, "l") + q.call(m, "l");
|
|
a = d.call(m, "r") + q.call(m, "r");
|
|
u = d.call(m, "t") + q.call(m, "t");
|
|
n = d.call(m, "b") + q.call(m, "b");
|
|
k = {x:v[0] + g, y:v[1] + u, 0:v[0] + g, 1:v[1] + u, width:s - (g + a), height:i - (u + n)}
|
|
}
|
|
k.right = k.x + k.width;
|
|
k.bottom = k.y + k.height;
|
|
return k
|
|
}, move:function (j, b, c) {
|
|
var g = this, m = g.getXY(), k = m[0], i = m[1], d = [k - b, i], l = [k + b, i], h = [k, i - b], a = [k, i + b], e = {l:d, left:d, r:l, right:l, t:h, top:h, up:h, b:a, bottom:a, down:a};
|
|
j = j.toLowerCase();
|
|
g.moveTo(e[j][0], e[j][1], g.animTest.call(g, arguments, c, 2))
|
|
}, setLeftTop:function (d, c) {
|
|
var b = this, a = b.dom.style;
|
|
a.left = b.addUnits(d);
|
|
a.top = b.addUnits(c);
|
|
return b
|
|
}, getRegion:function () {
|
|
return Ext.lib.Dom.getRegion(this.dom)
|
|
}, setBounds:function (b, g, d, a, c) {
|
|
var e = this;
|
|
if (!c || !e.anim) {
|
|
e.setSize(d, a);
|
|
e.setLocation(b, g)
|
|
} else {
|
|
e.anim({points:{to:[b, g]}, width:{to:e.adjustWidth(d)}, height:{to:e.adjustHeight(a)}}, e.preanim(arguments, 4), "motion")
|
|
}
|
|
return e
|
|
}, setRegion:function (b, a) {
|
|
return this.setBounds(b.left, b.top, b.right - b.left, b.bottom - b.top, this.animTest.call(this, arguments, a, 1))
|
|
}});
|
|
Ext.Element.addMethods({scrollTo:function (b, d, a) {
|
|
var e = /top/i.test(b), c = this, g = c.dom, h;
|
|
if (!a || !c.anim) {
|
|
h = "scroll" + (e ? "Top" : "Left");
|
|
g[h] = d
|
|
} else {
|
|
h = "scroll" + (e ? "Left" : "Top");
|
|
c.anim({scroll:{to:e ? [g[h], d] : [d, g[h]]}}, c.preanim(arguments, 2), "scroll")
|
|
}
|
|
return c
|
|
}, scrollIntoView:function (e, i) {
|
|
var p = Ext.getDom(e) || Ext.getBody().dom, h = this.dom, g = this.getOffsetsTo(p), k = g[0] + p.scrollLeft, u = g[1] + p.scrollTop, q = u + h.offsetHeight, d = k + h.offsetWidth, a = p.clientHeight, m = parseInt(p.scrollTop, 10), s = parseInt(p.scrollLeft, 10), j = m + a, n = s + p.clientWidth;
|
|
if (h.offsetHeight > a || u < m) {
|
|
p.scrollTop = u
|
|
} else {
|
|
if (q > j) {
|
|
p.scrollTop = q - a
|
|
}
|
|
}
|
|
p.scrollTop = p.scrollTop;
|
|
if (i !== false) {
|
|
if (h.offsetWidth > p.clientWidth || k < s) {
|
|
p.scrollLeft = k
|
|
} else {
|
|
if (d > n) {
|
|
p.scrollLeft = d - p.clientWidth
|
|
}
|
|
}
|
|
p.scrollLeft = p.scrollLeft
|
|
}
|
|
return this
|
|
}, scrollChildIntoView:function (b, a) {
|
|
Ext.fly(b, "_scrollChildIntoView").scrollIntoView(this, a)
|
|
}, scroll:function (m, b, d) {
|
|
if (!this.isScrollable()) {
|
|
return false
|
|
}
|
|
var e = this.dom, g = e.scrollLeft, p = e.scrollTop, n = e.scrollWidth, k = e.scrollHeight, i = e.clientWidth, a = e.clientHeight, c = false, o, j = {l:Math.min(g + b, n - i), r:o = Math.max(g - b, 0), t:Math.max(p - b, 0), b:Math.min(p + b, k - a)};
|
|
j.d = j.b;
|
|
j.u = j.t;
|
|
m = m.substr(0, 1);
|
|
if ((o = j[m]) > -1) {
|
|
c = true;
|
|
this.scrollTo(m == "l" || m == "r" ? "left" : "top", o, this.preanim(arguments, 2))
|
|
}
|
|
return c
|
|
}});
|
|
Ext.Element.addMethods(function () {
|
|
var d = "visibility", b = "display", a = "hidden", h = "none", c = "x-masked", g = "x-masked-relative", e = Ext.Element.data;
|
|
return{isVisible:function (i) {
|
|
var j = !this.isStyle(d, a) && !this.isStyle(b, h), k = this.dom.parentNode;
|
|
if (i !== true || !j) {
|
|
return j
|
|
}
|
|
while (k && !(/^body/i.test(k.tagName))) {
|
|
if (!Ext.fly(k, "_isVisible").isVisible()) {
|
|
return false
|
|
}
|
|
k = k.parentNode
|
|
}
|
|
return true
|
|
}, isDisplayed:function () {
|
|
return !this.isStyle(b, h)
|
|
}, enableDisplayMode:function (i) {
|
|
this.setVisibilityMode(Ext.Element.DISPLAY);
|
|
if (!Ext.isEmpty(i)) {
|
|
e(this.dom, "originalDisplay", i)
|
|
}
|
|
return this
|
|
}, mask:function (j, n) {
|
|
var p = this, l = p.dom, o = Ext.DomHelper, m = "ext-el-mask-msg", i, q;
|
|
if (!/^body/i.test(l.tagName) && p.getStyle("position") == "static") {
|
|
p.addClass(g)
|
|
}
|
|
if (i = e(l, "maskMsg")) {
|
|
i.remove()
|
|
}
|
|
if (i = e(l, "mask")) {
|
|
i.remove()
|
|
}
|
|
q = o.append(l, {cls:"ext-el-mask"}, true);
|
|
e(l, "mask", q);
|
|
p.addClass(c);
|
|
q.setDisplayed(true);
|
|
if (typeof j == "string") {
|
|
var k = o.append(l, {cls:m, cn:{tag:"div"}}, true);
|
|
e(l, "maskMsg", k);
|
|
k.dom.className = n ? m + " " + n : m;
|
|
k.dom.firstChild.innerHTML = j;
|
|
k.setDisplayed(true);
|
|
k.center(p)
|
|
}
|
|
if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && p.getStyle("height") == "auto") {
|
|
q.setSize(undefined, p.getHeight())
|
|
}
|
|
return q
|
|
}, unmask:function () {
|
|
var k = this, l = k.dom, i = e(l, "mask"), j = e(l, "maskMsg");
|
|
if (i) {
|
|
if (j) {
|
|
j.remove();
|
|
e(l, "maskMsg", undefined)
|
|
}
|
|
i.remove();
|
|
e(l, "mask", undefined);
|
|
k.removeClass([c, g])
|
|
}
|
|
}, isMasked:function () {
|
|
var i = e(this.dom, "mask");
|
|
return i && i.isVisible()
|
|
}, createShim:function () {
|
|
var i = document.createElement("iframe"), j;
|
|
i.frameBorder = "0";
|
|
i.className = "ext-shim";
|
|
i.src = Ext.SSL_SECURE_URL;
|
|
j = Ext.get(this.dom.parentNode.insertBefore(i, this.dom));
|
|
j.autoBoxAdjust = false;
|
|
return j
|
|
}}
|
|
}());
|
|
Ext.Element.addMethods({addKeyListener:function (b, d, c) {
|
|
var a;
|
|
if (typeof b != "object" || Ext.isArray(b)) {
|
|
a = {key:b, fn:d, scope:c}
|
|
} else {
|
|
a = {key:b.key, shift:b.shift, ctrl:b.ctrl, alt:b.alt, fn:d, scope:c}
|
|
}
|
|
return new Ext.KeyMap(this, a)
|
|
}, addKeyMap:function (a) {
|
|
return new Ext.KeyMap(this, a)
|
|
}});
|
|
Ext.CompositeElementLite.importElementMethods();
|
|
Ext.apply(Ext.CompositeElementLite.prototype, {addElements:function (c, a) {
|
|
if (!c) {
|
|
return this
|
|
}
|
|
if (typeof c == "string") {
|
|
c = Ext.Element.selectorFunction(c, a)
|
|
}
|
|
var b = this.elements;
|
|
Ext.each(c, function (d) {
|
|
b.push(Ext.get(d))
|
|
});
|
|
return this
|
|
}, first:function () {
|
|
return this.item(0)
|
|
}, last:function () {
|
|
return this.item(this.getCount() - 1)
|
|
}, contains:function (a) {
|
|
return this.indexOf(a) != -1
|
|
}, removeElement:function (d, e) {
|
|
var c = this, a = this.elements, b;
|
|
Ext.each(d, function (g) {
|
|
if ((b = (a[g] || a[g = c.indexOf(g)]))) {
|
|
if (e) {
|
|
if (b.dom) {
|
|
b.remove()
|
|
} else {
|
|
Ext.removeNode(b)
|
|
}
|
|
}
|
|
a.splice(g, 1)
|
|
}
|
|
});
|
|
return this
|
|
}});
|
|
Ext.CompositeElement = Ext.extend(Ext.CompositeElementLite, {constructor:function (b, a) {
|
|
this.elements = [];
|
|
this.add(b, a)
|
|
}, getElement:function (a) {
|
|
return a
|
|
}, transformElement:function (a) {
|
|
return Ext.get(a)
|
|
}});
|
|
Ext.Element.select = function (a, d, b) {
|
|
var c;
|
|
if (typeof a == "string") {
|
|
c = Ext.Element.selectorFunction(a, b)
|
|
} else {
|
|
if (a.length !== undefined) {
|
|
c = a
|
|
} else {
|
|
throw"Invalid selector"
|
|
}
|
|
}
|
|
return(d === true) ? new Ext.CompositeElement(c) : new Ext.CompositeElementLite(c)
|
|
};
|
|
Ext.select = Ext.Element.select;
|
|
Ext.UpdateManager = Ext.Updater = Ext.extend(Ext.util.Observable, function () {
|
|
var b = "beforeupdate", d = "update", c = "failure";
|
|
|
|
function a(h) {
|
|
var i = this;
|
|
i.transaction = null;
|
|
if (h.argument.form && h.argument.reset) {
|
|
try {
|
|
h.argument.form.reset()
|
|
} catch (j) {
|
|
}
|
|
}
|
|
if (i.loadScripts) {
|
|
i.renderer.render(i.el, h, i, g.createDelegate(i, [h]))
|
|
} else {
|
|
i.renderer.render(i.el, h, i);
|
|
g.call(i, h)
|
|
}
|
|
}
|
|
|
|
function g(h, i, j) {
|
|
this.fireEvent(i || d, this.el, h);
|
|
if (Ext.isFunction(h.argument.callback)) {
|
|
h.argument.callback.call(h.argument.scope, this.el, Ext.isEmpty(j) ? true : false, h, h.argument.options)
|
|
}
|
|
}
|
|
|
|
function e(h) {
|
|
g.call(this, h, c, !!(this.transaction = null))
|
|
}
|
|
|
|
return{constructor:function (i, h) {
|
|
var j = this;
|
|
i = Ext.get(i);
|
|
if (!h && i.updateManager) {
|
|
return i.updateManager
|
|
}
|
|
j.el = i;
|
|
j.defaultUrl = null;
|
|
j.addEvents(b, d, c);
|
|
Ext.apply(j, Ext.Updater.defaults);
|
|
j.transaction = null;
|
|
j.refreshDelegate = j.refresh.createDelegate(j);
|
|
j.updateDelegate = j.update.createDelegate(j);
|
|
j.formUpdateDelegate = (j.formUpdate || function () {
|
|
}).createDelegate(j);
|
|
j.renderer = j.renderer || j.getDefaultRenderer();
|
|
Ext.Updater.superclass.constructor.call(j)
|
|
}, setRenderer:function (h) {
|
|
this.renderer = h
|
|
}, getRenderer:function () {
|
|
return this.renderer
|
|
}, getDefaultRenderer:function () {
|
|
return new Ext.Updater.BasicRenderer()
|
|
}, setDefaultUrl:function (h) {
|
|
this.defaultUrl = h
|
|
}, getEl:function () {
|
|
return this.el
|
|
}, update:function (i, n, p, l) {
|
|
var k = this, h, j;
|
|
if (k.fireEvent(b, k.el, i, n) !== false) {
|
|
if (Ext.isObject(i)) {
|
|
h = i;
|
|
i = h.url;
|
|
n = n || h.params;
|
|
p = p || h.callback;
|
|
l = l || h.discardUrl;
|
|
j = h.scope;
|
|
if (!Ext.isEmpty(h.nocache)) {
|
|
k.disableCaching = h.nocache
|
|
}
|
|
if (!Ext.isEmpty(h.text)) {
|
|
k.indicatorText = '<div class="loading-indicator">' + h.text + "</div>"
|
|
}
|
|
if (!Ext.isEmpty(h.scripts)) {
|
|
k.loadScripts = h.scripts
|
|
}
|
|
if (!Ext.isEmpty(h.timeout)) {
|
|
k.timeout = h.timeout
|
|
}
|
|
}
|
|
k.showLoading();
|
|
if (!l) {
|
|
k.defaultUrl = i
|
|
}
|
|
if (Ext.isFunction(i)) {
|
|
i = i.call(k)
|
|
}
|
|
var m = Ext.apply({}, {url:i, params:(Ext.isFunction(n) && j) ? n.createDelegate(j) : n, success:a, failure:e, scope:k, callback:undefined, timeout:(k.timeout * 1000), disableCaching:k.disableCaching, argument:{options:h, url:i, form:null, callback:p, scope:j || window, params:n}}, h);
|
|
k.transaction = Ext.Ajax.request(m)
|
|
}
|
|
}, formUpdate:function (k, h, j, l) {
|
|
var i = this;
|
|
if (i.fireEvent(b, i.el, k, h) !== false) {
|
|
if (Ext.isFunction(h)) {
|
|
h = h.call(i)
|
|
}
|
|
k = Ext.getDom(k);
|
|
i.transaction = Ext.Ajax.request({form:k, url:h, success:a, failure:e, scope:i, timeout:(i.timeout * 1000), argument:{url:h, form:k, callback:l, reset:j}});
|
|
i.showLoading.defer(1, i)
|
|
}
|
|
}, startAutoRefresh:function (i, j, l, m, h) {
|
|
var k = this;
|
|
if (h) {
|
|
k.update(j || k.defaultUrl, l, m, true)
|
|
}
|
|
if (k.autoRefreshProcId) {
|
|
clearInterval(k.autoRefreshProcId)
|
|
}
|
|
k.autoRefreshProcId = setInterval(k.update.createDelegate(k, [j || k.defaultUrl, l, m, true]), i * 1000)
|
|
}, stopAutoRefresh:function () {
|
|
if (this.autoRefreshProcId) {
|
|
clearInterval(this.autoRefreshProcId);
|
|
delete this.autoRefreshProcId
|
|
}
|
|
}, isAutoRefreshing:function () {
|
|
return !!this.autoRefreshProcId
|
|
}, showLoading:function () {
|
|
if (this.showLoadIndicator) {
|
|
this.el.dom.innerHTML = this.indicatorText
|
|
}
|
|
}, abort:function () {
|
|
if (this.transaction) {
|
|
Ext.Ajax.abort(this.transaction)
|
|
}
|
|
}, isUpdating:function () {
|
|
return this.transaction ? Ext.Ajax.isLoading(this.transaction) : false
|
|
}, refresh:function (h) {
|
|
if (this.defaultUrl) {
|
|
this.update(this.defaultUrl, null, h, true)
|
|
}
|
|
}}
|
|
}());
|
|
Ext.Updater.defaults = {timeout:30, disableCaching:false, showLoadIndicator:true, indicatorText:'<div class="loading-indicator">Loading...</div>', loadScripts:false, sslBlankUrl:Ext.SSL_SECURE_URL};
|
|
Ext.Updater.updateElement = function (d, c, e, b) {
|
|
var a = Ext.get(d).getUpdater();
|
|
Ext.apply(a, b);
|
|
a.update(c, e, b ? b.callback : null)
|
|
};
|
|
Ext.Updater.BasicRenderer = function () {
|
|
};
|
|
Ext.Updater.BasicRenderer.prototype = {render:function (c, a, b, d) {
|
|
c.update(a.responseText, b.loadScripts, d)
|
|
}};
|
|
(function () {
|
|
Date.useStrict = false;
|
|
function b(d) {
|
|
var c = Array.prototype.slice.call(arguments, 1);
|
|
return d.replace(/\{(\d+)\}/g, function (e, g) {
|
|
return c[g]
|
|
})
|
|
}
|
|
|
|
Date.formatCodeToRegex = function (d, c) {
|
|
var e = Date.parseCodes[d];
|
|
if (e) {
|
|
e = typeof e == "function" ? e() : e;
|
|
Date.parseCodes[d] = e
|
|
}
|
|
return e ? Ext.applyIf({c:e.c ? b(e.c, c || "{0}") : e.c}, e) : {g:0, c:null, s:Ext.escapeRe(d)}
|
|
};
|
|
var a = Date.formatCodeToRegex;
|
|
Ext.apply(Date, {parseFunctions:{"M$":function (d, c) {
|
|
var e = new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/");
|
|
var g = (d || "").match(e);
|
|
return g ? new Date(((g[1] || "") + g[2]) * 1) : null
|
|
}}, parseRegexes:[], formatFunctions:{"M$":function () {
|
|
return"\\/Date(" + this.getTime() + ")\\/"
|
|
}}, y2kYear:50, MILLI:"ms", SECOND:"s", MINUTE:"mi", HOUR:"h", DAY:"d", MONTH:"mo", YEAR:"y", defaults:{}, dayNames:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], monthNames:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthNumbers:{Jan:0, Feb:1, Mar:2, Apr:3, May:4, Jun:5, Jul:6, Aug:7, Sep:8, Oct:9, Nov:10, Dec:11}, getShortMonthName:function (c) {
|
|
return Date.monthNames[c].substring(0, 3)
|
|
}, getShortDayName:function (c) {
|
|
return Date.dayNames[c].substring(0, 3)
|
|
}, getMonthNumber:function (c) {
|
|
return Date.monthNumbers[c.substring(0, 1).toUpperCase() + c.substring(1, 3).toLowerCase()]
|
|
}, formatContainsHourInfo:(function () {
|
|
var d = /(\\.)/g, c = /([gGhHisucUOPZ]|M\$)/;
|
|
return function (e) {
|
|
return c.test(e.replace(d, ""))
|
|
}
|
|
})(), formatCodes:{d:"String.leftPad(this.getDate(), 2, '0')", D:"Date.getShortDayName(this.getDay())", j:"this.getDate()", l:"Date.dayNames[this.getDay()]", N:"(this.getDay() ? this.getDay() : 7)", S:"this.getSuffix()", w:"this.getDay()", z:"this.getDayOfYear()", W:"String.leftPad(this.getWeekOfYear(), 2, '0')", F:"Date.monthNames[this.getMonth()]", m:"String.leftPad(this.getMonth() + 1, 2, '0')", M:"Date.getShortMonthName(this.getMonth())", n:"(this.getMonth() + 1)", t:"this.getDaysInMonth()", L:"(this.isLeapYear() ? 1 : 0)", o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))", Y:"String.leftPad(this.getFullYear(), 4, '0')", y:"('' + this.getFullYear()).substring(2, 4)", a:"(this.getHours() < 12 ? 'am' : 'pm')", A:"(this.getHours() < 12 ? 'AM' : 'PM')", g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)", G:"this.getHours()", h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')", H:"String.leftPad(this.getHours(), 2, '0')", i:"String.leftPad(this.getMinutes(), 2, '0')", s:"String.leftPad(this.getSeconds(), 2, '0')", u:"String.leftPad(this.getMilliseconds(), 3, '0')", O:"this.getGMTOffset()", P:"this.getGMTOffset(true)", T:"this.getTimezone()", Z:"(this.getTimezoneOffset() * -60)", c:function () {
|
|
for (var k = "Y-m-dTH:i:sP", h = [], g = 0, d = k.length; g < d; ++g) {
|
|
var j = k.charAt(g);
|
|
h.push(j == "T" ? "'T'" : Date.getFormatCode(j))
|
|
}
|
|
return h.join(" + ")
|
|
}, U:"Math.round(this.getTime() / 1000)"}, isValid:function (o, c, n, k, g, j, e) {
|
|
k = k || 0;
|
|
g = g || 0;
|
|
j = j || 0;
|
|
e = e || 0;
|
|
var l = new Date(o < 100 ? 100 : o, c - 1, n, k, g, j, e).add(Date.YEAR, o < 100 ? o - 100 : 0);
|
|
return o == l.getFullYear() && c == l.getMonth() + 1 && n == l.getDate() && k == l.getHours() && g == l.getMinutes() && j == l.getSeconds() && e == l.getMilliseconds()
|
|
}, parseDate:function (d, g, c) {
|
|
var e = Date.parseFunctions;
|
|
if (e[g] == null) {
|
|
Date.createParser(g)
|
|
}
|
|
return e[g](d, Ext.isDefined(c) ? c : Date.useStrict)
|
|
}, getFormatCode:function (d) {
|
|
var c = Date.formatCodes[d];
|
|
if (c) {
|
|
c = typeof c == "function" ? c() : c;
|
|
Date.formatCodes[d] = c
|
|
}
|
|
return c || ("'" + String.escape(d) + "'")
|
|
}, createFormat:function (h) {
|
|
var g = [], c = false, e = "";
|
|
for (var d = 0; d < h.length; ++d) {
|
|
e = h.charAt(d);
|
|
if (!c && e == "\\") {
|
|
c = true
|
|
} else {
|
|
if (c) {
|
|
c = false;
|
|
g.push("'" + String.escape(e) + "'")
|
|
} else {
|
|
g.push(Date.getFormatCode(e))
|
|
}
|
|
}
|
|
}
|
|
Date.formatFunctions[h] = new Function("return " + g.join("+"))
|
|
}, createParser:function () {
|
|
var c = ["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,", "def = Date.defaults,", "results = String(input).match(Date.parseRegexes[{0}]);", "if(results){", "{1}", "if(u != null){", "v = new Date(u * 1000);", "}else{", "dt = (new Date()).clearTime();", "y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));", "m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));", "d = Ext.num(d, Ext.num(def.d, dt.getDate()));", "h = Ext.num(h, Ext.num(def.h, dt.getHours()));", "i = Ext.num(i, Ext.num(def.i, dt.getMinutes()));", "s = Ext.num(s, Ext.num(def.s, dt.getSeconds()));", "ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));", "if(z >= 0 && y >= 0){", "v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);", "v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);", "}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){", "v = null;", "}else{", "v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);", "}", "}", "}", "if(v){", "if(zz != null){", "v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);", "}else if(o){", "v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));", "}", "}", "return v;"].join("\n");
|
|
return function (m) {
|
|
var e = Date.parseRegexes.length, o = 1, g = [], l = [], k = false, d = "", j = 0, h, n;
|
|
for (; j < m.length; ++j) {
|
|
d = m.charAt(j);
|
|
if (!k && d == "\\") {
|
|
k = true
|
|
} else {
|
|
if (k) {
|
|
k = false;
|
|
l.push(String.escape(d))
|
|
} else {
|
|
h = a(d, o);
|
|
o += h.g;
|
|
l.push(h.s);
|
|
if (h.g && h.c) {
|
|
if (h.calcLast) {
|
|
n = h.c
|
|
} else {
|
|
g.push(h.c)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (n) {
|
|
g.push(n)
|
|
}
|
|
Date.parseRegexes[e] = new RegExp("^" + l.join("") + "$", "i");
|
|
Date.parseFunctions[m] = new Function("input", "strict", b(c, e, g.join("")))
|
|
}
|
|
}(), parseCodes:{d:{g:1, c:"d = parseInt(results[{0}], 10);\n", s:"(\\d{2})"}, j:{g:1, c:"d = parseInt(results[{0}], 10);\n", s:"(\\d{1,2})"}, D:function () {
|
|
for (var c = [], d = 0; d < 7; c.push(Date.getShortDayName(d)), ++d) {
|
|
}
|
|
return{g:0, c:null, s:"(?:" + c.join("|") + ")"}
|
|
}, l:function () {
|
|
return{g:0, c:null, s:"(?:" + Date.dayNames.join("|") + ")"}
|
|
}, N:{g:0, c:null, s:"[1-7]"}, S:{g:0, c:null, s:"(?:st|nd|rd|th)"}, w:{g:0, c:null, s:"[0-6]"}, z:{g:1, c:"z = parseInt(results[{0}], 10);\n", s:"(\\d{1,3})"}, W:{g:0, c:null, s:"(?:\\d{2})"}, F:function () {
|
|
return{g:1, c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n", s:"(" + Date.monthNames.join("|") + ")"}
|
|
}, M:function () {
|
|
for (var c = [], d = 0; d < 12; c.push(Date.getShortMonthName(d)), ++d) {
|
|
}
|
|
return Ext.applyIf({s:"(" + c.join("|") + ")"}, a("F"))
|
|
}, m:{g:1, c:"m = parseInt(results[{0}], 10) - 1;\n", s:"(\\d{2})"}, n:{g:1, c:"m = parseInt(results[{0}], 10) - 1;\n", s:"(\\d{1,2})"}, t:{g:0, c:null, s:"(?:\\d{2})"}, L:{g:0, c:null, s:"(?:1|0)"}, o:function () {
|
|
return a("Y")
|
|
}, Y:{g:1, c:"y = parseInt(results[{0}], 10);\n", s:"(\\d{4})"}, y:{g:1, c:"var ty = parseInt(results[{0}], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n", s:"(\\d{1,2})"}, a:function () {
|
|
return a("A")
|
|
}, A:{calcLast:true, g:1, c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}", s:"(AM|PM|am|pm)"}, g:function () {
|
|
return a("G")
|
|
}, G:{g:1, c:"h = parseInt(results[{0}], 10);\n", s:"(\\d{1,2})"}, h:function () {
|
|
return a("H")
|
|
}, H:{g:1, c:"h = parseInt(results[{0}], 10);\n", s:"(\\d{2})"}, i:{g:1, c:"i = parseInt(results[{0}], 10);\n", s:"(\\d{2})"}, s:{g:1, c:"s = parseInt(results[{0}], 10);\n", s:"(\\d{2})"}, u:{g:1, c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n", s:"(\\d+)"}, O:{g:1, c:["o = results[{0}];", "var sn = o.substring(0,1),", "hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),", "mn = o.substring(3,5) % 60;", "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"), s:"([+-]\\d{4})"}, P:{g:1, c:["o = results[{0}];", "var sn = o.substring(0,1),", "hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),", "mn = o.substring(4,6) % 60;", "o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"), s:"([+-]\\d{2}:\\d{2})"}, T:{g:0, c:null, s:"[A-Z]{1,4}"}, Z:{g:1, c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n", s:"([+-]?\\d{1,5})"}, c:function () {
|
|
var e = [], c = [a("Y", 1), a("m", 2), a("d", 3), a("h", 4), a("i", 5), a("s", 6), {c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"}, {c:["if(results[8]) {", "if(results[8] == 'Z'){", "zz = 0;", "}else if (results[8].indexOf(':') > -1){", a("P", 8).c, "}else{", a("O", 8).c, "}", "}"].join("\n")}];
|
|
for (var g = 0, d = c.length; g < d; ++g) {
|
|
e.push(c[g].c)
|
|
}
|
|
return{g:1, c:e.join(""), s:[c[0].s, "(?:", "-", c[1].s, "(?:", "-", c[2].s, "(?:", "(?:T| )?", c[3].s, ":", c[4].s, "(?::", c[5].s, ")?", "(?:(?:\\.|,)(\\d+))?", "(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?", ")?", ")?", ")?"].join("")}
|
|
}, U:{g:1, c:"u = parseInt(results[{0}], 10);\n", s:"(-?\\d+)"}}})
|
|
}());
|
|
Ext.apply(Date.prototype, {dateFormat:function (a) {
|
|
if (Date.formatFunctions[a] == null) {
|
|
Date.createFormat(a)
|
|
}
|
|
return Date.formatFunctions[a].call(this)
|
|
}, getTimezone:function () {
|
|
return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, "")
|
|
}, getGMTOffset:function (a) {
|
|
return(this.getTimezoneOffset() > 0 ? "-" : "+") + String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset()) / 60), 2, "0") + (a ? ":" : "") + String.leftPad(Math.abs(this.getTimezoneOffset() % 60), 2, "0")
|
|
}, getDayOfYear:function () {
|
|
var b = 0, e = this.clone(), a = this.getMonth(), c;
|
|
for (c = 0, e.setDate(1), e.setMonth(0); c < a; e.setMonth(++c)) {
|
|
b += e.getDaysInMonth()
|
|
}
|
|
return b + this.getDate() - 1
|
|
}, getWeekOfYear:function () {
|
|
var a = 86400000, b = 7 * a;
|
|
return function () {
|
|
var d = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3) / a, c = Math.floor(d / 7), e = new Date(c * b).getUTCFullYear();
|
|
return c - Math.floor(Date.UTC(e, 0, 7) / b) + 1
|
|
}
|
|
}(), isLeapYear:function () {
|
|
var a = this.getFullYear();
|
|
return !!((a & 3) == 0 && (a % 100 || (a % 400 == 0 && a)))
|
|
}, getFirstDayOfMonth:function () {
|
|
var a = (this.getDay() - (this.getDate() - 1)) % 7;
|
|
return(a < 0) ? (a + 7) : a
|
|
}, getLastDayOfMonth:function () {
|
|
return this.getLastDateOfMonth().getDay()
|
|
}, getFirstDateOfMonth:function () {
|
|
return new Date(this.getFullYear(), this.getMonth(), 1)
|
|
}, getLastDateOfMonth:function () {
|
|
return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth())
|
|
}, getDaysInMonth:function () {
|
|
var a = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
return function () {
|
|
var b = this.getMonth();
|
|
return b == 1 && this.isLeapYear() ? 29 : a[b]
|
|
}
|
|
}(), getSuffix:function () {
|
|
switch (this.getDate()) {
|
|
case 1:
|
|
case 21:
|
|
case 31:
|
|
return"st";
|
|
case 2:
|
|
case 22:
|
|
return"nd";
|
|
case 3:
|
|
case 23:
|
|
return"rd";
|
|
default:
|
|
return"th"
|
|
}
|
|
}, clone:function () {
|
|
return new Date(this.getTime())
|
|
}, isDST:function () {
|
|
return new Date(this.getFullYear(), 0, 1).getTimezoneOffset() != this.getTimezoneOffset()
|
|
}, clearTime:function (g) {
|
|
if (g) {
|
|
return this.clone().clearTime()
|
|
}
|
|
var b = this.getDate();
|
|
this.setHours(0);
|
|
this.setMinutes(0);
|
|
this.setSeconds(0);
|
|
this.setMilliseconds(0);
|
|
if (this.getDate() != b) {
|
|
for (var a = 1, e = this.add(Date.HOUR, a); e.getDate() != b; a++, e = this.add(Date.HOUR, a)) {
|
|
}
|
|
this.setDate(b);
|
|
this.setHours(e.getHours())
|
|
}
|
|
return this
|
|
}, add:function (b, c) {
|
|
var e = this.clone();
|
|
if (!b || c === 0) {
|
|
return e
|
|
}
|
|
switch (b.toLowerCase()) {
|
|
case Date.MILLI:
|
|
e.setMilliseconds(this.getMilliseconds() + c);
|
|
break;
|
|
case Date.SECOND:
|
|
e.setSeconds(this.getSeconds() + c);
|
|
break;
|
|
case Date.MINUTE:
|
|
e.setMinutes(this.getMinutes() + c);
|
|
break;
|
|
case Date.HOUR:
|
|
e.setHours(this.getHours() + c);
|
|
break;
|
|
case Date.DAY:
|
|
e.setDate(this.getDate() + c);
|
|
break;
|
|
case Date.MONTH:
|
|
var a = this.getDate();
|
|
if (a > 28) {
|
|
a = Math.min(a, this.getFirstDateOfMonth().add("mo", c).getLastDateOfMonth().getDate())
|
|
}
|
|
e.setDate(a);
|
|
e.setMonth(this.getMonth() + c);
|
|
break;
|
|
case Date.YEAR:
|
|
e.setFullYear(this.getFullYear() + c);
|
|
break
|
|
}
|
|
return e
|
|
}, between:function (c, a) {
|
|
var b = this.getTime();
|
|
return c.getTime() <= b && b <= a.getTime()
|
|
}});
|
|
Date.prototype.format = Date.prototype.dateFormat;
|
|
if (Ext.isSafari && (navigator.userAgent.match(/WebKit\/(\d+)/)[1] || NaN) < 420) {
|
|
Ext.apply(Date.prototype, {_xMonth:Date.prototype.setMonth, _xDate:Date.prototype.setDate, setMonth:function (a) {
|
|
if (a <= -1) {
|
|
var d = Math.ceil(-a), c = Math.ceil(d / 12), b = (d % 12) ? 12 - d % 12 : 0;
|
|
this.setFullYear(this.getFullYear() - c);
|
|
return this._xMonth(b)
|
|
} else {
|
|
return this._xMonth(a)
|
|
}
|
|
}, setDate:function (a) {
|
|
return this.setTime(this.getTime() - (this.getDate() - a) * 86400000)
|
|
}})
|
|
}
|
|
Ext.util.MixedCollection = function (b, a) {
|
|
this.items = [];
|
|
this.map = {};
|
|
this.keys = [];
|
|
this.length = 0;
|
|
this.addEvents("clear", "add", "replace", "remove", "sort");
|
|
this.allowFunctions = b === true;
|
|
if (a) {
|
|
this.getKey = a
|
|
}
|
|
Ext.util.MixedCollection.superclass.constructor.call(this)
|
|
};
|
|
Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {allowFunctions:false, add:function (b, c) {
|
|
if (arguments.length == 1) {
|
|
c = arguments[0];
|
|
b = this.getKey(c)
|
|
}
|
|
if (typeof b != "undefined" && b !== null) {
|
|
var a = this.map[b];
|
|
if (typeof a != "undefined") {
|
|
return this.replace(b, c)
|
|
}
|
|
this.map[b] = c
|
|
}
|
|
this.length++;
|
|
this.items.push(c);
|
|
this.keys.push(b);
|
|
this.fireEvent("add", this.length - 1, c, b);
|
|
return c
|
|
}, getKey:function (a) {
|
|
return a.id
|
|
}, replace:function (c, d) {
|
|
if (arguments.length == 1) {
|
|
d = arguments[0];
|
|
c = this.getKey(d)
|
|
}
|
|
var a = this.map[c];
|
|
if (typeof c == "undefined" || c === null || typeof a == "undefined") {
|
|
return this.add(c, d)
|
|
}
|
|
var b = this.indexOfKey(c);
|
|
this.items[b] = d;
|
|
this.map[c] = d;
|
|
this.fireEvent("replace", c, a, d);
|
|
return d
|
|
}, addAll:function (e) {
|
|
if (arguments.length > 1 || Ext.isArray(e)) {
|
|
var b = arguments.length > 1 ? arguments : e;
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
this.add(b[d])
|
|
}
|
|
} else {
|
|
for (var c in e) {
|
|
if (this.allowFunctions || typeof e[c] != "function") {
|
|
this.add(c, e[c])
|
|
}
|
|
}
|
|
}
|
|
}, each:function (e, d) {
|
|
var b = [].concat(this.items);
|
|
for (var c = 0, a = b.length; c < a; c++) {
|
|
if (e.call(d || b[c], b[c], c, a) === false) {
|
|
break
|
|
}
|
|
}
|
|
}, eachKey:function (d, c) {
|
|
for (var b = 0, a = this.keys.length; b < a; b++) {
|
|
d.call(c || window, this.keys[b], this.items[b], b, a)
|
|
}
|
|
}, find:function (d, c) {
|
|
for (var b = 0, a = this.items.length; b < a; b++) {
|
|
if (d.call(c || window, this.items[b], this.keys[b])) {
|
|
return this.items[b]
|
|
}
|
|
}
|
|
return null
|
|
}, insert:function (a, b, c) {
|
|
if (arguments.length == 2) {
|
|
c = arguments[1];
|
|
b = this.getKey(c)
|
|
}
|
|
if (this.containsKey(b)) {
|
|
this.suspendEvents();
|
|
this.removeKey(b);
|
|
this.resumeEvents()
|
|
}
|
|
if (a >= this.length) {
|
|
return this.add(b, c)
|
|
}
|
|
this.length++;
|
|
this.items.splice(a, 0, c);
|
|
if (typeof b != "undefined" && b !== null) {
|
|
this.map[b] = c
|
|
}
|
|
this.keys.splice(a, 0, b);
|
|
this.fireEvent("add", a, c, b);
|
|
return c
|
|
}, remove:function (a) {
|
|
return this.removeAt(this.indexOf(a))
|
|
}, removeAt:function (a) {
|
|
if (a < this.length && a >= 0) {
|
|
this.length--;
|
|
var c = this.items[a];
|
|
this.items.splice(a, 1);
|
|
var b = this.keys[a];
|
|
if (typeof b != "undefined") {
|
|
delete this.map[b]
|
|
}
|
|
this.keys.splice(a, 1);
|
|
this.fireEvent("remove", c, b);
|
|
return c
|
|
}
|
|
return false
|
|
}, removeKey:function (a) {
|
|
return this.removeAt(this.indexOfKey(a))
|
|
}, getCount:function () {
|
|
return this.length
|
|
}, indexOf:function (a) {
|
|
return this.items.indexOf(a)
|
|
}, indexOfKey:function (a) {
|
|
return this.keys.indexOf(a)
|
|
}, item:function (b) {
|
|
var a = this.map[b], c = a !== undefined ? a : (typeof b == "number") ? this.items[b] : undefined;
|
|
return typeof c != "function" || this.allowFunctions ? c : null
|
|
}, itemAt:function (a) {
|
|
return this.items[a]
|
|
}, key:function (a) {
|
|
return this.map[a]
|
|
}, contains:function (a) {
|
|
return this.indexOf(a) != -1
|
|
}, containsKey:function (a) {
|
|
return typeof this.map[a] != "undefined"
|
|
}, clear:function () {
|
|
this.length = 0;
|
|
this.items = [];
|
|
this.keys = [];
|
|
this.map = {};
|
|
this.fireEvent("clear")
|
|
}, first:function () {
|
|
return this.items[0]
|
|
}, last:function () {
|
|
return this.items[this.length - 1]
|
|
}, _sort:function (k, a, j) {
|
|
var d, e, b = String(a).toUpperCase() == "DESC" ? -1 : 1, h = [], l = this.keys, g = this.items;
|
|
j = j || function (i, c) {
|
|
return i - c
|
|
};
|
|
for (d = 0, e = g.length; d < e; d++) {
|
|
h[h.length] = {key:l[d], value:g[d], index:d}
|
|
}
|
|
h.sort(function (i, c) {
|
|
var m = j(i[k], c[k]) * b;
|
|
if (m === 0) {
|
|
m = (i.index < c.index ? -1 : 1)
|
|
}
|
|
return m
|
|
});
|
|
for (d = 0, e = h.length; d < e; d++) {
|
|
g[d] = h[d].value;
|
|
l[d] = h[d].key
|
|
}
|
|
this.fireEvent("sort", this)
|
|
}, sort:function (a, b) {
|
|
this._sort("value", a, b)
|
|
}, reorder:function (d) {
|
|
this.suspendEvents();
|
|
var b = this.items, c = 0, g = b.length, a = [], e = [], h;
|
|
for (h in d) {
|
|
a[d[h]] = b[h]
|
|
}
|
|
for (c = 0; c < g; c++) {
|
|
if (d[c] == undefined) {
|
|
e.push(b[c])
|
|
}
|
|
}
|
|
for (c = 0; c < g; c++) {
|
|
if (a[c] == undefined) {
|
|
a[c] = e.shift()
|
|
}
|
|
}
|
|
this.clear();
|
|
this.addAll(a);
|
|
this.resumeEvents();
|
|
this.fireEvent("sort", this)
|
|
}, keySort:function (a, b) {
|
|
this._sort("key", a, b || function (d, c) {
|
|
var g = String(d).toUpperCase(), e = String(c).toUpperCase();
|
|
return g > e ? 1 : (g < e ? -1 : 0)
|
|
})
|
|
}, getRange:function (e, a) {
|
|
var b = this.items;
|
|
if (b.length < 1) {
|
|
return[]
|
|
}
|
|
e = e || 0;
|
|
a = Math.min(typeof a == "undefined" ? this.length - 1 : a, this.length - 1);
|
|
var c, d = [];
|
|
if (e <= a) {
|
|
for (c = e; c <= a; c++) {
|
|
d[d.length] = b[c]
|
|
}
|
|
} else {
|
|
for (c = e; c >= a; c--) {
|
|
d[d.length] = b[c]
|
|
}
|
|
}
|
|
return d
|
|
}, filter:function (c, b, d, a) {
|
|
if (Ext.isEmpty(b, false)) {
|
|
return this.clone()
|
|
}
|
|
b = this.createValueMatcher(b, d, a);
|
|
return this.filterBy(function (e) {
|
|
return e && b.test(e[c])
|
|
})
|
|
}, filterBy:function (g, e) {
|
|
var h = new Ext.util.MixedCollection();
|
|
h.getKey = this.getKey;
|
|
var b = this.keys, d = this.items;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
if (g.call(e || this, d[c], b[c])) {
|
|
h.add(b[c], d[c])
|
|
}
|
|
}
|
|
return h
|
|
}, findIndex:function (c, b, e, d, a) {
|
|
if (Ext.isEmpty(b, false)) {
|
|
return -1
|
|
}
|
|
b = this.createValueMatcher(b, d, a);
|
|
return this.findIndexBy(function (g) {
|
|
return g && b.test(g[c])
|
|
}, null, e)
|
|
}, findIndexBy:function (g, e, h) {
|
|
var b = this.keys, d = this.items;
|
|
for (var c = (h || 0), a = d.length; c < a; c++) {
|
|
if (g.call(e || this, d[c], b[c])) {
|
|
return c
|
|
}
|
|
}
|
|
return -1
|
|
}, createValueMatcher:function (c, e, a, b) {
|
|
if (!c.exec) {
|
|
var d = Ext.escapeRe;
|
|
c = String(c);
|
|
if (e === true) {
|
|
c = d(c)
|
|
} else {
|
|
c = "^" + d(c);
|
|
if (b === true) {
|
|
c += "$"
|
|
}
|
|
}
|
|
c = new RegExp(c, a ? "" : "i")
|
|
}
|
|
return c
|
|
}, clone:function () {
|
|
var e = new Ext.util.MixedCollection();
|
|
var b = this.keys, d = this.items;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
e.add(b[c], d[c])
|
|
}
|
|
e.getKey = this.getKey;
|
|
return e
|
|
}});
|
|
Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item;
|
|
Ext.AbstractManager = Ext.extend(Object, {typeName:"type", constructor:function (a) {
|
|
Ext.apply(this, a || {});
|
|
this.all = new Ext.util.MixedCollection();
|
|
this.types = {}
|
|
}, get:function (a) {
|
|
return this.all.get(a)
|
|
}, register:function (a) {
|
|
this.all.add(a)
|
|
}, unregister:function (a) {
|
|
this.all.remove(a)
|
|
}, registerType:function (b, a) {
|
|
this.types[b] = a;
|
|
a[this.typeName] = b
|
|
}, isRegistered:function (a) {
|
|
return this.types[a] !== undefined
|
|
}, create:function (a, d) {
|
|
var b = a[this.typeName] || a.type || d, c = this.types[b];
|
|
if (c == undefined) {
|
|
throw new Error(String.format("The '{0}' type has not been registered with this manager", b))
|
|
}
|
|
return new c(a)
|
|
}, onAvailable:function (d, c, b) {
|
|
var a = this.all;
|
|
a.on("add", function (e, g) {
|
|
if (g.id == d) {
|
|
c.call(b || g, g);
|
|
a.un("add", c, b)
|
|
}
|
|
})
|
|
}});
|
|
Ext.util.Format = function () {
|
|
var trimRe = /^\s+|\s+$/g, stripTagsRE = /<\/?[^>]+>/gi, stripScriptsRe = /(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, nl2brRe = /\r?\n/g;
|
|
return{ellipsis:function (value, len, word) {
|
|
if (value && value.length > len) {
|
|
if (word) {
|
|
var vs = value.substr(0, len - 2), index = Math.max(vs.lastIndexOf(" "), vs.lastIndexOf("."), vs.lastIndexOf("!"), vs.lastIndexOf("?"));
|
|
if (index == -1 || index < (len - 15)) {
|
|
return value.substr(0, len - 3) + "..."
|
|
} else {
|
|
return vs.substr(0, index) + "..."
|
|
}
|
|
} else {
|
|
return value.substr(0, len - 3) + "..."
|
|
}
|
|
}
|
|
return value
|
|
}, undef:function (value) {
|
|
return value !== undefined ? value : ""
|
|
}, defaultValue:function (value, defaultValue) {
|
|
return value !== undefined && value !== "" ? value : defaultValue
|
|
}, htmlEncode:function (value) {
|
|
return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """)
|
|
}, htmlDecode:function (value) {
|
|
return !value ? value : String(value).replace(/>/g, ">").replace(/</g, "<").replace(/"/g, '"').replace(/&/g, "&")
|
|
}, trim:function (value) {
|
|
return String(value).replace(trimRe, "")
|
|
}, substr:function (value, start, length) {
|
|
return String(value).substr(start, length)
|
|
}, lowercase:function (value) {
|
|
return String(value).toLowerCase()
|
|
}, uppercase:function (value) {
|
|
return String(value).toUpperCase()
|
|
}, capitalize:function (value) {
|
|
return !value ? value : value.charAt(0).toUpperCase() + value.substr(1).toLowerCase()
|
|
}, call:function (value, fn) {
|
|
if (arguments.length > 2) {
|
|
var args = Array.prototype.slice.call(arguments, 2);
|
|
args.unshift(value);
|
|
return eval(fn).apply(window, args)
|
|
} else {
|
|
return eval(fn).call(window, value)
|
|
}
|
|
}, usMoney:function (v) {
|
|
v = (Math.round((v - 0) * 100)) / 100;
|
|
v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10)) ? v + "0" : v);
|
|
v = String(v);
|
|
var ps = v.split("."), whole = ps[0], sub = ps[1] ? "." + ps[1] : ".00", r = /(\d+)(\d{3})/;
|
|
while (r.test(whole)) {
|
|
whole = whole.replace(r, "$1,$2")
|
|
}
|
|
v = whole + sub;
|
|
if (v.charAt(0) == "-") {
|
|
return"-$" + v.substr(1)
|
|
}
|
|
return"$" + v
|
|
}, date:function (v, format) {
|
|
if (!v) {
|
|
return""
|
|
}
|
|
if (!Ext.isDate(v)) {
|
|
v = new Date(Date.parse(v))
|
|
}
|
|
return v.dateFormat(format || "m/d/Y")
|
|
}, dateRenderer:function (format) {
|
|
return function (v) {
|
|
return Ext.util.Format.date(v, format)
|
|
}
|
|
}, stripTags:function (v) {
|
|
return !v ? v : String(v).replace(stripTagsRE, "")
|
|
}, stripScripts:function (v) {
|
|
return !v ? v : String(v).replace(stripScriptsRe, "")
|
|
}, fileSize:function (size) {
|
|
if (size < 1024) {
|
|
return size + " bytes"
|
|
} else {
|
|
if (size < 1048576) {
|
|
return(Math.round(((size * 10) / 1024)) / 10) + " KB"
|
|
} else {
|
|
return(Math.round(((size * 10) / 1048576)) / 10) + " MB"
|
|
}
|
|
}
|
|
}, math:function () {
|
|
var fns = {};
|
|
return function (v, a) {
|
|
if (!fns[a]) {
|
|
fns[a] = new Function("v", "return v " + a + ";")
|
|
}
|
|
return fns[a](v)
|
|
}
|
|
}(), round:function (value, precision) {
|
|
var result = Number(value);
|
|
if (typeof precision == "number") {
|
|
precision = Math.pow(10, precision);
|
|
result = Math.round(value * precision) / precision
|
|
}
|
|
return result
|
|
}, number:function (v, format) {
|
|
if (!format) {
|
|
return v
|
|
}
|
|
v = Ext.num(v, NaN);
|
|
if (isNaN(v)) {
|
|
return""
|
|
}
|
|
var comma = ",", dec = ".", i18n = false, neg = v < 0;
|
|
v = Math.abs(v);
|
|
if (format.substr(format.length - 2) == "/i") {
|
|
format = format.substr(0, format.length - 2);
|
|
i18n = true;
|
|
comma = ".";
|
|
dec = ","
|
|
}
|
|
var hasComma = format.indexOf(comma) != -1, psplit = (i18n ? format.replace(/[^\d\,]/g, "") : format.replace(/[^\d\.]/g, "")).split(dec);
|
|
if (1 < psplit.length) {
|
|
v = v.toFixed(psplit[1].length)
|
|
} else {
|
|
if (2 < psplit.length) {
|
|
throw ("NumberFormatException: invalid format, formats should have no more than 1 period: " + format)
|
|
} else {
|
|
v = v.toFixed(0)
|
|
}
|
|
}
|
|
var fnum = v.toString();
|
|
psplit = fnum.split(".");
|
|
if (hasComma) {
|
|
var cnum = psplit[0], parr = [], j = cnum.length, m = Math.floor(j / 3), n = cnum.length % 3 || 3, i;
|
|
for (i = 0; i < j; i += n) {
|
|
if (i != 0) {
|
|
n = 3
|
|
}
|
|
parr[parr.length] = cnum.substr(i, n);
|
|
m -= 1
|
|
}
|
|
fnum = parr.join(comma);
|
|
if (psplit[1]) {
|
|
fnum += dec + psplit[1]
|
|
}
|
|
} else {
|
|
if (psplit[1]) {
|
|
fnum = psplit[0] + dec + psplit[1]
|
|
}
|
|
}
|
|
return(neg ? "-" : "") + format.replace(/[\d,?\.?]+/, fnum)
|
|
}, numberRenderer:function (format) {
|
|
return function (v) {
|
|
return Ext.util.Format.number(v, format)
|
|
}
|
|
}, plural:function (v, s, p) {
|
|
return v + " " + (v == 1 ? s : (p ? p : s + "s"))
|
|
}, nl2br:function (v) {
|
|
return Ext.isEmpty(v) ? "" : v.replace(nl2brRe, "<br/>")
|
|
}}
|
|
}();
|
|
Ext.XTemplate = function () {
|
|
Ext.XTemplate.superclass.constructor.apply(this, arguments);
|
|
var y = this, j = y.html, q = /<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/, d = /^<tpl\b[^>]*?for="(.*?)"/, v = /^<tpl\b[^>]*?if="(.*?)"/, x = /^<tpl\b[^>]*?exec="(.*?)"/, r, p = 0, k = [], o = "values", w = "parent", l = "xindex", n = "xcount", e = "return ", c = "with(values){ ";
|
|
j = ["<tpl>", j, "</tpl>"].join("");
|
|
while ((r = j.match(q))) {
|
|
var b = r[0].match(d), a = r[0].match(v), A = r[0].match(x), g = null, h = null, t = null, z = b && b[1] ? b[1] : "";
|
|
if (a) {
|
|
g = a && a[1] ? a[1] : null;
|
|
if (g) {
|
|
h = new Function(o, w, l, n, c + e + (Ext.util.Format.htmlDecode(g)) + "; }")
|
|
}
|
|
}
|
|
if (A) {
|
|
g = A && A[1] ? A[1] : null;
|
|
if (g) {
|
|
t = new Function(o, w, l, n, c + (Ext.util.Format.htmlDecode(g)) + "; }")
|
|
}
|
|
}
|
|
if (z) {
|
|
switch (z) {
|
|
case".":
|
|
z = new Function(o, w, c + e + o + "; }");
|
|
break;
|
|
case"..":
|
|
z = new Function(o, w, c + e + w + "; }");
|
|
break;
|
|
default:
|
|
z = new Function(o, w, c + e + z + "; }")
|
|
}
|
|
}
|
|
k.push({id:p, target:z, exec:t, test:h, body:r[1] || ""});
|
|
j = j.replace(r[0], "{xtpl" + p + "}");
|
|
++p
|
|
}
|
|
for (var u = k.length - 1; u >= 0; --u) {
|
|
y.compileTpl(k[u])
|
|
}
|
|
y.master = k[k.length - 1];
|
|
y.tpls = k
|
|
};
|
|
Ext.extend(Ext.XTemplate, Ext.Template, {re:/\{([\w\-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g, codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g, applySubTemplate:function (a, k, j, d, c) {
|
|
var h = this, g, m = h.tpls[a], l, b = [];
|
|
if ((m.test && !m.test.call(h, k, j, d, c)) || (m.exec && m.exec.call(h, k, j, d, c))) {
|
|
return""
|
|
}
|
|
l = m.target ? m.target.call(h, k, j) : k;
|
|
g = l.length;
|
|
j = m.target ? k : j;
|
|
if (m.target && Ext.isArray(l)) {
|
|
for (var e = 0, g = l.length; e < g; e++) {
|
|
b[b.length] = m.compiled.call(h, l[e], j, e + 1, g)
|
|
}
|
|
return b.join("")
|
|
}
|
|
return m.compiled.call(h, l, j, d, c)
|
|
}, compileTpl:function (tpl) {
|
|
var fm = Ext.util.Format, useF = this.disableFormats !== true, sep = Ext.isGecko ? "+" : ",", body;
|
|
|
|
function fn(m, name, format, args, math) {
|
|
if (name.substr(0, 4) == "xtpl") {
|
|
return"'" + sep + "this.applySubTemplate(" + name.substr(4) + ", values, parent, xindex, xcount)" + sep + "'"
|
|
}
|
|
var v;
|
|
if (name === ".") {
|
|
v = "values"
|
|
} else {
|
|
if (name === "#") {
|
|
v = "xindex"
|
|
} else {
|
|
if (name.indexOf(".") != -1) {
|
|
v = name
|
|
} else {
|
|
v = "values['" + name + "']"
|
|
}
|
|
}
|
|
}
|
|
if (math) {
|
|
v = "(" + v + math + ")"
|
|
}
|
|
if (format && useF) {
|
|
args = args ? "," + args : "";
|
|
if (format.substr(0, 5) != "this.") {
|
|
format = "fm." + format + "("
|
|
} else {
|
|
format = 'this.call("' + format.substr(5) + '", ';
|
|
args = ", values"
|
|
}
|
|
} else {
|
|
args = "";
|
|
format = "(" + v + " === undefined ? '' : "
|
|
}
|
|
return"'" + sep + format + v + args + ")" + sep + "'"
|
|
}
|
|
|
|
function codeFn(m, code) {
|
|
return"'" + sep + "(" + code.replace(/\\'/g, "'") + ")" + sep + "'"
|
|
}
|
|
|
|
if (Ext.isGecko) {
|
|
body = "tpl.compiled = function(values, parent, xindex, xcount){ return '" + tpl.body.replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn) + "';};"
|
|
} else {
|
|
body = ["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];
|
|
body.push(tpl.body.replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn));
|
|
body.push("'].join('');};");
|
|
body = body.join("")
|
|
}
|
|
eval(body);
|
|
return this
|
|
}, applyTemplate:function (a) {
|
|
return this.master.compiled.call(this, a, {}, 1, 1)
|
|
}, compile:function () {
|
|
return this
|
|
}});
|
|
Ext.XTemplate.prototype.apply = Ext.XTemplate.prototype.applyTemplate;
|
|
Ext.XTemplate.from = function (a) {
|
|
a = Ext.getDom(a);
|
|
return new Ext.XTemplate(a.value || a.innerHTML)
|
|
};
|
|
Ext.util.CSS = function () {
|
|
var d = null;
|
|
var c = document;
|
|
var b = /(-[a-z])/gi;
|
|
var a = function (e, g) {
|
|
return g.charAt(1).toUpperCase()
|
|
};
|
|
return{createStyleSheet:function (i, l) {
|
|
var h;
|
|
var g = c.getElementsByTagName("head")[0];
|
|
var k = c.createElement("style");
|
|
k.setAttribute("type", "text/css");
|
|
if (l) {
|
|
k.setAttribute("id", l)
|
|
}
|
|
if (Ext.isIE) {
|
|
g.appendChild(k);
|
|
h = k.styleSheet;
|
|
h.cssText = i
|
|
} else {
|
|
try {
|
|
k.appendChild(c.createTextNode(i))
|
|
} catch (j) {
|
|
k.cssText = i
|
|
}
|
|
g.appendChild(k);
|
|
h = k.styleSheet ? k.styleSheet : (k.sheet || c.styleSheets[c.styleSheets.length - 1])
|
|
}
|
|
this.cacheStyleSheet(h);
|
|
return h
|
|
}, removeStyleSheet:function (g) {
|
|
var e = c.getElementById(g);
|
|
if (e) {
|
|
e.parentNode.removeChild(e)
|
|
}
|
|
}, swapStyleSheet:function (h, e) {
|
|
this.removeStyleSheet(h);
|
|
var g = c.createElement("link");
|
|
g.setAttribute("rel", "stylesheet");
|
|
g.setAttribute("type", "text/css");
|
|
g.setAttribute("id", h);
|
|
g.setAttribute("href", e);
|
|
c.getElementsByTagName("head")[0].appendChild(g)
|
|
}, refreshCache:function () {
|
|
return this.getRules(true)
|
|
}, cacheStyleSheet:function (h) {
|
|
if (!d) {
|
|
d = {}
|
|
}
|
|
try {
|
|
var k = h.cssRules || h.rules;
|
|
for (var g = k.length - 1; g >= 0; --g) {
|
|
d[k[g].selectorText.toLowerCase()] = k[g]
|
|
}
|
|
} catch (i) {
|
|
}
|
|
}, getRules:function (h) {
|
|
if (d === null || h) {
|
|
d = {};
|
|
var k = c.styleSheets;
|
|
for (var j = 0, g = k.length; j < g; j++) {
|
|
try {
|
|
this.cacheStyleSheet(k[j])
|
|
} catch (l) {
|
|
}
|
|
}
|
|
}
|
|
return d
|
|
}, getRule:function (e, h) {
|
|
var g = this.getRules(h);
|
|
if (!Ext.isArray(e)) {
|
|
return g[e.toLowerCase()]
|
|
}
|
|
for (var j = 0; j < e.length; j++) {
|
|
if (g[e[j]]) {
|
|
return g[e[j].toLowerCase()]
|
|
}
|
|
}
|
|
return null
|
|
}, updateRule:function (e, j, h) {
|
|
if (!Ext.isArray(e)) {
|
|
var k = this.getRule(e);
|
|
if (k) {
|
|
k.style[j.replace(b, a)] = h;
|
|
return true
|
|
}
|
|
} else {
|
|
for (var g = 0; g < e.length; g++) {
|
|
if (this.updateRule(e[g], j, h)) {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}}
|
|
}();
|
|
Ext.util.ClickRepeater = Ext.extend(Ext.util.Observable, {constructor:function (b, a) {
|
|
this.el = Ext.get(b);
|
|
this.el.unselectable();
|
|
Ext.apply(this, a);
|
|
this.addEvents("mousedown", "click", "mouseup");
|
|
if (!this.disabled) {
|
|
this.disabled = true;
|
|
this.enable()
|
|
}
|
|
if (this.handler) {
|
|
this.on("click", this.handler, this.scope || this)
|
|
}
|
|
Ext.util.ClickRepeater.superclass.constructor.call(this)
|
|
}, interval:20, delay:250, preventDefault:true, stopDefault:false, timer:0, enable:function () {
|
|
if (this.disabled) {
|
|
this.el.on("mousedown", this.handleMouseDown, this);
|
|
if (Ext.isIE) {
|
|
this.el.on("dblclick", this.handleDblClick, this)
|
|
}
|
|
if (this.preventDefault || this.stopDefault) {
|
|
this.el.on("click", this.eventOptions, this)
|
|
}
|
|
}
|
|
this.disabled = false
|
|
}, disable:function (a) {
|
|
if (a || !this.disabled) {
|
|
clearTimeout(this.timer);
|
|
if (this.pressClass) {
|
|
this.el.removeClass(this.pressClass)
|
|
}
|
|
Ext.getDoc().un("mouseup", this.handleMouseUp, this);
|
|
this.el.removeAllListeners()
|
|
}
|
|
this.disabled = true
|
|
}, setDisabled:function (a) {
|
|
this[a ? "disable" : "enable"]()
|
|
}, eventOptions:function (a) {
|
|
if (this.preventDefault) {
|
|
a.preventDefault()
|
|
}
|
|
if (this.stopDefault) {
|
|
a.stopEvent()
|
|
}
|
|
}, destroy:function () {
|
|
this.disable(true);
|
|
Ext.destroy(this.el);
|
|
this.purgeListeners()
|
|
}, handleDblClick:function (a) {
|
|
clearTimeout(this.timer);
|
|
this.el.blur();
|
|
this.fireEvent("mousedown", this, a);
|
|
this.fireEvent("click", this, a)
|
|
}, handleMouseDown:function (a) {
|
|
clearTimeout(this.timer);
|
|
this.el.blur();
|
|
if (this.pressClass) {
|
|
this.el.addClass(this.pressClass)
|
|
}
|
|
this.mousedownTime = new Date();
|
|
Ext.getDoc().on("mouseup", this.handleMouseUp, this);
|
|
this.el.on("mouseout", this.handleMouseOut, this);
|
|
this.fireEvent("mousedown", this, a);
|
|
this.fireEvent("click", this, a);
|
|
if (this.accelerate) {
|
|
this.delay = 400
|
|
}
|
|
this.timer = this.click.defer(this.delay || this.interval, this, [a])
|
|
}, click:function (a) {
|
|
this.fireEvent("click", this, a);
|
|
this.timer = this.click.defer(this.accelerate ? this.easeOutExpo(this.mousedownTime.getElapsed(), 400, -390, 12000) : this.interval, this, [a])
|
|
}, easeOutExpo:function (e, a, h, g) {
|
|
return(e == g) ? a + h : h * (-Math.pow(2, -10 * e / g) + 1) + a
|
|
}, handleMouseOut:function () {
|
|
clearTimeout(this.timer);
|
|
if (this.pressClass) {
|
|
this.el.removeClass(this.pressClass)
|
|
}
|
|
this.el.on("mouseover", this.handleMouseReturn, this)
|
|
}, handleMouseReturn:function () {
|
|
this.el.un("mouseover", this.handleMouseReturn, this);
|
|
if (this.pressClass) {
|
|
this.el.addClass(this.pressClass)
|
|
}
|
|
this.click()
|
|
}, handleMouseUp:function (a) {
|
|
clearTimeout(this.timer);
|
|
this.el.un("mouseover", this.handleMouseReturn, this);
|
|
this.el.un("mouseout", this.handleMouseOut, this);
|
|
Ext.getDoc().un("mouseup", this.handleMouseUp, this);
|
|
this.el.removeClass(this.pressClass);
|
|
this.fireEvent("mouseup", this, a)
|
|
}});
|
|
Ext.KeyNav = function (b, a) {
|
|
this.el = Ext.get(b);
|
|
Ext.apply(this, a);
|
|
if (!this.disabled) {
|
|
this.disabled = true;
|
|
this.enable()
|
|
}
|
|
};
|
|
Ext.KeyNav.prototype = {disabled:false, defaultEventAction:"stopEvent", forceKeyDown:false, relay:function (c) {
|
|
var a = c.getKey(), b = this.keyToHandler[a];
|
|
if (b && this[b]) {
|
|
if (this.doRelay(c, this[b], b) !== true) {
|
|
c[this.defaultEventAction]()
|
|
}
|
|
}
|
|
}, doRelay:function (c, b, a) {
|
|
return b.call(this.scope || this, c, a)
|
|
}, enter:false, left:false, right:false, up:false, down:false, tab:false, esc:false, pageUp:false, pageDown:false, del:false, home:false, end:false, space:false, keyToHandler:{37:"left", 39:"right", 38:"up", 40:"down", 33:"pageUp", 34:"pageDown", 46:"del", 36:"home", 35:"end", 13:"enter", 27:"esc", 9:"tab", 32:"space"}, stopKeyUp:function (b) {
|
|
var a = b.getKey();
|
|
if (a >= 37 && a <= 40) {
|
|
b.stopEvent()
|
|
}
|
|
}, destroy:function () {
|
|
this.disable()
|
|
}, enable:function () {
|
|
if (this.disabled) {
|
|
if (Ext.isSafari2) {
|
|
this.el.on("keyup", this.stopKeyUp, this)
|
|
}
|
|
this.el.on(this.isKeydown() ? "keydown" : "keypress", this.relay, this);
|
|
this.disabled = false
|
|
}
|
|
}, disable:function () {
|
|
if (!this.disabled) {
|
|
if (Ext.isSafari2) {
|
|
this.el.un("keyup", this.stopKeyUp, this)
|
|
}
|
|
this.el.un(this.isKeydown() ? "keydown" : "keypress", this.relay, this);
|
|
this.disabled = true
|
|
}
|
|
}, setDisabled:function (a) {
|
|
this[a ? "disable" : "enable"]()
|
|
}, isKeydown:function () {
|
|
return this.forceKeyDown || Ext.EventManager.useKeydown
|
|
}};
|
|
Ext.KeyMap = function (c, b, a) {
|
|
this.el = Ext.get(c);
|
|
this.eventName = a || "keydown";
|
|
this.bindings = [];
|
|
if (b) {
|
|
this.addBinding(b)
|
|
}
|
|
this.enable()
|
|
};
|
|
Ext.KeyMap.prototype = {stopEvent:false, addBinding:function (b) {
|
|
if (Ext.isArray(b)) {
|
|
Ext.each(b, function (j) {
|
|
this.addBinding(j)
|
|
}, this);
|
|
return
|
|
}
|
|
var k = b.key, g = b.fn || b.handler, l = b.scope;
|
|
if (b.stopEvent) {
|
|
this.stopEvent = b.stopEvent
|
|
}
|
|
if (typeof k == "string") {
|
|
var h = [];
|
|
var e = k.toUpperCase();
|
|
for (var c = 0, d = e.length; c < d; c++) {
|
|
h.push(e.charCodeAt(c))
|
|
}
|
|
k = h
|
|
}
|
|
var a = Ext.isArray(k);
|
|
var i = function (o) {
|
|
if (this.checkModifiers(b, o)) {
|
|
var m = o.getKey();
|
|
if (a) {
|
|
for (var n = 0, j = k.length; n < j; n++) {
|
|
if (k[n] == m) {
|
|
if (this.stopEvent) {
|
|
o.stopEvent()
|
|
}
|
|
g.call(l || window, m, o);
|
|
return
|
|
}
|
|
}
|
|
} else {
|
|
if (m == k) {
|
|
if (this.stopEvent) {
|
|
o.stopEvent()
|
|
}
|
|
g.call(l || window, m, o)
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.bindings.push(i)
|
|
}, checkModifiers:function (b, h) {
|
|
var j, d, g = ["shift", "ctrl", "alt"];
|
|
for (var c = 0, a = g.length; c < a; ++c) {
|
|
d = g[c];
|
|
j = b[d];
|
|
if (!(j === undefined || (j === h[d + "Key"]))) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}, on:function (b, d, c) {
|
|
var h, a, e, g;
|
|
if (typeof b == "object" && !Ext.isArray(b)) {
|
|
h = b.key;
|
|
a = b.shift;
|
|
e = b.ctrl;
|
|
g = b.alt
|
|
} else {
|
|
h = b
|
|
}
|
|
this.addBinding({key:h, shift:a, ctrl:e, alt:g, fn:d, scope:c})
|
|
}, handleKeyDown:function (g) {
|
|
if (this.enabled) {
|
|
var c = this.bindings;
|
|
for (var d = 0, a = c.length; d < a; d++) {
|
|
c[d].call(this, g)
|
|
}
|
|
}
|
|
}, isEnabled:function () {
|
|
return this.enabled
|
|
}, enable:function () {
|
|
if (!this.enabled) {
|
|
this.el.on(this.eventName, this.handleKeyDown, this);
|
|
this.enabled = true
|
|
}
|
|
}, disable:function () {
|
|
if (this.enabled) {
|
|
this.el.removeListener(this.eventName, this.handleKeyDown, this);
|
|
this.enabled = false
|
|
}
|
|
}, setDisabled:function (a) {
|
|
this[a ? "disable" : "enable"]()
|
|
}};
|
|
Ext.util.TextMetrics = function () {
|
|
var a;
|
|
return{measure:function (b, c, d) {
|
|
if (!a) {
|
|
a = Ext.util.TextMetrics.Instance(b, d)
|
|
}
|
|
a.bind(b);
|
|
a.setFixedWidth(d || "auto");
|
|
return a.getSize(c)
|
|
}, createInstance:function (b, c) {
|
|
return Ext.util.TextMetrics.Instance(b, c)
|
|
}}
|
|
}();
|
|
Ext.util.TextMetrics.Instance = function (b, d) {
|
|
var c = new Ext.Element(document.createElement("div"));
|
|
document.body.appendChild(c.dom);
|
|
c.position("absolute");
|
|
c.setLeftTop(-1000, -1000);
|
|
c.hide();
|
|
if (d) {
|
|
c.setWidth(d)
|
|
}
|
|
var a = {getSize:function (g) {
|
|
c.update(g);
|
|
var e = c.getSize();
|
|
c.update("");
|
|
return e
|
|
}, bind:function (e) {
|
|
c.setStyle(Ext.fly(e).getStyles("font-size", "font-style", "font-weight", "font-family", "line-height", "text-transform", "letter-spacing"))
|
|
}, setFixedWidth:function (e) {
|
|
c.setWidth(e)
|
|
}, getWidth:function (e) {
|
|
c.dom.style.width = "auto";
|
|
return this.getSize(e).width
|
|
}, getHeight:function (e) {
|
|
return this.getSize(e).height
|
|
}};
|
|
a.bind(b);
|
|
return a
|
|
};
|
|
Ext.Element.addMethods({getTextWidth:function (c, b, a) {
|
|
return(Ext.util.TextMetrics.measure(this.dom, Ext.value(c, this.dom.innerHTML, true)).width).constrain(b || 0, a || 1000000)
|
|
}});
|
|
Ext.util.Cookies = {set:function (c, e) {
|
|
var a = arguments;
|
|
var i = arguments.length;
|
|
var b = (i > 2) ? a[2] : null;
|
|
var h = (i > 3) ? a[3] : "/";
|
|
var d = (i > 4) ? a[4] : null;
|
|
var g = (i > 5) ? a[5] : false;
|
|
document.cookie = c + "=" + escape(e) + ((b === null) ? "" : ("; expires=" + b.toGMTString())) + ((h === null) ? "" : ("; path=" + h)) + ((d === null) ? "" : ("; domain=" + d)) + ((g === true) ? "; secure" : "")
|
|
}, get:function (d) {
|
|
var b = d + "=";
|
|
var g = b.length;
|
|
var a = document.cookie.length;
|
|
var e = 0;
|
|
var c = 0;
|
|
while (e < a) {
|
|
c = e + g;
|
|
if (document.cookie.substring(e, c) == b) {
|
|
return Ext.util.Cookies.getCookieVal(c)
|
|
}
|
|
e = document.cookie.indexOf(" ", e) + 1;
|
|
if (e === 0) {
|
|
break
|
|
}
|
|
}
|
|
return null
|
|
}, clear:function (a) {
|
|
if (Ext.util.Cookies.get(a)) {
|
|
document.cookie = a + "=; expires=Thu, 01-Jan-70 00:00:01 GMT"
|
|
}
|
|
}, getCookieVal:function (b) {
|
|
var a = document.cookie.indexOf(";", b);
|
|
if (a == -1) {
|
|
a = document.cookie.length
|
|
}
|
|
return unescape(document.cookie.substring(b, a))
|
|
}};
|
|
Ext.handleError = function (a) {
|
|
throw a
|
|
};
|
|
Ext.Error = function (a) {
|
|
this.message = (this.lang[a]) ? this.lang[a] : a
|
|
};
|
|
Ext.Error.prototype = new Error();
|
|
Ext.apply(Ext.Error.prototype, {lang:{}, name:"Ext.Error", getName:function () {
|
|
return this.name
|
|
}, getMessage:function () {
|
|
return this.message
|
|
}, toJson:function () {
|
|
return Ext.encode(this)
|
|
}});
|
|
Ext.ComponentMgr = function () {
|
|
var c = new Ext.util.MixedCollection();
|
|
var b = {};
|
|
var a = {};
|
|
return{register:function (d) {
|
|
c.add(d)
|
|
}, unregister:function (d) {
|
|
c.remove(d)
|
|
}, get:function (d) {
|
|
return c.get(d)
|
|
}, onAvailable:function (g, e, d) {
|
|
c.on("add", function (h, i) {
|
|
if (i.id == g) {
|
|
e.call(d || i, i);
|
|
c.un("add", e, d)
|
|
}
|
|
})
|
|
}, all:c, types:b, ptypes:a, isRegistered:function (d) {
|
|
return b[d] !== undefined
|
|
}, isPluginRegistered:function (d) {
|
|
return a[d] !== undefined
|
|
}, registerType:function (e, d) {
|
|
b[e] = d;
|
|
d.xtype = e
|
|
}, create:function (d, e) {
|
|
return d.render ? d : new b[d.xtype || e](d)
|
|
}, registerPlugin:function (e, d) {
|
|
a[e] = d;
|
|
d.ptype = e
|
|
}, createPlugin:function (e, g) {
|
|
var d = a[e.ptype || g];
|
|
if (d.init) {
|
|
return d
|
|
} else {
|
|
return new d(e)
|
|
}
|
|
}}
|
|
}();
|
|
Ext.reg = Ext.ComponentMgr.registerType;
|
|
Ext.preg = Ext.ComponentMgr.registerPlugin;
|
|
Ext.create = Ext.ComponentMgr.create;
|
|
Ext.Component = function (b) {
|
|
b = b || {};
|
|
if (b.initialConfig) {
|
|
if (b.isAction) {
|
|
this.baseAction = b
|
|
}
|
|
b = b.initialConfig
|
|
} else {
|
|
if (b.tagName || b.dom || Ext.isString(b)) {
|
|
b = {applyTo:b, id:b.id || b}
|
|
}
|
|
}
|
|
this.initialConfig = b;
|
|
Ext.apply(this, b);
|
|
this.addEvents("added", "disable", "enable", "beforeshow", "show", "beforehide", "hide", "removed", "beforerender", "render", "afterrender", "beforedestroy", "destroy", "beforestaterestore", "staterestore", "beforestatesave", "statesave");
|
|
this.getId();
|
|
Ext.ComponentMgr.register(this);
|
|
Ext.Component.superclass.constructor.call(this);
|
|
if (this.baseAction) {
|
|
this.baseAction.addComponent(this)
|
|
}
|
|
this.initComponent();
|
|
if (this.plugins) {
|
|
if (Ext.isArray(this.plugins)) {
|
|
for (var c = 0, a = this.plugins.length; c < a; c++) {
|
|
this.plugins[c] = this.initPlugin(this.plugins[c])
|
|
}
|
|
} else {
|
|
this.plugins = this.initPlugin(this.plugins)
|
|
}
|
|
}
|
|
if (this.stateful !== false) {
|
|
this.initState()
|
|
}
|
|
if (this.applyTo) {
|
|
this.applyToMarkup(this.applyTo);
|
|
delete this.applyTo
|
|
} else {
|
|
if (this.renderTo) {
|
|
this.render(this.renderTo);
|
|
delete this.renderTo
|
|
}
|
|
}
|
|
};
|
|
Ext.Component.AUTO_ID = 1000;
|
|
Ext.extend(Ext.Component, Ext.util.Observable, {disabled:false, hidden:false, autoEl:"div", disabledClass:"x-item-disabled", allowDomMove:true, autoShow:false, hideMode:"display", hideParent:false, rendered:false, tplWriteMode:"overwrite", bubbleEvents:[], ctype:"Ext.Component", actionMode:"el", getActionEl:function () {
|
|
return this[this.actionMode]
|
|
}, initPlugin:function (a) {
|
|
if (a.ptype && !Ext.isFunction(a.init)) {
|
|
a = Ext.ComponentMgr.createPlugin(a)
|
|
} else {
|
|
if (Ext.isString(a)) {
|
|
a = Ext.ComponentMgr.createPlugin({ptype:a})
|
|
}
|
|
}
|
|
a.init(this);
|
|
return a
|
|
}, initComponent:function () {
|
|
if (this.listeners) {
|
|
this.on(this.listeners);
|
|
delete this.listeners
|
|
}
|
|
this.enableBubble(this.bubbleEvents)
|
|
}, render:function (b, a) {
|
|
if (!this.rendered && this.fireEvent("beforerender", this) !== false) {
|
|
if (!b && this.el) {
|
|
this.el = Ext.get(this.el);
|
|
b = this.el.dom.parentNode;
|
|
this.allowDomMove = false
|
|
}
|
|
this.container = Ext.get(b);
|
|
if (this.ctCls) {
|
|
this.container.addClass(this.ctCls)
|
|
}
|
|
this.rendered = true;
|
|
if (a !== undefined) {
|
|
if (Ext.isNumber(a)) {
|
|
a = this.container.dom.childNodes[a]
|
|
} else {
|
|
a = Ext.getDom(a)
|
|
}
|
|
}
|
|
this.onRender(this.container, a || null);
|
|
if (this.autoShow) {
|
|
this.el.removeClass(["x-hidden", "x-hide-" + this.hideMode])
|
|
}
|
|
if (this.cls) {
|
|
this.el.addClass(this.cls);
|
|
delete this.cls
|
|
}
|
|
if (this.style) {
|
|
this.el.applyStyles(this.style);
|
|
delete this.style
|
|
}
|
|
if (this.overCls) {
|
|
this.el.addClassOnOver(this.overCls)
|
|
}
|
|
this.fireEvent("render", this);
|
|
var c = this.getContentTarget();
|
|
if (this.html) {
|
|
c.update(Ext.DomHelper.markup(this.html));
|
|
delete this.html
|
|
}
|
|
if (this.contentEl) {
|
|
var d = Ext.getDom(this.contentEl);
|
|
Ext.fly(d).removeClass(["x-hidden", "x-hide-display"]);
|
|
c.appendChild(d)
|
|
}
|
|
if (this.tpl) {
|
|
if (!this.tpl.compile) {
|
|
this.tpl = new Ext.XTemplate(this.tpl)
|
|
}
|
|
if (this.data) {
|
|
this.tpl[this.tplWriteMode](c, this.data);
|
|
delete this.data
|
|
}
|
|
}
|
|
this.afterRender(this.container);
|
|
if (this.hidden) {
|
|
this.doHide()
|
|
}
|
|
if (this.disabled) {
|
|
this.disable(true)
|
|
}
|
|
if (this.stateful !== false) {
|
|
this.initStateEvents()
|
|
}
|
|
this.fireEvent("afterrender", this)
|
|
}
|
|
return this
|
|
}, update:function (b, d, a) {
|
|
var c = this.getContentTarget();
|
|
if (this.tpl && typeof b !== "string") {
|
|
this.tpl[this.tplWriteMode](c, b || {})
|
|
} else {
|
|
var e = Ext.isObject(b) ? Ext.DomHelper.markup(b) : b;
|
|
c.update(e, d, a)
|
|
}
|
|
}, onAdded:function (a, b) {
|
|
this.ownerCt = a;
|
|
this.initRef();
|
|
this.fireEvent("added", this, a, b)
|
|
}, onRemoved:function () {
|
|
this.removeRef();
|
|
this.fireEvent("removed", this, this.ownerCt);
|
|
delete this.ownerCt
|
|
}, initRef:function () {
|
|
if (this.ref && !this.refOwner) {
|
|
var d = this.ref.split("/"), c = d.length, b = 0, a = this;
|
|
while (a && b < c) {
|
|
a = a.ownerCt;
|
|
++b
|
|
}
|
|
if (a) {
|
|
a[this.refName = d[--b]] = this;
|
|
this.refOwner = a
|
|
}
|
|
}
|
|
}, removeRef:function () {
|
|
if (this.refOwner && this.refName) {
|
|
delete this.refOwner[this.refName];
|
|
delete this.refOwner
|
|
}
|
|
}, initState:function () {
|
|
if (Ext.state.Manager) {
|
|
var b = this.getStateId();
|
|
if (b) {
|
|
var a = Ext.state.Manager.get(b);
|
|
if (a) {
|
|
if (this.fireEvent("beforestaterestore", this, a) !== false) {
|
|
this.applyState(Ext.apply({}, a));
|
|
this.fireEvent("staterestore", this, a)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, getStateId:function () {
|
|
return this.stateId || ((/^(ext-comp-|ext-gen)/).test(String(this.id)) ? null : this.id)
|
|
}, initStateEvents:function () {
|
|
if (this.stateEvents) {
|
|
for (var a = 0, b; b = this.stateEvents[a]; a++) {
|
|
this.on(b, this.saveState, this, {delay:100})
|
|
}
|
|
}
|
|
}, applyState:function (a) {
|
|
if (a) {
|
|
Ext.apply(this, a)
|
|
}
|
|
}, getState:function () {
|
|
return null
|
|
}, saveState:function () {
|
|
if (Ext.state.Manager && this.stateful !== false) {
|
|
var b = this.getStateId();
|
|
if (b) {
|
|
var a = this.getState();
|
|
if (this.fireEvent("beforestatesave", this, a) !== false) {
|
|
Ext.state.Manager.set(b, a);
|
|
this.fireEvent("statesave", this, a)
|
|
}
|
|
}
|
|
}
|
|
}, applyToMarkup:function (a) {
|
|
this.allowDomMove = false;
|
|
this.el = Ext.get(a);
|
|
this.render(this.el.dom.parentNode)
|
|
}, addClass:function (a) {
|
|
if (this.el) {
|
|
this.el.addClass(a)
|
|
} else {
|
|
this.cls = this.cls ? this.cls + " " + a : a
|
|
}
|
|
return this
|
|
}, removeClass:function (a) {
|
|
if (this.el) {
|
|
this.el.removeClass(a)
|
|
} else {
|
|
if (this.cls) {
|
|
this.cls = this.cls.split(" ").remove(a).join(" ")
|
|
}
|
|
}
|
|
return this
|
|
}, onRender:function (b, a) {
|
|
if (!this.el && this.autoEl) {
|
|
if (Ext.isString(this.autoEl)) {
|
|
this.el = document.createElement(this.autoEl)
|
|
} else {
|
|
var c = document.createElement("div");
|
|
Ext.DomHelper.overwrite(c, this.autoEl);
|
|
this.el = c.firstChild
|
|
}
|
|
if (!this.el.id) {
|
|
this.el.id = this.getId()
|
|
}
|
|
}
|
|
if (this.el) {
|
|
this.el = Ext.get(this.el);
|
|
if (this.allowDomMove !== false) {
|
|
b.dom.insertBefore(this.el.dom, a);
|
|
if (c) {
|
|
Ext.removeNode(c);
|
|
c = null
|
|
}
|
|
}
|
|
}
|
|
}, getAutoCreate:function () {
|
|
var a = Ext.isObject(this.autoCreate) ? this.autoCreate : Ext.apply({}, this.defaultAutoCreate);
|
|
if (this.id && !a.id) {
|
|
a.id = this.id
|
|
}
|
|
return a
|
|
}, afterRender:Ext.emptyFn, destroy:function () {
|
|
if (!this.isDestroyed) {
|
|
if (this.fireEvent("beforedestroy", this) !== false) {
|
|
this.destroying = true;
|
|
this.beforeDestroy();
|
|
if (this.ownerCt && this.ownerCt.remove) {
|
|
this.ownerCt.remove(this, false)
|
|
}
|
|
if (this.rendered) {
|
|
this.el.remove();
|
|
if (this.actionMode == "container" || this.removeMode == "container") {
|
|
this.container.remove()
|
|
}
|
|
}
|
|
if (this.focusTask && this.focusTask.cancel) {
|
|
this.focusTask.cancel()
|
|
}
|
|
this.onDestroy();
|
|
Ext.ComponentMgr.unregister(this);
|
|
this.fireEvent("destroy", this);
|
|
this.purgeListeners();
|
|
this.destroying = false;
|
|
this.isDestroyed = true
|
|
}
|
|
}
|
|
}, deleteMembers:function () {
|
|
var b = arguments;
|
|
for (var c = 0, a = b.length; c < a; ++c) {
|
|
delete this[b[c]]
|
|
}
|
|
}, beforeDestroy:Ext.emptyFn, onDestroy:Ext.emptyFn, getEl:function () {
|
|
return this.el
|
|
}, getContentTarget:function () {
|
|
return this.el
|
|
}, getId:function () {
|
|
return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID))
|
|
}, getItemId:function () {
|
|
return this.itemId || this.getId()
|
|
}, focus:function (b, a) {
|
|
if (a) {
|
|
this.focusTask = new Ext.util.DelayedTask(this.focus, this, [b, false]);
|
|
this.focusTask.delay(Ext.isNumber(a) ? a : 10);
|
|
return this
|
|
}
|
|
if (this.rendered && !this.isDestroyed) {
|
|
this.el.focus();
|
|
if (b === true) {
|
|
this.el.dom.select()
|
|
}
|
|
}
|
|
return this
|
|
}, blur:function () {
|
|
if (this.rendered) {
|
|
this.el.blur()
|
|
}
|
|
return this
|
|
}, disable:function (a) {
|
|
if (this.rendered) {
|
|
this.onDisable()
|
|
}
|
|
this.disabled = true;
|
|
if (a !== true) {
|
|
this.fireEvent("disable", this)
|
|
}
|
|
return this
|
|
}, onDisable:function () {
|
|
this.getActionEl().addClass(this.disabledClass);
|
|
this.el.dom.disabled = true
|
|
}, enable:function () {
|
|
if (this.rendered) {
|
|
this.onEnable()
|
|
}
|
|
this.disabled = false;
|
|
this.fireEvent("enable", this);
|
|
return this
|
|
}, onEnable:function () {
|
|
this.getActionEl().removeClass(this.disabledClass);
|
|
this.el.dom.disabled = false
|
|
}, setDisabled:function (a) {
|
|
return this[a ? "disable" : "enable"]()
|
|
}, show:function () {
|
|
if (this.fireEvent("beforeshow", this) !== false) {
|
|
this.hidden = false;
|
|
if (this.autoRender) {
|
|
this.render(Ext.isBoolean(this.autoRender) ? Ext.getBody() : this.autoRender)
|
|
}
|
|
if (this.rendered) {
|
|
this.onShow()
|
|
}
|
|
this.fireEvent("show", this)
|
|
}
|
|
return this
|
|
}, onShow:function () {
|
|
this.getVisibilityEl().removeClass("x-hide-" + this.hideMode)
|
|
}, hide:function () {
|
|
if (this.fireEvent("beforehide", this) !== false) {
|
|
this.doHide();
|
|
this.fireEvent("hide", this)
|
|
}
|
|
return this
|
|
}, doHide:function () {
|
|
this.hidden = true;
|
|
if (this.rendered) {
|
|
this.onHide()
|
|
}
|
|
}, onHide:function () {
|
|
this.getVisibilityEl().addClass("x-hide-" + this.hideMode)
|
|
}, getVisibilityEl:function () {
|
|
return this.hideParent ? this.container : this.getActionEl()
|
|
}, setVisible:function (a) {
|
|
return this[a ? "show" : "hide"]()
|
|
}, isVisible:function () {
|
|
return this.rendered && this.getVisibilityEl().isVisible()
|
|
}, cloneConfig:function (b) {
|
|
b = b || {};
|
|
var c = b.id || Ext.id();
|
|
var a = Ext.applyIf(b, this.initialConfig);
|
|
a.id = c;
|
|
return new this.constructor(a)
|
|
}, getXType:function () {
|
|
return this.constructor.xtype
|
|
}, isXType:function (b, a) {
|
|
if (Ext.isFunction(b)) {
|
|
b = b.xtype
|
|
} else {
|
|
if (Ext.isObject(b)) {
|
|
b = b.constructor.xtype
|
|
}
|
|
}
|
|
return !a ? ("/" + this.getXTypes() + "/").indexOf("/" + b + "/") != -1 : this.constructor.xtype == b
|
|
}, getXTypes:function () {
|
|
var a = this.constructor;
|
|
if (!a.xtypes) {
|
|
var d = [], b = this;
|
|
while (b && b.constructor.xtype) {
|
|
d.unshift(b.constructor.xtype);
|
|
b = b.constructor.superclass
|
|
}
|
|
a.xtypeChain = d;
|
|
a.xtypes = d.join("/")
|
|
}
|
|
return a.xtypes
|
|
}, findParentBy:function (a) {
|
|
for (var b = this.ownerCt; (b != null) && !a(b, this); b = b.ownerCt) {
|
|
}
|
|
return b || null
|
|
}, findParentByType:function (b, a) {
|
|
return this.findParentBy(function (d) {
|
|
return d.isXType(b, a)
|
|
})
|
|
}, bubble:function (c, b, a) {
|
|
var d = this;
|
|
while (d) {
|
|
if (c.apply(b || d, a || [d]) === false) {
|
|
break
|
|
}
|
|
d = d.ownerCt
|
|
}
|
|
return this
|
|
}, getPositionEl:function () {
|
|
return this.positionEl || this.el
|
|
}, purgeListeners:function () {
|
|
Ext.Component.superclass.purgeListeners.call(this);
|
|
if (this.mons) {
|
|
this.on("beforedestroy", this.clearMons, this, {single:true})
|
|
}
|
|
}, clearMons:function () {
|
|
Ext.each(this.mons, function (a) {
|
|
a.item.un(a.ename, a.fn, a.scope)
|
|
}, this);
|
|
this.mons = []
|
|
}, createMons:function () {
|
|
if (!this.mons) {
|
|
this.mons = [];
|
|
this.on("beforedestroy", this.clearMons, this, {single:true})
|
|
}
|
|
}, mon:function (g, b, d, c, a) {
|
|
this.createMons();
|
|
if (Ext.isObject(b)) {
|
|
var j = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
|
|
var i = b;
|
|
for (var h in i) {
|
|
if (j.test(h)) {
|
|
continue
|
|
}
|
|
if (Ext.isFunction(i[h])) {
|
|
this.mons.push({item:g, ename:h, fn:i[h], scope:i.scope});
|
|
g.on(h, i[h], i.scope, i)
|
|
} else {
|
|
this.mons.push({item:g, ename:h, fn:i[h], scope:i.scope});
|
|
g.on(h, i[h])
|
|
}
|
|
}
|
|
return
|
|
}
|
|
this.mons.push({item:g, ename:b, fn:d, scope:c});
|
|
g.on(b, d, c, a)
|
|
}, mun:function (h, c, g, e) {
|
|
var j, d;
|
|
this.createMons();
|
|
for (var b = 0, a = this.mons.length; b < a; ++b) {
|
|
d = this.mons[b];
|
|
if (h === d.item && c == d.ename && g === d.fn && e === d.scope) {
|
|
this.mons.splice(b, 1);
|
|
h.un(c, g, e);
|
|
j = true;
|
|
break
|
|
}
|
|
}
|
|
return j
|
|
}, nextSibling:function () {
|
|
if (this.ownerCt) {
|
|
var a = this.ownerCt.items.indexOf(this);
|
|
if (a != -1 && a + 1 < this.ownerCt.items.getCount()) {
|
|
return this.ownerCt.items.itemAt(a + 1)
|
|
}
|
|
}
|
|
return null
|
|
}, previousSibling:function () {
|
|
if (this.ownerCt) {
|
|
var a = this.ownerCt.items.indexOf(this);
|
|
if (a > 0) {
|
|
return this.ownerCt.items.itemAt(a - 1)
|
|
}
|
|
}
|
|
return null
|
|
}, getBubbleTarget:function () {
|
|
return this.ownerCt
|
|
}});
|
|
Ext.reg("component", Ext.Component);
|
|
Ext.Action = Ext.extend(Object, {constructor:function (a) {
|
|
this.initialConfig = a;
|
|
this.itemId = a.itemId = (a.itemId || a.id || Ext.id());
|
|
this.items = []
|
|
}, isAction:true, setText:function (a) {
|
|
this.initialConfig.text = a;
|
|
this.callEach("setText", [a])
|
|
}, getText:function () {
|
|
return this.initialConfig.text
|
|
}, setIconClass:function (a) {
|
|
this.initialConfig.iconCls = a;
|
|
this.callEach("setIconClass", [a])
|
|
}, getIconClass:function () {
|
|
return this.initialConfig.iconCls
|
|
}, setDisabled:function (a) {
|
|
this.initialConfig.disabled = a;
|
|
this.callEach("setDisabled", [a])
|
|
}, enable:function () {
|
|
this.setDisabled(false)
|
|
}, disable:function () {
|
|
this.setDisabled(true)
|
|
}, isDisabled:function () {
|
|
return this.initialConfig.disabled
|
|
}, setHidden:function (a) {
|
|
this.initialConfig.hidden = a;
|
|
this.callEach("setVisible", [!a])
|
|
}, show:function () {
|
|
this.setHidden(false)
|
|
}, hide:function () {
|
|
this.setHidden(true)
|
|
}, isHidden:function () {
|
|
return this.initialConfig.hidden
|
|
}, setHandler:function (b, a) {
|
|
this.initialConfig.handler = b;
|
|
this.initialConfig.scope = a;
|
|
this.callEach("setHandler", [b, a])
|
|
}, each:function (b, a) {
|
|
Ext.each(this.items, b, a)
|
|
}, callEach:function (e, b) {
|
|
var d = this.items;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c][e].apply(d[c], b)
|
|
}
|
|
}, addComponent:function (a) {
|
|
this.items.push(a);
|
|
a.on("destroy", this.removeComponent, this)
|
|
}, removeComponent:function (a) {
|
|
this.items.remove(a)
|
|
}, execute:function () {
|
|
this.initialConfig.handler.apply(this.initialConfig.scope || window, arguments)
|
|
}});
|
|
(function () {
|
|
Ext.Layer = function (d, c) {
|
|
d = d || {};
|
|
var e = Ext.DomHelper, h = d.parentEl, g = h ? Ext.getDom(h) : document.body;
|
|
if (c) {
|
|
this.dom = Ext.getDom(c)
|
|
}
|
|
if (!this.dom) {
|
|
var i = d.dh || {tag:"div", cls:"x-layer"};
|
|
this.dom = e.append(g, i)
|
|
}
|
|
if (d.cls) {
|
|
this.addClass(d.cls)
|
|
}
|
|
this.constrain = d.constrain !== false;
|
|
this.setVisibilityMode(Ext.Element.VISIBILITY);
|
|
if (d.id) {
|
|
this.id = this.dom.id = d.id
|
|
} else {
|
|
this.id = Ext.id(this.dom)
|
|
}
|
|
this.zindex = d.zindex || this.getZIndex();
|
|
this.position("absolute", this.zindex);
|
|
if (d.shadow) {
|
|
this.shadowOffset = d.shadowOffset || 4;
|
|
this.shadow = new Ext.Shadow({offset:this.shadowOffset, mode:d.shadow})
|
|
} else {
|
|
this.shadowOffset = 0
|
|
}
|
|
this.useShim = d.shim !== false && Ext.useShims;
|
|
this.useDisplay = d.useDisplay;
|
|
this.hide()
|
|
};
|
|
var a = Ext.Element.prototype;
|
|
var b = [];
|
|
Ext.extend(Ext.Layer, Ext.Element, {getZIndex:function () {
|
|
return this.zindex || parseInt((this.getShim() || this).getStyle("z-index"), 10) || 11000
|
|
}, getShim:function () {
|
|
if (!this.useShim) {
|
|
return null
|
|
}
|
|
if (this.shim) {
|
|
return this.shim
|
|
}
|
|
var d = b.shift();
|
|
if (!d) {
|
|
d = this.createShim();
|
|
d.enableDisplayMode("block");
|
|
d.dom.style.display = "none";
|
|
d.dom.style.visibility = "visible"
|
|
}
|
|
var c = this.dom.parentNode;
|
|
if (d.dom.parentNode != c) {
|
|
c.insertBefore(d.dom, this.dom)
|
|
}
|
|
d.setStyle("z-index", this.getZIndex() - 2);
|
|
this.shim = d;
|
|
return d
|
|
}, hideShim:function () {
|
|
if (this.shim) {
|
|
this.shim.setDisplayed(false);
|
|
b.push(this.shim);
|
|
delete this.shim
|
|
}
|
|
}, disableShadow:function () {
|
|
if (this.shadow) {
|
|
this.shadowDisabled = true;
|
|
this.shadow.hide();
|
|
this.lastShadowOffset = this.shadowOffset;
|
|
this.shadowOffset = 0
|
|
}
|
|
}, enableShadow:function (c) {
|
|
if (this.shadow) {
|
|
this.shadowDisabled = false;
|
|
if (Ext.isDefined(this.lastShadowOffset)) {
|
|
this.shadowOffset = this.lastShadowOffset;
|
|
delete this.lastShadowOffset
|
|
}
|
|
if (c) {
|
|
this.sync(true)
|
|
}
|
|
}
|
|
}, sync:function (d) {
|
|
var n = this.shadow;
|
|
if (!this.updating && this.isVisible() && (n || this.useShim)) {
|
|
var i = this.getShim(), m = this.getWidth(), j = this.getHeight(), e = this.getLeft(true), o = this.getTop(true);
|
|
if (n && !this.shadowDisabled) {
|
|
if (d && !n.isVisible()) {
|
|
n.show(this)
|
|
} else {
|
|
n.realign(e, o, m, j)
|
|
}
|
|
if (i) {
|
|
if (d) {
|
|
i.show()
|
|
}
|
|
var k = n.el.getXY(), g = i.dom.style, c = n.el.getSize();
|
|
g.left = (k[0]) + "px";
|
|
g.top = (k[1]) + "px";
|
|
g.width = (c.width) + "px";
|
|
g.height = (c.height) + "px"
|
|
}
|
|
} else {
|
|
if (i) {
|
|
if (d) {
|
|
i.show()
|
|
}
|
|
i.setSize(m, j);
|
|
i.setLeftTop(e, o)
|
|
}
|
|
}
|
|
}
|
|
}, destroy:function () {
|
|
this.hideShim();
|
|
if (this.shadow) {
|
|
this.shadow.hide()
|
|
}
|
|
this.removeAllListeners();
|
|
Ext.removeNode(this.dom);
|
|
delete this.dom
|
|
}, remove:function () {
|
|
this.destroy()
|
|
}, beginUpdate:function () {
|
|
this.updating = true
|
|
}, endUpdate:function () {
|
|
this.updating = false;
|
|
this.sync(true)
|
|
}, hideUnders:function (c) {
|
|
if (this.shadow) {
|
|
this.shadow.hide()
|
|
}
|
|
this.hideShim()
|
|
}, constrainXY:function () {
|
|
if (this.constrain) {
|
|
var j = Ext.lib.Dom.getViewWidth(), d = Ext.lib.Dom.getViewHeight();
|
|
var o = Ext.getDoc().getScroll();
|
|
var n = this.getXY();
|
|
var k = n[0], i = n[1];
|
|
var c = this.shadowOffset;
|
|
var l = this.dom.offsetWidth + c, e = this.dom.offsetHeight + c;
|
|
var g = false;
|
|
if ((k + l) > j + o.left) {
|
|
k = j - l - c;
|
|
g = true
|
|
}
|
|
if ((i + e) > d + o.top) {
|
|
i = d - e - c;
|
|
g = true
|
|
}
|
|
if (k < o.left) {
|
|
k = o.left;
|
|
g = true
|
|
}
|
|
if (i < o.top) {
|
|
i = o.top;
|
|
g = true
|
|
}
|
|
if (g) {
|
|
if (this.avoidY) {
|
|
var m = this.avoidY;
|
|
if (i <= m && (i + e) >= m) {
|
|
i = m - e - 5
|
|
}
|
|
}
|
|
n = [k, i];
|
|
this.storeXY(n);
|
|
a.setXY.call(this, n);
|
|
this.sync()
|
|
}
|
|
}
|
|
return this
|
|
}, getConstrainOffset:function () {
|
|
return this.shadowOffset
|
|
}, isVisible:function () {
|
|
return this.visible
|
|
}, showAction:function () {
|
|
this.visible = true;
|
|
if (this.useDisplay === true) {
|
|
this.setDisplayed("")
|
|
} else {
|
|
if (this.lastXY) {
|
|
a.setXY.call(this, this.lastXY)
|
|
} else {
|
|
if (this.lastLT) {
|
|
a.setLeftTop.call(this, this.lastLT[0], this.lastLT[1])
|
|
}
|
|
}
|
|
}
|
|
}, hideAction:function () {
|
|
this.visible = false;
|
|
if (this.useDisplay === true) {
|
|
this.setDisplayed(false)
|
|
} else {
|
|
this.setLeftTop(-10000, -10000)
|
|
}
|
|
}, setVisible:function (i, h, k, l, j) {
|
|
if (i) {
|
|
this.showAction()
|
|
}
|
|
if (h && i) {
|
|
var g = function () {
|
|
this.sync(true);
|
|
if (l) {
|
|
l()
|
|
}
|
|
}.createDelegate(this);
|
|
a.setVisible.call(this, true, true, k, g, j)
|
|
} else {
|
|
if (!i) {
|
|
this.hideUnders(true)
|
|
}
|
|
var g = l;
|
|
if (h) {
|
|
g = function () {
|
|
this.hideAction();
|
|
if (l) {
|
|
l()
|
|
}
|
|
}.createDelegate(this)
|
|
}
|
|
a.setVisible.call(this, i, h, k, g, j);
|
|
if (i) {
|
|
this.sync(true)
|
|
} else {
|
|
if (!h) {
|
|
this.hideAction()
|
|
}
|
|
}
|
|
}
|
|
return this
|
|
}, storeXY:function (c) {
|
|
delete this.lastLT;
|
|
this.lastXY = c
|
|
}, storeLeftTop:function (d, c) {
|
|
delete this.lastXY;
|
|
this.lastLT = [d, c]
|
|
}, beforeFx:function () {
|
|
this.beforeAction();
|
|
return Ext.Layer.superclass.beforeFx.apply(this, arguments)
|
|
}, afterFx:function () {
|
|
Ext.Layer.superclass.afterFx.apply(this, arguments);
|
|
this.sync(this.isVisible())
|
|
}, beforeAction:function () {
|
|
if (!this.updating && this.shadow) {
|
|
this.shadow.hide()
|
|
}
|
|
}, setLeft:function (c) {
|
|
this.storeLeftTop(c, this.getTop(true));
|
|
a.setLeft.apply(this, arguments);
|
|
this.sync();
|
|
return this
|
|
}, setTop:function (c) {
|
|
this.storeLeftTop(this.getLeft(true), c);
|
|
a.setTop.apply(this, arguments);
|
|
this.sync();
|
|
return this
|
|
}, setLeftTop:function (d, c) {
|
|
this.storeLeftTop(d, c);
|
|
a.setLeftTop.apply(this, arguments);
|
|
this.sync();
|
|
return this
|
|
}, setXY:function (j, h, k, l, i) {
|
|
this.fixDisplay();
|
|
this.beforeAction();
|
|
this.storeXY(j);
|
|
var g = this.createCB(l);
|
|
a.setXY.call(this, j, h, k, g, i);
|
|
if (!h) {
|
|
g()
|
|
}
|
|
return this
|
|
}, createCB:function (e) {
|
|
var d = this;
|
|
return function () {
|
|
d.constrainXY();
|
|
d.sync(true);
|
|
if (e) {
|
|
e()
|
|
}
|
|
}
|
|
}, setX:function (g, h, j, k, i) {
|
|
this.setXY([g, this.getY()], h, j, k, i);
|
|
return this
|
|
}, setY:function (k, g, i, j, h) {
|
|
this.setXY([this.getX(), k], g, i, j, h);
|
|
return this
|
|
}, setSize:function (j, k, i, m, n, l) {
|
|
this.beforeAction();
|
|
var g = this.createCB(n);
|
|
a.setSize.call(this, j, k, i, m, g, l);
|
|
if (!i) {
|
|
g()
|
|
}
|
|
return this
|
|
}, setWidth:function (i, h, k, l, j) {
|
|
this.beforeAction();
|
|
var g = this.createCB(l);
|
|
a.setWidth.call(this, i, h, k, g, j);
|
|
if (!h) {
|
|
g()
|
|
}
|
|
return this
|
|
}, setHeight:function (j, i, l, m, k) {
|
|
this.beforeAction();
|
|
var g = this.createCB(m);
|
|
a.setHeight.call(this, j, i, l, g, k);
|
|
if (!i) {
|
|
g()
|
|
}
|
|
return this
|
|
}, setBounds:function (o, m, p, i, n, k, l, j) {
|
|
this.beforeAction();
|
|
var g = this.createCB(l);
|
|
if (!n) {
|
|
this.storeXY([o, m]);
|
|
a.setXY.call(this, [o, m]);
|
|
a.setSize.call(this, p, i, n, k, g, j);
|
|
g()
|
|
} else {
|
|
a.setBounds.call(this, o, m, p, i, n, k, g, j)
|
|
}
|
|
return this
|
|
}, setZIndex:function (c) {
|
|
this.zindex = c;
|
|
this.setStyle("z-index", c + 2);
|
|
if (this.shadow) {
|
|
this.shadow.setZIndex(c + 1)
|
|
}
|
|
if (this.shim) {
|
|
this.shim.setStyle("z-index", c)
|
|
}
|
|
return this
|
|
}})
|
|
})();
|
|
Ext.Shadow = function (d) {
|
|
Ext.apply(this, d);
|
|
if (typeof this.mode != "string") {
|
|
this.mode = this.defaultMode
|
|
}
|
|
var e = this.offset, c = {h:0}, b = Math.floor(this.offset / 2);
|
|
switch (this.mode.toLowerCase()) {
|
|
case"drop":
|
|
c.w = 0;
|
|
c.l = c.t = e;
|
|
c.t -= 1;
|
|
if (Ext.isIE) {
|
|
c.l -= this.offset + b;
|
|
c.t -= this.offset + b;
|
|
c.w -= b;
|
|
c.h -= b;
|
|
c.t += 1
|
|
}
|
|
break;
|
|
case"sides":
|
|
c.w = (e * 2);
|
|
c.l = -e;
|
|
c.t = e - 1;
|
|
if (Ext.isIE) {
|
|
c.l -= (this.offset - b);
|
|
c.t -= this.offset + b;
|
|
c.l += 1;
|
|
c.w -= (this.offset - b) * 2;
|
|
c.w -= b + 1;
|
|
c.h -= 1
|
|
}
|
|
break;
|
|
case"frame":
|
|
c.w = c.h = (e * 2);
|
|
c.l = c.t = -e;
|
|
c.t += 1;
|
|
c.h -= 2;
|
|
if (Ext.isIE) {
|
|
c.l -= (this.offset - b);
|
|
c.t -= (this.offset - b);
|
|
c.l += 1;
|
|
c.w -= (this.offset + b + 1);
|
|
c.h -= (this.offset + b);
|
|
c.h += 1
|
|
}
|
|
break
|
|
}
|
|
this.adjusts = c
|
|
};
|
|
Ext.Shadow.prototype = {offset:4, defaultMode:"drop", show:function (a) {
|
|
a = Ext.get(a);
|
|
if (!this.el) {
|
|
this.el = Ext.Shadow.Pool.pull();
|
|
if (this.el.dom.nextSibling != a.dom) {
|
|
this.el.insertBefore(a)
|
|
}
|
|
}
|
|
this.el.setStyle("z-index", this.zIndex || parseInt(a.getStyle("z-index"), 10) - 1);
|
|
if (Ext.isIE) {
|
|
this.el.dom.style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (this.offset) + ")"
|
|
}
|
|
this.realign(a.getLeft(true), a.getTop(true), a.getWidth(), a.getHeight());
|
|
this.el.dom.style.display = "block"
|
|
}, isVisible:function () {
|
|
return this.el ? true : false
|
|
}, realign:function (b, r, q, g) {
|
|
if (!this.el) {
|
|
return
|
|
}
|
|
var n = this.adjusts, k = this.el.dom, u = k.style, i = 0, p = (q + n.w), e = (g + n.h), j = p + "px", o = e + "px", m, c;
|
|
u.left = (b + n.l) + "px";
|
|
u.top = (r + n.t) + "px";
|
|
if (u.width != j || u.height != o) {
|
|
u.width = j;
|
|
u.height = o;
|
|
if (!Ext.isIE) {
|
|
m = k.childNodes;
|
|
c = Math.max(0, (p - 12)) + "px";
|
|
m[0].childNodes[1].style.width = c;
|
|
m[1].childNodes[1].style.width = c;
|
|
m[2].childNodes[1].style.width = c;
|
|
m[1].style.height = Math.max(0, (e - 12)) + "px"
|
|
}
|
|
}
|
|
}, hide:function () {
|
|
if (this.el) {
|
|
this.el.dom.style.display = "none";
|
|
Ext.Shadow.Pool.push(this.el);
|
|
delete this.el
|
|
}
|
|
}, setZIndex:function (a) {
|
|
this.zIndex = a;
|
|
if (this.el) {
|
|
this.el.setStyle("z-index", a)
|
|
}
|
|
}};
|
|
Ext.Shadow.Pool = function () {
|
|
var b = [], a = Ext.isIE ? '<div class="x-ie-shadow"></div>' : '<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';
|
|
return{pull:function () {
|
|
var c = b.shift();
|
|
if (!c) {
|
|
c = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, a));
|
|
c.autoBoxAdjust = false
|
|
}
|
|
return c
|
|
}, push:function (c) {
|
|
b.push(c)
|
|
}}
|
|
}();
|
|
Ext.BoxComponent = Ext.extend(Ext.Component, {initComponent:function () {
|
|
Ext.BoxComponent.superclass.initComponent.call(this);
|
|
this.addEvents("resize", "move")
|
|
}, boxReady:false, deferHeight:false, setSize:function (b, d) {
|
|
if (typeof b == "object") {
|
|
d = b.height;
|
|
b = b.width
|
|
}
|
|
if (Ext.isDefined(b) && Ext.isDefined(this.boxMinWidth) && (b < this.boxMinWidth)) {
|
|
b = this.boxMinWidth
|
|
}
|
|
if (Ext.isDefined(d) && Ext.isDefined(this.boxMinHeight) && (d < this.boxMinHeight)) {
|
|
d = this.boxMinHeight
|
|
}
|
|
if (Ext.isDefined(b) && Ext.isDefined(this.boxMaxWidth) && (b > this.boxMaxWidth)) {
|
|
b = this.boxMaxWidth
|
|
}
|
|
if (Ext.isDefined(d) && Ext.isDefined(this.boxMaxHeight) && (d > this.boxMaxHeight)) {
|
|
d = this.boxMaxHeight
|
|
}
|
|
if (!this.boxReady) {
|
|
this.width = b;
|
|
this.height = d;
|
|
return this
|
|
}
|
|
if (this.cacheSizes !== false && this.lastSize && this.lastSize.width == b && this.lastSize.height == d) {
|
|
return this
|
|
}
|
|
this.lastSize = {width:b, height:d};
|
|
var c = this.adjustSize(b, d), g = c.width, a = c.height, e;
|
|
if (g !== undefined || a !== undefined) {
|
|
e = this.getResizeEl();
|
|
if (!this.deferHeight && g !== undefined && a !== undefined) {
|
|
e.setSize(g, a)
|
|
} else {
|
|
if (!this.deferHeight && a !== undefined) {
|
|
e.setHeight(a)
|
|
} else {
|
|
if (g !== undefined) {
|
|
e.setWidth(g)
|
|
}
|
|
}
|
|
}
|
|
this.onResize(g, a, b, d);
|
|
this.fireEvent("resize", this, g, a, b, d)
|
|
}
|
|
return this
|
|
}, setWidth:function (a) {
|
|
return this.setSize(a)
|
|
}, setHeight:function (a) {
|
|
return this.setSize(undefined, a)
|
|
}, getSize:function () {
|
|
return this.getResizeEl().getSize()
|
|
}, getWidth:function () {
|
|
return this.getResizeEl().getWidth()
|
|
}, getHeight:function () {
|
|
return this.getResizeEl().getHeight()
|
|
}, getOuterSize:function () {
|
|
var a = this.getResizeEl();
|
|
return{width:a.getWidth() + a.getMargins("lr"), height:a.getHeight() + a.getMargins("tb")}
|
|
}, getPosition:function (a) {
|
|
var b = this.getPositionEl();
|
|
if (a === true) {
|
|
return[b.getLeft(true), b.getTop(true)]
|
|
}
|
|
return this.xy || b.getXY()
|
|
}, getBox:function (a) {
|
|
var c = this.getPosition(a);
|
|
var b = this.getSize();
|
|
b.x = c[0];
|
|
b.y = c[1];
|
|
return b
|
|
}, updateBox:function (a) {
|
|
this.setSize(a.width, a.height);
|
|
this.setPagePosition(a.x, a.y);
|
|
return this
|
|
}, getResizeEl:function () {
|
|
return this.resizeEl || this.el
|
|
}, setAutoScroll:function (a) {
|
|
if (this.rendered) {
|
|
this.getContentTarget().setOverflow(a ? "auto" : "")
|
|
}
|
|
this.autoScroll = a;
|
|
return this
|
|
}, setPosition:function (a, g) {
|
|
if (a && typeof a[1] == "number") {
|
|
g = a[1];
|
|
a = a[0]
|
|
}
|
|
this.x = a;
|
|
this.y = g;
|
|
if (!this.boxReady) {
|
|
return this
|
|
}
|
|
var b = this.adjustPosition(a, g);
|
|
var e = b.x, d = b.y;
|
|
var c = this.getPositionEl();
|
|
if (e !== undefined || d !== undefined) {
|
|
if (e !== undefined && d !== undefined) {
|
|
c.setLeftTop(e, d)
|
|
} else {
|
|
if (e !== undefined) {
|
|
c.setLeft(e)
|
|
} else {
|
|
if (d !== undefined) {
|
|
c.setTop(d)
|
|
}
|
|
}
|
|
}
|
|
this.onPosition(e, d);
|
|
this.fireEvent("move", this, e, d)
|
|
}
|
|
return this
|
|
}, setPagePosition:function (a, c) {
|
|
if (a && typeof a[1] == "number") {
|
|
c = a[1];
|
|
a = a[0]
|
|
}
|
|
this.pageX = a;
|
|
this.pageY = c;
|
|
if (!this.boxReady) {
|
|
return
|
|
}
|
|
if (a === undefined || c === undefined) {
|
|
return
|
|
}
|
|
var b = this.getPositionEl().translatePoints(a, c);
|
|
this.setPosition(b.left, b.top);
|
|
return this
|
|
}, afterRender:function () {
|
|
Ext.BoxComponent.superclass.afterRender.call(this);
|
|
if (this.resizeEl) {
|
|
this.resizeEl = Ext.get(this.resizeEl)
|
|
}
|
|
if (this.positionEl) {
|
|
this.positionEl = Ext.get(this.positionEl)
|
|
}
|
|
this.boxReady = true;
|
|
Ext.isDefined(this.autoScroll) && this.setAutoScroll(this.autoScroll);
|
|
this.setSize(this.width, this.height);
|
|
if (this.x || this.y) {
|
|
this.setPosition(this.x, this.y)
|
|
} else {
|
|
if (this.pageX || this.pageY) {
|
|
this.setPagePosition(this.pageX, this.pageY)
|
|
}
|
|
}
|
|
}, syncSize:function () {
|
|
delete this.lastSize;
|
|
this.setSize(this.autoWidth ? undefined : this.getResizeEl().getWidth(), this.autoHeight ? undefined : this.getResizeEl().getHeight());
|
|
return this
|
|
}, onResize:function (d, b, a, c) {
|
|
}, onPosition:function (a, b) {
|
|
}, adjustSize:function (a, b) {
|
|
if (this.autoWidth) {
|
|
a = "auto"
|
|
}
|
|
if (this.autoHeight) {
|
|
b = "auto"
|
|
}
|
|
return{width:a, height:b}
|
|
}, adjustPosition:function (a, b) {
|
|
return{x:a, y:b}
|
|
}});
|
|
Ext.reg("box", Ext.BoxComponent);
|
|
Ext.Spacer = Ext.extend(Ext.BoxComponent, {autoEl:"div"});
|
|
Ext.reg("spacer", Ext.Spacer);
|
|
Ext.SplitBar = function (c, e, b, d, a) {
|
|
this.el = Ext.get(c, true);
|
|
this.el.dom.unselectable = "on";
|
|
this.resizingEl = Ext.get(e, true);
|
|
this.orientation = b || Ext.SplitBar.HORIZONTAL;
|
|
this.minSize = 0;
|
|
this.maxSize = 2000;
|
|
this.animate = false;
|
|
this.useShim = false;
|
|
this.shim = null;
|
|
if (!a) {
|
|
this.proxy = Ext.SplitBar.createProxy(this.orientation)
|
|
} else {
|
|
this.proxy = Ext.get(a).dom
|
|
}
|
|
this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", {dragElId:this.proxy.id});
|
|
this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this);
|
|
this.dd.endDrag = this.onEndProxyDrag.createDelegate(this);
|
|
this.dragSpecs = {};
|
|
this.adapter = new Ext.SplitBar.BasicLayoutAdapter();
|
|
this.adapter.init(this);
|
|
if (this.orientation == Ext.SplitBar.HORIZONTAL) {
|
|
this.placement = d || (this.el.getX() > this.resizingEl.getX() ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT);
|
|
this.el.addClass("x-splitbar-h")
|
|
} else {
|
|
this.placement = d || (this.el.getY() > this.resizingEl.getY() ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM);
|
|
this.el.addClass("x-splitbar-v")
|
|
}
|
|
this.addEvents("resize", "moved", "beforeresize", "beforeapply");
|
|
Ext.SplitBar.superclass.constructor.call(this)
|
|
};
|
|
Ext.extend(Ext.SplitBar, Ext.util.Observable, {onStartProxyDrag:function (a, e) {
|
|
this.fireEvent("beforeresize", this);
|
|
this.overlay = Ext.DomHelper.append(document.body, {cls:"x-drag-overlay", html:" "}, true);
|
|
this.overlay.unselectable();
|
|
this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
|
|
this.overlay.show();
|
|
Ext.get(this.proxy).setDisplayed("block");
|
|
var c = this.adapter.getElementSize(this);
|
|
this.activeMinSize = this.getMinimumSize();
|
|
this.activeMaxSize = this.getMaximumSize();
|
|
var d = c - this.activeMinSize;
|
|
var b = Math.max(this.activeMaxSize - c, 0);
|
|
if (this.orientation == Ext.SplitBar.HORIZONTAL) {
|
|
this.dd.resetConstraints();
|
|
this.dd.setXConstraint(this.placement == Ext.SplitBar.LEFT ? d : b, this.placement == Ext.SplitBar.LEFT ? b : d, this.tickSize);
|
|
this.dd.setYConstraint(0, 0)
|
|
} else {
|
|
this.dd.resetConstraints();
|
|
this.dd.setXConstraint(0, 0);
|
|
this.dd.setYConstraint(this.placement == Ext.SplitBar.TOP ? d : b, this.placement == Ext.SplitBar.TOP ? b : d, this.tickSize)
|
|
}
|
|
this.dragSpecs.startSize = c;
|
|
this.dragSpecs.startPoint = [a, e];
|
|
Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, a, e)
|
|
}, onEndProxyDrag:function (c) {
|
|
Ext.get(this.proxy).setDisplayed(false);
|
|
var b = Ext.lib.Event.getXY(c);
|
|
if (this.overlay) {
|
|
Ext.destroy(this.overlay);
|
|
delete this.overlay
|
|
}
|
|
var a;
|
|
if (this.orientation == Ext.SplitBar.HORIZONTAL) {
|
|
a = this.dragSpecs.startSize + (this.placement == Ext.SplitBar.LEFT ? b[0] - this.dragSpecs.startPoint[0] : this.dragSpecs.startPoint[0] - b[0])
|
|
} else {
|
|
a = this.dragSpecs.startSize + (this.placement == Ext.SplitBar.TOP ? b[1] - this.dragSpecs.startPoint[1] : this.dragSpecs.startPoint[1] - b[1])
|
|
}
|
|
a = Math.min(Math.max(a, this.activeMinSize), this.activeMaxSize);
|
|
if (a != this.dragSpecs.startSize) {
|
|
if (this.fireEvent("beforeapply", this, a) !== false) {
|
|
this.adapter.setElementSize(this, a);
|
|
this.fireEvent("moved", this, a);
|
|
this.fireEvent("resize", this, a)
|
|
}
|
|
}
|
|
}, getAdapter:function () {
|
|
return this.adapter
|
|
}, setAdapter:function (a) {
|
|
this.adapter = a;
|
|
this.adapter.init(this)
|
|
}, getMinimumSize:function () {
|
|
return this.minSize
|
|
}, setMinimumSize:function (a) {
|
|
this.minSize = a
|
|
}, getMaximumSize:function () {
|
|
return this.maxSize
|
|
}, setMaximumSize:function (a) {
|
|
this.maxSize = a
|
|
}, setCurrentSize:function (b) {
|
|
var a = this.animate;
|
|
this.animate = false;
|
|
this.adapter.setElementSize(this, b);
|
|
this.animate = a
|
|
}, destroy:function (a) {
|
|
Ext.destroy(this.shim, Ext.get(this.proxy));
|
|
this.dd.unreg();
|
|
if (a) {
|
|
this.el.remove()
|
|
}
|
|
this.purgeListeners()
|
|
}});
|
|
Ext.SplitBar.createProxy = function (b) {
|
|
var c = new Ext.Element(document.createElement("div"));
|
|
document.body.appendChild(c.dom);
|
|
c.unselectable();
|
|
var a = "x-splitbar-proxy";
|
|
c.addClass(a + " " + (b == Ext.SplitBar.HORIZONTAL ? a + "-h" : a + "-v"));
|
|
return c.dom
|
|
};
|
|
Ext.SplitBar.BasicLayoutAdapter = function () {
|
|
};
|
|
Ext.SplitBar.BasicLayoutAdapter.prototype = {init:function (a) {
|
|
}, getElementSize:function (a) {
|
|
if (a.orientation == Ext.SplitBar.HORIZONTAL) {
|
|
return a.resizingEl.getWidth()
|
|
} else {
|
|
return a.resizingEl.getHeight()
|
|
}
|
|
}, setElementSize:function (b, a, c) {
|
|
if (b.orientation == Ext.SplitBar.HORIZONTAL) {
|
|
if (!b.animate) {
|
|
b.resizingEl.setWidth(a);
|
|
if (c) {
|
|
c(b, a)
|
|
}
|
|
} else {
|
|
b.resizingEl.setWidth(a, true, 0.1, c, "easeOut")
|
|
}
|
|
} else {
|
|
if (!b.animate) {
|
|
b.resizingEl.setHeight(a);
|
|
if (c) {
|
|
c(b, a)
|
|
}
|
|
} else {
|
|
b.resizingEl.setHeight(a, true, 0.1, c, "easeOut")
|
|
}
|
|
}
|
|
}};
|
|
Ext.SplitBar.AbsoluteLayoutAdapter = function (a) {
|
|
this.basic = new Ext.SplitBar.BasicLayoutAdapter();
|
|
this.container = Ext.get(a)
|
|
};
|
|
Ext.SplitBar.AbsoluteLayoutAdapter.prototype = {init:function (a) {
|
|
this.basic.init(a)
|
|
}, getElementSize:function (a) {
|
|
return this.basic.getElementSize(a)
|
|
}, setElementSize:function (b, a, c) {
|
|
this.basic.setElementSize(b, a, this.moveSplitter.createDelegate(this, [b]))
|
|
}, moveSplitter:function (a) {
|
|
var b = Ext.SplitBar;
|
|
switch (a.placement) {
|
|
case b.LEFT:
|
|
a.el.setX(a.resizingEl.getRight());
|
|
break;
|
|
case b.RIGHT:
|
|
a.el.setStyle("right", (this.container.getWidth() - a.resizingEl.getLeft()) + "px");
|
|
break;
|
|
case b.TOP:
|
|
a.el.setY(a.resizingEl.getBottom());
|
|
break;
|
|
case b.BOTTOM:
|
|
a.el.setY(a.resizingEl.getTop() - a.el.getHeight());
|
|
break
|
|
}
|
|
}};
|
|
Ext.SplitBar.VERTICAL = 1;
|
|
Ext.SplitBar.HORIZONTAL = 2;
|
|
Ext.SplitBar.LEFT = 1;
|
|
Ext.SplitBar.RIGHT = 2;
|
|
Ext.SplitBar.TOP = 3;
|
|
Ext.SplitBar.BOTTOM = 4;
|
|
Ext.Container = Ext.extend(Ext.BoxComponent, {bufferResize:50, autoDestroy:true, forceLayout:false, defaultType:"panel", resizeEvent:"resize", bubbleEvents:["add", "remove"], initComponent:function () {
|
|
Ext.Container.superclass.initComponent.call(this);
|
|
this.addEvents("afterlayout", "beforeadd", "beforeremove", "add", "remove");
|
|
var a = this.items;
|
|
if (a) {
|
|
delete this.items;
|
|
this.add(a)
|
|
}
|
|
}, initItems:function () {
|
|
if (!this.items) {
|
|
this.items = new Ext.util.MixedCollection(false, this.getComponentId);
|
|
this.getLayout()
|
|
}
|
|
}, setLayout:function (a) {
|
|
if (this.layout && this.layout != a) {
|
|
this.layout.setContainer(null)
|
|
}
|
|
this.layout = a;
|
|
this.initItems();
|
|
a.setContainer(this)
|
|
}, afterRender:function () {
|
|
Ext.Container.superclass.afterRender.call(this);
|
|
if (!this.layout) {
|
|
this.layout = "auto"
|
|
}
|
|
if (Ext.isObject(this.layout) && !this.layout.layout) {
|
|
this.layoutConfig = this.layout;
|
|
this.layout = this.layoutConfig.type
|
|
}
|
|
if (Ext.isString(this.layout)) {
|
|
this.layout = new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)
|
|
}
|
|
this.setLayout(this.layout);
|
|
if (this.activeItem !== undefined && this.layout.setActiveItem) {
|
|
var a = this.activeItem;
|
|
delete this.activeItem;
|
|
this.layout.setActiveItem(a)
|
|
}
|
|
if (!this.ownerCt) {
|
|
this.doLayout(false, true)
|
|
}
|
|
if (this.monitorResize === true) {
|
|
Ext.EventManager.onWindowResize(this.doLayout, this, [false])
|
|
}
|
|
}, getLayoutTarget:function () {
|
|
return this.el
|
|
}, getComponentId:function (a) {
|
|
return a.getItemId()
|
|
}, add:function (b) {
|
|
this.initItems();
|
|
var e = arguments.length > 1;
|
|
if (e || Ext.isArray(b)) {
|
|
var a = [];
|
|
Ext.each(e ? arguments : b, function (h) {
|
|
a.push(this.add(h))
|
|
}, this);
|
|
return a
|
|
}
|
|
var g = this.lookupComponent(this.applyDefaults(b));
|
|
var d = this.items.length;
|
|
if (this.fireEvent("beforeadd", this, g, d) !== false && this.onBeforeAdd(g) !== false) {
|
|
this.items.add(g);
|
|
g.onAdded(this, d);
|
|
this.onAdd(g);
|
|
this.fireEvent("add", this, g, d)
|
|
}
|
|
return g
|
|
}, onAdd:function (a) {
|
|
}, onAdded:function (a, b) {
|
|
this.ownerCt = a;
|
|
this.initRef();
|
|
this.cascade(function (d) {
|
|
d.initRef()
|
|
});
|
|
this.fireEvent("added", this, a, b)
|
|
}, insert:function (e, b) {
|
|
var d = arguments, h = d.length, a = [], g, j;
|
|
this.initItems();
|
|
if (h > 2) {
|
|
for (g = h - 1; g >= 1; --g) {
|
|
a.push(this.insert(e, d[g]))
|
|
}
|
|
return a
|
|
}
|
|
j = this.lookupComponent(this.applyDefaults(b));
|
|
e = Math.min(e, this.items.length);
|
|
if (this.fireEvent("beforeadd", this, j, e) !== false && this.onBeforeAdd(j) !== false) {
|
|
if (j.ownerCt == this) {
|
|
this.items.remove(j)
|
|
}
|
|
this.items.insert(e, j);
|
|
j.onAdded(this, e);
|
|
this.onAdd(j);
|
|
this.fireEvent("add", this, j, e)
|
|
}
|
|
return j
|
|
}, applyDefaults:function (b) {
|
|
var a = this.defaults;
|
|
if (a) {
|
|
if (Ext.isFunction(a)) {
|
|
a = a.call(this, b)
|
|
}
|
|
if (Ext.isString(b)) {
|
|
b = Ext.ComponentMgr.get(b);
|
|
Ext.apply(b, a)
|
|
} else {
|
|
if (!b.events) {
|
|
Ext.applyIf(b.isAction ? b.initialConfig : b, a)
|
|
} else {
|
|
Ext.apply(b, a)
|
|
}
|
|
}
|
|
}
|
|
return b
|
|
}, onBeforeAdd:function (a) {
|
|
if (a.ownerCt) {
|
|
a.ownerCt.remove(a, false)
|
|
}
|
|
if (this.hideBorders === true) {
|
|
a.border = (a.border === true)
|
|
}
|
|
}, remove:function (a, b) {
|
|
this.initItems();
|
|
var d = this.getComponent(a);
|
|
if (d && this.fireEvent("beforeremove", this, d) !== false) {
|
|
this.doRemove(d, b);
|
|
this.fireEvent("remove", this, d)
|
|
}
|
|
return d
|
|
}, onRemove:function (a) {
|
|
}, doRemove:function (e, d) {
|
|
var b = this.layout, a = b && this.rendered;
|
|
if (a) {
|
|
b.onRemove(e)
|
|
}
|
|
this.items.remove(e);
|
|
e.onRemoved();
|
|
this.onRemove(e);
|
|
if (d === true || (d !== false && this.autoDestroy)) {
|
|
e.destroy()
|
|
}
|
|
if (a) {
|
|
b.afterRemove(e)
|
|
}
|
|
}, removeAll:function (c) {
|
|
this.initItems();
|
|
var e, g = [], b = [];
|
|
this.items.each(function (h) {
|
|
g.push(h)
|
|
});
|
|
for (var d = 0, a = g.length; d < a; ++d) {
|
|
e = g[d];
|
|
this.remove(e, c);
|
|
if (e.ownerCt !== this) {
|
|
b.push(e)
|
|
}
|
|
}
|
|
return b
|
|
}, getComponent:function (a) {
|
|
if (Ext.isObject(a)) {
|
|
a = a.getItemId()
|
|
}
|
|
return this.items.get(a)
|
|
}, lookupComponent:function (a) {
|
|
if (Ext.isString(a)) {
|
|
return Ext.ComponentMgr.get(a)
|
|
} else {
|
|
if (!a.events) {
|
|
return this.createComponent(a)
|
|
}
|
|
}
|
|
return a
|
|
}, createComponent:function (a, d) {
|
|
if (a.render) {
|
|
return a
|
|
}
|
|
var b = Ext.create(Ext.apply({ownerCt:this}, a), d || this.defaultType);
|
|
delete b.initialConfig.ownerCt;
|
|
delete b.ownerCt;
|
|
return b
|
|
}, canLayout:function () {
|
|
var a = this.getVisibilityEl();
|
|
return a && a.dom && !a.isStyle("display", "none")
|
|
}, doLayout:function (g, e) {
|
|
var k = this.rendered, j = e || this.forceLayout;
|
|
if (this.collapsed || !this.canLayout()) {
|
|
this.deferLayout = this.deferLayout || !g;
|
|
if (!j) {
|
|
return
|
|
}
|
|
g = g && !this.deferLayout
|
|
} else {
|
|
delete this.deferLayout
|
|
}
|
|
if (k && this.layout) {
|
|
this.layout.layout()
|
|
}
|
|
if (g !== true && this.items) {
|
|
var d = this.items.items;
|
|
for (var b = 0, a = d.length; b < a; b++) {
|
|
var h = d[b];
|
|
if (h.doLayout) {
|
|
h.doLayout(false, j)
|
|
}
|
|
}
|
|
}
|
|
if (k) {
|
|
this.onLayout(g, j)
|
|
}
|
|
this.hasLayout = true;
|
|
delete this.forceLayout
|
|
}, onLayout:Ext.emptyFn, shouldBufferLayout:function () {
|
|
var a = this.hasLayout;
|
|
if (this.ownerCt) {
|
|
return a ? !this.hasLayoutPending() : false
|
|
}
|
|
return a
|
|
}, hasLayoutPending:function () {
|
|
var a = false;
|
|
this.ownerCt.bubble(function (b) {
|
|
if (b.layoutPending) {
|
|
a = true;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, onShow:function () {
|
|
Ext.Container.superclass.onShow.call(this);
|
|
if (Ext.isDefined(this.deferLayout)) {
|
|
delete this.deferLayout;
|
|
this.doLayout(true)
|
|
}
|
|
}, getLayout:function () {
|
|
if (!this.layout) {
|
|
var a = new Ext.layout.AutoLayout(this.layoutConfig);
|
|
this.setLayout(a)
|
|
}
|
|
return this.layout
|
|
}, beforeDestroy:function () {
|
|
var a;
|
|
if (this.items) {
|
|
while (a = this.items.first()) {
|
|
this.doRemove(a, true)
|
|
}
|
|
}
|
|
if (this.monitorResize) {
|
|
Ext.EventManager.removeResizeListener(this.doLayout, this)
|
|
}
|
|
Ext.destroy(this.layout);
|
|
Ext.Container.superclass.beforeDestroy.call(this)
|
|
}, cascade:function (g, e, b) {
|
|
if (g.apply(e || this, b || [this]) !== false) {
|
|
if (this.items) {
|
|
var d = this.items.items;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
if (d[c].cascade) {
|
|
d[c].cascade(g, e, b)
|
|
} else {
|
|
g.apply(e || d[c], b || [d[c]])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return this
|
|
}, findById:function (c) {
|
|
var a = null, b = this;
|
|
this.cascade(function (d) {
|
|
if (b != d && d.id === c) {
|
|
a = d;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, findByType:function (b, a) {
|
|
return this.findBy(function (d) {
|
|
return d.isXType(b, a)
|
|
})
|
|
}, find:function (b, a) {
|
|
return this.findBy(function (d) {
|
|
return d[b] === a
|
|
})
|
|
}, findBy:function (d, c) {
|
|
var a = [], b = this;
|
|
this.cascade(function (e) {
|
|
if (b != e && d.call(c || e, e, b) === true) {
|
|
a.push(e)
|
|
}
|
|
});
|
|
return a
|
|
}, get:function (a) {
|
|
return this.getComponent(a)
|
|
}});
|
|
Ext.Container.LAYOUTS = {};
|
|
Ext.reg("container", Ext.Container);
|
|
Ext.layout.ContainerLayout = Ext.extend(Object, {monitorResize:false, activeItem:null, constructor:function (a) {
|
|
this.id = Ext.id(null, "ext-layout-");
|
|
Ext.apply(this, a)
|
|
}, type:"container", IEMeasureHack:function (k, g) {
|
|
var a = k.dom.childNodes, b = a.length, n, m = [], l, h, j;
|
|
for (h = 0; h < b; h++) {
|
|
n = a[h];
|
|
l = Ext.get(n);
|
|
if (l) {
|
|
m[h] = l.getStyle("display");
|
|
l.setStyle({display:"none"})
|
|
}
|
|
}
|
|
j = k ? k.getViewSize(g) : {};
|
|
for (h = 0; h < b; h++) {
|
|
n = a[h];
|
|
l = Ext.get(n);
|
|
if (l) {
|
|
l.setStyle({display:m[h]})
|
|
}
|
|
}
|
|
return j
|
|
}, getLayoutTargetSize:Ext.EmptyFn, layout:function () {
|
|
var a = this.container, b = a.getLayoutTarget();
|
|
if (!(this.hasLayout || Ext.isEmpty(this.targetCls))) {
|
|
b.addClass(this.targetCls)
|
|
}
|
|
this.onLayout(a, b);
|
|
a.fireEvent("afterlayout", a, this)
|
|
}, onLayout:function (a, b) {
|
|
this.renderAll(a, b)
|
|
}, isValidParent:function (b, a) {
|
|
return a && b.getPositionEl().dom.parentNode == (a.dom || a)
|
|
}, renderAll:function (e, g) {
|
|
var b = e.items.items, d, h, a = b.length;
|
|
for (d = 0; d < a; d++) {
|
|
h = b[d];
|
|
if (h && (!h.rendered || !this.isValidParent(h, g))) {
|
|
this.renderItem(h, d, g)
|
|
}
|
|
}
|
|
}, renderItem:function (d, a, b) {
|
|
if (d) {
|
|
if (!d.rendered) {
|
|
d.render(b, a);
|
|
this.configureItem(d)
|
|
} else {
|
|
if (!this.isValidParent(d, b)) {
|
|
if (Ext.isNumber(a)) {
|
|
a = b.dom.childNodes[a]
|
|
}
|
|
b.dom.insertBefore(d.getPositionEl().dom, a || null);
|
|
d.container = b;
|
|
this.configureItem(d)
|
|
}
|
|
}
|
|
}
|
|
}, getRenderedItems:function (g) {
|
|
var e = g.getLayoutTarget(), h = g.items.items, a = h.length, d, j, b = [];
|
|
for (d = 0; d < a; d++) {
|
|
if ((j = h[d]).rendered && this.isValidParent(j, e) && j.shouldLayout !== false) {
|
|
b.push(j)
|
|
}
|
|
}
|
|
return b
|
|
}, configureItem:function (b) {
|
|
if (this.extraCls) {
|
|
var a = b.getPositionEl ? b.getPositionEl() : b;
|
|
a.addClass(this.extraCls)
|
|
}
|
|
if (b.doLayout && this.forceLayout) {
|
|
b.doLayout()
|
|
}
|
|
if (this.renderHidden && b != this.activeItem) {
|
|
b.hide()
|
|
}
|
|
}, onRemove:function (b) {
|
|
if (this.activeItem == b) {
|
|
delete this.activeItem
|
|
}
|
|
if (b.rendered && this.extraCls) {
|
|
var a = b.getPositionEl ? b.getPositionEl() : b;
|
|
a.removeClass(this.extraCls)
|
|
}
|
|
}, afterRemove:function (a) {
|
|
if (a.removeRestore) {
|
|
a.removeMode = "container";
|
|
delete a.removeRestore
|
|
}
|
|
}, onResize:function () {
|
|
var c = this.container, a;
|
|
if (c.collapsed) {
|
|
return
|
|
}
|
|
if (a = c.bufferResize && c.shouldBufferLayout()) {
|
|
if (!this.resizeTask) {
|
|
this.resizeTask = new Ext.util.DelayedTask(this.runLayout, this);
|
|
this.resizeBuffer = Ext.isNumber(a) ? a : 50
|
|
}
|
|
c.layoutPending = true;
|
|
this.resizeTask.delay(this.resizeBuffer)
|
|
} else {
|
|
this.runLayout()
|
|
}
|
|
}, runLayout:function () {
|
|
var a = this.container;
|
|
this.layout();
|
|
a.onLayout();
|
|
delete a.layoutPending
|
|
}, setContainer:function (b) {
|
|
if (this.monitorResize && b != this.container) {
|
|
var a = this.container;
|
|
if (a) {
|
|
a.un(a.resizeEvent, this.onResize, this)
|
|
}
|
|
if (b) {
|
|
b.on(b.resizeEvent, this.onResize, this)
|
|
}
|
|
}
|
|
this.container = b
|
|
}, parseMargins:function (b) {
|
|
if (Ext.isNumber(b)) {
|
|
b = b.toString()
|
|
}
|
|
var c = b.split(" "), a = c.length;
|
|
if (a == 1) {
|
|
c[1] = c[2] = c[3] = c[0]
|
|
} else {
|
|
if (a == 2) {
|
|
c[2] = c[0];
|
|
c[3] = c[1]
|
|
} else {
|
|
if (a == 3) {
|
|
c[3] = c[1]
|
|
}
|
|
}
|
|
}
|
|
return{top:parseInt(c[0], 10) || 0, right:parseInt(c[1], 10) || 0, bottom:parseInt(c[2], 10) || 0, left:parseInt(c[3], 10) || 0}
|
|
}, fieldTpl:(function () {
|
|
var a = new Ext.Template('<div class="x-form-item {itemCls}" tabIndex="-1">', '<label for="{id}" style="{labelStyle}" class="x-form-item-label">{label}{labelSeparator}</label>', '<div class="x-form-element" id="x-form-el-{id}" style="{elementStyle}">', '</div><div class="{clearCls}"></div>', "</div>");
|
|
a.disableFormats = true;
|
|
return a.compile()
|
|
})(), destroy:function () {
|
|
if (this.resizeTask && this.resizeTask.cancel) {
|
|
this.resizeTask.cancel()
|
|
}
|
|
if (this.container) {
|
|
this.container.un(this.container.resizeEvent, this.onResize, this)
|
|
}
|
|
if (!Ext.isEmpty(this.targetCls)) {
|
|
var a = this.container.getLayoutTarget();
|
|
if (a) {
|
|
a.removeClass(this.targetCls)
|
|
}
|
|
}
|
|
}});
|
|
Ext.layout.AutoLayout = Ext.extend(Ext.layout.ContainerLayout, {type:"auto", monitorResize:true, onLayout:function (d, g) {
|
|
Ext.layout.AutoLayout.superclass.onLayout.call(this, d, g);
|
|
var e = this.getRenderedItems(d), a = e.length, b, h;
|
|
for (b = 0; b < a; b++) {
|
|
h = e[b];
|
|
if (h.doLayout) {
|
|
h.doLayout(true)
|
|
}
|
|
}
|
|
}});
|
|
Ext.Container.LAYOUTS.auto = Ext.layout.AutoLayout;
|
|
Ext.layout.FitLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true, type:"fit", getLayoutTargetSize:function () {
|
|
var a = this.container.getLayoutTarget();
|
|
if (!a) {
|
|
return{}
|
|
}
|
|
return a.getStyleSize()
|
|
}, onLayout:function (a, b) {
|
|
Ext.layout.FitLayout.superclass.onLayout.call(this, a, b);
|
|
if (!a.collapsed) {
|
|
this.setItemSize(this.activeItem || a.items.itemAt(0), this.getLayoutTargetSize())
|
|
}
|
|
}, setItemSize:function (b, a) {
|
|
if (b && a.height > 0) {
|
|
b.setSize(a)
|
|
}
|
|
}});
|
|
Ext.Container.LAYOUTS.fit = Ext.layout.FitLayout;
|
|
Ext.layout.CardLayout = Ext.extend(Ext.layout.FitLayout, {deferredRender:false, layoutOnCardChange:false, renderHidden:true, type:"card", setActiveItem:function (d) {
|
|
var a = this.activeItem, b = this.container;
|
|
d = b.getComponent(d);
|
|
if (d && a != d) {
|
|
if (a) {
|
|
a.hide();
|
|
if (a.hidden !== true) {
|
|
return false
|
|
}
|
|
a.fireEvent("deactivate", a)
|
|
}
|
|
var c = d.doLayout && (this.layoutOnCardChange || !d.rendered);
|
|
this.activeItem = d;
|
|
delete d.deferLayout;
|
|
d.show();
|
|
this.layout();
|
|
if (c) {
|
|
d.doLayout()
|
|
}
|
|
d.fireEvent("activate", d)
|
|
}
|
|
}, renderAll:function (a, b) {
|
|
if (this.deferredRender) {
|
|
this.renderItem(this.activeItem, undefined, b)
|
|
} else {
|
|
Ext.layout.CardLayout.superclass.renderAll.call(this, a, b)
|
|
}
|
|
}});
|
|
Ext.Container.LAYOUTS.card = Ext.layout.CardLayout;
|
|
Ext.layout.AnchorLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true, type:"anchor", defaultAnchor:"100%", parseAnchorRE:/^(r|right|b|bottom)$/i, getLayoutTargetSize:function () {
|
|
var b = this.container.getLayoutTarget(), a = {};
|
|
if (b) {
|
|
a = b.getViewSize();
|
|
if (Ext.isIE && Ext.isStrict && a.width == 0) {
|
|
a = b.getStyleSize()
|
|
}
|
|
a.width -= b.getPadding("lr");
|
|
a.height -= b.getPadding("tb")
|
|
}
|
|
return a
|
|
}, onLayout:function (m, w) {
|
|
Ext.layout.AnchorLayout.superclass.onLayout.call(this, m, w);
|
|
var p = this.getLayoutTargetSize(), k = p.width, o = p.height, q = w.getStyle("overflow"), n = this.getRenderedItems(m), t = n.length, g = [], j, a, v, l, h, c, e, d, u = 0, s, b;
|
|
if (k < 20 && o < 20) {
|
|
return
|
|
}
|
|
if (m.anchorSize) {
|
|
if (typeof m.anchorSize == "number") {
|
|
a = m.anchorSize
|
|
} else {
|
|
a = m.anchorSize.width;
|
|
v = m.anchorSize.height
|
|
}
|
|
} else {
|
|
a = m.initialConfig.width;
|
|
v = m.initialConfig.height
|
|
}
|
|
for (s = 0; s < t; s++) {
|
|
l = n[s];
|
|
b = l.getPositionEl();
|
|
if (!l.anchor && l.items && !Ext.isNumber(l.width) && !(Ext.isIE6 && Ext.isStrict)) {
|
|
l.anchor = this.defaultAnchor
|
|
}
|
|
if (l.anchor) {
|
|
h = l.anchorSpec;
|
|
if (!h) {
|
|
d = l.anchor.split(" ");
|
|
l.anchorSpec = h = {right:this.parseAnchor(d[0], l.initialConfig.width, a), bottom:this.parseAnchor(d[1], l.initialConfig.height, v)}
|
|
}
|
|
c = h.right ? this.adjustWidthAnchor(h.right(k) - b.getMargins("lr"), l) : undefined;
|
|
e = h.bottom ? this.adjustHeightAnchor(h.bottom(o) - b.getMargins("tb"), l) : undefined;
|
|
if (c || e) {
|
|
g.push({component:l, width:c || undefined, height:e || undefined})
|
|
}
|
|
}
|
|
}
|
|
for (s = 0, t = g.length; s < t; s++) {
|
|
j = g[s];
|
|
j.component.setSize(j.width, j.height)
|
|
}
|
|
if (q && q != "hidden" && !this.adjustmentPass) {
|
|
var r = this.getLayoutTargetSize();
|
|
if (r.width != p.width || r.height != p.height) {
|
|
this.adjustmentPass = true;
|
|
this.onLayout(m, w)
|
|
}
|
|
}
|
|
delete this.adjustmentPass
|
|
}, parseAnchor:function (c, h, b) {
|
|
if (c && c != "none") {
|
|
var e;
|
|
if (this.parseAnchorRE.test(c)) {
|
|
var g = b - h;
|
|
return function (a) {
|
|
if (a !== e) {
|
|
e = a;
|
|
return a - g
|
|
}
|
|
}
|
|
} else {
|
|
if (c.indexOf("%") != -1) {
|
|
var d = parseFloat(c.replace("%", "")) * 0.01;
|
|
return function (a) {
|
|
if (a !== e) {
|
|
e = a;
|
|
return Math.floor(a * d)
|
|
}
|
|
}
|
|
} else {
|
|
c = parseInt(c, 10);
|
|
if (!isNaN(c)) {
|
|
return function (a) {
|
|
if (a !== e) {
|
|
e = a;
|
|
return a + c
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}, adjustWidthAnchor:function (b, a) {
|
|
return b
|
|
}, adjustHeightAnchor:function (b, a) {
|
|
return b
|
|
}});
|
|
Ext.Container.LAYOUTS.anchor = Ext.layout.AnchorLayout;
|
|
Ext.layout.ColumnLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true, type:"column", extraCls:"x-column", scrollOffset:0, targetCls:"x-column-layout-ct", isValidParent:function (b, a) {
|
|
return this.innerCt && b.getPositionEl().dom.parentNode == this.innerCt.dom
|
|
}, getLayoutTargetSize:function () {
|
|
var b = this.container.getLayoutTarget(), a;
|
|
if (b) {
|
|
a = b.getViewSize();
|
|
if (Ext.isIE && Ext.isStrict && a.width == 0) {
|
|
a = b.getStyleSize()
|
|
}
|
|
a.width -= b.getPadding("lr");
|
|
a.height -= b.getPadding("tb")
|
|
}
|
|
return a
|
|
}, renderAll:function (a, b) {
|
|
if (!this.innerCt) {
|
|
this.innerCt = b.createChild({cls:"x-column-inner"});
|
|
this.innerCt.createChild({cls:"x-clear"})
|
|
}
|
|
Ext.layout.ColumnLayout.superclass.renderAll.call(this, a, this.innerCt)
|
|
}, onLayout:function (e, k) {
|
|
var g = e.items.items, j = g.length, n, b, a, o = [];
|
|
this.renderAll(e, k);
|
|
var r = this.getLayoutTargetSize();
|
|
if (r.width < 1 && r.height < 1) {
|
|
return
|
|
}
|
|
var p = r.width - this.scrollOffset, d = r.height, q = p;
|
|
this.innerCt.setWidth(p);
|
|
for (b = 0; b < j; b++) {
|
|
n = g[b];
|
|
a = n.getPositionEl().getMargins("lr");
|
|
o[b] = a;
|
|
if (!n.columnWidth) {
|
|
q -= (n.getWidth() + a)
|
|
}
|
|
}
|
|
q = q < 0 ? 0 : q;
|
|
for (b = 0; b < j; b++) {
|
|
n = g[b];
|
|
a = o[b];
|
|
if (n.columnWidth) {
|
|
n.setSize(Math.floor(n.columnWidth * q) - a)
|
|
}
|
|
}
|
|
if (Ext.isIE) {
|
|
if (b = k.getStyle("overflow") && b != "hidden" && !this.adjustmentPass) {
|
|
var l = this.getLayoutTargetSize();
|
|
if (l.width != r.width) {
|
|
this.adjustmentPass = true;
|
|
this.onLayout(e, k)
|
|
}
|
|
}
|
|
}
|
|
delete this.adjustmentPass
|
|
}});
|
|
Ext.Container.LAYOUTS.column = Ext.layout.ColumnLayout;
|
|
Ext.layout.BorderLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true, rendered:false, type:"border", targetCls:"x-border-layout-ct", getLayoutTargetSize:function () {
|
|
var a = this.container.getLayoutTarget();
|
|
return a ? a.getViewSize() : {}
|
|
}, onLayout:function (g, I) {
|
|
var j, B, F, o, x = g.items.items, C = x.length;
|
|
if (!this.rendered) {
|
|
j = [];
|
|
for (B = 0; B < C; B++) {
|
|
F = x[B];
|
|
o = F.region;
|
|
if (F.collapsed) {
|
|
j.push(F)
|
|
}
|
|
F.collapsed = false;
|
|
if (!F.rendered) {
|
|
F.render(I, B);
|
|
F.getPositionEl().addClass("x-border-panel")
|
|
}
|
|
this[o] = o != "center" && F.split ? new Ext.layout.BorderLayout.SplitRegion(this, F.initialConfig, o) : new Ext.layout.BorderLayout.Region(this, F.initialConfig, o);
|
|
this[o].render(I, F)
|
|
}
|
|
this.rendered = true
|
|
}
|
|
var v = this.getLayoutTargetSize();
|
|
if (v.width < 20 || v.height < 20) {
|
|
if (j) {
|
|
this.restoreCollapsed = j
|
|
}
|
|
return
|
|
} else {
|
|
if (this.restoreCollapsed) {
|
|
j = this.restoreCollapsed;
|
|
delete this.restoreCollapsed
|
|
}
|
|
}
|
|
var t = v.width, D = v.height, r = t, A = D, p = 0, q = 0, y = this.north, u = this.south, l = this.west, E = this.east, F = this.center, H, z, d, G;
|
|
if (!F && Ext.layout.BorderLayout.WARN !== false) {
|
|
throw"No center region defined in BorderLayout " + g.id
|
|
}
|
|
if (y && y.isVisible()) {
|
|
H = y.getSize();
|
|
z = y.getMargins();
|
|
H.width = t - (z.left + z.right);
|
|
H.x = z.left;
|
|
H.y = z.top;
|
|
p = H.height + H.y + z.bottom;
|
|
A -= p;
|
|
y.applyLayout(H)
|
|
}
|
|
if (u && u.isVisible()) {
|
|
H = u.getSize();
|
|
z = u.getMargins();
|
|
H.width = t - (z.left + z.right);
|
|
H.x = z.left;
|
|
G = (H.height + z.top + z.bottom);
|
|
H.y = D - G + z.top;
|
|
A -= G;
|
|
u.applyLayout(H)
|
|
}
|
|
if (l && l.isVisible()) {
|
|
H = l.getSize();
|
|
z = l.getMargins();
|
|
H.height = A - (z.top + z.bottom);
|
|
H.x = z.left;
|
|
H.y = p + z.top;
|
|
d = (H.width + z.left + z.right);
|
|
q += d;
|
|
r -= d;
|
|
l.applyLayout(H)
|
|
}
|
|
if (E && E.isVisible()) {
|
|
H = E.getSize();
|
|
z = E.getMargins();
|
|
H.height = A - (z.top + z.bottom);
|
|
d = (H.width + z.left + z.right);
|
|
H.x = t - d + z.left;
|
|
H.y = p + z.top;
|
|
r -= d;
|
|
E.applyLayout(H)
|
|
}
|
|
if (F) {
|
|
z = F.getMargins();
|
|
var k = {x:q + z.left, y:p + z.top, width:r - (z.left + z.right), height:A - (z.top + z.bottom)};
|
|
F.applyLayout(k)
|
|
}
|
|
if (j) {
|
|
for (B = 0, C = j.length; B < C; B++) {
|
|
j[B].collapse(false)
|
|
}
|
|
}
|
|
if (Ext.isIE && Ext.isStrict) {
|
|
I.repaint()
|
|
}
|
|
if (B = I.getStyle("overflow") && B != "hidden" && !this.adjustmentPass) {
|
|
var a = this.getLayoutTargetSize();
|
|
if (a.width != v.width || a.height != v.height) {
|
|
this.adjustmentPass = true;
|
|
this.onLayout(g, I)
|
|
}
|
|
}
|
|
delete this.adjustmentPass
|
|
}, destroy:function () {
|
|
var b = ["north", "south", "east", "west"], a, c;
|
|
for (a = 0; a < b.length; a++) {
|
|
c = this[b[a]];
|
|
if (c) {
|
|
if (c.destroy) {
|
|
c.destroy()
|
|
} else {
|
|
if (c.split) {
|
|
c.split.destroy(true)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Ext.layout.BorderLayout.superclass.destroy.call(this)
|
|
}});
|
|
Ext.layout.BorderLayout.Region = function (b, a, c) {
|
|
Ext.apply(this, a);
|
|
this.layout = b;
|
|
this.position = c;
|
|
this.state = {};
|
|
if (typeof this.margins == "string") {
|
|
this.margins = this.layout.parseMargins(this.margins)
|
|
}
|
|
this.margins = Ext.applyIf(this.margins || {}, this.defaultMargins);
|
|
if (this.collapsible) {
|
|
if (typeof this.cmargins == "string") {
|
|
this.cmargins = this.layout.parseMargins(this.cmargins)
|
|
}
|
|
if (this.collapseMode == "mini" && !this.cmargins) {
|
|
this.cmargins = {left:0, top:0, right:0, bottom:0}
|
|
} else {
|
|
this.cmargins = Ext.applyIf(this.cmargins || {}, c == "north" || c == "south" ? this.defaultNSCMargins : this.defaultEWCMargins)
|
|
}
|
|
}
|
|
};
|
|
Ext.layout.BorderLayout.Region.prototype = {collapsible:false, split:false, floatable:true, minWidth:50, minHeight:50, defaultMargins:{left:0, top:0, right:0, bottom:0}, defaultNSCMargins:{left:5, top:5, right:5, bottom:5}, defaultEWCMargins:{left:5, top:0, right:5, bottom:0}, floatingZIndex:100, isCollapsed:false, render:function (b, c) {
|
|
this.panel = c;
|
|
c.el.enableDisplayMode();
|
|
this.targetEl = b;
|
|
this.el = c.el;
|
|
var a = c.getState, d = this.position;
|
|
c.getState = function () {
|
|
return Ext.apply(a.call(c) || {}, this.state)
|
|
}.createDelegate(this);
|
|
if (d != "center") {
|
|
c.allowQueuedExpand = false;
|
|
c.on({beforecollapse:this.beforeCollapse, collapse:this.onCollapse, beforeexpand:this.beforeExpand, expand:this.onExpand, hide:this.onHide, show:this.onShow, scope:this});
|
|
if (this.collapsible || this.floatable) {
|
|
c.collapseEl = "el";
|
|
c.slideAnchor = this.getSlideAnchor()
|
|
}
|
|
if (c.tools && c.tools.toggle) {
|
|
c.tools.toggle.addClass("x-tool-collapse-" + d);
|
|
c.tools.toggle.addClassOnOver("x-tool-collapse-" + d + "-over")
|
|
}
|
|
}
|
|
}, getCollapsedEl:function () {
|
|
if (!this.collapsedEl) {
|
|
if (!this.toolTemplate) {
|
|
var b = new Ext.Template('<div class="x-tool x-tool-{id}"> </div>');
|
|
b.disableFormats = true;
|
|
b.compile();
|
|
Ext.layout.BorderLayout.Region.prototype.toolTemplate = b
|
|
}
|
|
this.collapsedEl = this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-" + this.position, id:this.panel.id + "-xcollapsed"});
|
|
this.collapsedEl.enableDisplayMode("block");
|
|
if (this.collapseMode == "mini") {
|
|
this.collapsedEl.addClass("x-layout-cmini-" + this.position);
|
|
this.miniCollapsedEl = this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-" + this.position, html:" "});
|
|
this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");
|
|
this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
|
|
this.collapsedEl.on("click", this.onExpandClick, this, {stopEvent:true})
|
|
} else {
|
|
if (this.collapsible !== false && !this.hideCollapseTool) {
|
|
var a = this.expandToolEl = this.toolTemplate.append(this.collapsedEl.dom, {id:"expand-" + this.position}, true);
|
|
a.addClassOnOver("x-tool-expand-" + this.position + "-over");
|
|
a.on("click", this.onExpandClick, this, {stopEvent:true})
|
|
}
|
|
if (this.floatable !== false || this.titleCollapse) {
|
|
this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
|
|
this.collapsedEl.on("click", this[this.floatable ? "collapseClick" : "onExpandClick"], this)
|
|
}
|
|
}
|
|
}
|
|
return this.collapsedEl
|
|
}, onExpandClick:function (a) {
|
|
if (this.isSlid) {
|
|
this.panel.expand(false)
|
|
} else {
|
|
this.panel.expand()
|
|
}
|
|
}, onCollapseClick:function (a) {
|
|
this.panel.collapse()
|
|
}, beforeCollapse:function (c, a) {
|
|
this.lastAnim = a;
|
|
if (this.splitEl) {
|
|
this.splitEl.hide()
|
|
}
|
|
this.getCollapsedEl().show();
|
|
var b = this.panel.getEl();
|
|
this.originalZIndex = b.getStyle("z-index");
|
|
b.setStyle("z-index", 100);
|
|
this.isCollapsed = true;
|
|
this.layout.layout()
|
|
}, onCollapse:function (a) {
|
|
this.panel.el.setStyle("z-index", 1);
|
|
if (this.lastAnim === false || this.panel.animCollapse === false) {
|
|
this.getCollapsedEl().dom.style.visibility = "visible"
|
|
} else {
|
|
this.getCollapsedEl().slideIn(this.panel.slideAnchor, {duration:0.2})
|
|
}
|
|
this.state.collapsed = true;
|
|
this.panel.saveState()
|
|
}, beforeExpand:function (a) {
|
|
if (this.isSlid) {
|
|
this.afterSlideIn()
|
|
}
|
|
var b = this.getCollapsedEl();
|
|
this.el.show();
|
|
if (this.position == "east" || this.position == "west") {
|
|
this.panel.setSize(undefined, b.getHeight())
|
|
} else {
|
|
this.panel.setSize(b.getWidth(), undefined)
|
|
}
|
|
b.hide();
|
|
b.dom.style.visibility = "hidden";
|
|
this.panel.el.setStyle("z-index", this.floatingZIndex)
|
|
}, onExpand:function () {
|
|
this.isCollapsed = false;
|
|
if (this.splitEl) {
|
|
this.splitEl.show()
|
|
}
|
|
this.layout.layout();
|
|
this.panel.el.setStyle("z-index", this.originalZIndex);
|
|
this.state.collapsed = false;
|
|
this.panel.saveState()
|
|
}, collapseClick:function (a) {
|
|
if (this.isSlid) {
|
|
a.stopPropagation();
|
|
this.slideIn()
|
|
} else {
|
|
a.stopPropagation();
|
|
this.slideOut()
|
|
}
|
|
}, onHide:function () {
|
|
if (this.isCollapsed) {
|
|
this.getCollapsedEl().hide()
|
|
} else {
|
|
if (this.splitEl) {
|
|
this.splitEl.hide()
|
|
}
|
|
}
|
|
}, onShow:function () {
|
|
if (this.isCollapsed) {
|
|
this.getCollapsedEl().show()
|
|
} else {
|
|
if (this.splitEl) {
|
|
this.splitEl.show()
|
|
}
|
|
}
|
|
}, isVisible:function () {
|
|
return !this.panel.hidden
|
|
}, getMargins:function () {
|
|
return this.isCollapsed && this.cmargins ? this.cmargins : this.margins
|
|
}, getSize:function () {
|
|
return this.isCollapsed ? this.getCollapsedEl().getSize() : this.panel.getSize()
|
|
}, setPanel:function (a) {
|
|
this.panel = a
|
|
}, getMinWidth:function () {
|
|
return this.minWidth
|
|
}, getMinHeight:function () {
|
|
return this.minHeight
|
|
}, applyLayoutCollapsed:function (a) {
|
|
var b = this.getCollapsedEl();
|
|
b.setLeftTop(a.x, a.y);
|
|
b.setSize(a.width, a.height)
|
|
}, applyLayout:function (a) {
|
|
if (this.isCollapsed) {
|
|
this.applyLayoutCollapsed(a)
|
|
} else {
|
|
this.panel.setPosition(a.x, a.y);
|
|
this.panel.setSize(a.width, a.height)
|
|
}
|
|
}, beforeSlide:function () {
|
|
this.panel.beforeEffect()
|
|
}, afterSlide:function () {
|
|
this.panel.afterEffect()
|
|
}, initAutoHide:function () {
|
|
if (this.autoHide !== false) {
|
|
if (!this.autoHideHd) {
|
|
this.autoHideSlideTask = new Ext.util.DelayedTask(this.slideIn, this);
|
|
this.autoHideHd = {mouseout:function (a) {
|
|
if (!a.within(this.el, true)) {
|
|
this.autoHideSlideTask.delay(500)
|
|
}
|
|
}, mouseover:function (a) {
|
|
this.autoHideSlideTask.cancel()
|
|
}, scope:this}
|
|
}
|
|
this.el.on(this.autoHideHd);
|
|
this.collapsedEl.on(this.autoHideHd)
|
|
}
|
|
}, clearAutoHide:function () {
|
|
if (this.autoHide !== false) {
|
|
this.el.un("mouseout", this.autoHideHd.mouseout);
|
|
this.el.un("mouseover", this.autoHideHd.mouseover);
|
|
this.collapsedEl.un("mouseout", this.autoHideHd.mouseout);
|
|
this.collapsedEl.un("mouseover", this.autoHideHd.mouseover)
|
|
}
|
|
}, clearMonitor:function () {
|
|
Ext.getDoc().un("click", this.slideInIf, this)
|
|
}, slideOut:function () {
|
|
if (this.isSlid || this.el.hasActiveFx()) {
|
|
return
|
|
}
|
|
this.isSlid = true;
|
|
var b = this.panel.tools, c, a;
|
|
if (b && b.toggle) {
|
|
b.toggle.hide()
|
|
}
|
|
this.el.show();
|
|
a = this.panel.collapsed;
|
|
this.panel.collapsed = false;
|
|
if (this.position == "east" || this.position == "west") {
|
|
c = this.panel.deferHeight;
|
|
this.panel.deferHeight = false;
|
|
this.panel.setSize(undefined, this.collapsedEl.getHeight());
|
|
this.panel.deferHeight = c
|
|
} else {
|
|
this.panel.setSize(this.collapsedEl.getWidth(), undefined)
|
|
}
|
|
this.panel.collapsed = a;
|
|
this.restoreLT = [this.el.dom.style.left, this.el.dom.style.top];
|
|
this.el.alignTo(this.collapsedEl, this.getCollapseAnchor());
|
|
this.el.setStyle("z-index", this.floatingZIndex + 2);
|
|
this.panel.el.replaceClass("x-panel-collapsed", "x-panel-floating");
|
|
if (this.animFloat !== false) {
|
|
this.beforeSlide();
|
|
this.el.slideIn(this.getSlideAnchor(), {callback:function () {
|
|
this.afterSlide();
|
|
this.initAutoHide();
|
|
Ext.getDoc().on("click", this.slideInIf, this)
|
|
}, scope:this, block:true})
|
|
} else {
|
|
this.initAutoHide();
|
|
Ext.getDoc().on("click", this.slideInIf, this)
|
|
}
|
|
}, afterSlideIn:function () {
|
|
this.clearAutoHide();
|
|
this.isSlid = false;
|
|
this.clearMonitor();
|
|
this.el.setStyle("z-index", "");
|
|
this.panel.el.replaceClass("x-panel-floating", "x-panel-collapsed");
|
|
this.el.dom.style.left = this.restoreLT[0];
|
|
this.el.dom.style.top = this.restoreLT[1];
|
|
var a = this.panel.tools;
|
|
if (a && a.toggle) {
|
|
a.toggle.show()
|
|
}
|
|
}, slideIn:function (a) {
|
|
if (!this.isSlid || this.el.hasActiveFx()) {
|
|
Ext.callback(a);
|
|
return
|
|
}
|
|
this.isSlid = false;
|
|
if (this.animFloat !== false) {
|
|
this.beforeSlide();
|
|
this.el.slideOut(this.getSlideAnchor(), {callback:function () {
|
|
this.el.hide();
|
|
this.afterSlide();
|
|
this.afterSlideIn();
|
|
Ext.callback(a)
|
|
}, scope:this, block:true})
|
|
} else {
|
|
this.el.hide();
|
|
this.afterSlideIn()
|
|
}
|
|
}, slideInIf:function (a) {
|
|
if (!a.within(this.el)) {
|
|
this.slideIn()
|
|
}
|
|
}, anchors:{west:"left", east:"right", north:"top", south:"bottom"}, sanchors:{west:"l", east:"r", north:"t", south:"b"}, canchors:{west:"tl-tr", east:"tr-tl", north:"tl-bl", south:"bl-tl"}, getAnchor:function () {
|
|
return this.anchors[this.position]
|
|
}, getCollapseAnchor:function () {
|
|
return this.canchors[this.position]
|
|
}, getSlideAnchor:function () {
|
|
return this.sanchors[this.position]
|
|
}, getAlignAdj:function () {
|
|
var a = this.cmargins;
|
|
switch (this.position) {
|
|
case"west":
|
|
return[0, 0];
|
|
break;
|
|
case"east":
|
|
return[0, 0];
|
|
break;
|
|
case"north":
|
|
return[0, 0];
|
|
break;
|
|
case"south":
|
|
return[0, 0];
|
|
break
|
|
}
|
|
}, getExpandAdj:function () {
|
|
var b = this.collapsedEl, a = this.cmargins;
|
|
switch (this.position) {
|
|
case"west":
|
|
return[-(a.right + b.getWidth() + a.left), 0];
|
|
break;
|
|
case"east":
|
|
return[a.right + b.getWidth() + a.left, 0];
|
|
break;
|
|
case"north":
|
|
return[0, -(a.top + a.bottom + b.getHeight())];
|
|
break;
|
|
case"south":
|
|
return[0, a.top + a.bottom + b.getHeight()];
|
|
break
|
|
}
|
|
}, destroy:function () {
|
|
if (this.autoHideSlideTask && this.autoHideSlideTask.cancel) {
|
|
this.autoHideSlideTask.cancel()
|
|
}
|
|
Ext.destroyMembers(this, "miniCollapsedEl", "collapsedEl", "expandToolEl")
|
|
}};
|
|
Ext.layout.BorderLayout.SplitRegion = function (b, a, c) {
|
|
Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this, b, a, c);
|
|
this.applyLayout = this.applyFns[c]
|
|
};
|
|
Ext.extend(Ext.layout.BorderLayout.SplitRegion, Ext.layout.BorderLayout.Region, {splitTip:"Drag to resize.", collapsibleSplitTip:"Drag to resize. Double click to hide.", useSplitTips:false, splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL, placement:Ext.SplitBar.TOP, maxFn:"getVMaxSize", minProp:"minHeight", maxProp:"maxHeight"}, south:{orientation:Ext.SplitBar.VERTICAL, placement:Ext.SplitBar.BOTTOM, maxFn:"getVMaxSize", minProp:"minHeight", maxProp:"maxHeight"}, east:{orientation:Ext.SplitBar.HORIZONTAL, placement:Ext.SplitBar.RIGHT, maxFn:"getHMaxSize", minProp:"minWidth", maxProp:"maxWidth"}, west:{orientation:Ext.SplitBar.HORIZONTAL, placement:Ext.SplitBar.LEFT, maxFn:"getHMaxSize", minProp:"minWidth", maxProp:"maxWidth"}}, applyFns:{west:function (c) {
|
|
if (this.isCollapsed) {
|
|
return this.applyLayoutCollapsed(c)
|
|
}
|
|
var d = this.splitEl.dom, b = d.style;
|
|
this.panel.setPosition(c.x, c.y);
|
|
var a = d.offsetWidth;
|
|
b.left = (c.x + c.width - a) + "px";
|
|
b.top = (c.y) + "px";
|
|
b.height = Math.max(0, c.height) + "px";
|
|
this.panel.setSize(c.width - a, c.height)
|
|
}, east:function (c) {
|
|
if (this.isCollapsed) {
|
|
return this.applyLayoutCollapsed(c)
|
|
}
|
|
var d = this.splitEl.dom, b = d.style;
|
|
var a = d.offsetWidth;
|
|
this.panel.setPosition(c.x + a, c.y);
|
|
b.left = (c.x) + "px";
|
|
b.top = (c.y) + "px";
|
|
b.height = Math.max(0, c.height) + "px";
|
|
this.panel.setSize(c.width - a, c.height)
|
|
}, north:function (c) {
|
|
if (this.isCollapsed) {
|
|
return this.applyLayoutCollapsed(c)
|
|
}
|
|
var d = this.splitEl.dom, b = d.style;
|
|
var a = d.offsetHeight;
|
|
this.panel.setPosition(c.x, c.y);
|
|
b.left = (c.x) + "px";
|
|
b.top = (c.y + c.height - a) + "px";
|
|
b.width = Math.max(0, c.width) + "px";
|
|
this.panel.setSize(c.width, c.height - a)
|
|
}, south:function (c) {
|
|
if (this.isCollapsed) {
|
|
return this.applyLayoutCollapsed(c)
|
|
}
|
|
var d = this.splitEl.dom, b = d.style;
|
|
var a = d.offsetHeight;
|
|
this.panel.setPosition(c.x, c.y + a);
|
|
b.left = (c.x) + "px";
|
|
b.top = (c.y) + "px";
|
|
b.width = Math.max(0, c.width) + "px";
|
|
this.panel.setSize(c.width, c.height - a)
|
|
}}, render:function (a, c) {
|
|
Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this, a, c);
|
|
var d = this.position;
|
|
this.splitEl = a.createChild({cls:"x-layout-split x-layout-split-" + d, html:" ", id:this.panel.id + "-xsplit"});
|
|
if (this.collapseMode == "mini") {
|
|
this.miniSplitEl = this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-" + d, html:" "});
|
|
this.miniSplitEl.addClassOnOver("x-layout-mini-over");
|
|
this.miniSplitEl.on("click", this.onCollapseClick, this, {stopEvent:true})
|
|
}
|
|
var b = this.splitSettings[d];
|
|
this.split = new Ext.SplitBar(this.splitEl.dom, c.el, b.orientation);
|
|
this.split.tickSize = this.tickSize;
|
|
this.split.placement = b.placement;
|
|
this.split.getMaximumSize = this[b.maxFn].createDelegate(this);
|
|
this.split.minSize = this.minSize || this[b.minProp];
|
|
this.split.on("beforeapply", this.onSplitMove, this);
|
|
this.split.useShim = this.useShim === true;
|
|
this.maxSize = this.maxSize || this[b.maxProp];
|
|
if (c.hidden) {
|
|
this.splitEl.hide()
|
|
}
|
|
if (this.useSplitTips) {
|
|
this.splitEl.dom.title = this.collapsible ? this.collapsibleSplitTip : this.splitTip
|
|
}
|
|
if (this.collapsible) {
|
|
this.splitEl.on("dblclick", this.onCollapseClick, this)
|
|
}
|
|
}, getSize:function () {
|
|
if (this.isCollapsed) {
|
|
return this.collapsedEl.getSize()
|
|
}
|
|
var a = this.panel.getSize();
|
|
if (this.position == "north" || this.position == "south") {
|
|
a.height += this.splitEl.dom.offsetHeight
|
|
} else {
|
|
a.width += this.splitEl.dom.offsetWidth
|
|
}
|
|
return a
|
|
}, getHMaxSize:function () {
|
|
var b = this.maxSize || 10000;
|
|
var a = this.layout.center;
|
|
return Math.min(b, (this.el.getWidth() + a.el.getWidth()) - a.getMinWidth())
|
|
}, getVMaxSize:function () {
|
|
var b = this.maxSize || 10000;
|
|
var a = this.layout.center;
|
|
return Math.min(b, (this.el.getHeight() + a.el.getHeight()) - a.getMinHeight())
|
|
}, onSplitMove:function (b, a) {
|
|
var c = this.panel.getSize();
|
|
this.lastSplitSize = a;
|
|
if (this.position == "north" || this.position == "south") {
|
|
this.panel.setSize(c.width, a);
|
|
this.state.height = a
|
|
} else {
|
|
this.panel.setSize(a, c.height);
|
|
this.state.width = a
|
|
}
|
|
this.layout.layout();
|
|
this.panel.saveState();
|
|
return false
|
|
}, getSplitBar:function () {
|
|
return this.split
|
|
}, destroy:function () {
|
|
Ext.destroy(this.miniSplitEl, this.split, this.splitEl);
|
|
Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this)
|
|
}});
|
|
Ext.Container.LAYOUTS.border = Ext.layout.BorderLayout;
|
|
Ext.layout.FormLayout = Ext.extend(Ext.layout.AnchorLayout, {labelSeparator:":", trackLabels:true, type:"form", onRemove:function (d) {
|
|
Ext.layout.FormLayout.superclass.onRemove.call(this, d);
|
|
if (this.trackLabels) {
|
|
d.un("show", this.onFieldShow, this);
|
|
d.un("hide", this.onFieldHide, this)
|
|
}
|
|
var b = d.getPositionEl(), a = d.getItemCt && d.getItemCt();
|
|
if (d.rendered && a) {
|
|
if (b && b.dom) {
|
|
b.insertAfter(a)
|
|
}
|
|
Ext.destroy(a);
|
|
Ext.destroyMembers(d, "label", "itemCt");
|
|
if (d.customItemCt) {
|
|
Ext.destroyMembers(d, "getItemCt", "customItemCt")
|
|
}
|
|
}
|
|
}, setContainer:function (a) {
|
|
Ext.layout.FormLayout.superclass.setContainer.call(this, a);
|
|
if (a.labelAlign) {
|
|
a.addClass("x-form-label-" + a.labelAlign)
|
|
}
|
|
if (a.hideLabels) {
|
|
Ext.apply(this, {labelStyle:"display:none", elementStyle:"padding-left:0;", labelAdjust:0})
|
|
} else {
|
|
this.labelSeparator = Ext.isDefined(a.labelSeparator) ? a.labelSeparator : this.labelSeparator;
|
|
a.labelWidth = a.labelWidth || 100;
|
|
if (Ext.isNumber(a.labelWidth)) {
|
|
var b = Ext.isNumber(a.labelPad) ? a.labelPad : 5;
|
|
Ext.apply(this, {labelAdjust:a.labelWidth + b, labelStyle:"width:" + a.labelWidth + "px;", elementStyle:"padding-left:" + (a.labelWidth + b) + "px"})
|
|
}
|
|
if (a.labelAlign == "top") {
|
|
Ext.apply(this, {labelStyle:"width:auto;", labelAdjust:0, elementStyle:"padding-left:0;"})
|
|
}
|
|
}
|
|
}, isHide:function (a) {
|
|
return a.hideLabel || this.container.hideLabels
|
|
}, onFieldShow:function (a) {
|
|
a.getItemCt().removeClass("x-hide-" + a.hideMode);
|
|
if (a.isComposite) {
|
|
a.doLayout()
|
|
}
|
|
}, onFieldHide:function (a) {
|
|
a.getItemCt().addClass("x-hide-" + a.hideMode)
|
|
}, getLabelStyle:function (e) {
|
|
var b = "", c = [this.labelStyle, e];
|
|
for (var d = 0, a = c.length; d < a; ++d) {
|
|
if (c[d]) {
|
|
b += c[d];
|
|
if (b.substr(-1, 1) != ";") {
|
|
b += ";"
|
|
}
|
|
}
|
|
}
|
|
return b
|
|
}, renderItem:function (e, a, d) {
|
|
if (e && (e.isFormField || e.fieldLabel) && e.inputType != "hidden") {
|
|
var b = this.getTemplateArgs(e);
|
|
if (Ext.isNumber(a)) {
|
|
a = d.dom.childNodes[a] || null
|
|
}
|
|
if (a) {
|
|
e.itemCt = this.fieldTpl.insertBefore(a, b, true)
|
|
} else {
|
|
e.itemCt = this.fieldTpl.append(d, b, true)
|
|
}
|
|
if (!e.getItemCt) {
|
|
Ext.apply(e, {getItemCt:function () {
|
|
return e.itemCt
|
|
}, customItemCt:true})
|
|
}
|
|
e.label = e.getItemCt().child("label.x-form-item-label");
|
|
if (!e.rendered) {
|
|
e.render("x-form-el-" + e.id)
|
|
} else {
|
|
if (!this.isValidParent(e, d)) {
|
|
Ext.fly("x-form-el-" + e.id).appendChild(e.getPositionEl())
|
|
}
|
|
}
|
|
if (this.trackLabels) {
|
|
if (e.hidden) {
|
|
this.onFieldHide(e)
|
|
}
|
|
e.on({scope:this, show:this.onFieldShow, hide:this.onFieldHide})
|
|
}
|
|
this.configureItem(e)
|
|
} else {
|
|
Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments)
|
|
}
|
|
}, getTemplateArgs:function (c) {
|
|
var a = !c.fieldLabel || c.hideLabel, b = (c.itemCls || this.container.itemCls || "") + (c.hideLabel ? " x-hide-label" : "");
|
|
if (Ext.isIE9 && Ext.isIEQuirks && c instanceof Ext.form.TextField) {
|
|
b += " x-input-wrapper"
|
|
}
|
|
return{id:c.id, label:c.fieldLabel, itemCls:b, clearCls:c.clearCls || "x-form-clear-left", labelStyle:this.getLabelStyle(c.labelStyle), elementStyle:this.elementStyle || "", labelSeparator:a ? "" : (Ext.isDefined(c.labelSeparator) ? c.labelSeparator : this.labelSeparator)}
|
|
}, adjustWidthAnchor:function (a, d) {
|
|
if (d.label && !this.isHide(d) && (this.container.labelAlign != "top")) {
|
|
var b = Ext.isIE6 || (Ext.isIE && !Ext.isStrict);
|
|
return a - this.labelAdjust + (b ? -3 : 0)
|
|
}
|
|
return a
|
|
}, adjustHeightAnchor:function (a, b) {
|
|
if (b.label && !this.isHide(b) && (this.container.labelAlign == "top")) {
|
|
return a - b.label.getHeight()
|
|
}
|
|
return a
|
|
}, isValidParent:function (b, a) {
|
|
return a && this.container.getEl().contains(b.getPositionEl())
|
|
}});
|
|
Ext.Container.LAYOUTS.form = Ext.layout.FormLayout;
|
|
Ext.layout.AccordionLayout = Ext.extend(Ext.layout.FitLayout, {fill:true, autoWidth:true, titleCollapse:true, hideCollapseTool:false, collapseFirst:false, animate:false, sequence:false, activeOnTop:false, type:"accordion", renderItem:function (a) {
|
|
if (this.animate === false) {
|
|
a.animCollapse = false
|
|
}
|
|
a.collapsible = true;
|
|
if (this.autoWidth) {
|
|
a.autoWidth = true
|
|
}
|
|
if (this.titleCollapse) {
|
|
a.titleCollapse = true
|
|
}
|
|
if (this.hideCollapseTool) {
|
|
a.hideCollapseTool = true
|
|
}
|
|
if (this.collapseFirst !== undefined) {
|
|
a.collapseFirst = this.collapseFirst
|
|
}
|
|
if (!this.activeItem && !a.collapsed) {
|
|
this.setActiveItem(a, true)
|
|
} else {
|
|
if (this.activeItem && this.activeItem != a) {
|
|
a.collapsed = true
|
|
}
|
|
}
|
|
Ext.layout.AccordionLayout.superclass.renderItem.apply(this, arguments);
|
|
a.header.addClass("x-accordion-hd");
|
|
a.on("beforeexpand", this.beforeExpand, this)
|
|
}, onRemove:function (a) {
|
|
Ext.layout.AccordionLayout.superclass.onRemove.call(this, a);
|
|
if (a.rendered) {
|
|
a.header.removeClass("x-accordion-hd")
|
|
}
|
|
a.un("beforeexpand", this.beforeExpand, this)
|
|
}, beforeExpand:function (c, b) {
|
|
var a = this.activeItem;
|
|
if (a) {
|
|
if (this.sequence) {
|
|
delete this.activeItem;
|
|
if (!a.collapsed) {
|
|
a.collapse({callback:function () {
|
|
c.expand(b || true)
|
|
}, scope:this});
|
|
return false
|
|
}
|
|
} else {
|
|
a.collapse(this.animate)
|
|
}
|
|
}
|
|
this.setActive(c);
|
|
if (this.activeOnTop) {
|
|
c.el.dom.parentNode.insertBefore(c.el.dom, c.el.dom.parentNode.firstChild)
|
|
}
|
|
this.layout()
|
|
}, setItemSize:function (g, e) {
|
|
if (this.fill && g) {
|
|
var d = 0, c, b = this.getRenderedItems(this.container), a = b.length, h;
|
|
for (c = 0; c < a; c++) {
|
|
if ((h = b[c]) != g && !h.hidden) {
|
|
d += h.header.getHeight()
|
|
}
|
|
}
|
|
e.height -= d;
|
|
g.setSize(e)
|
|
}
|
|
}, setActiveItem:function (a) {
|
|
this.setActive(a, true)
|
|
}, setActive:function (c, b) {
|
|
var a = this.activeItem;
|
|
c = this.container.getComponent(c);
|
|
if (a != c) {
|
|
if (c.rendered && c.collapsed && b) {
|
|
c.expand()
|
|
} else {
|
|
if (a) {
|
|
a.fireEvent("deactivate", a)
|
|
}
|
|
this.activeItem = c;
|
|
c.fireEvent("activate", c)
|
|
}
|
|
}
|
|
}});
|
|
Ext.Container.LAYOUTS.accordion = Ext.layout.AccordionLayout;
|
|
Ext.layout.Accordion = Ext.layout.AccordionLayout;
|
|
Ext.layout.TableLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:false, type:"table", targetCls:"x-table-layout-ct", tableAttrs:null, setContainer:function (a) {
|
|
Ext.layout.TableLayout.superclass.setContainer.call(this, a);
|
|
this.currentRow = 0;
|
|
this.currentColumn = 0;
|
|
this.cells = []
|
|
}, onLayout:function (d, g) {
|
|
var e = d.items.items, a = e.length, h, b;
|
|
if (!this.table) {
|
|
g.addClass("x-table-layout-ct");
|
|
this.table = g.createChild(Ext.apply({tag:"table", cls:"x-table-layout", cellspacing:0, cn:{tag:"tbody"}}, this.tableAttrs), null, true)
|
|
}
|
|
this.renderAll(d, g)
|
|
}, getRow:function (a) {
|
|
var b = this.table.tBodies[0].childNodes[a];
|
|
if (!b) {
|
|
b = document.createElement("tr");
|
|
this.table.tBodies[0].appendChild(b)
|
|
}
|
|
return b
|
|
}, getNextCell:function (j) {
|
|
var a = this.getNextNonSpan(this.currentColumn, this.currentRow);
|
|
var g = this.currentColumn = a[0], e = this.currentRow = a[1];
|
|
for (var i = e; i < e + (j.rowspan || 1); i++) {
|
|
if (!this.cells[i]) {
|
|
this.cells[i] = []
|
|
}
|
|
for (var d = g; d < g + (j.colspan || 1); d++) {
|
|
this.cells[i][d] = true
|
|
}
|
|
}
|
|
var h = document.createElement("td");
|
|
if (j.cellId) {
|
|
h.id = j.cellId
|
|
}
|
|
var b = "x-table-layout-cell";
|
|
if (j.cellCls) {
|
|
b += " " + j.cellCls
|
|
}
|
|
h.className = b;
|
|
if (j.colspan) {
|
|
h.colSpan = j.colspan
|
|
}
|
|
if (j.rowspan) {
|
|
h.rowSpan = j.rowspan
|
|
}
|
|
this.getRow(e).appendChild(h);
|
|
return h
|
|
}, getNextNonSpan:function (a, c) {
|
|
var b = this.columns;
|
|
while ((b && a >= b) || (this.cells[c] && this.cells[c][a])) {
|
|
if (b && a >= b) {
|
|
c++;
|
|
a = 0
|
|
} else {
|
|
a++
|
|
}
|
|
}
|
|
return[a, c]
|
|
}, renderItem:function (e, a, d) {
|
|
if (!this.table) {
|
|
this.table = d.createChild(Ext.apply({tag:"table", cls:"x-table-layout", cellspacing:0, cn:{tag:"tbody"}}, this.tableAttrs), null, true)
|
|
}
|
|
if (e && !e.rendered) {
|
|
e.render(this.getNextCell(e));
|
|
this.configureItem(e)
|
|
} else {
|
|
if (e && !this.isValidParent(e, d)) {
|
|
var b = this.getNextCell(e);
|
|
b.insertBefore(e.getPositionEl().dom, null);
|
|
e.container = Ext.get(b);
|
|
this.configureItem(e)
|
|
}
|
|
}
|
|
}, isValidParent:function (b, a) {
|
|
return b.getPositionEl().up("table", 5).dom.parentNode === (a.dom || a)
|
|
}, destroy:function () {
|
|
delete this.table;
|
|
Ext.layout.TableLayout.superclass.destroy.call(this)
|
|
}});
|
|
Ext.Container.LAYOUTS.table = Ext.layout.TableLayout;
|
|
Ext.layout.AbsoluteLayout = Ext.extend(Ext.layout.AnchorLayout, {extraCls:"x-abs-layout-item", type:"absolute", onLayout:function (a, b) {
|
|
b.position();
|
|
this.paddingLeft = b.getPadding("l");
|
|
this.paddingTop = b.getPadding("t");
|
|
Ext.layout.AbsoluteLayout.superclass.onLayout.call(this, a, b)
|
|
}, adjustWidthAnchor:function (b, a) {
|
|
return b ? b - a.getPosition(true)[0] + this.paddingLeft : b
|
|
}, adjustHeightAnchor:function (b, a) {
|
|
return b ? b - a.getPosition(true)[1] + this.paddingTop : b
|
|
}});
|
|
Ext.Container.LAYOUTS.absolute = Ext.layout.AbsoluteLayout;
|
|
Ext.layout.BoxLayout = Ext.extend(Ext.layout.ContainerLayout, {defaultMargins:{left:0, top:0, right:0, bottom:0}, padding:"0", pack:"start", monitorResize:true, type:"box", scrollOffset:0, extraCls:"x-box-item", targetCls:"x-box-layout-ct", innerCls:"x-box-inner", constructor:function (a) {
|
|
Ext.layout.BoxLayout.superclass.constructor.call(this, a);
|
|
if (Ext.isString(this.defaultMargins)) {
|
|
this.defaultMargins = this.parseMargins(this.defaultMargins)
|
|
}
|
|
var d = this.overflowHandler;
|
|
if (typeof d == "string") {
|
|
d = {type:d}
|
|
}
|
|
var c = "none";
|
|
if (d && d.type != undefined) {
|
|
c = d.type
|
|
}
|
|
var b = Ext.layout.boxOverflow[c];
|
|
if (b[this.type]) {
|
|
b = b[this.type]
|
|
}
|
|
this.overflowHandler = new b(this, d)
|
|
}, onLayout:function (b, h) {
|
|
Ext.layout.BoxLayout.superclass.onLayout.call(this, b, h);
|
|
var d = this.getLayoutTargetSize(), i = this.getVisibleItems(b), c = this.calculateChildBoxes(i, d), g = c.boxes, j = c.meta;
|
|
if (d.width > 0) {
|
|
var k = this.overflowHandler, a = j.tooNarrow ? "handleOverflow" : "clearOverflow";
|
|
var e = k[a](c, d);
|
|
if (e) {
|
|
if (e.targetSize) {
|
|
d = e.targetSize
|
|
}
|
|
if (e.recalculate) {
|
|
i = this.getVisibleItems(b);
|
|
c = this.calculateChildBoxes(i, d);
|
|
g = c.boxes
|
|
}
|
|
}
|
|
}
|
|
this.layoutTargetLastSize = d;
|
|
this.childBoxCache = c;
|
|
this.updateInnerCtSize(d, c);
|
|
this.updateChildBoxes(g);
|
|
this.handleTargetOverflow(d, b, h)
|
|
}, updateChildBoxes:function (c) {
|
|
for (var b = 0, e = c.length; b < e; b++) {
|
|
var d = c[b], a = d.component;
|
|
if (d.dirtySize) {
|
|
a.setSize(d.width, d.height)
|
|
}
|
|
if (isNaN(d.left) || isNaN(d.top)) {
|
|
continue
|
|
}
|
|
a.setPosition(d.left, d.top)
|
|
}
|
|
}, updateInnerCtSize:function (c, h) {
|
|
var i = this.align, g = this.padding, e = c.width, a = c.height;
|
|
if (this.type == "hbox") {
|
|
var b = e, d = h.meta.maxHeight + g.top + g.bottom;
|
|
if (i == "stretch") {
|
|
d = a
|
|
} else {
|
|
if (i == "middle") {
|
|
d = Math.max(a, d)
|
|
}
|
|
}
|
|
} else {
|
|
var d = a, b = h.meta.maxWidth + g.left + g.right;
|
|
if (i == "stretch") {
|
|
b = e
|
|
} else {
|
|
if (i == "center") {
|
|
b = Math.max(e, b)
|
|
}
|
|
}
|
|
}
|
|
this.innerCt.setSize(b || undefined, d || undefined)
|
|
}, handleTargetOverflow:function (d, a, c) {
|
|
var e = c.getStyle("overflow");
|
|
if (e && e != "hidden" && !this.adjustmentPass) {
|
|
var b = this.getLayoutTargetSize();
|
|
if (b.width != d.width || b.height != d.height) {
|
|
this.adjustmentPass = true;
|
|
this.onLayout(a, c)
|
|
}
|
|
}
|
|
delete this.adjustmentPass
|
|
}, isValidParent:function (b, a) {
|
|
return this.innerCt && b.getPositionEl().dom.parentNode == this.innerCt.dom
|
|
}, getVisibleItems:function (g) {
|
|
var g = g || this.container, e = g.getLayoutTarget(), h = g.items.items, a = h.length, d, j, b = [];
|
|
for (d = 0; d < a; d++) {
|
|
if ((j = h[d]).rendered && this.isValidParent(j, e) && j.hidden !== true && j.collapsed !== true && j.shouldLayout !== false) {
|
|
b.push(j)
|
|
}
|
|
}
|
|
return b
|
|
}, renderAll:function (a, b) {
|
|
if (!this.innerCt) {
|
|
this.innerCt = b.createChild({cls:this.innerCls});
|
|
this.padding = this.parseMargins(this.padding)
|
|
}
|
|
Ext.layout.BoxLayout.superclass.renderAll.call(this, a, this.innerCt)
|
|
}, getLayoutTargetSize:function () {
|
|
var b = this.container.getLayoutTarget(), a;
|
|
if (b) {
|
|
a = b.getViewSize();
|
|
if (Ext.isIE && Ext.isStrict && a.width == 0) {
|
|
a = b.getStyleSize()
|
|
}
|
|
a.width -= b.getPadding("lr");
|
|
a.height -= b.getPadding("tb")
|
|
}
|
|
return a
|
|
}, renderItem:function (a) {
|
|
if (Ext.isString(a.margins)) {
|
|
a.margins = this.parseMargins(a.margins)
|
|
} else {
|
|
if (!a.margins) {
|
|
a.margins = this.defaultMargins
|
|
}
|
|
}
|
|
Ext.layout.BoxLayout.superclass.renderItem.apply(this, arguments)
|
|
}, destroy:function () {
|
|
Ext.destroy(this.overflowHandler);
|
|
Ext.layout.BoxLayout.superclass.destroy.apply(this, arguments)
|
|
}});
|
|
Ext.layout.boxOverflow.None = Ext.extend(Object, {constructor:function (b, a) {
|
|
this.layout = b;
|
|
Ext.apply(this, a || {})
|
|
}, handleOverflow:Ext.emptyFn, clearOverflow:Ext.emptyFn});
|
|
Ext.layout.boxOverflow.none = Ext.layout.boxOverflow.None;
|
|
Ext.layout.boxOverflow.Menu = Ext.extend(Ext.layout.boxOverflow.None, {afterCls:"x-strip-right", noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>', constructor:function (a) {
|
|
Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this, arguments);
|
|
this.menuItems = []
|
|
}, createInnerElements:function () {
|
|
if (!this.afterCt) {
|
|
this.afterCt = this.layout.innerCt.insertSibling({cls:this.afterCls}, "before")
|
|
}
|
|
}, clearOverflow:function (a, g) {
|
|
var e = g.width + (this.afterCt ? this.afterCt.getWidth() : 0), b = this.menuItems;
|
|
this.hideTrigger();
|
|
for (var c = 0, d = b.length; c < d; c++) {
|
|
b.pop().component.show()
|
|
}
|
|
return{targetSize:{height:g.height, width:e}}
|
|
}, showTrigger:function () {
|
|
this.createMenu();
|
|
this.menuTrigger.show()
|
|
}, hideTrigger:function () {
|
|
if (this.menuTrigger != undefined) {
|
|
this.menuTrigger.hide()
|
|
}
|
|
}, beforeMenuShow:function (h) {
|
|
var b = this.menuItems, a = b.length, g, e;
|
|
var c = function (j, i) {
|
|
return j.isXType("buttongroup") && !(i instanceof Ext.Toolbar.Separator)
|
|
};
|
|
this.clearMenu();
|
|
h.removeAll();
|
|
for (var d = 0; d < a; d++) {
|
|
g = b[d].component;
|
|
if (e && (c(g, e) || c(e, g))) {
|
|
h.add("-")
|
|
}
|
|
this.addComponentToMenu(h, g);
|
|
e = g
|
|
}
|
|
if (h.items.length < 1) {
|
|
h.add(this.noItemsMenuText)
|
|
}
|
|
}, createMenuConfig:function (c, a) {
|
|
var b = Ext.apply({}, c.initialConfig), d = c.toggleGroup;
|
|
Ext.copyTo(b, c, ["iconCls", "icon", "itemId", "disabled", "handler", "scope", "menu"]);
|
|
Ext.apply(b, {text:c.overflowText || c.text, hideOnClick:a});
|
|
if (d || c.enableToggle) {
|
|
Ext.apply(b, {group:d, checked:c.pressed, listeners:{checkchange:function (g, e) {
|
|
c.toggle(e)
|
|
}}})
|
|
}
|
|
delete b.ownerCt;
|
|
delete b.xtype;
|
|
delete b.id;
|
|
return b
|
|
}, addComponentToMenu:function (b, a) {
|
|
if (a instanceof Ext.Toolbar.Separator) {
|
|
b.add("-")
|
|
} else {
|
|
if (Ext.isFunction(a.isXType)) {
|
|
if (a.isXType("splitbutton")) {
|
|
b.add(this.createMenuConfig(a, true))
|
|
} else {
|
|
if (a.isXType("button")) {
|
|
b.add(this.createMenuConfig(a, !a.menu))
|
|
} else {
|
|
if (a.isXType("buttongroup")) {
|
|
a.items.each(function (c) {
|
|
this.addComponentToMenu(b, c)
|
|
}, this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, clearMenu:function () {
|
|
var a = this.moreMenu;
|
|
if (a && a.items) {
|
|
a.items.each(function (b) {
|
|
delete b.menu
|
|
})
|
|
}
|
|
}, createMenu:function () {
|
|
if (!this.menuTrigger) {
|
|
this.createInnerElements();
|
|
this.menu = new Ext.menu.Menu({ownerCt:this.layout.container, listeners:{scope:this, beforeshow:this.beforeMenuShow}});
|
|
this.menuTrigger = new Ext.Button({iconCls:"x-toolbar-more-icon", cls:"x-toolbar-more", menu:this.menu, renderTo:this.afterCt})
|
|
}
|
|
}, destroy:function () {
|
|
Ext.destroy(this.menu, this.menuTrigger)
|
|
}});
|
|
Ext.layout.boxOverflow.menu = Ext.layout.boxOverflow.Menu;
|
|
Ext.layout.boxOverflow.HorizontalMenu = Ext.extend(Ext.layout.boxOverflow.Menu, {constructor:function () {
|
|
Ext.layout.boxOverflow.HorizontalMenu.superclass.constructor.apply(this, arguments);
|
|
var c = this, b = c.layout, a = b.calculateChildBoxes;
|
|
b.calculateChildBoxes = function (d, i) {
|
|
var l = a.apply(b, arguments), k = l.meta, e = c.menuItems;
|
|
var j = 0;
|
|
for (var g = 0, h = e.length; g < h; g++) {
|
|
j += e[g].width
|
|
}
|
|
k.minimumWidth += j;
|
|
k.tooNarrow = k.minimumWidth > i.width;
|
|
return l
|
|
}
|
|
}, handleOverflow:function (d, h) {
|
|
this.showTrigger();
|
|
var k = h.width - this.afterCt.getWidth(), l = d.boxes, e = 0, r = false;
|
|
for (var o = 0, c = l.length; o < c; o++) {
|
|
e += l[o].width
|
|
}
|
|
var a = k - e, g = 0;
|
|
for (var o = 0, c = this.menuItems.length; o < c; o++) {
|
|
var n = this.menuItems[o], m = n.component, b = n.width;
|
|
if (b < a) {
|
|
m.show();
|
|
a -= b;
|
|
g++;
|
|
r = true
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
if (r) {
|
|
this.menuItems = this.menuItems.slice(g)
|
|
} else {
|
|
for (var j = l.length - 1; j >= 0; j--) {
|
|
var q = l[j].component, p = l[j].left + l[j].width;
|
|
if (p >= k) {
|
|
this.menuItems.unshift({component:q, width:l[j].width});
|
|
q.hide()
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (this.menuItems.length == 0) {
|
|
this.hideTrigger()
|
|
}
|
|
return{targetSize:{height:h.height, width:k}, recalculate:r}
|
|
}});
|
|
Ext.layout.boxOverflow.menu.hbox = Ext.layout.boxOverflow.HorizontalMenu;
|
|
Ext.layout.boxOverflow.Scroller = Ext.extend(Ext.layout.boxOverflow.None, {animateScroll:true, scrollIncrement:100, wheelIncrement:3, scrollRepeatInterval:400, scrollDuration:0.4, beforeCls:"x-strip-left", afterCls:"x-strip-right", scrollerCls:"x-strip-scroller", beforeScrollerCls:"x-strip-scroller-left", afterScrollerCls:"x-strip-scroller-right", createWheelListener:function () {
|
|
this.layout.innerCt.on({scope:this, mousewheel:function (a) {
|
|
a.stopEvent();
|
|
this.scrollBy(a.getWheelDelta() * this.wheelIncrement * -1, false)
|
|
}})
|
|
}, handleOverflow:function (a, b) {
|
|
this.createInnerElements();
|
|
this.showScrollers()
|
|
}, clearOverflow:function () {
|
|
this.hideScrollers()
|
|
}, showScrollers:function () {
|
|
this.createScrollers();
|
|
this.beforeScroller.show();
|
|
this.afterScroller.show();
|
|
this.updateScrollButtons()
|
|
}, hideScrollers:function () {
|
|
if (this.beforeScroller != undefined) {
|
|
this.beforeScroller.hide();
|
|
this.afterScroller.hide()
|
|
}
|
|
}, createScrollers:function () {
|
|
if (!this.beforeScroller && !this.afterScroller) {
|
|
var a = this.beforeCt.createChild({cls:String.format("{0} {1} ", this.scrollerCls, this.beforeScrollerCls)});
|
|
var b = this.afterCt.createChild({cls:String.format("{0} {1}", this.scrollerCls, this.afterScrollerCls)});
|
|
a.addClassOnOver(this.beforeScrollerCls + "-hover");
|
|
b.addClassOnOver(this.afterScrollerCls + "-hover");
|
|
a.setVisibilityMode(Ext.Element.DISPLAY);
|
|
b.setVisibilityMode(Ext.Element.DISPLAY);
|
|
this.beforeRepeater = new Ext.util.ClickRepeater(a, {interval:this.scrollRepeatInterval, handler:this.scrollLeft, scope:this});
|
|
this.afterRepeater = new Ext.util.ClickRepeater(b, {interval:this.scrollRepeatInterval, handler:this.scrollRight, scope:this});
|
|
this.beforeScroller = a;
|
|
this.afterScroller = b
|
|
}
|
|
}, destroy:function () {
|
|
Ext.destroy(this.beforeScroller, this.afterScroller, this.beforeRepeater, this.afterRepeater, this.beforeCt, this.afterCt)
|
|
}, scrollBy:function (b, a) {
|
|
this.scrollTo(this.getScrollPosition() + b, a)
|
|
}, getItem:function (a) {
|
|
if (Ext.isString(a)) {
|
|
a = Ext.getCmp(a)
|
|
} else {
|
|
if (Ext.isNumber(a)) {
|
|
a = this.items[a]
|
|
}
|
|
}
|
|
return a
|
|
}, getScrollAnim:function () {
|
|
return{duration:this.scrollDuration, callback:this.updateScrollButtons, scope:this}
|
|
}, updateScrollButtons:function () {
|
|
if (this.beforeScroller == undefined || this.afterScroller == undefined) {
|
|
return
|
|
}
|
|
var d = this.atExtremeBefore() ? "addClass" : "removeClass", c = this.atExtremeAfter() ? "addClass" : "removeClass", a = this.beforeScrollerCls + "-disabled", b = this.afterScrollerCls + "-disabled";
|
|
this.beforeScroller[d](a);
|
|
this.afterScroller[c](b);
|
|
this.scrolling = false
|
|
}, atExtremeBefore:function () {
|
|
return this.getScrollPosition() === 0
|
|
}, scrollLeft:function (a) {
|
|
this.scrollBy(-this.scrollIncrement, a)
|
|
}, scrollRight:function (a) {
|
|
this.scrollBy(this.scrollIncrement, a)
|
|
}, scrollToItem:function (d, b) {
|
|
d = this.getItem(d);
|
|
if (d != undefined) {
|
|
var a = this.getItemVisibility(d);
|
|
if (!a.fullyVisible) {
|
|
var c = d.getBox(true, true), e = c.x;
|
|
if (a.hiddenRight) {
|
|
e -= (this.layout.innerCt.getWidth() - c.width)
|
|
}
|
|
this.scrollTo(e, b)
|
|
}
|
|
}
|
|
}, getItemVisibility:function (e) {
|
|
var d = this.getItem(e).getBox(true, true), a = d.x, c = d.x + d.width, g = this.getScrollPosition(), b = this.layout.innerCt.getWidth() + g;
|
|
return{hiddenLeft:a < g, hiddenRight:c > b, fullyVisible:a > g && c < b}
|
|
}});
|
|
Ext.layout.boxOverflow.scroller = Ext.layout.boxOverflow.Scroller;
|
|
Ext.layout.boxOverflow.VerticalScroller = Ext.extend(Ext.layout.boxOverflow.Scroller, {scrollIncrement:75, wheelIncrement:2, handleOverflow:function (a, b) {
|
|
Ext.layout.boxOverflow.VerticalScroller.superclass.handleOverflow.apply(this, arguments);
|
|
return{targetSize:{height:b.height - (this.beforeCt.getHeight() + this.afterCt.getHeight()), width:b.width}}
|
|
}, createInnerElements:function () {
|
|
var a = this.layout.innerCt;
|
|
if (!this.beforeCt) {
|
|
this.beforeCt = a.insertSibling({cls:this.beforeCls}, "before");
|
|
this.afterCt = a.insertSibling({cls:this.afterCls}, "after");
|
|
this.createWheelListener()
|
|
}
|
|
}, scrollTo:function (a, b) {
|
|
var d = this.getScrollPosition(), c = a.constrain(0, this.getMaxScrollBottom());
|
|
if (c != d && !this.scrolling) {
|
|
if (b == undefined) {
|
|
b = this.animateScroll
|
|
}
|
|
this.layout.innerCt.scrollTo("top", c, b ? this.getScrollAnim() : false);
|
|
if (b) {
|
|
this.scrolling = true
|
|
} else {
|
|
this.scrolling = false;
|
|
this.updateScrollButtons()
|
|
}
|
|
}
|
|
}, getScrollPosition:function () {
|
|
return parseInt(this.layout.innerCt.dom.scrollTop, 10) || 0
|
|
}, getMaxScrollBottom:function () {
|
|
return this.layout.innerCt.dom.scrollHeight - this.layout.innerCt.getHeight()
|
|
}, atExtremeAfter:function () {
|
|
return this.getScrollPosition() >= this.getMaxScrollBottom()
|
|
}});
|
|
Ext.layout.boxOverflow.scroller.vbox = Ext.layout.boxOverflow.VerticalScroller;
|
|
Ext.layout.boxOverflow.HorizontalScroller = Ext.extend(Ext.layout.boxOverflow.Scroller, {handleOverflow:function (a, b) {
|
|
Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this, arguments);
|
|
return{targetSize:{height:b.height, width:b.width - (this.beforeCt.getWidth() + this.afterCt.getWidth())}}
|
|
}, createInnerElements:function () {
|
|
var a = this.layout.innerCt;
|
|
if (!this.beforeCt) {
|
|
this.afterCt = a.insertSibling({cls:this.afterCls}, "before");
|
|
this.beforeCt = a.insertSibling({cls:this.beforeCls}, "before");
|
|
this.createWheelListener()
|
|
}
|
|
}, scrollTo:function (a, b) {
|
|
var d = this.getScrollPosition(), c = a.constrain(0, this.getMaxScrollRight());
|
|
if (c != d && !this.scrolling) {
|
|
if (b == undefined) {
|
|
b = this.animateScroll
|
|
}
|
|
this.layout.innerCt.scrollTo("left", c, b ? this.getScrollAnim() : false);
|
|
if (b) {
|
|
this.scrolling = true
|
|
} else {
|
|
this.scrolling = false;
|
|
this.updateScrollButtons()
|
|
}
|
|
}
|
|
}, getScrollPosition:function () {
|
|
return parseInt(this.layout.innerCt.dom.scrollLeft, 10) || 0
|
|
}, getMaxScrollRight:function () {
|
|
return this.layout.innerCt.dom.scrollWidth - this.layout.innerCt.getWidth()
|
|
}, atExtremeAfter:function () {
|
|
return this.getScrollPosition() >= this.getMaxScrollRight()
|
|
}});
|
|
Ext.layout.boxOverflow.scroller.hbox = Ext.layout.boxOverflow.HorizontalScroller;
|
|
Ext.layout.HBoxLayout = Ext.extend(Ext.layout.BoxLayout, {align:"top", type:"hbox", calculateChildBoxes:function (r, b) {
|
|
var F = r.length, R = this.padding, D = R.top, U = R.left, y = D + R.bottom, O = U + R.right, a = b.width - this.scrollOffset, e = b.height, o = Math.max(0, e - y), P = this.pack == "start", W = this.pack == "center", A = this.pack == "end", L = 0, Q = 0, T = 0, l = 0, X = 0, H = [], k, J, M, V, w, j, S, I, c, x, q, N;
|
|
for (S = 0; S < F; S++) {
|
|
k = r[S];
|
|
M = k.height;
|
|
J = k.width;
|
|
j = !k.hasLayout && typeof k.doLayout == "function";
|
|
if (typeof J != "number") {
|
|
if (k.flex && !J) {
|
|
T += k.flex
|
|
} else {
|
|
if (!J && j) {
|
|
k.doLayout()
|
|
}
|
|
V = k.getSize();
|
|
J = V.width;
|
|
M = V.height
|
|
}
|
|
}
|
|
w = k.margins;
|
|
x = w.left + w.right;
|
|
L += x + (J || 0);
|
|
l += x + (k.flex ? k.minWidth || 0 : J);
|
|
X += x + (k.minWidth || J || 0);
|
|
if (typeof M != "number") {
|
|
if (j) {
|
|
k.doLayout()
|
|
}
|
|
M = k.getHeight()
|
|
}
|
|
Q = Math.max(Q, M + w.top + w.bottom);
|
|
H.push({component:k, height:M || undefined, width:J || undefined})
|
|
}
|
|
var K = l - a, p = X > a;
|
|
var n = Math.max(0, a - L - O);
|
|
if (p) {
|
|
for (S = 0; S < F; S++) {
|
|
H[S].width = r[S].minWidth || r[S].width || H[S].width
|
|
}
|
|
} else {
|
|
if (K > 0) {
|
|
var C = [];
|
|
for (var E = 0, v = F; E < v; E++) {
|
|
var B = r[E], t = B.minWidth || 0;
|
|
if (B.flex) {
|
|
H[E].width = t
|
|
} else {
|
|
C.push({minWidth:t, available:H[E].width - t, index:E})
|
|
}
|
|
}
|
|
C.sort(function (Y, i) {
|
|
return Y.available > i.available ? 1 : -1
|
|
});
|
|
for (var S = 0, v = C.length; S < v; S++) {
|
|
var G = C[S].index;
|
|
if (G == undefined) {
|
|
continue
|
|
}
|
|
var B = r[G], m = H[G], u = m.width, t = B.minWidth, d = Math.max(t, u - Math.ceil(K / (v - S))), g = u - d;
|
|
H[G].width = d;
|
|
K -= g
|
|
}
|
|
} else {
|
|
var h = n, s = T;
|
|
for (S = 0; S < F; S++) {
|
|
k = r[S];
|
|
I = H[S];
|
|
w = k.margins;
|
|
q = w.top + w.bottom;
|
|
if (P && k.flex && !k.width) {
|
|
c = Math.ceil((k.flex / s) * h);
|
|
h -= c;
|
|
s -= k.flex;
|
|
I.width = c;
|
|
I.dirtySize = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (W) {
|
|
U += n / 2
|
|
} else {
|
|
if (A) {
|
|
U += n
|
|
}
|
|
}
|
|
for (S = 0; S < F; S++) {
|
|
k = r[S];
|
|
I = H[S];
|
|
w = k.margins;
|
|
U += w.left;
|
|
q = w.top + w.bottom;
|
|
I.left = U;
|
|
I.top = D + w.top;
|
|
switch (this.align) {
|
|
case"stretch":
|
|
N = o - q;
|
|
I.height = N.constrain(k.minHeight || 0, k.maxHeight || 1000000);
|
|
I.dirtySize = true;
|
|
break;
|
|
case"stretchmax":
|
|
N = Q - q;
|
|
I.height = N.constrain(k.minHeight || 0, k.maxHeight || 1000000);
|
|
I.dirtySize = true;
|
|
break;
|
|
case"middle":
|
|
var z = o - I.height - q;
|
|
if (z > 0) {
|
|
I.top = D + q + (z / 2)
|
|
}
|
|
}
|
|
U += I.width + w.right
|
|
}
|
|
return{boxes:H, meta:{maxHeight:Q, nonFlexWidth:L, desiredWidth:l, minimumWidth:X, shortfall:l - a, tooNarrow:p}}
|
|
}});
|
|
Ext.Container.LAYOUTS.hbox = Ext.layout.HBoxLayout;
|
|
Ext.layout.VBoxLayout = Ext.extend(Ext.layout.BoxLayout, {align:"left", type:"vbox", calculateChildBoxes:function (o, b) {
|
|
var E = o.length, R = this.padding, C = R.top, V = R.left, x = C + R.bottom, O = V + R.right, a = b.width - this.scrollOffset, c = b.height, K = Math.max(0, a - O), P = this.pack == "start", X = this.pack == "center", z = this.pack == "end", k = 0, u = 0, U = 0, L = 0, m = 0, G = [], h, I, N, W, t, g, T, H, S, w, n, d, r;
|
|
for (T = 0; T < E; T++) {
|
|
h = o[T];
|
|
N = h.height;
|
|
I = h.width;
|
|
g = !h.hasLayout && typeof h.doLayout == "function";
|
|
if (typeof N != "number") {
|
|
if (h.flex && !N) {
|
|
U += h.flex
|
|
} else {
|
|
if (!N && g) {
|
|
h.doLayout()
|
|
}
|
|
W = h.getSize();
|
|
I = W.width;
|
|
N = W.height
|
|
}
|
|
}
|
|
t = h.margins;
|
|
n = t.top + t.bottom;
|
|
k += n + (N || 0);
|
|
L += n + (h.flex ? h.minHeight || 0 : N);
|
|
m += n + (h.minHeight || N || 0);
|
|
if (typeof I != "number") {
|
|
if (g) {
|
|
h.doLayout()
|
|
}
|
|
I = h.getWidth()
|
|
}
|
|
u = Math.max(u, I + t.left + t.right);
|
|
G.push({component:h, height:N || undefined, width:I || undefined})
|
|
}
|
|
var M = L - c, l = m > c;
|
|
var q = Math.max(0, (c - k - x));
|
|
if (l) {
|
|
for (T = 0, r = E; T < r; T++) {
|
|
G[T].height = o[T].minHeight || o[T].height || G[T].height
|
|
}
|
|
} else {
|
|
if (M > 0) {
|
|
var J = [];
|
|
for (var D = 0, r = E; D < r; D++) {
|
|
var A = o[D], s = A.minHeight || 0;
|
|
if (A.flex) {
|
|
G[D].height = s
|
|
} else {
|
|
J.push({minHeight:s, available:G[D].height - s, index:D})
|
|
}
|
|
}
|
|
J.sort(function (Y, i) {
|
|
return Y.available > i.available ? 1 : -1
|
|
});
|
|
for (var T = 0, r = J.length; T < r; T++) {
|
|
var F = J[T].index;
|
|
if (F == undefined) {
|
|
continue
|
|
}
|
|
var A = o[F], j = G[F], v = j.height, s = A.minHeight, B = Math.max(s, v - Math.ceil(M / (r - T))), e = v - B;
|
|
G[F].height = B;
|
|
M -= e
|
|
}
|
|
} else {
|
|
var Q = q, p = U;
|
|
for (T = 0; T < E; T++) {
|
|
h = o[T];
|
|
H = G[T];
|
|
t = h.margins;
|
|
w = t.left + t.right;
|
|
if (P && h.flex && !h.height) {
|
|
S = Math.ceil((h.flex / p) * Q);
|
|
Q -= S;
|
|
p -= h.flex;
|
|
H.height = S;
|
|
H.dirtySize = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (X) {
|
|
C += q / 2
|
|
} else {
|
|
if (z) {
|
|
C += q
|
|
}
|
|
}
|
|
for (T = 0; T < E; T++) {
|
|
h = o[T];
|
|
H = G[T];
|
|
t = h.margins;
|
|
C += t.top;
|
|
w = t.left + t.right;
|
|
H.left = V + t.left;
|
|
H.top = C;
|
|
switch (this.align) {
|
|
case"stretch":
|
|
d = K - w;
|
|
H.width = d.constrain(h.minWidth || 0, h.maxWidth || 1000000);
|
|
H.dirtySize = true;
|
|
break;
|
|
case"stretchmax":
|
|
d = u - w;
|
|
H.width = d.constrain(h.minWidth || 0, h.maxWidth || 1000000);
|
|
H.dirtySize = true;
|
|
break;
|
|
case"center":
|
|
var y = K - H.width - w;
|
|
if (y > 0) {
|
|
H.left = V + w + (y / 2)
|
|
}
|
|
}
|
|
C += H.height + t.bottom
|
|
}
|
|
return{boxes:G, meta:{maxWidth:u, nonFlexHeight:k, desiredHeight:L, minimumHeight:m, shortfall:L - c, tooNarrow:l}}
|
|
}});
|
|
Ext.Container.LAYOUTS.vbox = Ext.layout.VBoxLayout;
|
|
Ext.layout.ToolbarLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true, type:"toolbar", triggerWidth:18, noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>', lastOverflow:false, tableHTML:['<table cellspacing="0" class="x-toolbar-ct">', "<tbody>", "<tr>", '<td class="x-toolbar-left" align="{0}">', '<table cellspacing="0">', "<tbody>", '<tr class="x-toolbar-left-row"></tr>', "</tbody>", "</table>", "</td>", '<td class="x-toolbar-right" align="right">', '<table cellspacing="0" class="x-toolbar-right-ct">', "<tbody>", "<tr>", "<td>", '<table cellspacing="0">', "<tbody>", '<tr class="x-toolbar-right-row"></tr>', "</tbody>", "</table>", "</td>", "<td>", '<table cellspacing="0">', "<tbody>", '<tr class="x-toolbar-extras-row"></tr>', "</tbody>", "</table>", "</td>", "</tr>", "</tbody>", "</table>", "</td>", "</tr>", "</tbody>", "</table>"].join(""), onLayout:function (e, j) {
|
|
if (!this.leftTr) {
|
|
var h = e.buttonAlign == "center" ? "center" : "left";
|
|
j.addClass("x-toolbar-layout-ct");
|
|
j.insertHtml("beforeEnd", String.format(this.tableHTML, h));
|
|
this.leftTr = j.child("tr.x-toolbar-left-row", true);
|
|
this.rightTr = j.child("tr.x-toolbar-right-row", true);
|
|
this.extrasTr = j.child("tr.x-toolbar-extras-row", true);
|
|
if (this.hiddenItem == undefined) {
|
|
this.hiddenItems = []
|
|
}
|
|
}
|
|
var k = e.buttonAlign == "right" ? this.rightTr : this.leftTr, l = e.items.items, d = 0;
|
|
for (var b = 0, g = l.length, m; b < g; b++, d++) {
|
|
m = l[b];
|
|
if (m.isFill) {
|
|
k = this.rightTr;
|
|
d = -1
|
|
} else {
|
|
if (!m.rendered) {
|
|
m.render(this.insertCell(m, k, d));
|
|
this.configureItem(m)
|
|
} else {
|
|
if (!m.xtbHidden && !this.isValidParent(m, k.childNodes[d])) {
|
|
var a = this.insertCell(m, k, d);
|
|
a.appendChild(m.getPositionEl().dom);
|
|
m.container = Ext.get(a)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.cleanup(this.leftTr);
|
|
this.cleanup(this.rightTr);
|
|
this.cleanup(this.extrasTr);
|
|
this.fitToSize(j)
|
|
}, cleanup:function (b) {
|
|
var e = b.childNodes, a, d;
|
|
for (a = e.length - 1; a >= 0 && (d = e[a]); a--) {
|
|
if (!d.firstChild) {
|
|
b.removeChild(d)
|
|
}
|
|
}
|
|
}, insertCell:function (e, b, a) {
|
|
var d = document.createElement("td");
|
|
d.className = "x-toolbar-cell";
|
|
b.insertBefore(d, b.childNodes[a] || null);
|
|
return d
|
|
}, hideItem:function (a) {
|
|
this.hiddenItems.push(a);
|
|
a.xtbHidden = true;
|
|
a.xtbWidth = a.getPositionEl().dom.parentNode.offsetWidth;
|
|
a.hide()
|
|
}, unhideItem:function (a) {
|
|
a.show();
|
|
a.xtbHidden = false;
|
|
this.hiddenItems.remove(a)
|
|
}, getItemWidth:function (a) {
|
|
return a.hidden ? (a.xtbWidth || 0) : a.getPositionEl().dom.parentNode.offsetWidth
|
|
}, fitToSize:function (k) {
|
|
if (this.container.enableOverflow === false) {
|
|
return
|
|
}
|
|
var b = k.dom.clientWidth, j = k.dom.firstChild.offsetWidth, m = b - this.triggerWidth, a = this.lastWidth || 0, c = this.hiddenItems, e = c.length != 0, n = b >= a;
|
|
this.lastWidth = b;
|
|
if (j > b || (e && n)) {
|
|
var l = this.container.items.items, h = l.length, d = 0, o;
|
|
for (var g = 0; g < h; g++) {
|
|
o = l[g];
|
|
if (!o.isFill) {
|
|
d += this.getItemWidth(o);
|
|
if (d > m) {
|
|
if (!(o.hidden || o.xtbHidden)) {
|
|
this.hideItem(o)
|
|
}
|
|
} else {
|
|
if (o.xtbHidden) {
|
|
this.unhideItem(o)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
e = c.length != 0;
|
|
if (e) {
|
|
this.initMore();
|
|
if (!this.lastOverflow) {
|
|
this.container.fireEvent("overflowchange", this.container, true);
|
|
this.lastOverflow = true
|
|
}
|
|
} else {
|
|
if (this.more) {
|
|
this.clearMenu();
|
|
this.more.destroy();
|
|
delete this.more;
|
|
if (this.lastOverflow) {
|
|
this.container.fireEvent("overflowchange", this.container, false);
|
|
this.lastOverflow = false
|
|
}
|
|
}
|
|
}
|
|
}, createMenuConfig:function (c, a) {
|
|
var b = Ext.apply({}, c.initialConfig), d = c.toggleGroup;
|
|
Ext.copyTo(b, c, ["iconCls", "icon", "itemId", "disabled", "handler", "scope", "menu"]);
|
|
Ext.apply(b, {text:c.overflowText || c.text, hideOnClick:a});
|
|
if (d || c.enableToggle) {
|
|
Ext.apply(b, {group:d, checked:c.pressed, listeners:{checkchange:function (g, e) {
|
|
c.toggle(e)
|
|
}}})
|
|
}
|
|
delete b.ownerCt;
|
|
delete b.xtype;
|
|
delete b.id;
|
|
return b
|
|
}, addComponentToMenu:function (b, a) {
|
|
if (a instanceof Ext.Toolbar.Separator) {
|
|
b.add("-")
|
|
} else {
|
|
if (Ext.isFunction(a.isXType)) {
|
|
if (a.isXType("splitbutton")) {
|
|
b.add(this.createMenuConfig(a, true))
|
|
} else {
|
|
if (a.isXType("button")) {
|
|
b.add(this.createMenuConfig(a, !a.menu))
|
|
} else {
|
|
if (a.isXType("buttongroup")) {
|
|
a.items.each(function (c) {
|
|
this.addComponentToMenu(b, c)
|
|
}, this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, clearMenu:function () {
|
|
var a = this.moreMenu;
|
|
if (a && a.items) {
|
|
a.items.each(function (b) {
|
|
delete b.menu
|
|
})
|
|
}
|
|
}, beforeMoreShow:function (h) {
|
|
var b = this.container.items.items, a = b.length, g, e;
|
|
var c = function (j, i) {
|
|
return j.isXType("buttongroup") && !(i instanceof Ext.Toolbar.Separator)
|
|
};
|
|
this.clearMenu();
|
|
h.removeAll();
|
|
for (var d = 0; d < a; d++) {
|
|
g = b[d];
|
|
if (g.xtbHidden) {
|
|
if (e && (c(g, e) || c(e, g))) {
|
|
h.add("-")
|
|
}
|
|
this.addComponentToMenu(h, g);
|
|
e = g
|
|
}
|
|
}
|
|
if (h.items.length < 1) {
|
|
h.add(this.noItemsMenuText)
|
|
}
|
|
}, initMore:function () {
|
|
if (!this.more) {
|
|
this.moreMenu = new Ext.menu.Menu({ownerCt:this.container, listeners:{beforeshow:this.beforeMoreShow, scope:this}});
|
|
this.more = new Ext.Button({iconCls:"x-toolbar-more-icon", cls:"x-toolbar-more", menu:this.moreMenu, ownerCt:this.container});
|
|
var a = this.insertCell(this.more, this.extrasTr, 100);
|
|
this.more.render(a)
|
|
}
|
|
}, destroy:function () {
|
|
Ext.destroy(this.more, this.moreMenu);
|
|
delete this.leftTr;
|
|
delete this.rightTr;
|
|
delete this.extrasTr;
|
|
Ext.layout.ToolbarLayout.superclass.destroy.call(this)
|
|
}});
|
|
Ext.Container.LAYOUTS.toolbar = Ext.layout.ToolbarLayout;
|
|
Ext.layout.MenuLayout = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true, type:"menu", setContainer:function (a) {
|
|
this.monitorResize = !a.floating;
|
|
a.on("autosize", this.doAutoSize, this);
|
|
Ext.layout.MenuLayout.superclass.setContainer.call(this, a)
|
|
}, renderItem:function (g, b, e) {
|
|
if (!this.itemTpl) {
|
|
this.itemTpl = Ext.layout.MenuLayout.prototype.itemTpl = new Ext.XTemplate('<li id="{itemId}" class="{itemCls}">', '<tpl if="needsIcon">', '<img alt="{altText}" src="{icon}" class="{iconCls}"/>', "</tpl>", "</li>")
|
|
}
|
|
if (g && !g.rendered) {
|
|
if (Ext.isNumber(b)) {
|
|
b = e.dom.childNodes[b]
|
|
}
|
|
var d = this.getItemArgs(g);
|
|
g.render(g.positionEl = b ? this.itemTpl.insertBefore(b, d, true) : this.itemTpl.append(e, d, true));
|
|
g.positionEl.menuItemId = g.getItemId();
|
|
if (!d.isMenuItem && d.needsIcon) {
|
|
g.positionEl.addClass("x-menu-list-item-indent")
|
|
}
|
|
this.configureItem(g)
|
|
} else {
|
|
if (g && !this.isValidParent(g, e)) {
|
|
if (Ext.isNumber(b)) {
|
|
b = e.dom.childNodes[b]
|
|
}
|
|
e.dom.insertBefore(g.getActionEl().dom, b || null)
|
|
}
|
|
}
|
|
}, getItemArgs:function (d) {
|
|
var a = d instanceof Ext.menu.Item, b = !(a || d instanceof Ext.menu.Separator);
|
|
return{isMenuItem:a, needsIcon:b && (d.icon || d.iconCls), icon:d.icon || Ext.BLANK_IMAGE_URL, iconCls:"x-menu-item-icon " + (d.iconCls || ""), itemId:"x-menu-el-" + d.id, itemCls:"x-menu-list-item ", altText:d.altText || ""}
|
|
}, isValidParent:function (b, a) {
|
|
return b.el.up("li.x-menu-list-item", 5).dom.parentNode === (a.dom || a)
|
|
}, onLayout:function (a, b) {
|
|
Ext.layout.MenuLayout.superclass.onLayout.call(this, a, b);
|
|
this.doAutoSize()
|
|
}, doAutoSize:function () {
|
|
var c = this.container, a = c.width;
|
|
if (c.floating) {
|
|
if (a) {
|
|
c.setWidth(a)
|
|
} else {
|
|
if (Ext.isIE) {
|
|
c.setWidth(Ext.isStrict && (Ext.isIE7 || Ext.isIE8 || Ext.isIE9) ? "auto" : c.minWidth);
|
|
var d = c.getEl(), b = d.dom.offsetWidth;
|
|
c.setWidth(c.getLayoutTarget().getWidth() + d.getFrameWidth("lr"))
|
|
}
|
|
}
|
|
}
|
|
}});
|
|
Ext.Container.LAYOUTS.menu = Ext.layout.MenuLayout;
|
|
Ext.Viewport = Ext.extend(Ext.Container, {initComponent:function () {
|
|
Ext.Viewport.superclass.initComponent.call(this);
|
|
document.getElementsByTagName("html")[0].className += " x-viewport";
|
|
this.el = Ext.getBody();
|
|
this.el.setHeight = Ext.emptyFn;
|
|
this.el.setWidth = Ext.emptyFn;
|
|
this.el.setSize = Ext.emptyFn;
|
|
this.el.dom.scroll = "no";
|
|
this.allowDomMove = false;
|
|
this.autoWidth = true;
|
|
this.autoHeight = true;
|
|
Ext.EventManager.onWindowResize(this.fireResize, this);
|
|
this.renderTo = this.el
|
|
}, fireResize:function (a, b) {
|
|
this.fireEvent("resize", this, a, b, a, b)
|
|
}});
|
|
Ext.reg("viewport", Ext.Viewport);
|
|
Ext.Panel = Ext.extend(Ext.Container, {baseCls:"x-panel", collapsedCls:"x-panel-collapsed", maskDisabled:true, animCollapse:Ext.enableFx, headerAsText:true, buttonAlign:"right", collapsed:false, collapseFirst:true, minButtonWidth:75, elements:"body", preventBodyReset:false, padding:undefined, resizeEvent:"bodyresize", toolTarget:"header", collapseEl:"bwrap", slideAnchor:"t", disabledClass:"", deferHeight:true, expandDefaults:{duration:0.25}, collapseDefaults:{duration:0.25}, initComponent:function () {
|
|
Ext.Panel.superclass.initComponent.call(this);
|
|
this.addEvents("bodyresize", "titlechange", "iconchange", "collapse", "expand", "beforecollapse", "beforeexpand", "beforeclose", "close", "activate", "deactivate");
|
|
if (this.unstyled) {
|
|
this.baseCls = "x-plain"
|
|
}
|
|
this.toolbars = [];
|
|
if (this.tbar) {
|
|
this.elements += ",tbar";
|
|
this.topToolbar = this.createToolbar(this.tbar);
|
|
this.tbar = null
|
|
}
|
|
if (this.bbar) {
|
|
this.elements += ",bbar";
|
|
this.bottomToolbar = this.createToolbar(this.bbar);
|
|
this.bbar = null
|
|
}
|
|
if (this.header === true) {
|
|
this.elements += ",header";
|
|
this.header = null
|
|
} else {
|
|
if (this.headerCfg || (this.title && this.header !== false)) {
|
|
this.elements += ",header"
|
|
}
|
|
}
|
|
if (this.footerCfg || this.footer === true) {
|
|
this.elements += ",footer";
|
|
this.footer = null
|
|
}
|
|
if (this.buttons) {
|
|
this.fbar = this.buttons;
|
|
this.buttons = null
|
|
}
|
|
if (this.fbar) {
|
|
this.createFbar(this.fbar)
|
|
}
|
|
if (this.autoLoad) {
|
|
this.on("render", this.doAutoLoad, this, {delay:10})
|
|
}
|
|
}, createFbar:function (b) {
|
|
var a = this.minButtonWidth;
|
|
this.elements += ",footer";
|
|
this.fbar = this.createToolbar(b, {buttonAlign:this.buttonAlign, toolbarCls:"x-panel-fbar", enableOverflow:false, defaults:function (d) {
|
|
return{minWidth:d.minWidth || a}
|
|
}});
|
|
this.fbar.items.each(function (d) {
|
|
d.minWidth = d.minWidth || this.minButtonWidth
|
|
}, this);
|
|
this.buttons = this.fbar.items.items
|
|
}, createToolbar:function (b, c) {
|
|
var a;
|
|
if (Ext.isArray(b)) {
|
|
b = {items:b}
|
|
}
|
|
a = b.events ? Ext.apply(b, c) : this.createComponent(Ext.apply({}, b, c), "toolbar");
|
|
this.toolbars.push(a);
|
|
return a
|
|
}, createElement:function (a, c) {
|
|
if (this[a]) {
|
|
c.appendChild(this[a].dom);
|
|
return
|
|
}
|
|
if (a === "bwrap" || this.elements.indexOf(a) != -1) {
|
|
if (this[a + "Cfg"]) {
|
|
this[a] = Ext.fly(c).createChild(this[a + "Cfg"])
|
|
} else {
|
|
var b = document.createElement("div");
|
|
b.className = this[a + "Cls"];
|
|
this[a] = Ext.get(c.appendChild(b))
|
|
}
|
|
if (this[a + "CssClass"]) {
|
|
this[a].addClass(this[a + "CssClass"])
|
|
}
|
|
if (this[a + "Style"]) {
|
|
this[a].applyStyles(this[a + "Style"])
|
|
}
|
|
}
|
|
}, onRender:function (g, e) {
|
|
Ext.Panel.superclass.onRender.call(this, g, e);
|
|
this.createClasses();
|
|
var a = this.el, h = a.dom, k, i;
|
|
if (this.collapsible && !this.hideCollapseTool) {
|
|
this.tools = this.tools ? this.tools.slice(0) : [];
|
|
this.tools[this.collapseFirst ? "unshift" : "push"]({id:"toggle", handler:this.toggleCollapse, scope:this})
|
|
}
|
|
if (this.tools) {
|
|
i = this.tools;
|
|
this.elements += (this.header !== false) ? ",header" : ""
|
|
}
|
|
this.tools = {};
|
|
a.addClass(this.baseCls);
|
|
if (h.firstChild) {
|
|
this.header = a.down("." + this.headerCls);
|
|
this.bwrap = a.down("." + this.bwrapCls);
|
|
var j = this.bwrap ? this.bwrap : a;
|
|
this.tbar = j.down("." + this.tbarCls);
|
|
this.body = j.down("." + this.bodyCls);
|
|
this.bbar = j.down("." + this.bbarCls);
|
|
this.footer = j.down("." + this.footerCls);
|
|
this.fromMarkup = true
|
|
}
|
|
if (this.preventBodyReset === true) {
|
|
a.addClass("x-panel-reset")
|
|
}
|
|
if (this.cls) {
|
|
a.addClass(this.cls)
|
|
}
|
|
if (this.buttons) {
|
|
this.elements += ",footer"
|
|
}
|
|
if (this.frame) {
|
|
a.insertHtml("afterBegin", String.format(Ext.Element.boxMarkup, this.baseCls));
|
|
this.createElement("header", h.firstChild.firstChild.firstChild);
|
|
this.createElement("bwrap", h);
|
|
k = this.bwrap.dom;
|
|
var c = h.childNodes[1], b = h.childNodes[2];
|
|
k.appendChild(c);
|
|
k.appendChild(b);
|
|
var l = k.firstChild.firstChild.firstChild;
|
|
this.createElement("tbar", l);
|
|
this.createElement("body", l);
|
|
this.createElement("bbar", l);
|
|
this.createElement("footer", k.lastChild.firstChild.firstChild);
|
|
if (!this.footer) {
|
|
this.bwrap.dom.lastChild.className += " x-panel-nofooter"
|
|
}
|
|
this.ft = Ext.get(this.bwrap.dom.lastChild);
|
|
this.mc = Ext.get(l)
|
|
} else {
|
|
this.createElement("header", h);
|
|
this.createElement("bwrap", h);
|
|
k = this.bwrap.dom;
|
|
this.createElement("tbar", k);
|
|
this.createElement("body", k);
|
|
this.createElement("bbar", k);
|
|
this.createElement("footer", k);
|
|
if (!this.header) {
|
|
this.body.addClass(this.bodyCls + "-noheader");
|
|
if (this.tbar) {
|
|
this.tbar.addClass(this.tbarCls + "-noheader")
|
|
}
|
|
}
|
|
}
|
|
if (Ext.isDefined(this.padding)) {
|
|
this.body.setStyle("padding", this.body.addUnits(this.padding))
|
|
}
|
|
if (this.border === false) {
|
|
this.el.addClass(this.baseCls + "-noborder");
|
|
this.body.addClass(this.bodyCls + "-noborder");
|
|
if (this.header) {
|
|
this.header.addClass(this.headerCls + "-noborder")
|
|
}
|
|
if (this.footer) {
|
|
this.footer.addClass(this.footerCls + "-noborder")
|
|
}
|
|
if (this.tbar) {
|
|
this.tbar.addClass(this.tbarCls + "-noborder")
|
|
}
|
|
if (this.bbar) {
|
|
this.bbar.addClass(this.bbarCls + "-noborder")
|
|
}
|
|
}
|
|
if (this.bodyBorder === false) {
|
|
this.body.addClass(this.bodyCls + "-noborder")
|
|
}
|
|
this.bwrap.enableDisplayMode("block");
|
|
if (this.header) {
|
|
this.header.unselectable();
|
|
if (this.headerAsText) {
|
|
this.header.dom.innerHTML = '<span class="' + this.headerTextCls + '">' + this.header.dom.innerHTML + "</span>";
|
|
if (this.iconCls) {
|
|
this.setIconClass(this.iconCls)
|
|
}
|
|
}
|
|
}
|
|
if (this.floating) {
|
|
this.makeFloating(this.floating)
|
|
}
|
|
if (this.collapsible && this.titleCollapse && this.header) {
|
|
this.mon(this.header, "click", this.toggleCollapse, this);
|
|
this.header.setStyle("cursor", "pointer")
|
|
}
|
|
if (i) {
|
|
this.addTool.apply(this, i)
|
|
}
|
|
if (this.fbar) {
|
|
this.footer.addClass("x-panel-btns");
|
|
this.fbar.ownerCt = this;
|
|
this.fbar.render(this.footer);
|
|
this.footer.createChild({cls:"x-clear"})
|
|
}
|
|
if (this.tbar && this.topToolbar) {
|
|
this.topToolbar.ownerCt = this;
|
|
this.topToolbar.render(this.tbar)
|
|
}
|
|
if (this.bbar && this.bottomToolbar) {
|
|
this.bottomToolbar.ownerCt = this;
|
|
this.bottomToolbar.render(this.bbar)
|
|
}
|
|
}, setIconClass:function (b) {
|
|
var a = this.iconCls;
|
|
this.iconCls = b;
|
|
if (this.rendered && this.header) {
|
|
if (this.frame) {
|
|
this.header.addClass("x-panel-icon");
|
|
this.header.replaceClass(a, this.iconCls)
|
|
} else {
|
|
var e = this.header, c = e.child("img.x-panel-inline-icon");
|
|
if (c) {
|
|
Ext.fly(c).replaceClass(a, this.iconCls)
|
|
} else {
|
|
var d = e.child("span." + this.headerTextCls);
|
|
if (d) {
|
|
Ext.DomHelper.insertBefore(d.dom, {tag:"img", alt:"", src:Ext.BLANK_IMAGE_URL, cls:"x-panel-inline-icon " + this.iconCls})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.fireEvent("iconchange", this, b, a)
|
|
}, makeFloating:function (a) {
|
|
this.floating = true;
|
|
this.el = new Ext.Layer(Ext.apply({}, a, {shadow:Ext.isDefined(this.shadow) ? this.shadow : "sides", shadowOffset:this.shadowOffset, constrain:false, shim:this.shim === false ? false : undefined}), this.el)
|
|
}, getTopToolbar:function () {
|
|
return this.topToolbar
|
|
}, getBottomToolbar:function () {
|
|
return this.bottomToolbar
|
|
}, getFooterToolbar:function () {
|
|
return this.fbar
|
|
}, addButton:function (a, c, b) {
|
|
if (!this.fbar) {
|
|
this.createFbar([])
|
|
}
|
|
if (c) {
|
|
if (Ext.isString(a)) {
|
|
a = {text:a}
|
|
}
|
|
a = Ext.apply({handler:c, scope:b}, a)
|
|
}
|
|
return this.fbar.add(a)
|
|
}, addTool:function () {
|
|
if (!this.rendered) {
|
|
if (!this.tools) {
|
|
this.tools = []
|
|
}
|
|
Ext.each(arguments, function (a) {
|
|
this.tools.push(a)
|
|
}, this);
|
|
return
|
|
}
|
|
if (!this[this.toolTarget]) {
|
|
return
|
|
}
|
|
if (!this.toolTemplate) {
|
|
var h = new Ext.Template('<div class="x-tool x-tool-{id}"> </div>');
|
|
h.disableFormats = true;
|
|
h.compile();
|
|
Ext.Panel.prototype.toolTemplate = h
|
|
}
|
|
for (var g = 0, d = arguments, c = d.length; g < c; g++) {
|
|
var b = d[g];
|
|
if (!this.tools[b.id]) {
|
|
var j = "x-tool-" + b.id + "-over";
|
|
var e = this.toolTemplate.insertFirst(this[this.toolTarget], b, true);
|
|
this.tools[b.id] = e;
|
|
e.enableDisplayMode("block");
|
|
this.mon(e, "click", this.createToolHandler(e, b, j, this));
|
|
if (b.on) {
|
|
this.mon(e, b.on)
|
|
}
|
|
if (b.hidden) {
|
|
e.hide()
|
|
}
|
|
if (b.qtip) {
|
|
if (Ext.isObject(b.qtip)) {
|
|
Ext.QuickTips.register(Ext.apply({target:e.id}, b.qtip))
|
|
} else {
|
|
e.dom.qtip = b.qtip
|
|
}
|
|
}
|
|
e.addClassOnOver(j)
|
|
}
|
|
}
|
|
}, onLayout:function (b, a) {
|
|
Ext.Panel.superclass.onLayout.apply(this, arguments);
|
|
if (this.hasLayout && this.toolbars.length > 0) {
|
|
Ext.each(this.toolbars, function (c) {
|
|
c.doLayout(undefined, a)
|
|
});
|
|
this.syncHeight()
|
|
}
|
|
}, syncHeight:function () {
|
|
var b = this.toolbarHeight, c = this.body, a = this.lastSize.height, d;
|
|
if (this.autoHeight || !Ext.isDefined(a) || a == "auto") {
|
|
return
|
|
}
|
|
if (b != this.getToolbarHeight()) {
|
|
b = Math.max(0, a - this.getFrameHeight());
|
|
c.setHeight(b);
|
|
d = c.getSize();
|
|
this.toolbarHeight = this.getToolbarHeight();
|
|
this.onBodyResize(d.width, d.height)
|
|
}
|
|
}, onShow:function () {
|
|
if (this.floating) {
|
|
return this.el.show()
|
|
}
|
|
Ext.Panel.superclass.onShow.call(this)
|
|
}, onHide:function () {
|
|
if (this.floating) {
|
|
return this.el.hide()
|
|
}
|
|
Ext.Panel.superclass.onHide.call(this)
|
|
}, createToolHandler:function (c, a, d, b) {
|
|
return function (g) {
|
|
c.removeClass(d);
|
|
if (a.stopEvent !== false) {
|
|
g.stopEvent()
|
|
}
|
|
if (a.handler) {
|
|
a.handler.call(a.scope || c, g, c, b, a)
|
|
}
|
|
}
|
|
}, afterRender:function () {
|
|
if (this.floating && !this.hidden) {
|
|
this.el.show()
|
|
}
|
|
if (this.title) {
|
|
this.setTitle(this.title)
|
|
}
|
|
Ext.Panel.superclass.afterRender.call(this);
|
|
if (this.collapsed) {
|
|
this.collapsed = false;
|
|
this.collapse(false)
|
|
}
|
|
this.initEvents()
|
|
}, getKeyMap:function () {
|
|
if (!this.keyMap) {
|
|
this.keyMap = new Ext.KeyMap(this.el, this.keys)
|
|
}
|
|
return this.keyMap
|
|
}, initEvents:function () {
|
|
if (this.keys) {
|
|
this.getKeyMap()
|
|
}
|
|
if (this.draggable) {
|
|
this.initDraggable()
|
|
}
|
|
if (this.toolbars.length > 0) {
|
|
Ext.each(this.toolbars, function (a) {
|
|
a.doLayout();
|
|
a.on({scope:this, afterlayout:this.syncHeight, remove:this.syncHeight})
|
|
}, this);
|
|
this.syncHeight()
|
|
}
|
|
}, initDraggable:function () {
|
|
this.dd = new Ext.Panel.DD(this, Ext.isBoolean(this.draggable) ? null : this.draggable)
|
|
}, beforeEffect:function (a) {
|
|
if (this.floating) {
|
|
this.el.beforeAction()
|
|
}
|
|
if (a !== false) {
|
|
this.el.addClass("x-panel-animated")
|
|
}
|
|
}, afterEffect:function (a) {
|
|
this.syncShadow();
|
|
this.el.removeClass("x-panel-animated")
|
|
}, createEffect:function (c, b, d) {
|
|
var e = {scope:d, block:true};
|
|
if (c === true) {
|
|
e.callback = b;
|
|
return e
|
|
} else {
|
|
if (!c.callback) {
|
|
e.callback = b
|
|
} else {
|
|
e.callback = function () {
|
|
b.call(d);
|
|
Ext.callback(c.callback, c.scope)
|
|
}
|
|
}
|
|
}
|
|
return Ext.applyIf(e, c)
|
|
}, collapse:function (b) {
|
|
if (this.collapsed || this.el.hasFxBlock() || this.fireEvent("beforecollapse", this, b) === false) {
|
|
return
|
|
}
|
|
var a = b === true || (b !== false && this.animCollapse);
|
|
this.beforeEffect(a);
|
|
this.onCollapse(a, b);
|
|
return this
|
|
}, onCollapse:function (a, b) {
|
|
if (a) {
|
|
this[this.collapseEl].slideOut(this.slideAnchor, Ext.apply(this.createEffect(b || true, this.afterCollapse, this), this.collapseDefaults))
|
|
} else {
|
|
this[this.collapseEl].hide(this.hideMode);
|
|
this.afterCollapse(false)
|
|
}
|
|
}, afterCollapse:function (a) {
|
|
this.collapsed = true;
|
|
this.el.addClass(this.collapsedCls);
|
|
if (a !== false) {
|
|
this[this.collapseEl].hide(this.hideMode)
|
|
}
|
|
this.afterEffect(a);
|
|
this.cascade(function (b) {
|
|
if (b.lastSize) {
|
|
b.lastSize = {width:undefined, height:undefined}
|
|
}
|
|
});
|
|
this.fireEvent("collapse", this)
|
|
}, expand:function (b) {
|
|
if (!this.collapsed || this.el.hasFxBlock() || this.fireEvent("beforeexpand", this, b) === false) {
|
|
return
|
|
}
|
|
var a = b === true || (b !== false && this.animCollapse);
|
|
this.el.removeClass(this.collapsedCls);
|
|
this.beforeEffect(a);
|
|
this.onExpand(a, b);
|
|
return this
|
|
}, onExpand:function (a, b) {
|
|
if (a) {
|
|
this[this.collapseEl].slideIn(this.slideAnchor, Ext.apply(this.createEffect(b || true, this.afterExpand, this), this.expandDefaults))
|
|
} else {
|
|
this[this.collapseEl].show(this.hideMode);
|
|
this.afterExpand(false)
|
|
}
|
|
}, afterExpand:function (a) {
|
|
this.collapsed = false;
|
|
if (a !== false) {
|
|
this[this.collapseEl].show(this.hideMode)
|
|
}
|
|
this.afterEffect(a);
|
|
if (this.deferLayout) {
|
|
delete this.deferLayout;
|
|
this.doLayout(true)
|
|
}
|
|
this.fireEvent("expand", this)
|
|
}, toggleCollapse:function (a) {
|
|
this[this.collapsed ? "expand" : "collapse"](a);
|
|
return this
|
|
}, onDisable:function () {
|
|
if (this.rendered && this.maskDisabled) {
|
|
this.el.mask()
|
|
}
|
|
Ext.Panel.superclass.onDisable.call(this)
|
|
}, onEnable:function () {
|
|
if (this.rendered && this.maskDisabled) {
|
|
this.el.unmask()
|
|
}
|
|
Ext.Panel.superclass.onEnable.call(this)
|
|
}, onResize:function (g, d, c, e) {
|
|
var a = g, b = d;
|
|
if (Ext.isDefined(a) || Ext.isDefined(b)) {
|
|
if (!this.collapsed) {
|
|
if (Ext.isNumber(a)) {
|
|
this.body.setWidth(a = this.adjustBodyWidth(a - this.getFrameWidth()))
|
|
} else {
|
|
if (a == "auto") {
|
|
a = this.body.setWidth("auto").dom.offsetWidth
|
|
} else {
|
|
a = this.body.dom.offsetWidth
|
|
}
|
|
}
|
|
if (this.tbar) {
|
|
this.tbar.setWidth(a);
|
|
if (this.topToolbar) {
|
|
this.topToolbar.setSize(a)
|
|
}
|
|
}
|
|
if (this.bbar) {
|
|
this.bbar.setWidth(a);
|
|
if (this.bottomToolbar) {
|
|
this.bottomToolbar.setSize(a);
|
|
if (Ext.isIE) {
|
|
this.bbar.setStyle("position", "static");
|
|
this.bbar.setStyle("position", "")
|
|
}
|
|
}
|
|
}
|
|
if (this.footer) {
|
|
this.footer.setWidth(a);
|
|
if (this.fbar) {
|
|
this.fbar.setSize(Ext.isIE ? (a - this.footer.getFrameWidth("lr")) : "auto")
|
|
}
|
|
}
|
|
if (Ext.isNumber(b)) {
|
|
b = Math.max(0, b - this.getFrameHeight());
|
|
this.body.setHeight(b)
|
|
} else {
|
|
if (b == "auto") {
|
|
this.body.setHeight(b)
|
|
}
|
|
}
|
|
if (this.disabled && this.el._mask) {
|
|
this.el._mask.setSize(this.el.dom.clientWidth, this.el.getHeight())
|
|
}
|
|
} else {
|
|
this.queuedBodySize = {width:a, height:b};
|
|
if (!this.queuedExpand && this.allowQueuedExpand !== false) {
|
|
this.queuedExpand = true;
|
|
this.on("expand", function () {
|
|
delete this.queuedExpand;
|
|
this.onResize(this.queuedBodySize.width, this.queuedBodySize.height)
|
|
}, this, {single:true})
|
|
}
|
|
}
|
|
this.onBodyResize(a, b)
|
|
}
|
|
this.syncShadow();
|
|
Ext.Panel.superclass.onResize.call(this, g, d, c, e)
|
|
}, onBodyResize:function (a, b) {
|
|
this.fireEvent("bodyresize", this, a, b)
|
|
}, getToolbarHeight:function () {
|
|
var a = 0;
|
|
if (this.rendered) {
|
|
Ext.each(this.toolbars, function (b) {
|
|
a += b.getHeight()
|
|
}, this)
|
|
}
|
|
return a
|
|
}, adjustBodyHeight:function (a) {
|
|
return a
|
|
}, adjustBodyWidth:function (a) {
|
|
return a
|
|
}, onPosition:function () {
|
|
this.syncShadow()
|
|
}, getFrameWidth:function () {
|
|
var b = this.el.getFrameWidth("lr") + this.bwrap.getFrameWidth("lr");
|
|
if (this.frame) {
|
|
var a = this.bwrap.dom.firstChild;
|
|
b += (Ext.fly(a).getFrameWidth("l") + Ext.fly(a.firstChild).getFrameWidth("r"));
|
|
b += this.mc.getFrameWidth("lr")
|
|
}
|
|
return b
|
|
}, getFrameHeight:function () {
|
|
var a = this.el.getFrameWidth("tb") + this.bwrap.getFrameWidth("tb");
|
|
a += (this.tbar ? this.tbar.getHeight() : 0) + (this.bbar ? this.bbar.getHeight() : 0);
|
|
if (this.frame) {
|
|
a += this.el.dom.firstChild.offsetHeight + this.ft.dom.offsetHeight + this.mc.getFrameWidth("tb")
|
|
} else {
|
|
a += (this.header ? this.header.getHeight() : 0) + (this.footer ? this.footer.getHeight() : 0)
|
|
}
|
|
return a
|
|
}, getInnerWidth:function () {
|
|
return this.getSize().width - this.getFrameWidth()
|
|
}, getInnerHeight:function () {
|
|
return this.body.getHeight()
|
|
}, syncShadow:function () {
|
|
if (this.floating) {
|
|
this.el.sync(true)
|
|
}
|
|
}, getLayoutTarget:function () {
|
|
return this.body
|
|
}, getContentTarget:function () {
|
|
return this.body
|
|
}, setTitle:function (b, a) {
|
|
this.title = b;
|
|
if (this.header && this.headerAsText) {
|
|
this.header.child("span").update(b)
|
|
}
|
|
if (a) {
|
|
this.setIconClass(a)
|
|
}
|
|
this.fireEvent("titlechange", this, b);
|
|
return this
|
|
}, getUpdater:function () {
|
|
return this.body.getUpdater()
|
|
}, load:function () {
|
|
var a = this.body.getUpdater();
|
|
a.update.apply(a, arguments);
|
|
return this
|
|
}, beforeDestroy:function () {
|
|
Ext.Panel.superclass.beforeDestroy.call(this);
|
|
if (this.header) {
|
|
this.header.removeAllListeners()
|
|
}
|
|
if (this.tools) {
|
|
for (var a in this.tools) {
|
|
Ext.destroy(this.tools[a])
|
|
}
|
|
}
|
|
if (this.toolbars.length > 0) {
|
|
Ext.each(this.toolbars, function (b) {
|
|
b.un("afterlayout", this.syncHeight, this);
|
|
b.un("remove", this.syncHeight, this)
|
|
}, this)
|
|
}
|
|
if (Ext.isArray(this.buttons)) {
|
|
while (this.buttons.length) {
|
|
Ext.destroy(this.buttons[0])
|
|
}
|
|
}
|
|
if (this.rendered) {
|
|
Ext.destroy(this.ft, this.header, this.footer, this.tbar, this.bbar, this.body, this.mc, this.bwrap, this.dd);
|
|
if (this.fbar) {
|
|
Ext.destroy(this.fbar, this.fbar.el)
|
|
}
|
|
}
|
|
Ext.destroy(this.toolbars)
|
|
}, createClasses:function () {
|
|
this.headerCls = this.baseCls + "-header";
|
|
this.headerTextCls = this.baseCls + "-header-text";
|
|
this.bwrapCls = this.baseCls + "-bwrap";
|
|
this.tbarCls = this.baseCls + "-tbar";
|
|
this.bodyCls = this.baseCls + "-body";
|
|
this.bbarCls = this.baseCls + "-bbar";
|
|
this.footerCls = this.baseCls + "-footer"
|
|
}, createGhost:function (a, e, b) {
|
|
var d = document.createElement("div");
|
|
d.className = "x-panel-ghost " + (a ? a : "");
|
|
if (this.header) {
|
|
d.appendChild(this.el.dom.firstChild.cloneNode(true))
|
|
}
|
|
Ext.fly(d.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());
|
|
d.style.width = this.el.dom.offsetWidth + "px";
|
|
if (!b) {
|
|
this.container.dom.appendChild(d)
|
|
} else {
|
|
Ext.getDom(b).appendChild(d)
|
|
}
|
|
if (e !== false && this.el.useShim !== false) {
|
|
var c = new Ext.Layer({shadow:false, useDisplay:true, constrain:false}, d);
|
|
c.show();
|
|
return c
|
|
} else {
|
|
return new Ext.Element(d)
|
|
}
|
|
}, doAutoLoad:function () {
|
|
var a = this.body.getUpdater();
|
|
if (this.renderer) {
|
|
a.setRenderer(this.renderer)
|
|
}
|
|
a.update(Ext.isObject(this.autoLoad) ? this.autoLoad : {url:this.autoLoad})
|
|
}, getTool:function (a) {
|
|
return this.tools[a]
|
|
}});
|
|
Ext.reg("panel", Ext.Panel);
|
|
Ext.Editor = function (b, a) {
|
|
if (b.field) {
|
|
this.field = Ext.create(b.field, "textfield");
|
|
a = Ext.apply({}, b);
|
|
delete a.field
|
|
} else {
|
|
this.field = b
|
|
}
|
|
Ext.Editor.superclass.constructor.call(this, a)
|
|
};
|
|
Ext.extend(Ext.Editor, Ext.Component, {allowBlur:true, value:"", alignment:"c-c?", offsets:[0, 0], shadow:"frame", constrain:false, swallowKeys:true, completeOnEnter:true, cancelOnEsc:true, updateEl:false, initComponent:function () {
|
|
Ext.Editor.superclass.initComponent.call(this);
|
|
this.addEvents("beforestartedit", "startedit", "beforecomplete", "complete", "canceledit", "specialkey")
|
|
}, onRender:function (b, a) {
|
|
this.el = new Ext.Layer({shadow:this.shadow, cls:"x-editor", parentEl:b, shim:this.shim, shadowOffset:this.shadowOffset || 4, id:this.id, constrain:this.constrain});
|
|
if (this.zIndex) {
|
|
this.el.setZIndex(this.zIndex)
|
|
}
|
|
this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden");
|
|
if (this.field.msgTarget != "title") {
|
|
this.field.msgTarget = "qtip"
|
|
}
|
|
this.field.inEditor = true;
|
|
this.mon(this.field, {scope:this, blur:this.onBlur, specialkey:this.onSpecialKey});
|
|
if (this.field.grow) {
|
|
this.mon(this.field, "autosize", this.el.sync, this.el, {delay:1})
|
|
}
|
|
this.field.render(this.el).show();
|
|
this.field.getEl().dom.name = "";
|
|
if (this.swallowKeys) {
|
|
this.field.el.swallowEvent(["keypress", "keydown"])
|
|
}
|
|
}, onSpecialKey:function (g, d) {
|
|
var b = d.getKey(), a = this.completeOnEnter && b == d.ENTER, c = this.cancelOnEsc && b == d.ESC;
|
|
if (a || c) {
|
|
d.stopEvent();
|
|
if (a) {
|
|
this.completeEdit()
|
|
} else {
|
|
this.cancelEdit()
|
|
}
|
|
if (g.triggerBlur) {
|
|
g.triggerBlur()
|
|
}
|
|
}
|
|
this.fireEvent("specialkey", g, d)
|
|
}, startEdit:function (b, c) {
|
|
if (this.editing) {
|
|
this.completeEdit()
|
|
}
|
|
this.boundEl = Ext.get(b);
|
|
var a = c !== undefined ? c : this.boundEl.dom.innerHTML;
|
|
if (!this.rendered) {
|
|
this.render(this.parentEl || document.body)
|
|
}
|
|
if (this.fireEvent("beforestartedit", this, this.boundEl, a) !== false) {
|
|
this.startValue = a;
|
|
this.field.reset();
|
|
this.field.setValue(a);
|
|
this.realign(true);
|
|
this.editing = true;
|
|
this.show()
|
|
}
|
|
}, doAutoSize:function () {
|
|
if (this.autoSize) {
|
|
var b = this.boundEl.getSize(), a = this.field.getSize();
|
|
switch (this.autoSize) {
|
|
case"width":
|
|
this.setSize(b.width, a.height);
|
|
break;
|
|
case"height":
|
|
this.setSize(a.width, b.height);
|
|
break;
|
|
case"none":
|
|
this.setSize(a.width, a.height);
|
|
break;
|
|
default:
|
|
this.setSize(b.width, b.height)
|
|
}
|
|
}
|
|
}, setSize:function (a, b) {
|
|
delete this.field.lastSize;
|
|
this.field.setSize(a, b);
|
|
if (this.el) {
|
|
if (Ext.isGecko2 || Ext.isOpera || (Ext.isIE7 && Ext.isStrict)) {
|
|
this.el.setSize(a, b)
|
|
}
|
|
this.el.sync()
|
|
}
|
|
}, realign:function (a) {
|
|
if (a === true) {
|
|
this.doAutoSize()
|
|
}
|
|
this.el.alignTo(this.boundEl, this.alignment, this.offsets)
|
|
}, completeEdit:function (a) {
|
|
if (!this.editing) {
|
|
return
|
|
}
|
|
if (this.field.assertValue) {
|
|
this.field.assertValue()
|
|
}
|
|
var b = this.getValue();
|
|
if (!this.field.isValid()) {
|
|
if (this.revertInvalid !== false) {
|
|
this.cancelEdit(a)
|
|
}
|
|
return
|
|
}
|
|
if (String(b) === String(this.startValue) && this.ignoreNoChange) {
|
|
this.hideEdit(a);
|
|
return
|
|
}
|
|
if (this.fireEvent("beforecomplete", this, b, this.startValue) !== false) {
|
|
b = this.getValue();
|
|
if (this.updateEl && this.boundEl) {
|
|
this.boundEl.update(b)
|
|
}
|
|
this.hideEdit(a);
|
|
this.fireEvent("complete", this, b, this.startValue)
|
|
}
|
|
}, onShow:function () {
|
|
this.el.show();
|
|
if (this.hideEl !== false) {
|
|
this.boundEl.hide()
|
|
}
|
|
this.field.show().focus(false, true);
|
|
this.fireEvent("startedit", this.boundEl, this.startValue)
|
|
}, cancelEdit:function (a) {
|
|
if (this.editing) {
|
|
var b = this.getValue();
|
|
this.setValue(this.startValue);
|
|
this.hideEdit(a);
|
|
this.fireEvent("canceledit", this, b, this.startValue)
|
|
}
|
|
}, hideEdit:function (a) {
|
|
if (a !== true) {
|
|
this.editing = false;
|
|
this.hide()
|
|
}
|
|
}, onBlur:function () {
|
|
if (this.allowBlur === true && this.editing && this.selectSameEditor !== true) {
|
|
this.completeEdit()
|
|
}
|
|
}, onHide:function () {
|
|
if (this.editing) {
|
|
this.completeEdit();
|
|
return
|
|
}
|
|
this.field.blur();
|
|
if (this.field.collapse) {
|
|
this.field.collapse()
|
|
}
|
|
this.el.hide();
|
|
if (this.hideEl !== false) {
|
|
this.boundEl.show()
|
|
}
|
|
}, setValue:function (a) {
|
|
this.field.setValue(a)
|
|
}, getValue:function () {
|
|
return this.field.getValue()
|
|
}, beforeDestroy:function () {
|
|
Ext.destroyMembers(this, "field");
|
|
delete this.parentEl;
|
|
delete this.boundEl
|
|
}});
|
|
Ext.reg("editor", Ext.Editor);
|
|
Ext.ColorPalette = Ext.extend(Ext.Component, {itemCls:"x-color-palette", value:null, clickEvent:"click", ctype:"Ext.ColorPalette", allowReselect:false, colors:["000000", "993300", "333300", "003300", "003366", "000080", "333399", "333333", "800000", "FF6600", "808000", "008000", "008080", "0000FF", "666699", "808080", "FF0000", "FF9900", "99CC00", "339966", "33CCCC", "3366FF", "800080", "969696", "FF00FF", "FFCC00", "FFFF00", "00FF00", "00FFFF", "00CCFF", "993366", "C0C0C0", "FF99CC", "FFCC99", "FFFF99", "CCFFCC", "CCFFFF", "99CCFF", "CC99FF", "FFFFFF"], initComponent:function () {
|
|
Ext.ColorPalette.superclass.initComponent.call(this);
|
|
this.addEvents("select");
|
|
if (this.handler) {
|
|
this.on("select", this.handler, this.scope, true)
|
|
}
|
|
}, onRender:function (b, a) {
|
|
this.autoEl = {tag:"div", cls:this.itemCls};
|
|
Ext.ColorPalette.superclass.onRender.call(this, b, a);
|
|
var c = this.tpl || new Ext.XTemplate('<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" unselectable="on"> </span></em></a></tpl>');
|
|
c.overwrite(this.el, this.colors);
|
|
this.mon(this.el, this.clickEvent, this.handleClick, this, {delegate:"a"});
|
|
if (this.clickEvent != "click") {
|
|
this.mon(this.el, "click", Ext.emptyFn, this, {delegate:"a", preventDefault:true})
|
|
}
|
|
}, afterRender:function () {
|
|
Ext.ColorPalette.superclass.afterRender.call(this);
|
|
if (this.value) {
|
|
var a = this.value;
|
|
this.value = null;
|
|
this.select(a, true)
|
|
}
|
|
}, handleClick:function (b, a) {
|
|
b.preventDefault();
|
|
if (!this.disabled) {
|
|
var d = a.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];
|
|
this.select(d.toUpperCase())
|
|
}
|
|
}, select:function (b, a) {
|
|
b = b.replace("#", "");
|
|
if (b != this.value || this.allowReselect) {
|
|
var c = this.el;
|
|
if (this.value) {
|
|
c.child("a.color-" + this.value).removeClass("x-color-palette-sel")
|
|
}
|
|
c.child("a.color-" + b).addClass("x-color-palette-sel");
|
|
this.value = b;
|
|
if (a !== true) {
|
|
this.fireEvent("select", this, b)
|
|
}
|
|
}
|
|
}});
|
|
Ext.reg("colorpalette", Ext.ColorPalette);
|
|
Ext.DatePicker = Ext.extend(Ext.BoxComponent, {todayText:"Today", okText:" OK ", cancelText:"Cancel", todayTip:"{0} (Spacebar)", minText:"This date is before the minimum date", maxText:"This date is after the maximum date", format:"m/d/y", disabledDaysText:"Disabled", disabledDatesText:"Disabled", monthNames:Date.monthNames, dayNames:Date.dayNames, nextText:"Next Month (Control+Right)", prevText:"Previous Month (Control+Left)", monthYearText:"Choose a month (Control+Up/Down to move years)", startDay:0, showToday:true, focusOnSelect:true, initHour:12, initComponent:function () {
|
|
Ext.DatePicker.superclass.initComponent.call(this);
|
|
this.value = this.value ? this.value.clearTime(true) : new Date().clearTime();
|
|
this.addEvents("select");
|
|
if (this.handler) {
|
|
this.on("select", this.handler, this.scope || this)
|
|
}
|
|
this.initDisabledDays()
|
|
}, initDisabledDays:function () {
|
|
if (!this.disabledDatesRE && this.disabledDates) {
|
|
var b = this.disabledDates, a = b.length - 1, c = "(?:";
|
|
Ext.each(b, function (g, e) {
|
|
c += Ext.isDate(g) ? "^" + Ext.escapeRe(g.dateFormat(this.format)) + "$" : b[e];
|
|
if (e != a) {
|
|
c += "|"
|
|
}
|
|
}, this);
|
|
this.disabledDatesRE = new RegExp(c + ")")
|
|
}
|
|
}, setDisabledDates:function (a) {
|
|
if (Ext.isArray(a)) {
|
|
this.disabledDates = a;
|
|
this.disabledDatesRE = null
|
|
} else {
|
|
this.disabledDatesRE = a
|
|
}
|
|
this.initDisabledDays();
|
|
this.update(this.value, true)
|
|
}, setDisabledDays:function (a) {
|
|
this.disabledDays = a;
|
|
this.update(this.value, true)
|
|
}, setMinDate:function (a) {
|
|
this.minDate = a;
|
|
this.update(this.value, true)
|
|
}, setMaxDate:function (a) {
|
|
this.maxDate = a;
|
|
this.update(this.value, true)
|
|
}, setValue:function (a) {
|
|
this.value = a.clearTime(true);
|
|
this.update(this.value)
|
|
}, getValue:function () {
|
|
return this.value
|
|
}, focus:function () {
|
|
this.update(this.activeDate)
|
|
}, onEnable:function (a) {
|
|
Ext.DatePicker.superclass.onEnable.call(this);
|
|
this.doDisabled(false);
|
|
this.update(a ? this.value : this.activeDate);
|
|
if (Ext.isIE) {
|
|
this.el.repaint()
|
|
}
|
|
}, onDisable:function () {
|
|
Ext.DatePicker.superclass.onDisable.call(this);
|
|
this.doDisabled(true);
|
|
if (Ext.isIE && !Ext.isIE8) {
|
|
Ext.each([].concat(this.textNodes, this.el.query("th span")), function (a) {
|
|
Ext.fly(a).repaint()
|
|
})
|
|
}
|
|
}, doDisabled:function (a) {
|
|
this.keyNav.setDisabled(a);
|
|
this.prevRepeater.setDisabled(a);
|
|
this.nextRepeater.setDisabled(a);
|
|
if (this.showToday) {
|
|
this.todayKeyListener.setDisabled(a);
|
|
this.todayBtn.setDisabled(a)
|
|
}
|
|
}, onRender:function (e, b) {
|
|
var a = ['<table cellspacing="0">', '<tr><td class="x-date-left"><a href="#" title="', this.prevText, '"> </a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="', this.nextText, '"> </a></td></tr>', '<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'], c = this.dayNames, h;
|
|
for (h = 0; h < 7; h++) {
|
|
var k = this.startDay + h;
|
|
if (k > 6) {
|
|
k = k - 7
|
|
}
|
|
a.push("<th><span>", c[k].substr(0, 1), "</span></th>")
|
|
}
|
|
a[a.length] = "</tr></thead><tbody><tr>";
|
|
for (h = 0; h < 42; h++) {
|
|
if (h % 7 === 0 && h !== 0) {
|
|
a[a.length] = "</tr><tr>"
|
|
}
|
|
a[a.length] = '<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>'
|
|
}
|
|
a.push("</tr></tbody></table></td></tr>", this.showToday ? '<tr><td colspan="3" class="x-date-bottom" align="center"></td></tr>' : "", '</table><div class="x-date-mp"></div>');
|
|
var j = document.createElement("div");
|
|
j.className = "x-date-picker";
|
|
j.innerHTML = a.join("");
|
|
e.dom.insertBefore(j, b);
|
|
this.el = Ext.get(j);
|
|
this.eventEl = Ext.get(j.firstChild);
|
|
this.prevRepeater = new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"), {handler:this.showPrevMonth, scope:this, preventDefault:true, stopDefault:true});
|
|
this.nextRepeater = new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"), {handler:this.showNextMonth, scope:this, preventDefault:true, stopDefault:true});
|
|
this.monthPicker = this.el.down("div.x-date-mp");
|
|
this.monthPicker.enableDisplayMode("block");
|
|
this.keyNav = new Ext.KeyNav(this.eventEl, {left:function (d) {
|
|
if (d.ctrlKey) {
|
|
this.showPrevMonth()
|
|
} else {
|
|
this.update(this.activeDate.add("d", -1))
|
|
}
|
|
}, right:function (d) {
|
|
if (d.ctrlKey) {
|
|
this.showNextMonth()
|
|
} else {
|
|
this.update(this.activeDate.add("d", 1))
|
|
}
|
|
}, up:function (d) {
|
|
if (d.ctrlKey) {
|
|
this.showNextYear()
|
|
} else {
|
|
this.update(this.activeDate.add("d", -7))
|
|
}
|
|
}, down:function (d) {
|
|
if (d.ctrlKey) {
|
|
this.showPrevYear()
|
|
} else {
|
|
this.update(this.activeDate.add("d", 7))
|
|
}
|
|
}, pageUp:function (d) {
|
|
this.showNextMonth()
|
|
}, pageDown:function (d) {
|
|
this.showPrevMonth()
|
|
}, enter:function (d) {
|
|
d.stopPropagation();
|
|
return true
|
|
}, scope:this});
|
|
this.el.unselectable();
|
|
this.cells = this.el.select("table.x-date-inner tbody td");
|
|
this.textNodes = this.el.query("table.x-date-inner tbody span");
|
|
this.mbtn = new Ext.Button({text:" ", tooltip:this.monthYearText, renderTo:this.el.child("td.x-date-middle", true)});
|
|
this.mbtn.el.child("em").addClass("x-btn-arrow");
|
|
if (this.showToday) {
|
|
this.todayKeyListener = this.eventEl.addKeyListener(Ext.EventObject.SPACE, this.selectToday, this);
|
|
var g = (new Date()).dateFormat(this.format);
|
|
this.todayBtn = new Ext.Button({renderTo:this.el.child("td.x-date-bottom", true), text:String.format(this.todayText, g), tooltip:String.format(this.todayTip, g), handler:this.selectToday, scope:this})
|
|
}
|
|
this.mon(this.eventEl, "mousewheel", this.handleMouseWheel, this);
|
|
this.mon(this.eventEl, "click", this.handleDateClick, this, {delegate:"a.x-date-date"});
|
|
this.mon(this.mbtn, "click", this.showMonthPicker, this);
|
|
this.onEnable(true)
|
|
}, createMonthPicker:function () {
|
|
if (!this.monthPicker.dom.firstChild) {
|
|
var a = ['<table border="0" cellspacing="0">'];
|
|
for (var b = 0; b < 6; b++) {
|
|
a.push('<tr><td class="x-date-mp-month"><a href="#">', Date.getShortMonthName(b), "</a></td>", '<td class="x-date-mp-month x-date-mp-sep"><a href="#">', Date.getShortMonthName(b + 6), "</a></td>", b === 0 ? '<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>' : '<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>')
|
|
}
|
|
a.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">', this.okText, '</button><button type="button" class="x-date-mp-cancel">', this.cancelText, "</button></td></tr>", "</table>");
|
|
this.monthPicker.update(a.join(""));
|
|
this.mon(this.monthPicker, "click", this.onMonthClick, this);
|
|
this.mon(this.monthPicker, "dblclick", this.onMonthDblClick, this);
|
|
this.mpMonths = this.monthPicker.select("td.x-date-mp-month");
|
|
this.mpYears = this.monthPicker.select("td.x-date-mp-year");
|
|
this.mpMonths.each(function (c, d, e) {
|
|
e += 1;
|
|
if ((e % 2) === 0) {
|
|
c.dom.xmonth = 5 + Math.round(e * 0.5)
|
|
} else {
|
|
c.dom.xmonth = Math.round((e - 1) * 0.5)
|
|
}
|
|
})
|
|
}
|
|
}, showMonthPicker:function () {
|
|
if (!this.disabled) {
|
|
this.createMonthPicker();
|
|
var a = this.el.getSize();
|
|
this.monthPicker.setSize(a);
|
|
this.monthPicker.child("table").setSize(a);
|
|
this.mpSelMonth = (this.activeDate || this.value).getMonth();
|
|
this.updateMPMonth(this.mpSelMonth);
|
|
this.mpSelYear = (this.activeDate || this.value).getFullYear();
|
|
this.updateMPYear(this.mpSelYear);
|
|
this.monthPicker.slideIn("t", {duration:0.2})
|
|
}
|
|
}, updateMPYear:function (e) {
|
|
this.mpyear = e;
|
|
var c = this.mpYears.elements;
|
|
for (var b = 1; b <= 10; b++) {
|
|
var d = c[b - 1], a;
|
|
if ((b % 2) === 0) {
|
|
a = e + Math.round(b * 0.5);
|
|
d.firstChild.innerHTML = a;
|
|
d.xyear = a
|
|
} else {
|
|
a = e - (5 - Math.round(b * 0.5));
|
|
d.firstChild.innerHTML = a;
|
|
d.xyear = a
|
|
}
|
|
this.mpYears.item(b - 1)[a == this.mpSelYear ? "addClass" : "removeClass"]("x-date-mp-sel")
|
|
}
|
|
}, updateMPMonth:function (a) {
|
|
this.mpMonths.each(function (b, c, d) {
|
|
b[b.dom.xmonth == a ? "addClass" : "removeClass"]("x-date-mp-sel")
|
|
})
|
|
}, selectMPMonth:function (a) {
|
|
}, onMonthClick:function (g, b) {
|
|
g.stopEvent();
|
|
var c = new Ext.Element(b), a;
|
|
if (c.is("button.x-date-mp-cancel")) {
|
|
this.hideMonthPicker()
|
|
} else {
|
|
if (c.is("button.x-date-mp-ok")) {
|
|
var h = new Date(this.mpSelYear, this.mpSelMonth, (this.activeDate || this.value).getDate());
|
|
if (h.getMonth() != this.mpSelMonth) {
|
|
h = new Date(this.mpSelYear, this.mpSelMonth, 1).getLastDateOfMonth()
|
|
}
|
|
this.update(h);
|
|
this.hideMonthPicker()
|
|
} else {
|
|
if ((a = c.up("td.x-date-mp-month", 2))) {
|
|
this.mpMonths.removeClass("x-date-mp-sel");
|
|
a.addClass("x-date-mp-sel");
|
|
this.mpSelMonth = a.dom.xmonth
|
|
} else {
|
|
if ((a = c.up("td.x-date-mp-year", 2))) {
|
|
this.mpYears.removeClass("x-date-mp-sel");
|
|
a.addClass("x-date-mp-sel");
|
|
this.mpSelYear = a.dom.xyear
|
|
} else {
|
|
if (c.is("a.x-date-mp-prev")) {
|
|
this.updateMPYear(this.mpyear - 10)
|
|
} else {
|
|
if (c.is("a.x-date-mp-next")) {
|
|
this.updateMPYear(this.mpyear + 10)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, onMonthDblClick:function (d, b) {
|
|
d.stopEvent();
|
|
var c = new Ext.Element(b), a;
|
|
if ((a = c.up("td.x-date-mp-month", 2))) {
|
|
this.update(new Date(this.mpSelYear, a.dom.xmonth, (this.activeDate || this.value).getDate()));
|
|
this.hideMonthPicker()
|
|
} else {
|
|
if ((a = c.up("td.x-date-mp-year", 2))) {
|
|
this.update(new Date(a.dom.xyear, this.mpSelMonth, (this.activeDate || this.value).getDate()));
|
|
this.hideMonthPicker()
|
|
}
|
|
}
|
|
}, hideMonthPicker:function (a) {
|
|
if (this.monthPicker) {
|
|
if (a === true) {
|
|
this.monthPicker.hide()
|
|
} else {
|
|
this.monthPicker.slideOut("t", {duration:0.2})
|
|
}
|
|
}
|
|
}, showPrevMonth:function (a) {
|
|
this.update(this.activeDate.add("mo", -1))
|
|
}, showNextMonth:function (a) {
|
|
this.update(this.activeDate.add("mo", 1))
|
|
}, showPrevYear:function () {
|
|
this.update(this.activeDate.add("y", -1))
|
|
}, showNextYear:function () {
|
|
this.update(this.activeDate.add("y", 1))
|
|
}, handleMouseWheel:function (a) {
|
|
a.stopEvent();
|
|
if (!this.disabled) {
|
|
var b = a.getWheelDelta();
|
|
if (b > 0) {
|
|
this.showPrevMonth()
|
|
} else {
|
|
if (b < 0) {
|
|
this.showNextMonth()
|
|
}
|
|
}
|
|
}
|
|
}, handleDateClick:function (b, a) {
|
|
b.stopEvent();
|
|
if (!this.disabled && a.dateValue && !Ext.fly(a.parentNode).hasClass("x-date-disabled")) {
|
|
this.cancelFocus = this.focusOnSelect === false;
|
|
this.setValue(new Date(a.dateValue));
|
|
delete this.cancelFocus;
|
|
this.fireEvent("select", this, this.value)
|
|
}
|
|
}, selectToday:function () {
|
|
if (this.todayBtn && !this.todayBtn.disabled) {
|
|
this.setValue(new Date().clearTime());
|
|
this.fireEvent("select", this, this.value)
|
|
}
|
|
}, update:function (G, A) {
|
|
if (this.rendered) {
|
|
var a = this.activeDate, p = this.isVisible();
|
|
this.activeDate = G;
|
|
if (!A && a && this.el) {
|
|
var o = G.getTime();
|
|
if (a.getMonth() == G.getMonth() && a.getFullYear() == G.getFullYear()) {
|
|
this.cells.removeClass("x-date-selected");
|
|
this.cells.each(function (d) {
|
|
if (d.dom.firstChild.dateValue == o) {
|
|
d.addClass("x-date-selected");
|
|
if (p && !this.cancelFocus) {
|
|
Ext.fly(d.dom.firstChild).focus(50)
|
|
}
|
|
return false
|
|
}
|
|
}, this);
|
|
return
|
|
}
|
|
}
|
|
var k = G.getDaysInMonth(), q = G.getFirstDateOfMonth(), g = q.getDay() - this.startDay;
|
|
if (g < 0) {
|
|
g += 7
|
|
}
|
|
k += g;
|
|
var B = G.add("mo", -1), h = B.getDaysInMonth() - g, e = this.cells.elements, r = this.textNodes, D = (new Date(B.getFullYear(), B.getMonth(), h, this.initHour)), C = new Date().clearTime().getTime(), v = G.clearTime(true).getTime(), u = this.minDate ? this.minDate.clearTime(true) : Number.NEGATIVE_INFINITY, y = this.maxDate ? this.maxDate.clearTime(true) : Number.POSITIVE_INFINITY, F = this.disabledDatesRE, s = this.disabledDatesText, I = this.disabledDays ? this.disabledDays.join("") : false, E = this.disabledDaysText, z = this.format;
|
|
if (this.showToday) {
|
|
var m = new Date().clearTime(), c = (m < u || m > y || (F && z && F.test(m.dateFormat(z))) || (I && I.indexOf(m.getDay()) != -1));
|
|
if (!this.disabled) {
|
|
this.todayBtn.setDisabled(c);
|
|
this.todayKeyListener[c ? "disable" : "enable"]()
|
|
}
|
|
}
|
|
var l = function (J, d) {
|
|
d.title = "";
|
|
var i = D.clearTime(true).getTime();
|
|
d.firstChild.dateValue = i;
|
|
if (i == C) {
|
|
d.className += " x-date-today";
|
|
d.title = J.todayText
|
|
}
|
|
if (i == v) {
|
|
d.className += " x-date-selected";
|
|
if (p) {
|
|
Ext.fly(d.firstChild).focus(50)
|
|
}
|
|
}
|
|
if (i < u) {
|
|
d.className = " x-date-disabled";
|
|
d.title = J.minText;
|
|
return
|
|
}
|
|
if (i > y) {
|
|
d.className = " x-date-disabled";
|
|
d.title = J.maxText;
|
|
return
|
|
}
|
|
if (I) {
|
|
if (I.indexOf(D.getDay()) != -1) {
|
|
d.title = E;
|
|
d.className = " x-date-disabled"
|
|
}
|
|
}
|
|
if (F && z) {
|
|
var w = D.dateFormat(z);
|
|
if (F.test(w)) {
|
|
d.title = s.replace("%0", w);
|
|
d.className = " x-date-disabled"
|
|
}
|
|
}
|
|
};
|
|
var x = 0;
|
|
for (; x < g; x++) {
|
|
r[x].innerHTML = (++h);
|
|
D.setDate(D.getDate() + 1);
|
|
e[x].className = "x-date-prevday";
|
|
l(this, e[x])
|
|
}
|
|
for (; x < k; x++) {
|
|
var b = x - g + 1;
|
|
r[x].innerHTML = (b);
|
|
D.setDate(D.getDate() + 1);
|
|
e[x].className = "x-date-active";
|
|
l(this, e[x])
|
|
}
|
|
var H = 0;
|
|
for (; x < 42; x++) {
|
|
r[x].innerHTML = (++H);
|
|
D.setDate(D.getDate() + 1);
|
|
e[x].className = "x-date-nextday";
|
|
l(this, e[x])
|
|
}
|
|
this.mbtn.setText(this.monthNames[G.getMonth()] + " " + G.getFullYear());
|
|
if (!this.internalRender) {
|
|
var j = this.el.dom.firstChild, n = j.offsetWidth;
|
|
this.el.setWidth(n + this.el.getBorderWidth("lr"));
|
|
Ext.fly(j).setWidth(n);
|
|
this.internalRender = true;
|
|
if (Ext.isOpera && !this.secondPass) {
|
|
j.rows[0].cells[1].style.width = (n - (j.rows[0].cells[0].offsetWidth + j.rows[0].cells[2].offsetWidth)) + "px";
|
|
this.secondPass = true;
|
|
this.update.defer(10, this, [G])
|
|
}
|
|
}
|
|
}
|
|
}, beforeDestroy:function () {
|
|
if (this.rendered) {
|
|
Ext.destroy(this.keyNav, this.monthPicker, this.eventEl, this.mbtn, this.nextRepeater, this.prevRepeater, this.cells.el, this.todayBtn);
|
|
delete this.textNodes;
|
|
delete this.cells.elements
|
|
}
|
|
}});
|
|
Ext.reg("datepicker", Ext.DatePicker);
|
|
Ext.LoadMask = function (c, b) {
|
|
this.el = Ext.get(c);
|
|
Ext.apply(this, b);
|
|
if (this.store) {
|
|
this.store.on({scope:this, beforeload:this.onBeforeLoad, load:this.onLoad, exception:this.onLoad});
|
|
this.removeMask = Ext.value(this.removeMask, false)
|
|
} else {
|
|
var a = this.el.getUpdater();
|
|
a.showLoadIndicator = false;
|
|
a.on({scope:this, beforeupdate:this.onBeforeLoad, update:this.onLoad, failure:this.onLoad});
|
|
this.removeMask = Ext.value(this.removeMask, true)
|
|
}
|
|
};
|
|
Ext.LoadMask.prototype = {msg:"Loading...", msgCls:"x-mask-loading", disabled:false, disable:function () {
|
|
this.disabled = true
|
|
}, enable:function () {
|
|
this.disabled = false
|
|
}, onLoad:function () {
|
|
this.el.unmask(this.removeMask)
|
|
}, onBeforeLoad:function () {
|
|
if (!this.disabled) {
|
|
this.el.mask(this.msg, this.msgCls)
|
|
}
|
|
}, show:function () {
|
|
this.onBeforeLoad()
|
|
}, hide:function () {
|
|
this.onLoad()
|
|
}, destroy:function () {
|
|
if (this.store) {
|
|
this.store.un("beforeload", this.onBeforeLoad, this);
|
|
this.store.un("load", this.onLoad, this);
|
|
this.store.un("exception", this.onLoad, this)
|
|
} else {
|
|
var a = this.el.getUpdater();
|
|
a.un("beforeupdate", this.onBeforeLoad, this);
|
|
a.un("update", this.onLoad, this);
|
|
a.un("failure", this.onLoad, this)
|
|
}
|
|
}};
|
|
Ext.slider.Thumb = Ext.extend(Object, {dragging:false, constructor:function (a) {
|
|
Ext.apply(this, a || {}, {cls:"x-slider-thumb", constrain:false});
|
|
Ext.slider.Thumb.superclass.constructor.call(this, a);
|
|
if (this.slider.vertical) {
|
|
Ext.apply(this, Ext.slider.Thumb.Vertical)
|
|
}
|
|
}, render:function () {
|
|
this.el = this.slider.innerEl.insertFirst({cls:this.cls});
|
|
this.initEvents()
|
|
}, enable:function () {
|
|
this.disabled = false;
|
|
this.el.removeClass(this.slider.disabledClass)
|
|
}, disable:function () {
|
|
this.disabled = true;
|
|
this.el.addClass(this.slider.disabledClass)
|
|
}, initEvents:function () {
|
|
var a = this.el;
|
|
a.addClassOnOver("x-slider-thumb-over");
|
|
this.tracker = new Ext.dd.DragTracker({onBeforeStart:this.onBeforeDragStart.createDelegate(this), onStart:this.onDragStart.createDelegate(this), onDrag:this.onDrag.createDelegate(this), onEnd:this.onDragEnd.createDelegate(this), tolerance:3, autoStart:300});
|
|
this.tracker.initEl(a)
|
|
}, onBeforeDragStart:function (a) {
|
|
if (this.disabled) {
|
|
return false
|
|
} else {
|
|
this.slider.promoteThumb(this);
|
|
return true
|
|
}
|
|
}, onDragStart:function (a) {
|
|
this.el.addClass("x-slider-thumb-drag");
|
|
this.dragging = true;
|
|
this.dragStartValue = this.value;
|
|
this.slider.fireEvent("dragstart", this.slider, a, this)
|
|
}, onDrag:function (g) {
|
|
var c = this.slider, b = this.index, d = this.getNewValue();
|
|
if (this.constrain) {
|
|
var a = c.thumbs[b + 1], h = c.thumbs[b - 1];
|
|
if (h != undefined && d <= h.value) {
|
|
d = h.value
|
|
}
|
|
if (a != undefined && d >= a.value) {
|
|
d = a.value
|
|
}
|
|
}
|
|
c.setValue(b, d, false);
|
|
c.fireEvent("drag", c, g, this)
|
|
}, getNewValue:function () {
|
|
var a = this.slider, b = a.innerEl.translatePoints(this.tracker.getXY());
|
|
return Ext.util.Format.round(a.reverseValue(b.left), a.decimalPrecision)
|
|
}, onDragEnd:function (c) {
|
|
var a = this.slider, b = this.value;
|
|
this.el.removeClass("x-slider-thumb-drag");
|
|
this.dragging = false;
|
|
a.fireEvent("dragend", a, c);
|
|
if (this.dragStartValue != b) {
|
|
a.fireEvent("changecomplete", a, b, this)
|
|
}
|
|
}, destroy:function () {
|
|
Ext.destroyMembers(this, "tracker", "el")
|
|
}});
|
|
Ext.slider.MultiSlider = Ext.extend(Ext.BoxComponent, {vertical:false, minValue:0, maxValue:100, decimalPrecision:0, keyIncrement:1, increment:0, clickRange:[5, 15], clickToChange:true, animate:true, constrainThumbs:true, topThumbZIndex:10000, initComponent:function () {
|
|
if (!Ext.isDefined(this.value)) {
|
|
this.value = this.minValue
|
|
}
|
|
this.thumbs = [];
|
|
Ext.slider.MultiSlider.superclass.initComponent.call(this);
|
|
this.keyIncrement = Math.max(this.increment, this.keyIncrement);
|
|
this.addEvents("beforechange", "change", "changecomplete", "dragstart", "drag", "dragend");
|
|
if (this.values == undefined || Ext.isEmpty(this.values)) {
|
|
this.values = [0]
|
|
}
|
|
var a = this.values;
|
|
for (var b = 0; b < a.length; b++) {
|
|
this.addThumb(a[b])
|
|
}
|
|
if (this.vertical) {
|
|
Ext.apply(this, Ext.slider.Vertical)
|
|
}
|
|
}, addThumb:function (b) {
|
|
var a = new Ext.slider.Thumb({value:b, slider:this, index:this.thumbs.length, constrain:this.constrainThumbs});
|
|
this.thumbs.push(a);
|
|
if (this.rendered) {
|
|
a.render()
|
|
}
|
|
}, promoteThumb:function (d) {
|
|
var a = this.thumbs, g, b;
|
|
for (var e = 0, c = a.length; e < c; e++) {
|
|
b = a[e];
|
|
if (b == d) {
|
|
g = this.topThumbZIndex
|
|
} else {
|
|
g = ""
|
|
}
|
|
b.el.setStyle("zIndex", g)
|
|
}
|
|
}, onRender:function () {
|
|
this.autoEl = {cls:"x-slider " + (this.vertical ? "x-slider-vert" : "x-slider-horz"), cn:{cls:"x-slider-end", cn:{cls:"x-slider-inner", cn:[
|
|
{tag:"a", cls:"x-slider-focus", href:"#", tabIndex:"-1", hidefocus:"on"}
|
|
]}}};
|
|
Ext.slider.MultiSlider.superclass.onRender.apply(this, arguments);
|
|
this.endEl = this.el.first();
|
|
this.innerEl = this.endEl.first();
|
|
this.focusEl = this.innerEl.child(".x-slider-focus");
|
|
for (var b = 0; b < this.thumbs.length; b++) {
|
|
this.thumbs[b].render()
|
|
}
|
|
var a = this.innerEl.child(".x-slider-thumb");
|
|
this.halfThumb = (this.vertical ? a.getHeight() : a.getWidth()) / 2;
|
|
this.initEvents()
|
|
}, initEvents:function () {
|
|
this.mon(this.el, {scope:this, mousedown:this.onMouseDown, keydown:this.onKeyDown});
|
|
this.focusEl.swallowEvent("click", true)
|
|
}, onMouseDown:function (d) {
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
var c = false;
|
|
for (var b = 0; b < this.thumbs.length; b++) {
|
|
c = c || d.target == this.thumbs[b].el.dom
|
|
}
|
|
if (this.clickToChange && !c) {
|
|
var a = this.innerEl.translatePoints(d.getXY());
|
|
this.onClickChange(a)
|
|
}
|
|
this.focus()
|
|
}, onClickChange:function (c) {
|
|
if (c.top > this.clickRange[0] && c.top < this.clickRange[1]) {
|
|
var a = this.getNearest(c, "left"), b = a.index;
|
|
this.setValue(b, Ext.util.Format.round(this.reverseValue(c.left), this.decimalPrecision), undefined, true)
|
|
}
|
|
}, getNearest:function (k, b) {
|
|
var m = b == "top" ? this.innerEl.getHeight() - k[b] : k[b], g = this.reverseValue(m), j = (this.maxValue - this.minValue) + 5, e = 0, c = null;
|
|
for (var d = 0; d < this.thumbs.length; d++) {
|
|
var a = this.thumbs[d], l = a.value, h = Math.abs(l - g);
|
|
if (Math.abs(h <= j)) {
|
|
c = a;
|
|
e = d;
|
|
j = h
|
|
}
|
|
}
|
|
return c
|
|
}, onKeyDown:function (b) {
|
|
if (this.disabled || this.thumbs.length !== 1) {
|
|
b.preventDefault();
|
|
return
|
|
}
|
|
var a = b.getKey(), c;
|
|
switch (a) {
|
|
case b.UP:
|
|
case b.RIGHT:
|
|
b.stopEvent();
|
|
c = b.ctrlKey ? this.maxValue : this.getValue(0) + this.keyIncrement;
|
|
this.setValue(0, c, undefined, true);
|
|
break;
|
|
case b.DOWN:
|
|
case b.LEFT:
|
|
b.stopEvent();
|
|
c = b.ctrlKey ? this.minValue : this.getValue(0) - this.keyIncrement;
|
|
this.setValue(0, c, undefined, true);
|
|
break;
|
|
default:
|
|
b.preventDefault()
|
|
}
|
|
}, doSnap:function (b) {
|
|
if (!(this.increment && b)) {
|
|
return b
|
|
}
|
|
var d = b, c = this.increment, a = b % c;
|
|
if (a != 0) {
|
|
d -= a;
|
|
if (a * 2 >= c) {
|
|
d += c
|
|
} else {
|
|
if (a * 2 < -c) {
|
|
d -= c
|
|
}
|
|
}
|
|
}
|
|
return d.constrain(this.minValue, this.maxValue)
|
|
}, afterRender:function () {
|
|
Ext.slider.MultiSlider.superclass.afterRender.apply(this, arguments);
|
|
for (var c = 0; c < this.thumbs.length; c++) {
|
|
var b = this.thumbs[c];
|
|
if (b.value !== undefined) {
|
|
var a = this.normalizeValue(b.value);
|
|
if (a !== b.value) {
|
|
this.setValue(c, a, false)
|
|
} else {
|
|
this.moveThumb(c, this.translateValue(a), false)
|
|
}
|
|
}
|
|
}
|
|
}, getRatio:function () {
|
|
var a = this.innerEl.getWidth(), b = this.maxValue - this.minValue;
|
|
return b == 0 ? a : (a / b)
|
|
}, normalizeValue:function (a) {
|
|
a = this.doSnap(a);
|
|
a = Ext.util.Format.round(a, this.decimalPrecision);
|
|
a = a.constrain(this.minValue, this.maxValue);
|
|
return a
|
|
}, setMinValue:function (e) {
|
|
this.minValue = e;
|
|
var d = 0, b = this.thumbs, a = b.length, c;
|
|
for (; d < a; ++d) {
|
|
c = b[d];
|
|
c.value = c.value < e ? e : c.value
|
|
}
|
|
this.syncThumb()
|
|
}, setMaxValue:function (e) {
|
|
this.maxValue = e;
|
|
var d = 0, b = this.thumbs, a = b.length, c;
|
|
for (; d < a; ++d) {
|
|
c = b[d];
|
|
c.value = c.value > e ? e : c.value
|
|
}
|
|
this.syncThumb()
|
|
}, setValue:function (d, c, b, g) {
|
|
var a = this.thumbs[d], e = a.el;
|
|
c = this.normalizeValue(c);
|
|
if (c !== a.value && this.fireEvent("beforechange", this, c, a.value, a) !== false) {
|
|
a.value = c;
|
|
if (this.rendered) {
|
|
this.moveThumb(d, this.translateValue(c), b !== false);
|
|
this.fireEvent("change", this, c, a);
|
|
if (g) {
|
|
this.fireEvent("changecomplete", this, c, a)
|
|
}
|
|
}
|
|
}
|
|
}, translateValue:function (a) {
|
|
var b = this.getRatio();
|
|
return(a * b) - (this.minValue * b) - this.halfThumb
|
|
}, reverseValue:function (b) {
|
|
var a = this.getRatio();
|
|
return(b + (this.minValue * a)) / a
|
|
}, moveThumb:function (d, c, b) {
|
|
var a = this.thumbs[d].el;
|
|
if (!b || this.animate === false) {
|
|
a.setLeft(c)
|
|
} else {
|
|
a.shift({left:c, stopFx:true, duration:0.35})
|
|
}
|
|
}, focus:function () {
|
|
this.focusEl.focus(10)
|
|
}, onResize:function (c, e) {
|
|
var b = this.thumbs, a = b.length, d = 0;
|
|
for (; d < a; ++d) {
|
|
b[d].el.stopFx()
|
|
}
|
|
if (Ext.isNumber(c)) {
|
|
this.innerEl.setWidth(c - (this.el.getPadding("l") + this.endEl.getPadding("r")))
|
|
}
|
|
this.syncThumb();
|
|
Ext.slider.MultiSlider.superclass.onResize.apply(this, arguments)
|
|
}, onDisable:function () {
|
|
Ext.slider.MultiSlider.superclass.onDisable.call(this);
|
|
for (var b = 0; b < this.thumbs.length; b++) {
|
|
var a = this.thumbs[b], c = a.el;
|
|
a.disable();
|
|
if (Ext.isIE) {
|
|
var d = c.getXY();
|
|
c.hide();
|
|
this.innerEl.addClass(this.disabledClass).dom.disabled = true;
|
|
if (!this.thumbHolder) {
|
|
this.thumbHolder = this.endEl.createChild({cls:"x-slider-thumb " + this.disabledClass})
|
|
}
|
|
this.thumbHolder.show().setXY(d)
|
|
}
|
|
}
|
|
}, onEnable:function () {
|
|
Ext.slider.MultiSlider.superclass.onEnable.call(this);
|
|
for (var b = 0; b < this.thumbs.length; b++) {
|
|
var a = this.thumbs[b], c = a.el;
|
|
a.enable();
|
|
if (Ext.isIE) {
|
|
this.innerEl.removeClass(this.disabledClass).dom.disabled = false;
|
|
if (this.thumbHolder) {
|
|
this.thumbHolder.hide()
|
|
}
|
|
c.show();
|
|
this.syncThumb()
|
|
}
|
|
}
|
|
}, syncThumb:function () {
|
|
if (this.rendered) {
|
|
for (var a = 0; a < this.thumbs.length; a++) {
|
|
this.moveThumb(a, this.translateValue(this.thumbs[a].value))
|
|
}
|
|
}
|
|
}, getValue:function (a) {
|
|
return this.thumbs[a].value
|
|
}, getValues:function () {
|
|
var a = [];
|
|
for (var b = 0; b < this.thumbs.length; b++) {
|
|
a.push(this.thumbs[b].value)
|
|
}
|
|
return a
|
|
}, beforeDestroy:function () {
|
|
var b = this.thumbs;
|
|
for (var c = 0, a = b.length; c < a; ++c) {
|
|
b[c].destroy();
|
|
b[c] = null
|
|
}
|
|
Ext.destroyMembers(this, "endEl", "innerEl", "focusEl", "thumbHolder");
|
|
Ext.slider.MultiSlider.superclass.beforeDestroy.call(this)
|
|
}});
|
|
Ext.reg("multislider", Ext.slider.MultiSlider);
|
|
Ext.slider.SingleSlider = Ext.extend(Ext.slider.MultiSlider, {constructor:function (a) {
|
|
a = a || {};
|
|
Ext.applyIf(a, {values:[a.value || 0]});
|
|
Ext.slider.SingleSlider.superclass.constructor.call(this, a)
|
|
}, getValue:function () {
|
|
return Ext.slider.SingleSlider.superclass.getValue.call(this, 0)
|
|
}, setValue:function (d, b) {
|
|
var c = Ext.toArray(arguments), a = c.length;
|
|
if (a == 1 || (a <= 3 && typeof arguments[1] != "number")) {
|
|
c.unshift(0)
|
|
}
|
|
return Ext.slider.SingleSlider.superclass.setValue.apply(this, c)
|
|
}, syncThumb:function () {
|
|
return Ext.slider.SingleSlider.superclass.syncThumb.apply(this, [0].concat(arguments))
|
|
}, getNearest:function () {
|
|
return this.thumbs[0]
|
|
}});
|
|
Ext.Slider = Ext.slider.SingleSlider;
|
|
Ext.reg("slider", Ext.slider.SingleSlider);
|
|
Ext.slider.Vertical = {onResize:function (a, b) {
|
|
this.innerEl.setHeight(b - (this.el.getPadding("t") + this.endEl.getPadding("b")));
|
|
this.syncThumb()
|
|
}, getRatio:function () {
|
|
var b = this.innerEl.getHeight(), a = this.maxValue - this.minValue;
|
|
return b / a
|
|
}, moveThumb:function (d, c, b) {
|
|
var a = this.thumbs[d], e = a.el;
|
|
if (!b || this.animate === false) {
|
|
e.setBottom(c)
|
|
} else {
|
|
e.shift({bottom:c, stopFx:true, duration:0.35})
|
|
}
|
|
}, onClickChange:function (c) {
|
|
if (c.left > this.clickRange[0] && c.left < this.clickRange[1]) {
|
|
var a = this.getNearest(c, "top"), b = a.index, d = this.minValue + this.reverseValue(this.innerEl.getHeight() - c.top);
|
|
this.setValue(b, Ext.util.Format.round(d, this.decimalPrecision), undefined, true)
|
|
}
|
|
}};
|
|
Ext.slider.Thumb.Vertical = {getNewValue:function () {
|
|
var b = this.slider, c = b.innerEl, d = c.translatePoints(this.tracker.getXY()), a = c.getHeight() - d.top;
|
|
return b.minValue + Ext.util.Format.round(a / b.getRatio(), b.decimalPrecision)
|
|
}};
|
|
Ext.ProgressBar = Ext.extend(Ext.BoxComponent, {baseCls:"x-progress", animate:false, waitTimer:null, initComponent:function () {
|
|
Ext.ProgressBar.superclass.initComponent.call(this);
|
|
this.addEvents("update")
|
|
}, onRender:function (d, a) {
|
|
var c = new Ext.Template('<div class="{cls}-wrap">', '<div class="{cls}-inner">', '<div class="{cls}-bar">', '<div class="{cls}-text">', "<div> </div>", "</div>", "</div>", '<div class="{cls}-text {cls}-text-back">', "<div> </div>", "</div>", "</div>", "</div>");
|
|
this.el = a ? c.insertBefore(a, {cls:this.baseCls}, true) : c.append(d, {cls:this.baseCls}, true);
|
|
if (this.id) {
|
|
this.el.dom.id = this.id
|
|
}
|
|
var b = this.el.dom.firstChild;
|
|
this.progressBar = Ext.get(b.firstChild);
|
|
if (this.textEl) {
|
|
this.textEl = Ext.get(this.textEl);
|
|
delete this.textTopEl
|
|
} else {
|
|
this.textTopEl = Ext.get(this.progressBar.dom.firstChild);
|
|
var e = Ext.get(b.childNodes[1]);
|
|
this.textTopEl.setStyle("z-index", 99).addClass("x-hidden");
|
|
this.textEl = new Ext.CompositeElement([this.textTopEl.dom.firstChild, e.dom.firstChild]);
|
|
this.textEl.setWidth(b.offsetWidth)
|
|
}
|
|
this.progressBar.setHeight(b.offsetHeight)
|
|
}, afterRender:function () {
|
|
Ext.ProgressBar.superclass.afterRender.call(this);
|
|
if (this.value) {
|
|
this.updateProgress(this.value, this.text)
|
|
} else {
|
|
this.updateText(this.text)
|
|
}
|
|
}, updateProgress:function (c, d, b) {
|
|
this.value = c || 0;
|
|
if (d) {
|
|
this.updateText(d)
|
|
}
|
|
if (this.rendered && !this.isDestroyed) {
|
|
var a = Math.floor(c * this.el.dom.firstChild.offsetWidth);
|
|
this.progressBar.setWidth(a, b === true || (b !== false && this.animate));
|
|
if (this.textTopEl) {
|
|
this.textTopEl.removeClass("x-hidden").setWidth(a)
|
|
}
|
|
}
|
|
this.fireEvent("update", this, c, d);
|
|
return this
|
|
}, wait:function (b) {
|
|
if (!this.waitTimer) {
|
|
var a = this;
|
|
b = b || {};
|
|
this.updateText(b.text);
|
|
this.waitTimer = Ext.TaskMgr.start({run:function (c) {
|
|
var d = b.increment || 10;
|
|
c -= 1;
|
|
this.updateProgress(((((c + d) % d) + 1) * (100 / d)) * 0.01, null, b.animate)
|
|
}, interval:b.interval || 1000, duration:b.duration, onStop:function () {
|
|
if (b.fn) {
|
|
b.fn.apply(b.scope || this)
|
|
}
|
|
this.reset()
|
|
}, scope:a})
|
|
}
|
|
return this
|
|
}, isWaiting:function () {
|
|
return this.waitTimer !== null
|
|
}, updateText:function (a) {
|
|
this.text = a || " ";
|
|
if (this.rendered) {
|
|
this.textEl.update(this.text)
|
|
}
|
|
return this
|
|
}, syncProgressBar:function () {
|
|
if (this.value) {
|
|
this.updateProgress(this.value, this.text)
|
|
}
|
|
return this
|
|
}, setSize:function (a, c) {
|
|
Ext.ProgressBar.superclass.setSize.call(this, a, c);
|
|
if (this.textTopEl) {
|
|
var b = this.el.dom.firstChild;
|
|
this.textEl.setSize(b.offsetWidth, b.offsetHeight)
|
|
}
|
|
this.syncProgressBar();
|
|
return this
|
|
}, reset:function (a) {
|
|
this.updateProgress(0);
|
|
if (this.textTopEl) {
|
|
this.textTopEl.addClass("x-hidden")
|
|
}
|
|
this.clearTimer();
|
|
if (a === true) {
|
|
this.hide()
|
|
}
|
|
return this
|
|
}, clearTimer:function () {
|
|
if (this.waitTimer) {
|
|
this.waitTimer.onStop = null;
|
|
Ext.TaskMgr.stop(this.waitTimer);
|
|
this.waitTimer = null
|
|
}
|
|
}, onDestroy:function () {
|
|
this.clearTimer();
|
|
if (this.rendered) {
|
|
if (this.textEl.isComposite) {
|
|
this.textEl.clear()
|
|
}
|
|
Ext.destroyMembers(this, "textEl", "progressBar", "textTopEl")
|
|
}
|
|
Ext.ProgressBar.superclass.onDestroy.call(this)
|
|
}});
|
|
Ext.reg("progress", Ext.ProgressBar);
|
|
(function () {
|
|
var a = Ext.EventManager;
|
|
var b = Ext.lib.Dom;
|
|
Ext.dd.DragDrop = function (e, c, d) {
|
|
if (e) {
|
|
this.init(e, c, d)
|
|
}
|
|
};
|
|
Ext.dd.DragDrop.prototype = {id:null, config:null, dragElId:null, handleElId:null, invalidHandleTypes:null, invalidHandleIds:null, invalidHandleClasses:null, startPageX:0, startPageY:0, groups:null, locked:false, lock:function () {
|
|
this.locked = true
|
|
}, moveOnly:false, unlock:function () {
|
|
this.locked = false
|
|
}, isTarget:true, padding:null, _domRef:null, __ygDragDrop:true, constrainX:false, constrainY:false, minX:0, maxX:0, minY:0, maxY:0, maintainOffset:false, xTicks:null, yTicks:null, primaryButtonOnly:true, available:false, hasOuterHandles:false, b4StartDrag:function (c, d) {
|
|
}, startDrag:function (c, d) {
|
|
}, b4Drag:function (c) {
|
|
}, onDrag:function (c) {
|
|
}, onDragEnter:function (c, d) {
|
|
}, b4DragOver:function (c) {
|
|
}, onDragOver:function (c, d) {
|
|
}, b4DragOut:function (c) {
|
|
}, onDragOut:function (c, d) {
|
|
}, b4DragDrop:function (c) {
|
|
}, onDragDrop:function (c, d) {
|
|
}, onInvalidDrop:function (c) {
|
|
}, b4EndDrag:function (c) {
|
|
}, endDrag:function (c) {
|
|
}, b4MouseDown:function (c) {
|
|
}, onMouseDown:function (c) {
|
|
}, onMouseUp:function (c) {
|
|
}, onAvailable:function () {
|
|
}, defaultPadding:{left:0, right:0, top:0, bottom:0}, constrainTo:function (j, h, o) {
|
|
if (Ext.isNumber(h)) {
|
|
h = {left:h, right:h, top:h, bottom:h}
|
|
}
|
|
h = h || this.defaultPadding;
|
|
var l = Ext.get(this.getEl()).getBox(), d = Ext.get(j), n = d.getScroll(), k, e = d.dom;
|
|
if (e == document.body) {
|
|
k = {x:n.left, y:n.top, width:Ext.lib.Dom.getViewWidth(), height:Ext.lib.Dom.getViewHeight()}
|
|
} else {
|
|
var m = d.getXY();
|
|
k = {x:m[0], y:m[1], width:e.clientWidth, height:e.clientHeight}
|
|
}
|
|
var i = l.y - k.y, g = l.x - k.x;
|
|
this.resetConstraints();
|
|
this.setXConstraint(g - (h.left || 0), k.width - g - l.width - (h.right || 0), this.xTickSize);
|
|
this.setYConstraint(i - (h.top || 0), k.height - i - l.height - (h.bottom || 0), this.yTickSize)
|
|
}, getEl:function () {
|
|
if (!this._domRef) {
|
|
this._domRef = Ext.getDom(this.id)
|
|
}
|
|
return this._domRef
|
|
}, getDragEl:function () {
|
|
return Ext.getDom(this.dragElId)
|
|
}, init:function (e, c, d) {
|
|
this.initTarget(e, c, d);
|
|
a.on(this.id, "mousedown", this.handleMouseDown, this)
|
|
}, initTarget:function (e, c, d) {
|
|
this.config = d || {};
|
|
this.DDM = Ext.dd.DDM;
|
|
this.groups = {};
|
|
if (typeof e !== "string") {
|
|
e = Ext.id(e)
|
|
}
|
|
this.id = e;
|
|
this.addToGroup((c) ? c : "default");
|
|
this.handleElId = e;
|
|
this.setDragElId(e);
|
|
this.invalidHandleTypes = {A:"A"};
|
|
this.invalidHandleIds = {};
|
|
this.invalidHandleClasses = [];
|
|
this.applyConfig();
|
|
this.handleOnAvailable()
|
|
}, applyConfig:function () {
|
|
this.padding = this.config.padding || [0, 0, 0, 0];
|
|
this.isTarget = (this.config.isTarget !== false);
|
|
this.maintainOffset = (this.config.maintainOffset);
|
|
this.primaryButtonOnly = (this.config.primaryButtonOnly !== false)
|
|
}, handleOnAvailable:function () {
|
|
this.available = true;
|
|
this.resetConstraints();
|
|
this.onAvailable()
|
|
}, setPadding:function (e, c, g, d) {
|
|
if (!c && 0 !== c) {
|
|
this.padding = [e, e, e, e]
|
|
} else {
|
|
if (!g && 0 !== g) {
|
|
this.padding = [e, c, e, c]
|
|
} else {
|
|
this.padding = [e, c, g, d]
|
|
}
|
|
}
|
|
}, setInitPosition:function (g, e) {
|
|
var h = this.getEl();
|
|
if (!this.DDM.verifyEl(h)) {
|
|
return
|
|
}
|
|
var d = g || 0;
|
|
var c = e || 0;
|
|
var i = b.getXY(h);
|
|
this.initPageX = i[0] - d;
|
|
this.initPageY = i[1] - c;
|
|
this.lastPageX = i[0];
|
|
this.lastPageY = i[1];
|
|
this.setStartPosition(i)
|
|
}, setStartPosition:function (d) {
|
|
var c = d || b.getXY(this.getEl());
|
|
this.deltaSetXY = null;
|
|
this.startPageX = c[0];
|
|
this.startPageY = c[1]
|
|
}, addToGroup:function (c) {
|
|
this.groups[c] = true;
|
|
this.DDM.regDragDrop(this, c)
|
|
}, removeFromGroup:function (c) {
|
|
if (this.groups[c]) {
|
|
delete this.groups[c]
|
|
}
|
|
this.DDM.removeDDFromGroup(this, c)
|
|
}, setDragElId:function (c) {
|
|
this.dragElId = c
|
|
}, setHandleElId:function (c) {
|
|
if (typeof c !== "string") {
|
|
c = Ext.id(c)
|
|
}
|
|
this.handleElId = c;
|
|
this.DDM.regHandle(this.id, c)
|
|
}, setOuterHandleElId:function (c) {
|
|
if (typeof c !== "string") {
|
|
c = Ext.id(c)
|
|
}
|
|
a.on(c, "mousedown", this.handleMouseDown, this);
|
|
this.setHandleElId(c);
|
|
this.hasOuterHandles = true
|
|
}, unreg:function () {
|
|
a.un(this.id, "mousedown", this.handleMouseDown);
|
|
this._domRef = null;
|
|
this.DDM._remove(this)
|
|
}, destroy:function () {
|
|
this.unreg()
|
|
}, isLocked:function () {
|
|
return(this.DDM.isLocked() || this.locked)
|
|
}, handleMouseDown:function (g, d) {
|
|
if (this.primaryButtonOnly && g.button != 0) {
|
|
return
|
|
}
|
|
if (this.isLocked()) {
|
|
return
|
|
}
|
|
this.DDM.refreshCache(this.groups);
|
|
var c = new Ext.lib.Point(Ext.lib.Event.getPageX(g), Ext.lib.Event.getPageY(g));
|
|
if (!this.hasOuterHandles && !this.DDM.isOverTarget(c, this)) {
|
|
} else {
|
|
if (this.clickValidator(g)) {
|
|
this.setStartPosition();
|
|
this.b4MouseDown(g);
|
|
this.onMouseDown(g);
|
|
this.DDM.handleMouseDown(g, this);
|
|
this.DDM.stopEvent(g)
|
|
} else {
|
|
}
|
|
}
|
|
}, clickValidator:function (d) {
|
|
var c = d.getTarget();
|
|
return(this.isValidHandleChild(c) && (this.id == this.handleElId || this.DDM.handleWasClicked(c, this.id)))
|
|
}, addInvalidHandleType:function (c) {
|
|
var d = c.toUpperCase();
|
|
this.invalidHandleTypes[d] = d
|
|
}, addInvalidHandleId:function (c) {
|
|
if (typeof c !== "string") {
|
|
c = Ext.id(c)
|
|
}
|
|
this.invalidHandleIds[c] = c
|
|
}, addInvalidHandleClass:function (c) {
|
|
this.invalidHandleClasses.push(c)
|
|
}, removeInvalidHandleType:function (c) {
|
|
var d = c.toUpperCase();
|
|
delete this.invalidHandleTypes[d]
|
|
}, removeInvalidHandleId:function (c) {
|
|
if (typeof c !== "string") {
|
|
c = Ext.id(c)
|
|
}
|
|
delete this.invalidHandleIds[c]
|
|
}, removeInvalidHandleClass:function (d) {
|
|
for (var e = 0, c = this.invalidHandleClasses.length; e < c; ++e) {
|
|
if (this.invalidHandleClasses[e] == d) {
|
|
delete this.invalidHandleClasses[e]
|
|
}
|
|
}
|
|
}, isValidHandleChild:function (h) {
|
|
var g = true;
|
|
var k;
|
|
try {
|
|
k = h.nodeName.toUpperCase()
|
|
} catch (j) {
|
|
k = h.nodeName
|
|
}
|
|
g = g && !this.invalidHandleTypes[k];
|
|
g = g && !this.invalidHandleIds[h.id];
|
|
for (var d = 0, c = this.invalidHandleClasses.length; g && d < c; ++d) {
|
|
g = !Ext.fly(h).hasClass(this.invalidHandleClasses[d])
|
|
}
|
|
return g
|
|
}, setXTicks:function (g, c) {
|
|
this.xTicks = [];
|
|
this.xTickSize = c;
|
|
var e = {};
|
|
for (var d = this.initPageX; d >= this.minX; d = d - c) {
|
|
if (!e[d]) {
|
|
this.xTicks[this.xTicks.length] = d;
|
|
e[d] = true
|
|
}
|
|
}
|
|
for (d = this.initPageX; d <= this.maxX; d = d + c) {
|
|
if (!e[d]) {
|
|
this.xTicks[this.xTicks.length] = d;
|
|
e[d] = true
|
|
}
|
|
}
|
|
this.xTicks.sort(this.DDM.numericSort)
|
|
}, setYTicks:function (g, c) {
|
|
this.yTicks = [];
|
|
this.yTickSize = c;
|
|
var e = {};
|
|
for (var d = this.initPageY; d >= this.minY; d = d - c) {
|
|
if (!e[d]) {
|
|
this.yTicks[this.yTicks.length] = d;
|
|
e[d] = true
|
|
}
|
|
}
|
|
for (d = this.initPageY; d <= this.maxY; d = d + c) {
|
|
if (!e[d]) {
|
|
this.yTicks[this.yTicks.length] = d;
|
|
e[d] = true
|
|
}
|
|
}
|
|
this.yTicks.sort(this.DDM.numericSort)
|
|
}, setXConstraint:function (e, d, c) {
|
|
this.leftConstraint = e;
|
|
this.rightConstraint = d;
|
|
this.minX = this.initPageX - e;
|
|
this.maxX = this.initPageX + d;
|
|
if (c) {
|
|
this.setXTicks(this.initPageX, c)
|
|
}
|
|
this.constrainX = true
|
|
}, clearConstraints:function () {
|
|
this.constrainX = false;
|
|
this.constrainY = false;
|
|
this.clearTicks()
|
|
}, clearTicks:function () {
|
|
this.xTicks = null;
|
|
this.yTicks = null;
|
|
this.xTickSize = 0;
|
|
this.yTickSize = 0
|
|
}, setYConstraint:function (c, e, d) {
|
|
this.topConstraint = c;
|
|
this.bottomConstraint = e;
|
|
this.minY = this.initPageY - c;
|
|
this.maxY = this.initPageY + e;
|
|
if (d) {
|
|
this.setYTicks(this.initPageY, d)
|
|
}
|
|
this.constrainY = true
|
|
}, resetConstraints:function () {
|
|
if (this.initPageX || this.initPageX === 0) {
|
|
var d = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0;
|
|
var c = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0;
|
|
this.setInitPosition(d, c)
|
|
} else {
|
|
this.setInitPosition()
|
|
}
|
|
if (this.constrainX) {
|
|
this.setXConstraint(this.leftConstraint, this.rightConstraint, this.xTickSize)
|
|
}
|
|
if (this.constrainY) {
|
|
this.setYConstraint(this.topConstraint, this.bottomConstraint, this.yTickSize)
|
|
}
|
|
}, getTick:function (k, g) {
|
|
if (!g) {
|
|
return k
|
|
} else {
|
|
if (g[0] >= k) {
|
|
return g[0]
|
|
} else {
|
|
for (var d = 0, c = g.length; d < c; ++d) {
|
|
var e = d + 1;
|
|
if (g[e] && g[e] >= k) {
|
|
var j = k - g[d];
|
|
var h = g[e] - k;
|
|
return(h > j) ? g[d] : g[e]
|
|
}
|
|
}
|
|
return g[g.length - 1]
|
|
}
|
|
}
|
|
}, toString:function () {
|
|
return("DragDrop " + this.id)
|
|
}}
|
|
})();
|
|
if (!Ext.dd.DragDropMgr) {
|
|
Ext.dd.DragDropMgr = function () {
|
|
var a = Ext.EventManager;
|
|
return{ids:{}, handleIds:{}, dragCurrent:null, dragOvers:{}, deltaX:0, deltaY:0, preventDefault:true, stopPropagation:true, initialized:false, locked:false, init:function () {
|
|
this.initialized = true
|
|
}, POINT:0, INTERSECT:1, mode:0, _execOnAll:function (d, c) {
|
|
for (var e in this.ids) {
|
|
for (var b in this.ids[e]) {
|
|
var g = this.ids[e][b];
|
|
if (!this.isTypeOfDD(g)) {
|
|
continue
|
|
}
|
|
g[d].apply(g, c)
|
|
}
|
|
}
|
|
}, _onLoad:function () {
|
|
this.init();
|
|
a.on(document, "mouseup", this.handleMouseUp, this, true);
|
|
a.on(document, "mousemove", this.handleMouseMove, this, true);
|
|
a.on(window, "unload", this._onUnload, this, true);
|
|
a.on(window, "resize", this._onResize, this, true)
|
|
}, _onResize:function (b) {
|
|
this._execOnAll("resetConstraints", [])
|
|
}, lock:function () {
|
|
this.locked = true
|
|
}, unlock:function () {
|
|
this.locked = false
|
|
}, isLocked:function () {
|
|
return this.locked
|
|
}, locationCache:{}, useCache:true, clickPixelThresh:3, clickTimeThresh:350, dragThreshMet:false, clickTimeout:null, startX:0, startY:0, regDragDrop:function (c, b) {
|
|
if (!this.initialized) {
|
|
this.init()
|
|
}
|
|
if (!this.ids[b]) {
|
|
this.ids[b] = {}
|
|
}
|
|
this.ids[b][c.id] = c
|
|
}, removeDDFromGroup:function (d, b) {
|
|
if (!this.ids[b]) {
|
|
this.ids[b] = {}
|
|
}
|
|
var c = this.ids[b];
|
|
if (c && c[d.id]) {
|
|
delete c[d.id]
|
|
}
|
|
}, _remove:function (c) {
|
|
for (var b in c.groups) {
|
|
if (b && this.ids[b] && this.ids[b][c.id]) {
|
|
delete this.ids[b][c.id]
|
|
}
|
|
}
|
|
delete this.handleIds[c.id]
|
|
}, regHandle:function (c, b) {
|
|
if (!this.handleIds[c]) {
|
|
this.handleIds[c] = {}
|
|
}
|
|
this.handleIds[c][b] = b
|
|
}, isDragDrop:function (b) {
|
|
return(this.getDDById(b)) ? true : false
|
|
}, getRelated:function (h, c) {
|
|
var g = [];
|
|
for (var e in h.groups) {
|
|
for (var d in this.ids[e]) {
|
|
var b = this.ids[e][d];
|
|
if (!this.isTypeOfDD(b)) {
|
|
continue
|
|
}
|
|
if (!c || b.isTarget) {
|
|
g[g.length] = b
|
|
}
|
|
}
|
|
}
|
|
return g
|
|
}, isLegalTarget:function (g, e) {
|
|
var c = this.getRelated(g, true);
|
|
for (var d = 0, b = c.length; d < b; ++d) {
|
|
if (c[d].id == e.id) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}, isTypeOfDD:function (b) {
|
|
return(b && b.__ygDragDrop)
|
|
}, isHandle:function (c, b) {
|
|
return(this.handleIds[c] && this.handleIds[c][b])
|
|
}, getDDById:function (c) {
|
|
for (var b in this.ids) {
|
|
if (this.ids[b][c]) {
|
|
return this.ids[b][c]
|
|
}
|
|
}
|
|
return null
|
|
}, handleMouseDown:function (d, c) {
|
|
if (Ext.QuickTips) {
|
|
Ext.QuickTips.ddDisable()
|
|
}
|
|
if (this.dragCurrent) {
|
|
this.handleMouseUp(d)
|
|
}
|
|
this.currentTarget = d.getTarget();
|
|
this.dragCurrent = c;
|
|
var b = c.getEl();
|
|
this.startX = d.getPageX();
|
|
this.startY = d.getPageY();
|
|
this.deltaX = this.startX - b.offsetLeft;
|
|
this.deltaY = this.startY - b.offsetTop;
|
|
this.dragThreshMet = false;
|
|
this.clickTimeout = setTimeout(function () {
|
|
var e = Ext.dd.DDM;
|
|
e.startDrag(e.startX, e.startY)
|
|
}, this.clickTimeThresh)
|
|
}, startDrag:function (b, c) {
|
|
clearTimeout(this.clickTimeout);
|
|
if (this.dragCurrent) {
|
|
this.dragCurrent.b4StartDrag(b, c);
|
|
this.dragCurrent.startDrag(b, c)
|
|
}
|
|
this.dragThreshMet = true
|
|
}, handleMouseUp:function (b) {
|
|
if (Ext.QuickTips) {
|
|
Ext.QuickTips.ddEnable()
|
|
}
|
|
if (!this.dragCurrent) {
|
|
return
|
|
}
|
|
clearTimeout(this.clickTimeout);
|
|
if (this.dragThreshMet) {
|
|
this.fireEvents(b, true)
|
|
} else {
|
|
}
|
|
this.stopDrag(b);
|
|
this.stopEvent(b)
|
|
}, stopEvent:function (b) {
|
|
if (this.stopPropagation) {
|
|
b.stopPropagation()
|
|
}
|
|
if (this.preventDefault) {
|
|
b.preventDefault()
|
|
}
|
|
}, stopDrag:function (b) {
|
|
if (this.dragCurrent) {
|
|
if (this.dragThreshMet) {
|
|
this.dragCurrent.b4EndDrag(b);
|
|
this.dragCurrent.endDrag(b)
|
|
}
|
|
this.dragCurrent.onMouseUp(b)
|
|
}
|
|
this.dragCurrent = null;
|
|
this.dragOvers = {}
|
|
}, handleMouseMove:function (d) {
|
|
if (!this.dragCurrent) {
|
|
return true
|
|
}
|
|
if (Ext.isIE && (d.button !== 0 && d.button !== 1 && d.button !== 2)) {
|
|
this.stopEvent(d);
|
|
return this.handleMouseUp(d)
|
|
}
|
|
if (!this.dragThreshMet) {
|
|
var c = Math.abs(this.startX - d.getPageX());
|
|
var b = Math.abs(this.startY - d.getPageY());
|
|
if (c > this.clickPixelThresh || b > this.clickPixelThresh) {
|
|
this.startDrag(this.startX, this.startY)
|
|
}
|
|
}
|
|
if (this.dragThreshMet) {
|
|
this.dragCurrent.b4Drag(d);
|
|
this.dragCurrent.onDrag(d);
|
|
if (!this.dragCurrent.moveOnly) {
|
|
this.fireEvents(d, false)
|
|
}
|
|
}
|
|
this.stopEvent(d);
|
|
return true
|
|
}, fireEvents:function (n, o) {
|
|
var q = this.dragCurrent;
|
|
if (!q || q.isLocked()) {
|
|
return
|
|
}
|
|
var r = n.getPoint();
|
|
var b = [];
|
|
var g = [];
|
|
var l = [];
|
|
var j = [];
|
|
var d = [];
|
|
for (var h in this.dragOvers) {
|
|
var c = this.dragOvers[h];
|
|
if (!this.isTypeOfDD(c)) {
|
|
continue
|
|
}
|
|
if (!this.isOverTarget(r, c, this.mode)) {
|
|
g.push(c)
|
|
}
|
|
b[h] = true;
|
|
delete this.dragOvers[h]
|
|
}
|
|
for (var p in q.groups) {
|
|
if ("string" != typeof p) {
|
|
continue
|
|
}
|
|
for (h in this.ids[p]) {
|
|
var k = this.ids[p][h];
|
|
if (!this.isTypeOfDD(k)) {
|
|
continue
|
|
}
|
|
if (k.isTarget && !k.isLocked() && ((k != q) || (q.ignoreSelf === false))) {
|
|
if (this.isOverTarget(r, k, this.mode)) {
|
|
if (o) {
|
|
j.push(k)
|
|
} else {
|
|
if (!b[k.id]) {
|
|
d.push(k)
|
|
} else {
|
|
l.push(k)
|
|
}
|
|
this.dragOvers[k.id] = k
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.mode) {
|
|
if (g.length) {
|
|
q.b4DragOut(n, g);
|
|
q.onDragOut(n, g)
|
|
}
|
|
if (d.length) {
|
|
q.onDragEnter(n, d)
|
|
}
|
|
if (l.length) {
|
|
q.b4DragOver(n, l);
|
|
q.onDragOver(n, l)
|
|
}
|
|
if (j.length) {
|
|
q.b4DragDrop(n, j);
|
|
q.onDragDrop(n, j)
|
|
}
|
|
} else {
|
|
var m = 0;
|
|
for (h = 0, m = g.length; h < m; ++h) {
|
|
q.b4DragOut(n, g[h].id);
|
|
q.onDragOut(n, g[h].id)
|
|
}
|
|
for (h = 0, m = d.length; h < m; ++h) {
|
|
q.onDragEnter(n, d[h].id)
|
|
}
|
|
for (h = 0, m = l.length; h < m; ++h) {
|
|
q.b4DragOver(n, l[h].id);
|
|
q.onDragOver(n, l[h].id)
|
|
}
|
|
for (h = 0, m = j.length; h < m; ++h) {
|
|
q.b4DragDrop(n, j[h].id);
|
|
q.onDragDrop(n, j[h].id)
|
|
}
|
|
}
|
|
if (o && !j.length) {
|
|
q.onInvalidDrop(n)
|
|
}
|
|
}, getBestMatch:function (d) {
|
|
var g = null;
|
|
var c = d.length;
|
|
if (c == 1) {
|
|
g = d[0]
|
|
} else {
|
|
for (var e = 0; e < c; ++e) {
|
|
var b = d[e];
|
|
if (b.cursorIsOver) {
|
|
g = b;
|
|
break
|
|
} else {
|
|
if (!g || g.overlap.getArea() < b.overlap.getArea()) {
|
|
g = b
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return g
|
|
}, refreshCache:function (c) {
|
|
for (var b in c) {
|
|
if ("string" != typeof b) {
|
|
continue
|
|
}
|
|
for (var d in this.ids[b]) {
|
|
var e = this.ids[b][d];
|
|
if (this.isTypeOfDD(e)) {
|
|
var g = this.getLocation(e);
|
|
if (g) {
|
|
this.locationCache[e.id] = g
|
|
} else {
|
|
delete this.locationCache[e.id]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, verifyEl:function (c) {
|
|
if (c) {
|
|
var b;
|
|
if (Ext.isIE) {
|
|
try {
|
|
b = c.offsetParent
|
|
} catch (d) {
|
|
}
|
|
} else {
|
|
b = c.offsetParent
|
|
}
|
|
if (b) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}, getLocation:function (j) {
|
|
if (!this.isTypeOfDD(j)) {
|
|
return null
|
|
}
|
|
var h = j.getEl(), o, g, d, q, p, s, c, n, i, m;
|
|
try {
|
|
o = Ext.lib.Dom.getXY(h)
|
|
} catch (k) {
|
|
}
|
|
if (!o) {
|
|
return null
|
|
}
|
|
g = o[0];
|
|
d = g + h.offsetWidth;
|
|
q = o[1];
|
|
p = q + h.offsetHeight;
|
|
s = q - j.padding[0];
|
|
c = d + j.padding[1];
|
|
n = p + j.padding[2];
|
|
i = g - j.padding[3];
|
|
m = new Ext.lib.Region(s, c, n, i);
|
|
h = Ext.get(h.parentNode);
|
|
while (h && m) {
|
|
if (h.isScrollable()) {
|
|
m = m.intersect(h.getRegion())
|
|
}
|
|
h = h.parent()
|
|
}
|
|
return m
|
|
}, isOverTarget:function (k, b, d) {
|
|
var g = this.locationCache[b.id];
|
|
if (!g || !this.useCache) {
|
|
g = this.getLocation(b);
|
|
this.locationCache[b.id] = g
|
|
}
|
|
if (!g) {
|
|
return false
|
|
}
|
|
b.cursorIsOver = g.contains(k);
|
|
var j = this.dragCurrent;
|
|
if (!j || !j.getTargetCoord || (!d && !j.constrainX && !j.constrainY)) {
|
|
return b.cursorIsOver
|
|
}
|
|
b.overlap = null;
|
|
var h = j.getTargetCoord(k.x, k.y);
|
|
var c = j.getDragEl();
|
|
var e = new Ext.lib.Region(h.y, h.x + c.offsetWidth, h.y + c.offsetHeight, h.x);
|
|
var i = e.intersect(g);
|
|
if (i) {
|
|
b.overlap = i;
|
|
return(d) ? true : b.cursorIsOver
|
|
} else {
|
|
return false
|
|
}
|
|
}, _onUnload:function (c, b) {
|
|
a.removeListener(document, "mouseup", this.handleMouseUp, this);
|
|
a.removeListener(document, "mousemove", this.handleMouseMove, this);
|
|
a.removeListener(window, "resize", this._onResize, this);
|
|
Ext.dd.DragDropMgr.unregAll()
|
|
}, unregAll:function () {
|
|
if (this.dragCurrent) {
|
|
this.stopDrag();
|
|
this.dragCurrent = null
|
|
}
|
|
this._execOnAll("unreg", []);
|
|
for (var b in this.elementCache) {
|
|
delete this.elementCache[b]
|
|
}
|
|
this.elementCache = {};
|
|
this.ids = {}
|
|
}, elementCache:{}, getElWrapper:function (c) {
|
|
var b = this.elementCache[c];
|
|
if (!b || !b.el) {
|
|
b = this.elementCache[c] = new this.ElementWrapper(Ext.getDom(c))
|
|
}
|
|
return b
|
|
}, getElement:function (b) {
|
|
return Ext.getDom(b)
|
|
}, getCss:function (c) {
|
|
var b = Ext.getDom(c);
|
|
return(b) ? b.style : null
|
|
}, ElementWrapper:function (b) {
|
|
this.el = b || null;
|
|
this.id = this.el && b.id;
|
|
this.css = this.el && b.style
|
|
}, getPosX:function (b) {
|
|
return Ext.lib.Dom.getX(b)
|
|
}, getPosY:function (b) {
|
|
return Ext.lib.Dom.getY(b)
|
|
}, swapNode:function (d, b) {
|
|
if (d.swapNode) {
|
|
d.swapNode(b)
|
|
} else {
|
|
var e = b.parentNode;
|
|
var c = b.nextSibling;
|
|
if (c == d) {
|
|
e.insertBefore(d, b)
|
|
} else {
|
|
if (b == d.nextSibling) {
|
|
e.insertBefore(b, d)
|
|
} else {
|
|
d.parentNode.replaceChild(b, d);
|
|
e.insertBefore(d, c)
|
|
}
|
|
}
|
|
}
|
|
}, getScroll:function () {
|
|
var d, b, e = document.documentElement, c = document.body;
|
|
if (e && (e.scrollTop || e.scrollLeft)) {
|
|
d = e.scrollTop;
|
|
b = e.scrollLeft
|
|
} else {
|
|
if (c) {
|
|
d = c.scrollTop;
|
|
b = c.scrollLeft
|
|
} else {
|
|
}
|
|
}
|
|
return{top:d, left:b}
|
|
}, getStyle:function (c, b) {
|
|
return Ext.fly(c).getStyle(b)
|
|
}, getScrollTop:function () {
|
|
return this.getScroll().top
|
|
}, getScrollLeft:function () {
|
|
return this.getScroll().left
|
|
}, moveToEl:function (b, d) {
|
|
var c = Ext.lib.Dom.getXY(d);
|
|
Ext.lib.Dom.setXY(b, c)
|
|
}, numericSort:function (d, c) {
|
|
return(d - c)
|
|
}, _timeoutCount:0, _addListeners:function () {
|
|
var b = Ext.dd.DDM;
|
|
if (Ext.lib.Event && document) {
|
|
b._onLoad()
|
|
} else {
|
|
if (b._timeoutCount > 2000) {
|
|
} else {
|
|
setTimeout(b._addListeners, 10);
|
|
if (document && document.body) {
|
|
b._timeoutCount += 1
|
|
}
|
|
}
|
|
}
|
|
}, handleWasClicked:function (b, d) {
|
|
if (this.isHandle(d, b.id)) {
|
|
return true
|
|
} else {
|
|
var c = b.parentNode;
|
|
while (c) {
|
|
if (this.isHandle(d, c.id)) {
|
|
return true
|
|
} else {
|
|
c = c.parentNode
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}}
|
|
}();
|
|
Ext.dd.DDM = Ext.dd.DragDropMgr;
|
|
Ext.dd.DDM._addListeners()
|
|
}
|
|
Ext.dd.DD = function (c, a, b) {
|
|
if (c) {
|
|
this.init(c, a, b)
|
|
}
|
|
};
|
|
Ext.extend(Ext.dd.DD, Ext.dd.DragDrop, {scroll:true, autoOffset:function (c, b) {
|
|
var a = c - this.startPageX;
|
|
var d = b - this.startPageY;
|
|
this.setDelta(a, d)
|
|
}, setDelta:function (b, a) {
|
|
this.deltaX = b;
|
|
this.deltaY = a
|
|
}, setDragElPos:function (c, b) {
|
|
var a = this.getDragEl();
|
|
this.alignElWithMouse(a, c, b)
|
|
}, alignElWithMouse:function (c, h, g) {
|
|
var e = this.getTargetCoord(h, g);
|
|
var b = c.dom ? c : Ext.fly(c, "_dd");
|
|
if (!this.deltaSetXY) {
|
|
var i = [e.x, e.y];
|
|
b.setXY(i);
|
|
var d = b.getLeft(true);
|
|
var a = b.getTop(true);
|
|
this.deltaSetXY = [d - e.x, a - e.y]
|
|
} else {
|
|
b.setLeftTop(e.x + this.deltaSetXY[0], e.y + this.deltaSetXY[1])
|
|
}
|
|
this.cachePosition(e.x, e.y);
|
|
this.autoScroll(e.x, e.y, c.offsetHeight, c.offsetWidth);
|
|
return e
|
|
}, cachePosition:function (b, a) {
|
|
if (b) {
|
|
this.lastPageX = b;
|
|
this.lastPageY = a
|
|
} else {
|
|
var c = Ext.lib.Dom.getXY(this.getEl());
|
|
this.lastPageX = c[0];
|
|
this.lastPageY = c[1]
|
|
}
|
|
}, autoScroll:function (l, k, e, m) {
|
|
if (this.scroll) {
|
|
var n = Ext.lib.Dom.getViewHeight();
|
|
var b = Ext.lib.Dom.getViewWidth();
|
|
var p = this.DDM.getScrollTop();
|
|
var d = this.DDM.getScrollLeft();
|
|
var j = e + k;
|
|
var o = m + l;
|
|
var i = (n + p - k - this.deltaY);
|
|
var g = (b + d - l - this.deltaX);
|
|
var c = 40;
|
|
var a = (document.all) ? 80 : 30;
|
|
if (j > n && i < c) {
|
|
window.scrollTo(d, p + a)
|
|
}
|
|
if (k < p && p > 0 && k - p < c) {
|
|
window.scrollTo(d, p - a)
|
|
}
|
|
if (o > b && g < c) {
|
|
window.scrollTo(d + a, p)
|
|
}
|
|
if (l < d && d > 0 && l - d < c) {
|
|
window.scrollTo(d - a, p)
|
|
}
|
|
}
|
|
}, getTargetCoord:function (c, b) {
|
|
var a = c - this.deltaX;
|
|
var d = b - this.deltaY;
|
|
if (this.constrainX) {
|
|
if (a < this.minX) {
|
|
a = this.minX
|
|
}
|
|
if (a > this.maxX) {
|
|
a = this.maxX
|
|
}
|
|
}
|
|
if (this.constrainY) {
|
|
if (d < this.minY) {
|
|
d = this.minY
|
|
}
|
|
if (d > this.maxY) {
|
|
d = this.maxY
|
|
}
|
|
}
|
|
a = this.getTick(a, this.xTicks);
|
|
d = this.getTick(d, this.yTicks);
|
|
return{x:a, y:d}
|
|
}, applyConfig:function () {
|
|
Ext.dd.DD.superclass.applyConfig.call(this);
|
|
this.scroll = (this.config.scroll !== false)
|
|
}, b4MouseDown:function (a) {
|
|
this.autoOffset(a.getPageX(), a.getPageY())
|
|
}, b4Drag:function (a) {
|
|
this.setDragElPos(a.getPageX(), a.getPageY())
|
|
}, toString:function () {
|
|
return("DD " + this.id)
|
|
}});
|
|
Ext.dd.DDProxy = function (c, a, b) {
|
|
if (c) {
|
|
this.init(c, a, b);
|
|
this.initFrame()
|
|
}
|
|
};
|
|
Ext.dd.DDProxy.dragElId = "ygddfdiv";
|
|
Ext.extend(Ext.dd.DDProxy, Ext.dd.DD, {resizeFrame:true, centerFrame:false, createFrame:function () {
|
|
var b = this;
|
|
var a = document.body;
|
|
if (!a || !a.firstChild) {
|
|
setTimeout(function () {
|
|
b.createFrame()
|
|
}, 50);
|
|
return
|
|
}
|
|
var d = this.getDragEl();
|
|
if (!d) {
|
|
d = document.createElement("div");
|
|
d.id = this.dragElId;
|
|
var c = d.style;
|
|
c.position = "absolute";
|
|
c.visibility = "hidden";
|
|
c.cursor = "move";
|
|
c.border = "2px solid #aaa";
|
|
c.zIndex = 999;
|
|
a.insertBefore(d, a.firstChild)
|
|
}
|
|
}, initFrame:function () {
|
|
this.createFrame()
|
|
}, applyConfig:function () {
|
|
Ext.dd.DDProxy.superclass.applyConfig.call(this);
|
|
this.resizeFrame = (this.config.resizeFrame !== false);
|
|
this.centerFrame = (this.config.centerFrame);
|
|
this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId)
|
|
}, showFrame:function (e, d) {
|
|
var c = this.getEl();
|
|
var a = this.getDragEl();
|
|
var b = a.style;
|
|
this._resizeProxy();
|
|
if (this.centerFrame) {
|
|
this.setDelta(Math.round(parseInt(b.width, 10) / 2), Math.round(parseInt(b.height, 10) / 2))
|
|
}
|
|
this.setDragElPos(e, d);
|
|
Ext.fly(a).show()
|
|
}, _resizeProxy:function () {
|
|
if (this.resizeFrame) {
|
|
var a = this.getEl();
|
|
Ext.fly(this.getDragEl()).setSize(a.offsetWidth, a.offsetHeight)
|
|
}
|
|
}, b4MouseDown:function (b) {
|
|
var a = b.getPageX();
|
|
var c = b.getPageY();
|
|
this.autoOffset(a, c);
|
|
this.setDragElPos(a, c)
|
|
}, b4StartDrag:function (a, b) {
|
|
this.showFrame(a, b)
|
|
}, b4EndDrag:function (a) {
|
|
Ext.fly(this.getDragEl()).hide()
|
|
}, endDrag:function (c) {
|
|
var b = this.getEl();
|
|
var a = this.getDragEl();
|
|
a.style.visibility = "";
|
|
this.beforeMove();
|
|
b.style.visibility = "hidden";
|
|
Ext.dd.DDM.moveToEl(b, a);
|
|
a.style.visibility = "hidden";
|
|
b.style.visibility = "";
|
|
this.afterDrag()
|
|
}, beforeMove:function () {
|
|
}, afterDrag:function () {
|
|
}, toString:function () {
|
|
return("DDProxy " + this.id)
|
|
}});
|
|
Ext.dd.DDTarget = function (c, a, b) {
|
|
if (c) {
|
|
this.initTarget(c, a, b)
|
|
}
|
|
};
|
|
Ext.extend(Ext.dd.DDTarget, Ext.dd.DragDrop, {getDragEl:Ext.emptyFn, isValidHandleChild:Ext.emptyFn, startDrag:Ext.emptyFn, endDrag:Ext.emptyFn, onDrag:Ext.emptyFn, onDragDrop:Ext.emptyFn, onDragEnter:Ext.emptyFn, onDragOut:Ext.emptyFn, onDragOver:Ext.emptyFn, onInvalidDrop:Ext.emptyFn, onMouseDown:Ext.emptyFn, onMouseUp:Ext.emptyFn, setXConstraint:Ext.emptyFn, setYConstraint:Ext.emptyFn, resetConstraints:Ext.emptyFn, clearConstraints:Ext.emptyFn, clearTicks:Ext.emptyFn, setInitPosition:Ext.emptyFn, setDragElId:Ext.emptyFn, setHandleElId:Ext.emptyFn, setOuterHandleElId:Ext.emptyFn, addInvalidHandleClass:Ext.emptyFn, addInvalidHandleId:Ext.emptyFn, addInvalidHandleType:Ext.emptyFn, removeInvalidHandleClass:Ext.emptyFn, removeInvalidHandleId:Ext.emptyFn, removeInvalidHandleType:Ext.emptyFn, toString:function () {
|
|
return("DDTarget " + this.id)
|
|
}});
|
|
Ext.dd.DragTracker = Ext.extend(Ext.util.Observable, {active:false, tolerance:5, autoStart:false, constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
this.addEvents("mousedown", "mouseup", "mousemove", "dragstart", "dragend", "drag");
|
|
this.dragRegion = new Ext.lib.Region(0, 0, 0, 0);
|
|
if (this.el) {
|
|
this.initEl(this.el)
|
|
}
|
|
Ext.dd.DragTracker.superclass.constructor.call(this, a)
|
|
}, initEl:function (a) {
|
|
this.el = Ext.get(a);
|
|
a.on("mousedown", this.onMouseDown, this, this.delegate ? {delegate:this.delegate} : undefined)
|
|
}, destroy:function () {
|
|
this.el.un("mousedown", this.onMouseDown, this);
|
|
delete this.el
|
|
}, onMouseDown:function (b, a) {
|
|
if (this.fireEvent("mousedown", this, b) !== false && this.onBeforeStart(b) !== false) {
|
|
this.startXY = this.lastXY = b.getXY();
|
|
this.dragTarget = this.delegate ? a : this.el.dom;
|
|
if (this.preventDefault !== false) {
|
|
b.preventDefault()
|
|
}
|
|
Ext.getDoc().on({scope:this, mouseup:this.onMouseUp, mousemove:this.onMouseMove, selectstart:this.stopSelect});
|
|
if (this.autoStart) {
|
|
this.timer = this.triggerStart.defer(this.autoStart === true ? 1000 : this.autoStart, this, [b])
|
|
}
|
|
}
|
|
}, onMouseMove:function (d, c) {
|
|
if (this.active && Ext.isIE && !d.browserEvent.button) {
|
|
d.preventDefault();
|
|
this.onMouseUp(d);
|
|
return
|
|
}
|
|
d.preventDefault();
|
|
var b = d.getXY(), a = this.startXY;
|
|
this.lastXY = b;
|
|
if (!this.active) {
|
|
if (Math.abs(a[0] - b[0]) > this.tolerance || Math.abs(a[1] - b[1]) > this.tolerance) {
|
|
this.triggerStart(d)
|
|
} else {
|
|
return
|
|
}
|
|
}
|
|
this.fireEvent("mousemove", this, d);
|
|
this.onDrag(d);
|
|
this.fireEvent("drag", this, d)
|
|
}, onMouseUp:function (c) {
|
|
var b = Ext.getDoc(), a = this.active;
|
|
b.un("mousemove", this.onMouseMove, this);
|
|
b.un("mouseup", this.onMouseUp, this);
|
|
b.un("selectstart", this.stopSelect, this);
|
|
c.preventDefault();
|
|
this.clearStart();
|
|
this.active = false;
|
|
delete this.elRegion;
|
|
this.fireEvent("mouseup", this, c);
|
|
if (a) {
|
|
this.onEnd(c);
|
|
this.fireEvent("dragend", this, c)
|
|
}
|
|
}, triggerStart:function (a) {
|
|
this.clearStart();
|
|
this.active = true;
|
|
this.onStart(a);
|
|
this.fireEvent("dragstart", this, a)
|
|
}, clearStart:function () {
|
|
if (this.timer) {
|
|
clearTimeout(this.timer);
|
|
delete this.timer
|
|
}
|
|
}, stopSelect:function (a) {
|
|
a.stopEvent();
|
|
return false
|
|
}, onBeforeStart:function (a) {
|
|
}, onStart:function (a) {
|
|
}, onDrag:function (a) {
|
|
}, onEnd:function (a) {
|
|
}, getDragTarget:function () {
|
|
return this.dragTarget
|
|
}, getDragCt:function () {
|
|
return this.el
|
|
}, getXY:function (a) {
|
|
return a ? this.constrainModes[a].call(this, this.lastXY) : this.lastXY
|
|
}, getOffset:function (c) {
|
|
var b = this.getXY(c), a = this.startXY;
|
|
return[a[0] - b[0], a[1] - b[1]]
|
|
}, constrainModes:{point:function (b) {
|
|
if (!this.elRegion) {
|
|
this.elRegion = this.getDragCt().getRegion()
|
|
}
|
|
var a = this.dragRegion;
|
|
a.left = b[0];
|
|
a.top = b[1];
|
|
a.right = b[0];
|
|
a.bottom = b[1];
|
|
a.constrainTo(this.elRegion);
|
|
return[a.left, a.top]
|
|
}}});
|
|
Ext.dd.ScrollManager = function () {
|
|
var c = Ext.dd.DragDropMgr;
|
|
var e = {};
|
|
var b = null;
|
|
var i = {};
|
|
var h = function (l) {
|
|
b = null;
|
|
a()
|
|
};
|
|
var j = function () {
|
|
if (c.dragCurrent) {
|
|
c.refreshCache(c.dragCurrent.groups)
|
|
}
|
|
};
|
|
var d = function () {
|
|
if (c.dragCurrent) {
|
|
var l = Ext.dd.ScrollManager;
|
|
var m = i.el.ddScrollConfig ? i.el.ddScrollConfig.increment : l.increment;
|
|
if (!l.animate) {
|
|
if (i.el.scroll(i.dir, m)) {
|
|
j()
|
|
}
|
|
} else {
|
|
i.el.scroll(i.dir, m, true, l.animDuration, j)
|
|
}
|
|
}
|
|
};
|
|
var a = function () {
|
|
if (i.id) {
|
|
clearInterval(i.id)
|
|
}
|
|
i.id = 0;
|
|
i.el = null;
|
|
i.dir = ""
|
|
};
|
|
var g = function (m, l) {
|
|
a();
|
|
i.el = m;
|
|
i.dir = l;
|
|
var o = m.ddScrollConfig ? m.ddScrollConfig.ddGroup : undefined, n = (m.ddScrollConfig && m.ddScrollConfig.frequency) ? m.ddScrollConfig.frequency : Ext.dd.ScrollManager.frequency;
|
|
if (o === undefined || c.dragCurrent.ddGroup == o) {
|
|
i.id = setInterval(d, n)
|
|
}
|
|
};
|
|
var k = function (o, q) {
|
|
if (q || !c.dragCurrent) {
|
|
return
|
|
}
|
|
var s = Ext.dd.ScrollManager;
|
|
if (!b || b != c.dragCurrent) {
|
|
b = c.dragCurrent;
|
|
s.refreshCache()
|
|
}
|
|
var t = Ext.lib.Event.getXY(o);
|
|
var u = new Ext.lib.Point(t[0], t[1]);
|
|
for (var m in e) {
|
|
var n = e[m], l = n._region;
|
|
var p = n.ddScrollConfig ? n.ddScrollConfig : s;
|
|
if (l && l.contains(u) && n.isScrollable()) {
|
|
if (l.bottom - u.y <= p.vthresh) {
|
|
if (i.el != n) {
|
|
g(n, "down")
|
|
}
|
|
return
|
|
} else {
|
|
if (l.right - u.x <= p.hthresh) {
|
|
if (i.el != n) {
|
|
g(n, "left")
|
|
}
|
|
return
|
|
} else {
|
|
if (u.y - l.top <= p.vthresh) {
|
|
if (i.el != n) {
|
|
g(n, "up")
|
|
}
|
|
return
|
|
} else {
|
|
if (u.x - l.left <= p.hthresh) {
|
|
if (i.el != n) {
|
|
g(n, "right")
|
|
}
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
a()
|
|
};
|
|
c.fireEvents = c.fireEvents.createSequence(k, c);
|
|
c.stopDrag = c.stopDrag.createSequence(h, c);
|
|
return{register:function (n) {
|
|
if (Ext.isArray(n)) {
|
|
for (var m = 0, l = n.length; m < l; m++) {
|
|
this.register(n[m])
|
|
}
|
|
} else {
|
|
n = Ext.get(n);
|
|
e[n.id] = n
|
|
}
|
|
}, unregister:function (n) {
|
|
if (Ext.isArray(n)) {
|
|
for (var m = 0, l = n.length; m < l; m++) {
|
|
this.unregister(n[m])
|
|
}
|
|
} else {
|
|
n = Ext.get(n);
|
|
delete e[n.id]
|
|
}
|
|
}, vthresh:25, hthresh:25, increment:100, frequency:500, animate:true, animDuration:0.4, ddGroup:undefined, refreshCache:function () {
|
|
for (var l in e) {
|
|
if (typeof e[l] == "object") {
|
|
e[l]._region = e[l].getRegion()
|
|
}
|
|
}
|
|
}}
|
|
}();
|
|
Ext.dd.Registry = function () {
|
|
var d = {};
|
|
var b = {};
|
|
var a = 0;
|
|
var c = function (g, e) {
|
|
if (typeof g == "string") {
|
|
return g
|
|
}
|
|
var h = g.id;
|
|
if (!h && e !== false) {
|
|
h = "extdd-" + (++a);
|
|
g.id = h
|
|
}
|
|
return h
|
|
};
|
|
return{register:function (j, k) {
|
|
k = k || {};
|
|
if (typeof j == "string") {
|
|
j = document.getElementById(j)
|
|
}
|
|
k.ddel = j;
|
|
d[c(j)] = k;
|
|
if (k.isHandle !== false) {
|
|
b[k.ddel.id] = k
|
|
}
|
|
if (k.handles) {
|
|
var h = k.handles;
|
|
for (var g = 0, e = h.length; g < e; g++) {
|
|
b[c(h[g])] = k
|
|
}
|
|
}
|
|
}, unregister:function (j) {
|
|
var l = c(j, false);
|
|
var k = d[l];
|
|
if (k) {
|
|
delete d[l];
|
|
if (k.handles) {
|
|
var h = k.handles;
|
|
for (var g = 0, e = h.length; g < e; g++) {
|
|
delete b[c(h[g], false)]
|
|
}
|
|
}
|
|
}
|
|
}, getHandle:function (e) {
|
|
if (typeof e != "string") {
|
|
e = e.id
|
|
}
|
|
return b[e]
|
|
}, getHandleFromEvent:function (h) {
|
|
var g = Ext.lib.Event.getTarget(h);
|
|
return g ? b[g.id] : null
|
|
}, getTarget:function (e) {
|
|
if (typeof e != "string") {
|
|
e = e.id
|
|
}
|
|
return d[e]
|
|
}, getTargetFromEvent:function (h) {
|
|
var g = Ext.lib.Event.getTarget(h);
|
|
return g ? d[g.id] || b[g.id] : null
|
|
}}
|
|
}();
|
|
Ext.dd.StatusProxy = function (a) {
|
|
Ext.apply(this, a);
|
|
this.id = this.id || Ext.id();
|
|
this.el = new Ext.Layer({dh:{id:this.id, tag:"div", cls:"x-dd-drag-proxy " + this.dropNotAllowed, children:[
|
|
{tag:"div", cls:"x-dd-drop-icon"},
|
|
{tag:"div", cls:"x-dd-drag-ghost"}
|
|
]}, shadow:!a || a.shadow !== false});
|
|
this.ghost = Ext.get(this.el.dom.childNodes[1]);
|
|
this.dropStatus = this.dropNotAllowed
|
|
};
|
|
Ext.dd.StatusProxy.prototype = {dropAllowed:"x-dd-drop-ok", dropNotAllowed:"x-dd-drop-nodrop", setStatus:function (a) {
|
|
a = a || this.dropNotAllowed;
|
|
if (this.dropStatus != a) {
|
|
this.el.replaceClass(this.dropStatus, a);
|
|
this.dropStatus = a
|
|
}
|
|
}, reset:function (a) {
|
|
this.el.dom.className = "x-dd-drag-proxy " + this.dropNotAllowed;
|
|
this.dropStatus = this.dropNotAllowed;
|
|
if (a) {
|
|
this.ghost.update("")
|
|
}
|
|
}, update:function (a) {
|
|
if (typeof a == "string") {
|
|
this.ghost.update(a)
|
|
} else {
|
|
this.ghost.update("");
|
|
a.style.margin = "0";
|
|
this.ghost.dom.appendChild(a)
|
|
}
|
|
var b = this.ghost.dom.firstChild;
|
|
if (b) {
|
|
Ext.fly(b).setStyle("float", "none")
|
|
}
|
|
}, getEl:function () {
|
|
return this.el
|
|
}, getGhost:function () {
|
|
return this.ghost
|
|
}, hide:function (a) {
|
|
this.el.hide();
|
|
if (a) {
|
|
this.reset(true)
|
|
}
|
|
}, stop:function () {
|
|
if (this.anim && this.anim.isAnimated && this.anim.isAnimated()) {
|
|
this.anim.stop()
|
|
}
|
|
}, show:function () {
|
|
this.el.show()
|
|
}, sync:function () {
|
|
this.el.sync()
|
|
}, repair:function (b, c, a) {
|
|
this.callback = c;
|
|
this.scope = a;
|
|
if (b && this.animRepair !== false) {
|
|
this.el.addClass("x-dd-drag-repair");
|
|
this.el.hideUnders(true);
|
|
this.anim = this.el.shift({duration:this.repairDuration || 0.5, easing:"easeOut", xy:b, stopFx:true, callback:this.afterRepair, scope:this})
|
|
} else {
|
|
this.afterRepair()
|
|
}
|
|
}, afterRepair:function () {
|
|
this.hide(true);
|
|
if (typeof this.callback == "function") {
|
|
this.callback.call(this.scope || this)
|
|
}
|
|
this.callback = null;
|
|
this.scope = null
|
|
}, destroy:function () {
|
|
Ext.destroy(this.ghost, this.el)
|
|
}};
|
|
Ext.dd.DragSource = function (b, a) {
|
|
this.el = Ext.get(b);
|
|
if (!this.dragData) {
|
|
this.dragData = {}
|
|
}
|
|
Ext.apply(this, a);
|
|
if (!this.proxy) {
|
|
this.proxy = new Ext.dd.StatusProxy()
|
|
}
|
|
Ext.dd.DragSource.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, {dragElId:this.proxy.id, resizeFrame:false, isTarget:false, scroll:this.scroll === true});
|
|
this.dragging = false
|
|
};
|
|
Ext.extend(Ext.dd.DragSource, Ext.dd.DDProxy, {dropAllowed:"x-dd-drop-ok", dropNotAllowed:"x-dd-drop-nodrop", getDragData:function (a) {
|
|
return this.dragData
|
|
}, onDragEnter:function (c, d) {
|
|
var b = Ext.dd.DragDropMgr.getDDById(d);
|
|
this.cachedTarget = b;
|
|
if (this.beforeDragEnter(b, c, d) !== false) {
|
|
if (b.isNotifyTarget) {
|
|
var a = b.notifyEnter(this, c, this.dragData);
|
|
this.proxy.setStatus(a)
|
|
} else {
|
|
this.proxy.setStatus(this.dropAllowed)
|
|
}
|
|
if (this.afterDragEnter) {
|
|
this.afterDragEnter(b, c, d)
|
|
}
|
|
}
|
|
}, beforeDragEnter:function (b, a, c) {
|
|
return true
|
|
}, alignElWithMouse:function () {
|
|
Ext.dd.DragSource.superclass.alignElWithMouse.apply(this, arguments);
|
|
this.proxy.sync()
|
|
}, onDragOver:function (c, d) {
|
|
var b = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(d);
|
|
if (this.beforeDragOver(b, c, d) !== false) {
|
|
if (b.isNotifyTarget) {
|
|
var a = b.notifyOver(this, c, this.dragData);
|
|
this.proxy.setStatus(a)
|
|
}
|
|
if (this.afterDragOver) {
|
|
this.afterDragOver(b, c, d)
|
|
}
|
|
}
|
|
}, beforeDragOver:function (b, a, c) {
|
|
return true
|
|
}, onDragOut:function (b, c) {
|
|
var a = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(c);
|
|
if (this.beforeDragOut(a, b, c) !== false) {
|
|
if (a.isNotifyTarget) {
|
|
a.notifyOut(this, b, this.dragData)
|
|
}
|
|
this.proxy.reset();
|
|
if (this.afterDragOut) {
|
|
this.afterDragOut(a, b, c)
|
|
}
|
|
}
|
|
this.cachedTarget = null
|
|
}, beforeDragOut:function (b, a, c) {
|
|
return true
|
|
}, onDragDrop:function (b, c) {
|
|
var a = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(c);
|
|
if (this.beforeDragDrop(a, b, c) !== false) {
|
|
if (a.isNotifyTarget) {
|
|
if (a.notifyDrop(this, b, this.dragData)) {
|
|
this.onValidDrop(a, b, c)
|
|
} else {
|
|
this.onInvalidDrop(a, b, c)
|
|
}
|
|
} else {
|
|
this.onValidDrop(a, b, c)
|
|
}
|
|
if (this.afterDragDrop) {
|
|
this.afterDragDrop(a, b, c)
|
|
}
|
|
}
|
|
delete this.cachedTarget
|
|
}, beforeDragDrop:function (b, a, c) {
|
|
return true
|
|
}, onValidDrop:function (b, a, c) {
|
|
this.hideProxy();
|
|
if (this.afterValidDrop) {
|
|
this.afterValidDrop(b, a, c)
|
|
}
|
|
}, getRepairXY:function (b, a) {
|
|
return this.el.getXY()
|
|
}, onInvalidDrop:function (b, a, c) {
|
|
this.beforeInvalidDrop(b, a, c);
|
|
if (this.cachedTarget) {
|
|
if (this.cachedTarget.isNotifyTarget) {
|
|
this.cachedTarget.notifyOut(this, a, this.dragData)
|
|
}
|
|
this.cacheTarget = null
|
|
}
|
|
this.proxy.repair(this.getRepairXY(a, this.dragData), this.afterRepair, this);
|
|
if (this.afterInvalidDrop) {
|
|
this.afterInvalidDrop(a, c)
|
|
}
|
|
}, afterRepair:function () {
|
|
if (Ext.enableFx) {
|
|
this.el.highlight(this.hlColor || "c3daf9")
|
|
}
|
|
this.dragging = false
|
|
}, beforeInvalidDrop:function (b, a, c) {
|
|
return true
|
|
}, handleMouseDown:function (b) {
|
|
if (this.dragging) {
|
|
return
|
|
}
|
|
var a = this.getDragData(b);
|
|
if (a && this.onBeforeDrag(a, b) !== false) {
|
|
this.dragData = a;
|
|
this.proxy.stop();
|
|
Ext.dd.DragSource.superclass.handleMouseDown.apply(this, arguments)
|
|
}
|
|
}, onBeforeDrag:function (a, b) {
|
|
return true
|
|
}, onStartDrag:Ext.emptyFn, startDrag:function (a, b) {
|
|
this.proxy.reset();
|
|
this.dragging = true;
|
|
this.proxy.update("");
|
|
this.onInitDrag(a, b);
|
|
this.proxy.show()
|
|
}, onInitDrag:function (a, c) {
|
|
var b = this.el.dom.cloneNode(true);
|
|
b.id = Ext.id();
|
|
this.proxy.update(b);
|
|
this.onStartDrag(a, c);
|
|
return true
|
|
}, getProxy:function () {
|
|
return this.proxy
|
|
}, hideProxy:function () {
|
|
this.proxy.hide();
|
|
this.proxy.reset(true);
|
|
this.dragging = false
|
|
}, triggerCacheRefresh:function () {
|
|
Ext.dd.DDM.refreshCache(this.groups)
|
|
}, b4EndDrag:function (a) {
|
|
}, endDrag:function (a) {
|
|
this.onEndDrag(this.dragData, a)
|
|
}, onEndDrag:function (a, b) {
|
|
}, autoOffset:function (a, b) {
|
|
this.setDelta(-12, -20)
|
|
}, destroy:function () {
|
|
Ext.dd.DragSource.superclass.destroy.call(this);
|
|
Ext.destroy(this.proxy)
|
|
}});
|
|
Ext.dd.DropTarget = Ext.extend(Ext.dd.DDTarget, {constructor:function (b, a) {
|
|
this.el = Ext.get(b);
|
|
Ext.apply(this, a);
|
|
if (this.containerScroll) {
|
|
Ext.dd.ScrollManager.register(this.el)
|
|
}
|
|
Ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, {isTarget:true})
|
|
}, dropAllowed:"x-dd-drop-ok", dropNotAllowed:"x-dd-drop-nodrop", isTarget:true, isNotifyTarget:true, notifyEnter:function (a, c, b) {
|
|
if (this.overClass) {
|
|
this.el.addClass(this.overClass)
|
|
}
|
|
return this.dropAllowed
|
|
}, notifyOver:function (a, c, b) {
|
|
return this.dropAllowed
|
|
}, notifyOut:function (a, c, b) {
|
|
if (this.overClass) {
|
|
this.el.removeClass(this.overClass)
|
|
}
|
|
}, notifyDrop:function (a, c, b) {
|
|
return false
|
|
}, destroy:function () {
|
|
Ext.dd.DropTarget.superclass.destroy.call(this);
|
|
if (this.containerScroll) {
|
|
Ext.dd.ScrollManager.unregister(this.el)
|
|
}
|
|
}});
|
|
Ext.dd.DragZone = Ext.extend(Ext.dd.DragSource, {constructor:function (b, a) {
|
|
Ext.dd.DragZone.superclass.constructor.call(this, b, a);
|
|
if (this.containerScroll) {
|
|
Ext.dd.ScrollManager.register(this.el)
|
|
}
|
|
}, getDragData:function (a) {
|
|
return Ext.dd.Registry.getHandleFromEvent(a)
|
|
}, onInitDrag:function (a, b) {
|
|
this.proxy.update(this.dragData.ddel.cloneNode(true));
|
|
this.onStartDrag(a, b);
|
|
return true
|
|
}, afterRepair:function () {
|
|
if (Ext.enableFx) {
|
|
Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9")
|
|
}
|
|
this.dragging = false
|
|
}, getRepairXY:function (a) {
|
|
return Ext.Element.fly(this.dragData.ddel).getXY()
|
|
}, destroy:function () {
|
|
Ext.dd.DragZone.superclass.destroy.call(this);
|
|
if (this.containerScroll) {
|
|
Ext.dd.ScrollManager.unregister(this.el)
|
|
}
|
|
}});
|
|
Ext.dd.DropZone = function (b, a) {
|
|
Ext.dd.DropZone.superclass.constructor.call(this, b, a)
|
|
};
|
|
Ext.extend(Ext.dd.DropZone, Ext.dd.DropTarget, {getTargetFromEvent:function (a) {
|
|
return Ext.dd.Registry.getTargetFromEvent(a)
|
|
}, onNodeEnter:function (d, a, c, b) {
|
|
}, onNodeOver:function (d, a, c, b) {
|
|
return this.dropAllowed
|
|
}, onNodeOut:function (d, a, c, b) {
|
|
}, onNodeDrop:function (d, a, c, b) {
|
|
return false
|
|
}, onContainerOver:function (a, c, b) {
|
|
return this.dropNotAllowed
|
|
}, onContainerDrop:function (a, c, b) {
|
|
return false
|
|
}, notifyEnter:function (a, c, b) {
|
|
return this.dropNotAllowed
|
|
}, notifyOver:function (a, c, b) {
|
|
var d = this.getTargetFromEvent(c);
|
|
if (!d) {
|
|
if (this.lastOverNode) {
|
|
this.onNodeOut(this.lastOverNode, a, c, b);
|
|
this.lastOverNode = null
|
|
}
|
|
return this.onContainerOver(a, c, b)
|
|
}
|
|
if (this.lastOverNode != d) {
|
|
if (this.lastOverNode) {
|
|
this.onNodeOut(this.lastOverNode, a, c, b)
|
|
}
|
|
this.onNodeEnter(d, a, c, b);
|
|
this.lastOverNode = d
|
|
}
|
|
return this.onNodeOver(d, a, c, b)
|
|
}, notifyOut:function (a, c, b) {
|
|
if (this.lastOverNode) {
|
|
this.onNodeOut(this.lastOverNode, a, c, b);
|
|
this.lastOverNode = null
|
|
}
|
|
}, notifyDrop:function (a, c, b) {
|
|
if (this.lastOverNode) {
|
|
this.onNodeOut(this.lastOverNode, a, c, b);
|
|
this.lastOverNode = null
|
|
}
|
|
var d = this.getTargetFromEvent(c);
|
|
return d ? this.onNodeDrop(d, a, c, b) : this.onContainerDrop(a, c, b)
|
|
}, triggerCacheRefresh:function () {
|
|
Ext.dd.DDM.refreshCache(this.groups)
|
|
}});
|
|
Ext.Element.addMethods({initDD:function (c, b, d) {
|
|
var a = new Ext.dd.DD(Ext.id(this.dom), c, b);
|
|
return Ext.apply(a, d)
|
|
}, initDDProxy:function (c, b, d) {
|
|
var a = new Ext.dd.DDProxy(Ext.id(this.dom), c, b);
|
|
return Ext.apply(a, d)
|
|
}, initDDTarget:function (c, b, d) {
|
|
var a = new Ext.dd.DDTarget(Ext.id(this.dom), c, b);
|
|
return Ext.apply(a, d)
|
|
}});
|
|
Ext.data.Api = (function () {
|
|
var a = {};
|
|
return{actions:{create:"create", read:"read", update:"update", destroy:"destroy"}, restActions:{create:"POST", read:"GET", update:"PUT", destroy:"DELETE"}, isAction:function (b) {
|
|
return(Ext.data.Api.actions[b]) ? true : false
|
|
}, getVerb:function (b) {
|
|
if (a[b]) {
|
|
return a[b]
|
|
}
|
|
for (var c in this.actions) {
|
|
if (this.actions[c] === b) {
|
|
a[b] = c;
|
|
break
|
|
}
|
|
}
|
|
return(a[b] !== undefined) ? a[b] : null
|
|
}, isValid:function (b) {
|
|
var e = [];
|
|
var d = this.actions;
|
|
for (var c in b) {
|
|
if (!(c in d)) {
|
|
e.push(c)
|
|
}
|
|
}
|
|
return(!e.length) ? true : e
|
|
}, hasUniqueUrl:function (c, g) {
|
|
var b = (c.api[g]) ? c.api[g].url : null;
|
|
var e = true;
|
|
for (var d in c.api) {
|
|
if ((e = (d === g) ? true : (c.api[d].url != b) ? true : false) === false) {
|
|
break
|
|
}
|
|
}
|
|
return e
|
|
}, prepare:function (b) {
|
|
if (!b.api) {
|
|
b.api = {}
|
|
}
|
|
for (var d in this.actions) {
|
|
var c = this.actions[d];
|
|
b.api[c] = b.api[c] || b.url || b.directFn;
|
|
if (typeof(b.api[c]) == "string") {
|
|
b.api[c] = {url:b.api[c], method:(b.restful === true) ? Ext.data.Api.restActions[c] : undefined}
|
|
}
|
|
}
|
|
}, restify:function (b) {
|
|
b.restful = true;
|
|
for (var c in this.restActions) {
|
|
b.api[this.actions[c]].method || (b.api[this.actions[c]].method = this.restActions[c])
|
|
}
|
|
b.onWrite = b.onWrite.createInterceptor(function (i, j, g, e) {
|
|
var d = j.reader;
|
|
var h = new Ext.data.Response({action:i, raw:g});
|
|
switch (g.status) {
|
|
case 200:
|
|
return true;
|
|
break;
|
|
case 201:
|
|
if (Ext.isEmpty(h.raw.responseText)) {
|
|
h.success = true
|
|
} else {
|
|
return true
|
|
}
|
|
break;
|
|
case 204:
|
|
h.success = true;
|
|
h.data = null;
|
|
break;
|
|
default:
|
|
return true;
|
|
break
|
|
}
|
|
if (h.success === true) {
|
|
this.fireEvent("write", this, i, h.data, h, e, j.request.arg)
|
|
} else {
|
|
this.fireEvent("exception", this, "remote", i, j, h, e)
|
|
}
|
|
j.request.callback.call(j.request.scope, h.data, h, h.success);
|
|
return false
|
|
}, b)
|
|
}}
|
|
})();
|
|
Ext.data.Response = function (b, a) {
|
|
Ext.apply(this, b, {raw:a})
|
|
};
|
|
Ext.data.Response.prototype = {message:null, success:false, status:null, root:null, raw:null, getMessage:function () {
|
|
return this.message
|
|
}, getSuccess:function () {
|
|
return this.success
|
|
}, getStatus:function () {
|
|
return this.status
|
|
}, getRoot:function () {
|
|
return this.root
|
|
}, getRawResponse:function () {
|
|
return this.raw
|
|
}};
|
|
Ext.data.Api.Error = Ext.extend(Ext.Error, {constructor:function (b, a) {
|
|
this.arg = a;
|
|
Ext.Error.call(this, b)
|
|
}, name:"Ext.data.Api"});
|
|
Ext.apply(Ext.data.Api.Error.prototype, {lang:{"action-url-undefined":"No fallback url defined for this action. When defining a DataProxy api, please be sure to define an url for each CRUD action in Ext.data.Api.actions or define a default url in addition to your api-configuration.", invalid:"received an invalid API-configuration. Please ensure your proxy API-configuration contains only the actions defined in Ext.data.Api.actions", "invalid-url":"Invalid url. Please review your proxy configuration.", execute:'Attempted to execute an unknown action. Valid API actions are defined in Ext.data.Api.actions"'}});
|
|
Ext.data.SortTypes = {none:function (a) {
|
|
return a
|
|
}, stripTagsRE:/<\/?[^>]+>/gi, asText:function (a) {
|
|
return String(a).replace(this.stripTagsRE, "")
|
|
}, asUCText:function (a) {
|
|
return String(a).toUpperCase().replace(this.stripTagsRE, "")
|
|
}, asUCString:function (a) {
|
|
return String(a).toUpperCase()
|
|
}, asDate:function (a) {
|
|
if (!a) {
|
|
return 0
|
|
}
|
|
if (Ext.isDate(a)) {
|
|
return a.getTime()
|
|
}
|
|
return Date.parse(String(a))
|
|
}, asFloat:function (a) {
|
|
var b = parseFloat(String(a).replace(/,/g, ""));
|
|
return isNaN(b) ? 0 : b
|
|
}, asInt:function (a) {
|
|
var b = parseInt(String(a).replace(/,/g, ""), 10);
|
|
return isNaN(b) ? 0 : b
|
|
}};
|
|
Ext.data.Record = function (a, b) {
|
|
this.id = (b || b === 0) ? b : Ext.data.Record.id(this);
|
|
this.data = a || {}
|
|
};
|
|
Ext.data.Record.create = function (e) {
|
|
var c = Ext.extend(Ext.data.Record, {});
|
|
var d = c.prototype;
|
|
d.fields = new Ext.util.MixedCollection(false, function (g) {
|
|
return g.name
|
|
});
|
|
for (var b = 0, a = e.length; b < a; b++) {
|
|
d.fields.add(new Ext.data.Field(e[b]))
|
|
}
|
|
c.getField = function (g) {
|
|
return d.fields.get(g)
|
|
};
|
|
return c
|
|
};
|
|
Ext.data.Record.PREFIX = "ext-record";
|
|
Ext.data.Record.AUTO_ID = 1;
|
|
Ext.data.Record.EDIT = "edit";
|
|
Ext.data.Record.REJECT = "reject";
|
|
Ext.data.Record.COMMIT = "commit";
|
|
Ext.data.Record.id = function (a) {
|
|
a.phantom = true;
|
|
return[Ext.data.Record.PREFIX, "-", Ext.data.Record.AUTO_ID++].join("")
|
|
};
|
|
Ext.data.Record.prototype = {dirty:false, editing:false, error:null, modified:null, phantom:false, join:function (a) {
|
|
this.store = a
|
|
}, set:function (a, c) {
|
|
var b = Ext.isPrimitive(c) ? String : Ext.encode;
|
|
if (b(this.data[a]) == b(c)) {
|
|
return
|
|
}
|
|
this.dirty = true;
|
|
if (!this.modified) {
|
|
this.modified = {}
|
|
}
|
|
if (this.modified[a] === undefined) {
|
|
this.modified[a] = this.data[a]
|
|
}
|
|
this.data[a] = c;
|
|
if (!this.editing) {
|
|
this.afterEdit()
|
|
}
|
|
}, afterEdit:function () {
|
|
if (this.store != undefined && typeof this.store.afterEdit == "function") {
|
|
this.store.afterEdit(this)
|
|
}
|
|
}, afterReject:function () {
|
|
if (this.store) {
|
|
this.store.afterReject(this)
|
|
}
|
|
}, afterCommit:function () {
|
|
if (this.store) {
|
|
this.store.afterCommit(this)
|
|
}
|
|
}, get:function (a) {
|
|
return this.data[a]
|
|
}, beginEdit:function () {
|
|
this.editing = true;
|
|
this.modified = this.modified || {}
|
|
}, cancelEdit:function () {
|
|
this.editing = false;
|
|
delete this.modified
|
|
}, endEdit:function () {
|
|
this.editing = false;
|
|
if (this.dirty) {
|
|
this.afterEdit()
|
|
}
|
|
}, reject:function (b) {
|
|
var a = this.modified;
|
|
for (var c in a) {
|
|
if (typeof a[c] != "function") {
|
|
this.data[c] = a[c]
|
|
}
|
|
}
|
|
this.dirty = false;
|
|
delete this.modified;
|
|
this.editing = false;
|
|
if (b !== true) {
|
|
this.afterReject()
|
|
}
|
|
}, commit:function (a) {
|
|
this.dirty = false;
|
|
delete this.modified;
|
|
this.editing = false;
|
|
if (a !== true) {
|
|
this.afterCommit()
|
|
}
|
|
}, getChanges:function () {
|
|
var a = this.modified, b = {};
|
|
for (var c in a) {
|
|
if (a.hasOwnProperty(c)) {
|
|
b[c] = this.data[c]
|
|
}
|
|
}
|
|
return b
|
|
}, hasError:function () {
|
|
return this.error !== null
|
|
}, clearError:function () {
|
|
this.error = null
|
|
}, copy:function (a) {
|
|
return new this.constructor(Ext.apply({}, this.data), a || this.id)
|
|
}, isModified:function (a) {
|
|
return !!(this.modified && this.modified.hasOwnProperty(a))
|
|
}, isValid:function () {
|
|
return this.fields.find(function (a) {
|
|
return(a.allowBlank === false && Ext.isEmpty(this.data[a.name])) ? true : false
|
|
}, this) ? false : true
|
|
}, markDirty:function () {
|
|
this.dirty = true;
|
|
if (!this.modified) {
|
|
this.modified = {}
|
|
}
|
|
this.fields.each(function (a) {
|
|
this.modified[a.name] = this.data[a.name]
|
|
}, this)
|
|
}};
|
|
Ext.StoreMgr = Ext.apply(new Ext.util.MixedCollection(), {register:function () {
|
|
for (var a = 0, b; (b = arguments[a]); a++) {
|
|
this.add(b)
|
|
}
|
|
}, unregister:function () {
|
|
for (var a = 0, b; (b = arguments[a]); a++) {
|
|
this.remove(this.lookup(b))
|
|
}
|
|
}, lookup:function (e) {
|
|
if (Ext.isArray(e)) {
|
|
var b = ["field1"], d = !Ext.isArray(e[0]);
|
|
if (!d) {
|
|
for (var c = 2, a = e[0].length; c <= a; ++c) {
|
|
b.push("field" + c)
|
|
}
|
|
}
|
|
return new Ext.data.ArrayStore({fields:b, data:e, expandData:d, autoDestroy:true, autoCreated:true})
|
|
}
|
|
return Ext.isObject(e) ? (e.events ? e : Ext.create(e, "store")) : this.get(e)
|
|
}, getKey:function (a) {
|
|
return a.storeId
|
|
}});
|
|
Ext.data.Store = Ext.extend(Ext.util.Observable, {writer:undefined, remoteSort:false, autoDestroy:false, pruneModifiedRecords:false, lastOptions:null, autoSave:true, batch:true, restful:false, paramNames:undefined, defaultParamNames:{start:"start", limit:"limit", sort:"sort", dir:"dir"}, isDestroyed:false, hasMultiSort:false, batchKey:"_ext_batch_", constructor:function (a) {
|
|
this.data = new Ext.util.MixedCollection(false);
|
|
this.data.getKey = function (b) {
|
|
return b.id
|
|
};
|
|
this.removed = [];
|
|
if (a && a.data) {
|
|
this.inlineData = a.data;
|
|
delete a.data
|
|
}
|
|
Ext.apply(this, a);
|
|
this.baseParams = Ext.isObject(this.baseParams) ? this.baseParams : {};
|
|
this.paramNames = Ext.applyIf(this.paramNames || {}, this.defaultParamNames);
|
|
if ((this.url || this.api) && !this.proxy) {
|
|
this.proxy = new Ext.data.HttpProxy({url:this.url, api:this.api})
|
|
}
|
|
if (this.restful === true && this.proxy) {
|
|
this.batch = false;
|
|
Ext.data.Api.restify(this.proxy)
|
|
}
|
|
if (this.reader) {
|
|
if (!this.recordType) {
|
|
this.recordType = this.reader.recordType
|
|
}
|
|
if (this.reader.onMetaChange) {
|
|
this.reader.onMetaChange = this.reader.onMetaChange.createSequence(this.onMetaChange, this)
|
|
}
|
|
if (this.writer) {
|
|
if (this.writer instanceof (Ext.data.DataWriter) === false) {
|
|
this.writer = this.buildWriter(this.writer)
|
|
}
|
|
this.writer.meta = this.reader.meta;
|
|
this.pruneModifiedRecords = true
|
|
}
|
|
}
|
|
if (this.recordType) {
|
|
this.fields = this.recordType.prototype.fields
|
|
}
|
|
this.modified = [];
|
|
this.addEvents("datachanged", "metachange", "add", "remove", "update", "clear", "exception", "beforeload", "load", "loadexception", "beforewrite", "write", "beforesave", "save");
|
|
if (this.proxy) {
|
|
this.relayEvents(this.proxy, ["loadexception", "exception"])
|
|
}
|
|
if (this.writer) {
|
|
this.on({scope:this, add:this.createRecords, remove:this.destroyRecord, update:this.updateRecord, clear:this.onClear})
|
|
}
|
|
this.sortToggle = {};
|
|
if (this.sortField) {
|
|
this.setDefaultSort(this.sortField, this.sortDir)
|
|
} else {
|
|
if (this.sortInfo) {
|
|
this.setDefaultSort(this.sortInfo.field, this.sortInfo.direction)
|
|
}
|
|
}
|
|
Ext.data.Store.superclass.constructor.call(this);
|
|
if (this.id) {
|
|
this.storeId = this.id;
|
|
delete this.id
|
|
}
|
|
if (this.storeId) {
|
|
Ext.StoreMgr.register(this)
|
|
}
|
|
if (this.inlineData) {
|
|
this.loadData(this.inlineData);
|
|
delete this.inlineData
|
|
} else {
|
|
if (this.autoLoad) {
|
|
this.load.defer(10, this, [typeof this.autoLoad == "object" ? this.autoLoad : undefined])
|
|
}
|
|
}
|
|
this.batchCounter = 0;
|
|
this.batches = {}
|
|
}, buildWriter:function (b) {
|
|
var a = undefined, c = (b.format || "json").toLowerCase();
|
|
switch (c) {
|
|
case"json":
|
|
a = Ext.data.JsonWriter;
|
|
break;
|
|
case"xml":
|
|
a = Ext.data.XmlWriter;
|
|
break;
|
|
default:
|
|
a = Ext.data.JsonWriter
|
|
}
|
|
return new a(b)
|
|
}, destroy:function () {
|
|
if (!this.isDestroyed) {
|
|
if (this.storeId) {
|
|
Ext.StoreMgr.unregister(this)
|
|
}
|
|
this.clearData();
|
|
this.data = null;
|
|
Ext.destroy(this.proxy);
|
|
this.reader = this.writer = null;
|
|
this.purgeListeners();
|
|
this.isDestroyed = true
|
|
}
|
|
}, add:function (c) {
|
|
var e, a, b, d;
|
|
c = [].concat(c);
|
|
if (c.length < 1) {
|
|
return
|
|
}
|
|
for (e = 0, a = c.length; e < a; e++) {
|
|
b = c[e];
|
|
b.join(this);
|
|
if (b.dirty || b.phantom) {
|
|
this.modified.push(b)
|
|
}
|
|
}
|
|
d = this.data.length;
|
|
this.data.addAll(c);
|
|
if (this.snapshot) {
|
|
this.snapshot.addAll(c)
|
|
}
|
|
this.fireEvent("add", this, c, d)
|
|
}, addSorted:function (a) {
|
|
var b = this.findInsertIndex(a);
|
|
this.insert(b, a)
|
|
}, doUpdate:function (a) {
|
|
var b = a.id;
|
|
this.getById(b).join(null);
|
|
this.data.replace(b, a);
|
|
if (this.snapshot) {
|
|
this.snapshot.replace(b, a)
|
|
}
|
|
a.join(this);
|
|
this.fireEvent("update", this, a, Ext.data.Record.COMMIT)
|
|
}, remove:function (a) {
|
|
if (Ext.isArray(a)) {
|
|
Ext.each(a, function (c) {
|
|
this.remove(c)
|
|
}, this);
|
|
return
|
|
}
|
|
var b = this.data.indexOf(a);
|
|
if (b > -1) {
|
|
a.join(null);
|
|
this.data.removeAt(b)
|
|
}
|
|
if (this.pruneModifiedRecords) {
|
|
this.modified.remove(a)
|
|
}
|
|
if (this.snapshot) {
|
|
this.snapshot.remove(a)
|
|
}
|
|
if (b > -1) {
|
|
this.fireEvent("remove", this, a, b)
|
|
}
|
|
}, removeAt:function (a) {
|
|
this.remove(this.getAt(a))
|
|
}, removeAll:function (b) {
|
|
var a = [];
|
|
this.each(function (c) {
|
|
a.push(c)
|
|
});
|
|
this.clearData();
|
|
if (this.snapshot) {
|
|
this.snapshot.clear()
|
|
}
|
|
if (this.pruneModifiedRecords) {
|
|
this.modified = []
|
|
}
|
|
if (b !== true) {
|
|
this.fireEvent("clear", this, a)
|
|
}
|
|
}, onClear:function (b, a) {
|
|
Ext.each(a, function (d, c) {
|
|
this.destroyRecord(this, d, c)
|
|
}, this)
|
|
}, insert:function (d, c) {
|
|
var e, a, b;
|
|
c = [].concat(c);
|
|
for (e = 0, a = c.length; e < a; e++) {
|
|
b = c[e];
|
|
this.data.insert(d + e, b);
|
|
b.join(this);
|
|
if (b.dirty || b.phantom) {
|
|
this.modified.push(b)
|
|
}
|
|
}
|
|
if (this.snapshot) {
|
|
this.snapshot.addAll(c)
|
|
}
|
|
this.fireEvent("add", this, c, d)
|
|
}, indexOf:function (a) {
|
|
return this.data.indexOf(a)
|
|
}, indexOfId:function (a) {
|
|
return this.data.indexOfKey(a)
|
|
}, getById:function (a) {
|
|
return(this.snapshot || this.data).key(a)
|
|
}, getAt:function (a) {
|
|
return this.data.itemAt(a)
|
|
}, getRange:function (b, a) {
|
|
return this.data.getRange(b, a)
|
|
}, storeOptions:function (a) {
|
|
a = Ext.apply({}, a);
|
|
delete a.callback;
|
|
delete a.scope;
|
|
this.lastOptions = a
|
|
}, clearData:function () {
|
|
this.data.each(function (a) {
|
|
a.join(null)
|
|
});
|
|
this.data.clear()
|
|
}, load:function (b) {
|
|
b = Ext.apply({}, b);
|
|
this.storeOptions(b);
|
|
if (this.sortInfo && this.remoteSort) {
|
|
var a = this.paramNames;
|
|
b.params = Ext.apply({}, b.params);
|
|
b.params[a.sort] = this.sortInfo.field;
|
|
b.params[a.dir] = this.sortInfo.direction
|
|
}
|
|
try {
|
|
return this.execute("read", null, b)
|
|
} catch (c) {
|
|
this.handleException(c);
|
|
return false
|
|
}
|
|
}, updateRecord:function (b, a, c) {
|
|
if (c == Ext.data.Record.EDIT && this.autoSave === true && (!a.phantom || (a.phantom && a.isValid()))) {
|
|
this.save()
|
|
}
|
|
}, createRecords:function (c, b, e) {
|
|
var d = this.modified, h = b.length, a, g;
|
|
for (g = 0; g < h; g++) {
|
|
a = b[g];
|
|
if (a.phantom && a.isValid()) {
|
|
a.markDirty();
|
|
if (d.indexOf(a) == -1) {
|
|
d.push(a)
|
|
}
|
|
}
|
|
}
|
|
if (this.autoSave === true) {
|
|
this.save()
|
|
}
|
|
}, destroyRecord:function (b, a, c) {
|
|
if (this.modified.indexOf(a) != -1) {
|
|
this.modified.remove(a)
|
|
}
|
|
if (!a.phantom) {
|
|
this.removed.push(a);
|
|
a.lastIndex = c;
|
|
if (this.autoSave === true) {
|
|
this.save()
|
|
}
|
|
}
|
|
}, execute:function (e, a, c, b) {
|
|
if (!Ext.data.Api.isAction(e)) {
|
|
throw new Ext.data.Api.Error("execute", e)
|
|
}
|
|
c = Ext.applyIf(c || {}, {params:{}});
|
|
if (b !== undefined) {
|
|
this.addToBatch(b)
|
|
}
|
|
var d = true;
|
|
if (e === "read") {
|
|
d = this.fireEvent("beforeload", this, c);
|
|
Ext.applyIf(c.params, this.baseParams)
|
|
} else {
|
|
if (this.writer.listful === true && this.restful !== true) {
|
|
a = (Ext.isArray(a)) ? a : [a]
|
|
} else {
|
|
if (Ext.isArray(a) && a.length == 1) {
|
|
a = a.shift()
|
|
}
|
|
}
|
|
if ((d = this.fireEvent("beforewrite", this, e, a, c)) !== false) {
|
|
this.writer.apply(c.params, this.baseParams, e, a)
|
|
}
|
|
}
|
|
if (d !== false) {
|
|
if (this.writer && this.proxy.url && !this.proxy.restful && !Ext.data.Api.hasUniqueUrl(this.proxy, e)) {
|
|
c.params.xaction = e
|
|
}
|
|
this.proxy.request(Ext.data.Api.actions[e], a, c.params, this.reader, this.createCallback(e, a, b), this, c)
|
|
}
|
|
return d
|
|
}, save:function () {
|
|
if (!this.writer) {
|
|
throw new Ext.data.Store.Error("writer-undefined")
|
|
}
|
|
var h = [], j, k, e, c = {}, d;
|
|
if (this.removed.length) {
|
|
h.push(["destroy", this.removed])
|
|
}
|
|
var b = [].concat(this.getModifiedRecords());
|
|
if (b.length) {
|
|
var g = [];
|
|
for (d = b.length - 1; d >= 0; d--) {
|
|
if (b[d].phantom === true) {
|
|
var a = b.splice(d, 1).shift();
|
|
if (a.isValid()) {
|
|
g.push(a)
|
|
}
|
|
} else {
|
|
if (!b[d].isValid()) {
|
|
b.splice(d, 1)
|
|
}
|
|
}
|
|
}
|
|
if (g.length) {
|
|
h.push(["create", g])
|
|
}
|
|
if (b.length) {
|
|
h.push(["update", b])
|
|
}
|
|
}
|
|
j = h.length;
|
|
if (j) {
|
|
e = ++this.batchCounter;
|
|
for (d = 0; d < j; ++d) {
|
|
k = h[d];
|
|
c[k[0]] = k[1]
|
|
}
|
|
if (this.fireEvent("beforesave", this, c) !== false) {
|
|
for (d = 0; d < j; ++d) {
|
|
k = h[d];
|
|
this.doTransaction(k[0], k[1], e)
|
|
}
|
|
return e
|
|
}
|
|
}
|
|
return -1
|
|
}, doTransaction:function (e, b, c) {
|
|
function g(h) {
|
|
try {
|
|
this.execute(e, h, undefined, c)
|
|
} catch (i) {
|
|
this.handleException(i)
|
|
}
|
|
}
|
|
|
|
if (this.batch === false) {
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
g.call(this, b[d])
|
|
}
|
|
} else {
|
|
g.call(this, b)
|
|
}
|
|
}, addToBatch:function (c) {
|
|
var a = this.batches, d = this.batchKey + c, e = a[d];
|
|
if (!e) {
|
|
a[d] = e = {id:c, count:0, data:{}}
|
|
}
|
|
++e.count
|
|
}, removeFromBatch:function (d, h, g) {
|
|
var c = this.batches, e = this.batchKey + d, i = c[e], a;
|
|
if (i) {
|
|
a = i.data[h] || [];
|
|
i.data[h] = a.concat(g);
|
|
if (i.count === 1) {
|
|
g = i.data;
|
|
delete c[e];
|
|
this.fireEvent("save", this, d, g)
|
|
} else {
|
|
--i.count
|
|
}
|
|
}
|
|
}, createCallback:function (c, a, b) {
|
|
var d = Ext.data.Api.actions;
|
|
return(c == "read") ? this.loadRecords : function (g, e, h) {
|
|
this["on" + Ext.util.Format.capitalize(c) + "Records"](h, a, [].concat(g));
|
|
if (h === true) {
|
|
this.fireEvent("write", this, c, g, e, a)
|
|
}
|
|
this.removeFromBatch(b, c, g)
|
|
}
|
|
}, clearModified:function (a) {
|
|
if (Ext.isArray(a)) {
|
|
for (var b = a.length - 1; b >= 0; b--) {
|
|
this.modified.splice(this.modified.indexOf(a[b]), 1)
|
|
}
|
|
} else {
|
|
this.modified.splice(this.modified.indexOf(a), 1)
|
|
}
|
|
}, reMap:function (b) {
|
|
if (Ext.isArray(b)) {
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
this.reMap(b[d])
|
|
}
|
|
} else {
|
|
delete this.data.map[b._phid];
|
|
this.data.map[b.id] = b;
|
|
var c = this.data.keys.indexOf(b._phid);
|
|
this.data.keys.splice(c, 1, b.id);
|
|
delete b._phid
|
|
}
|
|
}, onCreateRecords:function (d, a, b) {
|
|
if (d === true) {
|
|
try {
|
|
this.reader.realize(a, b)
|
|
} catch (c) {
|
|
this.handleException(c);
|
|
if (Ext.isArray(a)) {
|
|
this.onCreateRecords(d, a, b)
|
|
}
|
|
}
|
|
}
|
|
}, onUpdateRecords:function (d, a, b) {
|
|
if (d === true) {
|
|
try {
|
|
this.reader.update(a, b)
|
|
} catch (c) {
|
|
this.handleException(c);
|
|
if (Ext.isArray(a)) {
|
|
this.onUpdateRecords(d, a, b)
|
|
}
|
|
}
|
|
}
|
|
}, onDestroyRecords:function (e, b, d) {
|
|
b = (b instanceof Ext.data.Record) ? [b] : [].concat(b);
|
|
for (var c = 0, a = b.length; c < a; c++) {
|
|
this.removed.splice(this.removed.indexOf(b[c]), 1)
|
|
}
|
|
if (e === false) {
|
|
for (c = b.length - 1; c >= 0; c--) {
|
|
this.insert(b[c].lastIndex, b[c])
|
|
}
|
|
}
|
|
}, handleException:function (a) {
|
|
Ext.handleError(a)
|
|
}, reload:function (a) {
|
|
this.load(Ext.applyIf(a || {}, this.lastOptions))
|
|
}, loadRecords:function (b, l, h) {
|
|
var e, g;
|
|
if (this.isDestroyed === true) {
|
|
return
|
|
}
|
|
if (!b || h === false) {
|
|
if (h !== false) {
|
|
this.fireEvent("load", this, [], l)
|
|
}
|
|
if (l.callback) {
|
|
l.callback.call(l.scope || this, [], l, false, b)
|
|
}
|
|
return
|
|
}
|
|
var a = b.records, j = b.totalRecords || a.length;
|
|
if (!l || l.add !== true) {
|
|
if (this.pruneModifiedRecords) {
|
|
this.modified = []
|
|
}
|
|
for (e = 0, g = a.length; e < g; e++) {
|
|
a[e].join(this)
|
|
}
|
|
if (this.snapshot) {
|
|
this.data = this.snapshot;
|
|
delete this.snapshot
|
|
}
|
|
this.clearData();
|
|
this.data.addAll(a);
|
|
this.totalLength = j;
|
|
this.applySort();
|
|
this.fireEvent("datachanged", this)
|
|
} else {
|
|
var k = [], d, c = 0;
|
|
for (e = 0, g = a.length; e < g; ++e) {
|
|
d = a[e];
|
|
if (this.indexOfId(d.id) > -1) {
|
|
this.doUpdate(d)
|
|
} else {
|
|
k.push(d);
|
|
++c
|
|
}
|
|
}
|
|
this.totalLength = Math.max(j, this.data.length + c);
|
|
this.add(k)
|
|
}
|
|
this.fireEvent("load", this, a, l);
|
|
if (l.callback) {
|
|
l.callback.call(l.scope || this, a, l, true)
|
|
}
|
|
}, loadData:function (c, a) {
|
|
var b = this.reader.readRecords(c);
|
|
this.loadRecords(b, {add:a}, true)
|
|
}, getCount:function () {
|
|
return this.data.length || 0
|
|
}, getTotalCount:function () {
|
|
return this.totalLength || 0
|
|
}, getSortState:function () {
|
|
return this.sortInfo
|
|
}, applySort:function () {
|
|
if ((this.sortInfo || this.multiSortInfo) && !this.remoteSort) {
|
|
this.sortData()
|
|
}
|
|
}, sortData:function () {
|
|
var a = this.hasMultiSort ? this.multiSortInfo : this.sortInfo, k = a.direction || "ASC", h = a.sorters, c = [];
|
|
if (!this.hasMultiSort) {
|
|
h = [
|
|
{direction:k, field:a.field}
|
|
]
|
|
}
|
|
for (var d = 0, b = h.length; d < b; d++) {
|
|
c.push(this.createSortFunction(h[d].field, h[d].direction))
|
|
}
|
|
if (c.length == 0) {
|
|
return
|
|
}
|
|
var g = k.toUpperCase() == "DESC" ? -1 : 1;
|
|
var e = function (n, m) {
|
|
var l = c[0].call(this, n, m);
|
|
if (c.length > 1) {
|
|
for (var p = 1, o = c.length; p < o; p++) {
|
|
l = l || c[p].call(this, n, m)
|
|
}
|
|
}
|
|
return g * l
|
|
};
|
|
this.data.sort(k, e);
|
|
if (this.snapshot && this.snapshot != this.data) {
|
|
this.snapshot.sort(k, e)
|
|
}
|
|
}, createSortFunction:function (c, b) {
|
|
b = b || "ASC";
|
|
var a = b.toUpperCase() == "DESC" ? -1 : 1;
|
|
var d = this.fields.get(c).sortType;
|
|
return function (g, e) {
|
|
var i = d(g.data[c]), h = d(e.data[c]);
|
|
return a * (i > h ? 1 : (i < h ? -1 : 0))
|
|
}
|
|
}, setDefaultSort:function (b, a) {
|
|
a = a ? a.toUpperCase() : "ASC";
|
|
this.sortInfo = {field:b, direction:a};
|
|
this.sortToggle[b] = a
|
|
}, sort:function (b, a) {
|
|
if (Ext.isArray(arguments[0])) {
|
|
return this.multiSort.call(this, b, a)
|
|
} else {
|
|
return this.singleSort(b, a)
|
|
}
|
|
}, singleSort:function (g, c) {
|
|
var e = this.fields.get(g);
|
|
if (!e) {
|
|
return false
|
|
}
|
|
var b = e.name, a = this.sortInfo || null, d = this.sortToggle ? this.sortToggle[b] : null;
|
|
if (!c) {
|
|
if (a && a.field == b) {
|
|
c = (this.sortToggle[b] || "ASC").toggle("ASC", "DESC")
|
|
} else {
|
|
c = e.sortDir
|
|
}
|
|
}
|
|
this.sortToggle[b] = c;
|
|
this.sortInfo = {field:b, direction:c};
|
|
this.hasMultiSort = false;
|
|
if (this.remoteSort) {
|
|
if (!this.load(this.lastOptions)) {
|
|
if (d) {
|
|
this.sortToggle[b] = d
|
|
}
|
|
if (a) {
|
|
this.sortInfo = a
|
|
}
|
|
}
|
|
} else {
|
|
this.applySort();
|
|
this.fireEvent("datachanged", this)
|
|
}
|
|
return true
|
|
}, multiSort:function (b, a) {
|
|
this.hasMultiSort = true;
|
|
a = a || "ASC";
|
|
if (this.multiSortInfo && a == this.multiSortInfo.direction) {
|
|
a = a.toggle("ASC", "DESC")
|
|
}
|
|
this.multiSortInfo = {sorters:b, direction:a};
|
|
if (this.remoteSort) {
|
|
this.singleSort(b[0].field, b[0].direction)
|
|
} else {
|
|
this.applySort();
|
|
this.fireEvent("datachanged", this)
|
|
}
|
|
}, each:function (b, a) {
|
|
this.data.each(b, a)
|
|
}, getModifiedRecords:function () {
|
|
return this.modified
|
|
}, sum:function (e, g, a) {
|
|
var c = this.data.items, b = 0;
|
|
g = g || 0;
|
|
a = (a || a === 0) ? a : c.length - 1;
|
|
for (var d = g; d <= a; d++) {
|
|
b += (c[d].data[e] || 0)
|
|
}
|
|
return b
|
|
}, createFilterFn:function (d, c, e, a, b) {
|
|
if (Ext.isEmpty(c, false)) {
|
|
return false
|
|
}
|
|
c = this.data.createValueMatcher(c, e, a, b);
|
|
return function (g) {
|
|
return c.test(g.data[d])
|
|
}
|
|
}, createMultipleFilterFn:function (a) {
|
|
return function (b) {
|
|
var k = true;
|
|
for (var d = 0, c = a.length; d < c; d++) {
|
|
var h = a[d], g = h.fn, e = h.scope;
|
|
k = k && g.call(e, b)
|
|
}
|
|
return k
|
|
}
|
|
}, filter:function (n, m, h, k, e) {
|
|
var l;
|
|
if (Ext.isObject(n)) {
|
|
n = [n]
|
|
}
|
|
if (Ext.isArray(n)) {
|
|
var b = [];
|
|
for (var g = 0, d = n.length; g < d; g++) {
|
|
var a = n[g], c = a.fn, o = a.scope || this;
|
|
if (!Ext.isFunction(c)) {
|
|
c = this.createFilterFn(a.property, a.value, a.anyMatch, a.caseSensitive, a.exactMatch)
|
|
}
|
|
b.push({fn:c, scope:o})
|
|
}
|
|
l = this.createMultipleFilterFn(b)
|
|
} else {
|
|
l = this.createFilterFn(n, m, h, k, e)
|
|
}
|
|
return l ? this.filterBy(l) : this.clearFilter()
|
|
}, filterBy:function (b, a) {
|
|
this.snapshot = this.snapshot || this.data;
|
|
this.data = this.queryBy(b, a || this);
|
|
this.fireEvent("datachanged", this)
|
|
}, clearFilter:function (a) {
|
|
if (this.isFiltered()) {
|
|
this.data = this.snapshot;
|
|
delete this.snapshot;
|
|
if (a !== true) {
|
|
this.fireEvent("datachanged", this)
|
|
}
|
|
}
|
|
}, isFiltered:function () {
|
|
return !!this.snapshot && this.snapshot != this.data
|
|
}, query:function (d, c, e, a) {
|
|
var b = this.createFilterFn(d, c, e, a);
|
|
return b ? this.queryBy(b) : this.data.clone()
|
|
}, queryBy:function (b, a) {
|
|
var c = this.snapshot || this.data;
|
|
return c.filterBy(b, a || this)
|
|
}, find:function (d, c, g, e, a) {
|
|
var b = this.createFilterFn(d, c, e, a);
|
|
return b ? this.data.findIndexBy(b, null, g) : -1
|
|
}, findExact:function (b, a, c) {
|
|
return this.data.findIndexBy(function (d) {
|
|
return d.get(b) === a
|
|
}, this, c)
|
|
}, findBy:function (b, a, c) {
|
|
return this.data.findIndexBy(b, a, c)
|
|
}, collect:function (j, k, b) {
|
|
var h = (b === true && this.snapshot) ? this.snapshot.items : this.data.items;
|
|
var m, n, a = [], c = {};
|
|
for (var e = 0, g = h.length; e < g; e++) {
|
|
m = h[e].data[j];
|
|
n = String(m);
|
|
if ((k || !Ext.isEmpty(m)) && !c[n]) {
|
|
c[n] = true;
|
|
a[a.length] = m
|
|
}
|
|
}
|
|
return a
|
|
}, afterEdit:function (a) {
|
|
if (this.modified.indexOf(a) == -1) {
|
|
this.modified.push(a)
|
|
}
|
|
this.fireEvent("update", this, a, Ext.data.Record.EDIT)
|
|
}, afterReject:function (a) {
|
|
this.modified.remove(a);
|
|
this.fireEvent("update", this, a, Ext.data.Record.REJECT)
|
|
}, afterCommit:function (a) {
|
|
this.modified.remove(a);
|
|
this.fireEvent("update", this, a, Ext.data.Record.COMMIT)
|
|
}, commitChanges:function () {
|
|
var a = this.modified.slice(0), c = a.length, b;
|
|
for (b = 0; b < c; b++) {
|
|
a[b].commit()
|
|
}
|
|
this.modified = [];
|
|
this.removed = []
|
|
}, rejectChanges:function () {
|
|
var a = this.modified.slice(0), e = this.removed.slice(0).reverse(), c = a.length, d = e.length, b;
|
|
for (b = 0; b < c; b++) {
|
|
a[b].reject()
|
|
}
|
|
for (b = 0; b < d; b++) {
|
|
this.insert(e[b].lastIndex || 0, e[b]);
|
|
e[b].reject()
|
|
}
|
|
this.modified = [];
|
|
this.removed = []
|
|
}, onMetaChange:function (a) {
|
|
this.recordType = this.reader.recordType;
|
|
this.fields = this.recordType.prototype.fields;
|
|
delete this.snapshot;
|
|
if (this.reader.meta.sortInfo) {
|
|
this.sortInfo = this.reader.meta.sortInfo
|
|
} else {
|
|
if (this.sortInfo && !this.fields.get(this.sortInfo.field)) {
|
|
delete this.sortInfo
|
|
}
|
|
}
|
|
if (this.writer) {
|
|
this.writer.meta = this.reader.meta
|
|
}
|
|
this.modified = [];
|
|
this.fireEvent("metachange", this, this.reader.meta)
|
|
}, findInsertIndex:function (a) {
|
|
this.suspendEvents();
|
|
var c = this.data.clone();
|
|
this.data.add(a);
|
|
this.applySort();
|
|
var b = this.data.indexOf(a);
|
|
this.data = c;
|
|
this.resumeEvents();
|
|
return b
|
|
}, setBaseParam:function (a, b) {
|
|
this.baseParams = this.baseParams || {};
|
|
this.baseParams[a] = b
|
|
}});
|
|
Ext.reg("store", Ext.data.Store);
|
|
Ext.data.Store.Error = Ext.extend(Ext.Error, {name:"Ext.data.Store"});
|
|
Ext.apply(Ext.data.Store.Error.prototype, {lang:{"writer-undefined":"Attempted to execute a write-action without a DataWriter installed."}});
|
|
Ext.data.Field = Ext.extend(Object, {constructor:function (b) {
|
|
if (Ext.isString(b)) {
|
|
b = {name:b}
|
|
}
|
|
Ext.apply(this, b);
|
|
var d = Ext.data.Types, a = this.sortType, c;
|
|
if (this.type) {
|
|
if (Ext.isString(this.type)) {
|
|
this.type = Ext.data.Types[this.type.toUpperCase()] || d.AUTO
|
|
}
|
|
} else {
|
|
this.type = d.AUTO
|
|
}
|
|
if (Ext.isString(a)) {
|
|
this.sortType = Ext.data.SortTypes[a]
|
|
} else {
|
|
if (Ext.isEmpty(a)) {
|
|
this.sortType = this.type.sortType
|
|
}
|
|
}
|
|
if (!this.convert) {
|
|
this.convert = this.type.convert
|
|
}
|
|
}, dateFormat:null, useNull:false, defaultValue:"", mapping:null, sortType:null, sortDir:"ASC", allowBlank:true});
|
|
Ext.data.DataReader = function (a, b) {
|
|
this.meta = a;
|
|
this.recordType = Ext.isArray(b) ? Ext.data.Record.create(b) : b;
|
|
if (this.recordType) {
|
|
this.buildExtractors()
|
|
}
|
|
};
|
|
Ext.data.DataReader.prototype = {getTotal:Ext.emptyFn, getRoot:Ext.emptyFn, getMessage:Ext.emptyFn, getSuccess:Ext.emptyFn, getId:Ext.emptyFn, buildExtractors:Ext.emptyFn, extractValues:Ext.emptyFn, realize:function (a, c) {
|
|
if (Ext.isArray(a)) {
|
|
for (var b = a.length - 1; b >= 0; b--) {
|
|
if (Ext.isArray(c)) {
|
|
this.realize(a.splice(b, 1).shift(), c.splice(b, 1).shift())
|
|
} else {
|
|
this.realize(a.splice(b, 1).shift(), c)
|
|
}
|
|
}
|
|
} else {
|
|
if (Ext.isArray(c) && c.length == 1) {
|
|
c = c.shift()
|
|
}
|
|
if (!this.isData(c)) {
|
|
throw new Ext.data.DataReader.Error("realize", a)
|
|
}
|
|
a.phantom = false;
|
|
a._phid = a.id;
|
|
a.id = this.getId(c);
|
|
a.data = c;
|
|
a.commit();
|
|
a.store.reMap(a)
|
|
}
|
|
}, update:function (a, c) {
|
|
if (Ext.isArray(a)) {
|
|
for (var b = a.length - 1; b >= 0; b--) {
|
|
if (Ext.isArray(c)) {
|
|
this.update(a.splice(b, 1).shift(), c.splice(b, 1).shift())
|
|
} else {
|
|
this.update(a.splice(b, 1).shift(), c)
|
|
}
|
|
}
|
|
} else {
|
|
if (Ext.isArray(c) && c.length == 1) {
|
|
c = c.shift()
|
|
}
|
|
if (this.isData(c)) {
|
|
a.data = Ext.apply(a.data, c)
|
|
}
|
|
a.commit()
|
|
}
|
|
}, extractData:function (k, a) {
|
|
var j = (this instanceof Ext.data.JsonReader) ? "json" : "node";
|
|
var c = [];
|
|
if (this.isData(k) && !(this instanceof Ext.data.XmlReader)) {
|
|
k = [k]
|
|
}
|
|
var h = this.recordType.prototype.fields, o = h.items, m = h.length, c = [];
|
|
if (a === true) {
|
|
var l = this.recordType;
|
|
for (var e = 0; e < k.length; e++) {
|
|
var b = k[e];
|
|
var g = new l(this.extractValues(b, o, m), this.getId(b));
|
|
g[j] = b;
|
|
c.push(g)
|
|
}
|
|
} else {
|
|
for (var e = 0; e < k.length; e++) {
|
|
var d = this.extractValues(k[e], o, m);
|
|
d[this.meta.idProperty] = this.getId(k[e]);
|
|
c.push(d)
|
|
}
|
|
}
|
|
return c
|
|
}, isData:function (a) {
|
|
return(a && Ext.isObject(a) && !Ext.isEmpty(this.getId(a))) ? true : false
|
|
}, onMetaChange:function (a) {
|
|
delete this.ef;
|
|
this.meta = a;
|
|
this.recordType = Ext.data.Record.create(a.fields);
|
|
this.buildExtractors()
|
|
}};
|
|
Ext.data.DataReader.Error = Ext.extend(Ext.Error, {constructor:function (b, a) {
|
|
this.arg = a;
|
|
Ext.Error.call(this, b)
|
|
}, name:"Ext.data.DataReader"});
|
|
Ext.apply(Ext.data.DataReader.Error.prototype, {lang:{update:"#update received invalid data from server. Please see docs for DataReader#update and review your DataReader configuration.", realize:"#realize was called with invalid remote-data. Please see the docs for DataReader#realize and review your DataReader configuration.", "invalid-response":"#readResponse received an invalid response from the server."}});
|
|
Ext.data.DataWriter = function (a) {
|
|
Ext.apply(this, a)
|
|
};
|
|
Ext.data.DataWriter.prototype = {writeAllFields:false, listful:false, apply:function (e, g, d, a) {
|
|
var c = [], b = d + "Record";
|
|
if (Ext.isArray(a)) {
|
|
Ext.each(a, function (h) {
|
|
c.push(this[b](h))
|
|
}, this)
|
|
} else {
|
|
if (a instanceof Ext.data.Record) {
|
|
c = this[b](a)
|
|
}
|
|
}
|
|
this.render(e, g, c)
|
|
}, render:Ext.emptyFn, updateRecord:Ext.emptyFn, createRecord:Ext.emptyFn, destroyRecord:Ext.emptyFn, toHash:function (g, c) {
|
|
var e = g.fields.map, d = {}, b = (this.writeAllFields === false && g.phantom === false) ? g.getChanges() : g.data, a;
|
|
Ext.iterate(b, function (i, h) {
|
|
if ((a = e[i])) {
|
|
d[a.mapping ? a.mapping : a.name] = h
|
|
}
|
|
});
|
|
if (g.phantom) {
|
|
if (g.fields.containsKey(this.meta.idProperty) && Ext.isEmpty(g.data[this.meta.idProperty])) {
|
|
delete d[this.meta.idProperty]
|
|
}
|
|
} else {
|
|
d[this.meta.idProperty] = g.id
|
|
}
|
|
return d
|
|
}, toArray:function (b) {
|
|
var a = [];
|
|
Ext.iterate(b, function (d, c) {
|
|
a.push({name:d, value:c})
|
|
}, this);
|
|
return a
|
|
}};
|
|
Ext.data.DataProxy = function (a) {
|
|
a = a || {};
|
|
this.api = a.api;
|
|
this.url = a.url;
|
|
this.restful = a.restful;
|
|
this.listeners = a.listeners;
|
|
this.prettyUrls = a.prettyUrls;
|
|
this.addEvents("exception", "beforeload", "load", "loadexception", "beforewrite", "write");
|
|
Ext.data.DataProxy.superclass.constructor.call(this);
|
|
try {
|
|
Ext.data.Api.prepare(this)
|
|
} catch (b) {
|
|
if (b instanceof Ext.data.Api.Error) {
|
|
b.toConsole()
|
|
}
|
|
}
|
|
Ext.data.DataProxy.relayEvents(this, ["beforewrite", "write", "exception"])
|
|
};
|
|
Ext.extend(Ext.data.DataProxy, Ext.util.Observable, {restful:false, setApi:function () {
|
|
if (arguments.length == 1) {
|
|
var a = Ext.data.Api.isValid(arguments[0]);
|
|
if (a === true) {
|
|
this.api = arguments[0]
|
|
} else {
|
|
throw new Ext.data.Api.Error("invalid", a)
|
|
}
|
|
} else {
|
|
if (arguments.length == 2) {
|
|
if (!Ext.data.Api.isAction(arguments[0])) {
|
|
throw new Ext.data.Api.Error("invalid", arguments[0])
|
|
}
|
|
this.api[arguments[0]] = arguments[1]
|
|
}
|
|
}
|
|
Ext.data.Api.prepare(this)
|
|
}, isApiAction:function (a) {
|
|
return(this.api[a]) ? true : false
|
|
}, request:function (e, b, g, a, h, d, c) {
|
|
if (!this.api[e] && !this.load) {
|
|
throw new Ext.data.DataProxy.Error("action-undefined", e)
|
|
}
|
|
g = g || {};
|
|
if ((e === Ext.data.Api.actions.read) ? this.fireEvent("beforeload", this, g) : this.fireEvent("beforewrite", this, e, b, g) !== false) {
|
|
this.doRequest.apply(this, arguments)
|
|
} else {
|
|
h.call(d || this, null, c, false)
|
|
}
|
|
}, load:null, doRequest:function (e, b, g, a, h, d, c) {
|
|
this.load(g, a, h, d, c)
|
|
}, onRead:Ext.emptyFn, onWrite:Ext.emptyFn, buildUrl:function (d, b) {
|
|
b = b || null;
|
|
var c = (this.conn && this.conn.url) ? this.conn.url : (this.api[d]) ? this.api[d].url : this.url;
|
|
if (!c) {
|
|
throw new Ext.data.Api.Error("invalid-url", d)
|
|
}
|
|
var e = null;
|
|
var a = c.match(/(.*)(\.json|\.xml|\.html)$/);
|
|
if (a) {
|
|
e = a[2];
|
|
c = a[1]
|
|
}
|
|
if ((this.restful === true || this.prettyUrls === true) && b instanceof Ext.data.Record && !b.phantom) {
|
|
c += "/" + b.id
|
|
}
|
|
return(e === null) ? c : c + e
|
|
}, destroy:function () {
|
|
this.purgeListeners()
|
|
}});
|
|
Ext.apply(Ext.data.DataProxy, Ext.util.Observable.prototype);
|
|
Ext.util.Observable.call(Ext.data.DataProxy);
|
|
Ext.data.DataProxy.Error = Ext.extend(Ext.Error, {constructor:function (b, a) {
|
|
this.arg = a;
|
|
Ext.Error.call(this, b)
|
|
}, name:"Ext.data.DataProxy"});
|
|
Ext.apply(Ext.data.DataProxy.Error.prototype, {lang:{"action-undefined":"DataProxy attempted to execute an API-action but found an undefined url / function. Please review your Proxy url/api-configuration.", "api-invalid":"Recieved an invalid API-configuration. Please ensure your proxy API-configuration contains only the actions from Ext.data.Api.actions."}});
|
|
Ext.data.Request = function (a) {
|
|
Ext.apply(this, a)
|
|
};
|
|
Ext.data.Request.prototype = {action:undefined, rs:undefined, params:undefined, callback:Ext.emptyFn, scope:undefined, reader:undefined};
|
|
Ext.data.Response = function (a) {
|
|
Ext.apply(this, a)
|
|
};
|
|
Ext.data.Response.prototype = {action:undefined, success:undefined, message:undefined, data:undefined, raw:undefined, records:undefined};
|
|
Ext.data.ScriptTagProxy = function (a) {
|
|
Ext.apply(this, a);
|
|
Ext.data.ScriptTagProxy.superclass.constructor.call(this, a);
|
|
this.head = document.getElementsByTagName("head")[0]
|
|
};
|
|
Ext.data.ScriptTagProxy.TRANS_ID = 1000;
|
|
Ext.extend(Ext.data.ScriptTagProxy, Ext.data.DataProxy, {timeout:30000, callbackParam:"callback", nocache:true, doRequest:function (e, g, d, h, j, k, l) {
|
|
var c = Ext.urlEncode(Ext.apply(d, this.extraParams));
|
|
var b = this.buildUrl(e, g);
|
|
if (!b) {
|
|
throw new Ext.data.Api.Error("invalid-url", b)
|
|
}
|
|
b = Ext.urlAppend(b, c);
|
|
if (this.nocache) {
|
|
b = Ext.urlAppend(b, "_dc=" + (new Date().getTime()))
|
|
}
|
|
var a = ++Ext.data.ScriptTagProxy.TRANS_ID;
|
|
var m = {id:a, action:e, cb:"stcCallback" + a, scriptId:"stcScript" + a, params:d, arg:l, url:b, callback:j, scope:k, reader:h};
|
|
window[m.cb] = this.createCallback(e, g, m);
|
|
b += String.format("&{0}={1}", this.callbackParam, m.cb);
|
|
if (this.autoAbort !== false) {
|
|
this.abort()
|
|
}
|
|
m.timeoutId = this.handleFailure.defer(this.timeout, this, [m]);
|
|
var i = document.createElement("script");
|
|
i.setAttribute("src", b);
|
|
i.setAttribute("type", "text/javascript");
|
|
i.setAttribute("id", m.scriptId);
|
|
this.head.appendChild(i);
|
|
this.trans = m
|
|
}, createCallback:function (d, b, c) {
|
|
var a = this;
|
|
return function (e) {
|
|
a.trans = false;
|
|
a.destroyTrans(c, true);
|
|
if (d === Ext.data.Api.actions.read) {
|
|
a.onRead.call(a, d, c, e)
|
|
} else {
|
|
a.onWrite.call(a, d, c, e, b)
|
|
}
|
|
}
|
|
}, onRead:function (d, c, b) {
|
|
var a;
|
|
try {
|
|
a = c.reader.readRecords(b)
|
|
} catch (g) {
|
|
this.fireEvent("loadexception", this, c, b, g);
|
|
this.fireEvent("exception", this, "response", d, c, b, g);
|
|
c.callback.call(c.scope || window, null, c.arg, false);
|
|
return
|
|
}
|
|
if (a.success === false) {
|
|
this.fireEvent("loadexception", this, c, b);
|
|
this.fireEvent("exception", this, "remote", d, c, b, null)
|
|
} else {
|
|
this.fireEvent("load", this, b, c.arg)
|
|
}
|
|
c.callback.call(c.scope || window, a, c.arg, a.success)
|
|
}, onWrite:function (h, g, c, b) {
|
|
var a = g.reader;
|
|
try {
|
|
var d = a.readResponse(h, c)
|
|
} catch (i) {
|
|
this.fireEvent("exception", this, "response", h, g, d, i);
|
|
g.callback.call(g.scope || window, null, d, false);
|
|
return
|
|
}
|
|
if (!d.success === true) {
|
|
this.fireEvent("exception", this, "remote", h, g, d, b);
|
|
g.callback.call(g.scope || window, null, d, false);
|
|
return
|
|
}
|
|
this.fireEvent("write", this, h, d.data, d, b, g.arg);
|
|
g.callback.call(g.scope || window, d.data, d, true)
|
|
}, isLoading:function () {
|
|
return this.trans ? true : false
|
|
}, abort:function () {
|
|
if (this.isLoading()) {
|
|
this.destroyTrans(this.trans)
|
|
}
|
|
}, destroyTrans:function (b, a) {
|
|
this.head.removeChild(document.getElementById(b.scriptId));
|
|
clearTimeout(b.timeoutId);
|
|
if (a) {
|
|
window[b.cb] = undefined;
|
|
try {
|
|
delete window[b.cb]
|
|
} catch (c) {
|
|
}
|
|
} else {
|
|
window[b.cb] = function () {
|
|
window[b.cb] = undefined;
|
|
try {
|
|
delete window[b.cb]
|
|
} catch (d) {
|
|
}
|
|
}
|
|
}
|
|
}, handleFailure:function (a) {
|
|
this.trans = false;
|
|
this.destroyTrans(a, false);
|
|
if (a.action === Ext.data.Api.actions.read) {
|
|
this.fireEvent("loadexception", this, null, a.arg)
|
|
}
|
|
this.fireEvent("exception", this, "response", a.action, {response:null, options:a.arg});
|
|
a.callback.call(a.scope || window, null, a.arg, false)
|
|
}, destroy:function () {
|
|
this.abort();
|
|
Ext.data.ScriptTagProxy.superclass.destroy.call(this)
|
|
}});
|
|
Ext.data.HttpProxy = function (a) {
|
|
Ext.data.HttpProxy.superclass.constructor.call(this, a);
|
|
this.conn = a;
|
|
this.conn.url = null;
|
|
this.useAjax = !a || !a.events;
|
|
var c = Ext.data.Api.actions;
|
|
this.activeRequest = {};
|
|
for (var b in c) {
|
|
this.activeRequest[c[b]] = undefined
|
|
}
|
|
};
|
|
Ext.extend(Ext.data.HttpProxy, Ext.data.DataProxy, {getConnection:function () {
|
|
return this.useAjax ? Ext.Ajax : this.conn
|
|
}, setUrl:function (a, b) {
|
|
this.conn.url = a;
|
|
if (b === true) {
|
|
this.url = a;
|
|
this.api = null;
|
|
Ext.data.Api.prepare(this)
|
|
}
|
|
}, doRequest:function (g, d, i, c, b, e, a) {
|
|
var h = {method:(this.api[g]) ? this.api[g]["method"] : undefined, request:{callback:b, scope:e, arg:a}, reader:c, callback:this.createCallback(g, d), scope:this};
|
|
if (i.jsonData) {
|
|
h.jsonData = i.jsonData
|
|
} else {
|
|
if (i.xmlData) {
|
|
h.xmlData = i.xmlData
|
|
} else {
|
|
h.params = i || {}
|
|
}
|
|
}
|
|
this.conn.url = this.buildUrl(g, d);
|
|
if (this.useAjax) {
|
|
Ext.applyIf(h, this.conn);
|
|
if (this.activeRequest[g]) {
|
|
}
|
|
this.activeRequest[g] = Ext.Ajax.request(h)
|
|
} else {
|
|
this.conn.request(h)
|
|
}
|
|
this.conn.url = null
|
|
}, createCallback:function (b, a) {
|
|
return function (e, d, c) {
|
|
this.activeRequest[b] = undefined;
|
|
if (!d) {
|
|
if (b === Ext.data.Api.actions.read) {
|
|
this.fireEvent("loadexception", this, e, c)
|
|
}
|
|
this.fireEvent("exception", this, "response", b, e, c);
|
|
e.request.callback.call(e.request.scope, null, e.request.arg, false);
|
|
return
|
|
}
|
|
if (b === Ext.data.Api.actions.read) {
|
|
this.onRead(b, e, c)
|
|
} else {
|
|
this.onWrite(b, e, c, a)
|
|
}
|
|
}
|
|
}, onRead:function (d, h, b) {
|
|
var a;
|
|
try {
|
|
a = h.reader.read(b)
|
|
} catch (g) {
|
|
this.fireEvent("loadexception", this, h, b, g);
|
|
this.fireEvent("exception", this, "response", d, h, b, g);
|
|
h.request.callback.call(h.request.scope, null, h.request.arg, false);
|
|
return
|
|
}
|
|
if (a.success === false) {
|
|
this.fireEvent("loadexception", this, h, b);
|
|
var c = h.reader.readResponse(d, b);
|
|
this.fireEvent("exception", this, "remote", d, h, c, null)
|
|
} else {
|
|
this.fireEvent("load", this, h, h.request.arg)
|
|
}
|
|
h.request.callback.call(h.request.scope, a, h.request.arg, a.success)
|
|
}, onWrite:function (g, i, c, b) {
|
|
var a = i.reader;
|
|
var d;
|
|
try {
|
|
d = a.readResponse(g, c)
|
|
} catch (h) {
|
|
this.fireEvent("exception", this, "response", g, i, c, h);
|
|
i.request.callback.call(i.request.scope, null, i.request.arg, false);
|
|
return
|
|
}
|
|
if (d.success === true) {
|
|
this.fireEvent("write", this, g, d.data, d, b, i.request.arg)
|
|
} else {
|
|
this.fireEvent("exception", this, "remote", g, i, d, b)
|
|
}
|
|
i.request.callback.call(i.request.scope, d.data, d, d.success)
|
|
}, destroy:function () {
|
|
if (!this.useAjax) {
|
|
this.conn.abort()
|
|
} else {
|
|
if (this.activeRequest) {
|
|
var b = Ext.data.Api.actions;
|
|
for (var a in b) {
|
|
if (this.activeRequest[b[a]]) {
|
|
Ext.Ajax.abort(this.activeRequest[b[a]])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Ext.data.HttpProxy.superclass.destroy.call(this)
|
|
}});
|
|
Ext.data.MemoryProxy = function (b) {
|
|
var a = {};
|
|
a[Ext.data.Api.actions.read] = true;
|
|
Ext.data.MemoryProxy.superclass.constructor.call(this, {api:a});
|
|
this.data = b
|
|
};
|
|
Ext.extend(Ext.data.MemoryProxy, Ext.data.DataProxy, {doRequest:function (b, c, a, d, h, i, j) {
|
|
a = a || {};
|
|
var k;
|
|
try {
|
|
k = d.readRecords(this.data)
|
|
} catch (g) {
|
|
this.fireEvent("loadexception", this, null, j, g);
|
|
this.fireEvent("exception", this, "response", b, j, null, g);
|
|
h.call(i, null, j, false);
|
|
return
|
|
}
|
|
h.call(i, k, j, true)
|
|
}});
|
|
Ext.data.Types = new function () {
|
|
var a = Ext.data.SortTypes;
|
|
Ext.apply(this, {stripRe:/[\$,%]/g, AUTO:{convert:function (b) {
|
|
return b
|
|
}, sortType:a.none, type:"auto"}, STRING:{convert:function (b) {
|
|
return(b === undefined || b === null) ? "" : String(b)
|
|
}, sortType:a.asUCString, type:"string"}, INT:{convert:function (b) {
|
|
return b !== undefined && b !== null && b !== "" ? parseInt(String(b).replace(Ext.data.Types.stripRe, ""), 10) : (this.useNull ? null : 0)
|
|
}, sortType:a.none, type:"int"}, FLOAT:{convert:function (b) {
|
|
return b !== undefined && b !== null && b !== "" ? parseFloat(String(b).replace(Ext.data.Types.stripRe, ""), 10) : (this.useNull ? null : 0)
|
|
}, sortType:a.none, type:"float"}, BOOL:{convert:function (b) {
|
|
return b === true || b === "true" || b == 1
|
|
}, sortType:a.none, type:"bool"}, DATE:{convert:function (c) {
|
|
var d = this.dateFormat;
|
|
if (!c) {
|
|
return null
|
|
}
|
|
if (Ext.isDate(c)) {
|
|
return c
|
|
}
|
|
if (d) {
|
|
if (d == "timestamp") {
|
|
return new Date(c * 1000)
|
|
}
|
|
if (d == "time") {
|
|
return new Date(parseInt(c, 10))
|
|
}
|
|
return Date.parseDate(c, d)
|
|
}
|
|
var b = Date.parse(c);
|
|
return b ? new Date(b) : null
|
|
}, sortType:a.asDate, type:"date"}});
|
|
Ext.apply(this, {BOOLEAN:this.BOOL, INTEGER:this.INT, NUMBER:this.FLOAT})
|
|
};
|
|
Ext.data.JsonWriter = Ext.extend(Ext.data.DataWriter, {encode:true, encodeDelete:false, constructor:function (a) {
|
|
Ext.data.JsonWriter.superclass.constructor.call(this, a)
|
|
}, render:function (c, d, b) {
|
|
if (this.encode === true) {
|
|
Ext.apply(c, d);
|
|
c[this.meta.root] = Ext.encode(b)
|
|
} else {
|
|
var a = Ext.apply({}, d);
|
|
a[this.meta.root] = b;
|
|
c.jsonData = a
|
|
}
|
|
}, createRecord:function (a) {
|
|
return this.toHash(a)
|
|
}, updateRecord:function (a) {
|
|
return this.toHash(a)
|
|
}, destroyRecord:function (b) {
|
|
if (this.encodeDelete) {
|
|
var a = {};
|
|
a[this.meta.idProperty] = b.id;
|
|
return a
|
|
} else {
|
|
return b.id
|
|
}
|
|
}});
|
|
Ext.data.JsonReader = function (a, b) {
|
|
a = a || {};
|
|
Ext.applyIf(a, {idProperty:"id", successProperty:"success", totalProperty:"total"});
|
|
Ext.data.JsonReader.superclass.constructor.call(this, a, b || a.fields)
|
|
};
|
|
Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, {read:function (a) {
|
|
var b = a.responseText;
|
|
var c = Ext.decode(b);
|
|
if (!c) {
|
|
throw {message:"JsonReader.read: Json object not found"}
|
|
}
|
|
return this.readRecords(c)
|
|
}, readResponse:function (e, b) {
|
|
var h = (b.responseText !== undefined) ? Ext.decode(b.responseText) : b;
|
|
if (!h) {
|
|
throw new Ext.data.JsonReader.Error("response")
|
|
}
|
|
var a = this.getRoot(h), g = this.getSuccess(h);
|
|
if (g && e === Ext.data.Api.actions.create) {
|
|
var d = Ext.isDefined(a);
|
|
if (d && Ext.isEmpty(a)) {
|
|
throw new Ext.data.JsonReader.Error("root-empty", this.meta.root)
|
|
} else {
|
|
if (!d) {
|
|
throw new Ext.data.JsonReader.Error("root-undefined-response", this.meta.root)
|
|
}
|
|
}
|
|
}
|
|
var c = new Ext.data.Response({action:e, success:g, data:(a) ? this.extractData(a, false) : [], message:this.getMessage(h), raw:h});
|
|
if (Ext.isEmpty(c.success)) {
|
|
throw new Ext.data.JsonReader.Error("successProperty-response", this.meta.successProperty)
|
|
}
|
|
return c
|
|
}, readRecords:function (a) {
|
|
this.jsonData = a;
|
|
if (a.metaData) {
|
|
this.onMetaChange(a.metaData)
|
|
}
|
|
var m = this.meta, h = this.recordType, b = h.prototype.fields, l = b.items, i = b.length, j;
|
|
var g = this.getRoot(a), e = g.length, d = e, k = true;
|
|
if (m.totalProperty) {
|
|
j = parseInt(this.getTotal(a), 10);
|
|
if (!isNaN(j)) {
|
|
d = j
|
|
}
|
|
}
|
|
if (m.successProperty) {
|
|
j = this.getSuccess(a);
|
|
if (j === false || j === "false") {
|
|
k = false
|
|
}
|
|
}
|
|
return{success:k, records:this.extractData(g, true), totalRecords:d}
|
|
}, buildExtractors:function () {
|
|
if (this.ef) {
|
|
return
|
|
}
|
|
var l = this.meta, h = this.recordType, e = h.prototype.fields, k = e.items, j = e.length;
|
|
if (l.totalProperty) {
|
|
this.getTotal = this.createAccessor(l.totalProperty)
|
|
}
|
|
if (l.successProperty) {
|
|
this.getSuccess = this.createAccessor(l.successProperty)
|
|
}
|
|
if (l.messageProperty) {
|
|
this.getMessage = this.createAccessor(l.messageProperty)
|
|
}
|
|
this.getRoot = l.root ? this.createAccessor(l.root) : function (g) {
|
|
return g
|
|
};
|
|
if (l.id || l.idProperty) {
|
|
var d = this.createAccessor(l.id || l.idProperty);
|
|
this.getId = function (i) {
|
|
var g = d(i);
|
|
return(g === undefined || g === "") ? null : g
|
|
}
|
|
} else {
|
|
this.getId = function () {
|
|
return null
|
|
}
|
|
}
|
|
var c = [];
|
|
for (var b = 0; b < j; b++) {
|
|
e = k[b];
|
|
var a = (e.mapping !== undefined && e.mapping !== null) ? e.mapping : e.name;
|
|
c.push(this.createAccessor(a))
|
|
}
|
|
this.ef = c
|
|
}, simpleAccess:function (b, a) {
|
|
return b[a]
|
|
}, createAccessor:function () {
|
|
var a = /[\[\.]/;
|
|
return function (c) {
|
|
if (Ext.isEmpty(c)) {
|
|
return Ext.emptyFn
|
|
}
|
|
if (Ext.isFunction(c)) {
|
|
return c
|
|
}
|
|
var b = String(c).search(a);
|
|
if (b >= 0) {
|
|
return new Function("obj", "return obj" + (b > 0 ? "." : "") + c)
|
|
}
|
|
return function (d) {
|
|
return d[c]
|
|
}
|
|
}
|
|
}(), extractValues:function (h, d, a) {
|
|
var g, c = {};
|
|
for (var e = 0; e < a; e++) {
|
|
g = d[e];
|
|
var b = this.ef[e](h);
|
|
c[g.name] = g.convert((b !== undefined) ? b : g.defaultValue, h)
|
|
}
|
|
return c
|
|
}});
|
|
Ext.data.JsonReader.Error = Ext.extend(Ext.Error, {constructor:function (b, a) {
|
|
this.arg = a;
|
|
Ext.Error.call(this, b)
|
|
}, name:"Ext.data.JsonReader"});
|
|
Ext.apply(Ext.data.JsonReader.Error.prototype, {lang:{response:"An error occurred while json-decoding your server response", "successProperty-response":'Could not locate your "successProperty" in your server response. Please review your JsonReader config to ensure the config-property "successProperty" matches the property in your server-response. See the JsonReader docs.', "root-undefined-config":'Your JsonReader was configured without a "root" property. Please review your JsonReader config and make sure to define the root property. See the JsonReader docs.', "idProperty-undefined":'Your JsonReader was configured without an "idProperty" Please review your JsonReader configuration and ensure the "idProperty" is set (e.g.: "id"). See the JsonReader docs.', "root-empty":'Data was expected to be returned by the server in the "root" property of the response. Please review your JsonReader configuration to ensure the "root" property matches that returned in the server-response. See JsonReader docs.'}});
|
|
Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, {readRecords:function (r) {
|
|
this.arrayData = r;
|
|
var l = this.meta, d = l ? Ext.num(l.idIndex, l.id) : null, b = this.recordType, q = b.prototype.fields, z = [], e = true, g;
|
|
var u = this.getRoot(r);
|
|
for (var y = 0, A = u.length; y < A; y++) {
|
|
var t = u[y], a = {}, p = ((d || d === 0) && t[d] !== undefined && t[d] !== "" ? t[d] : null);
|
|
for (var x = 0, m = q.length; x < m; x++) {
|
|
var B = q.items[x], w = B.mapping !== undefined && B.mapping !== null ? B.mapping : x;
|
|
g = t[w] !== undefined ? t[w] : B.defaultValue;
|
|
g = B.convert(g, t);
|
|
a[B.name] = g
|
|
}
|
|
var c = new b(a, p);
|
|
c.json = t;
|
|
z[z.length] = c
|
|
}
|
|
var h = z.length;
|
|
if (l.totalProperty) {
|
|
g = parseInt(this.getTotal(r), 10);
|
|
if (!isNaN(g)) {
|
|
h = g
|
|
}
|
|
}
|
|
if (l.successProperty) {
|
|
g = this.getSuccess(r);
|
|
if (g === false || g === "false") {
|
|
e = false
|
|
}
|
|
}
|
|
return{success:e, records:z, totalRecords:h}
|
|
}});
|
|
Ext.data.ArrayStore = Ext.extend(Ext.data.Store, {constructor:function (a) {
|
|
Ext.data.ArrayStore.superclass.constructor.call(this, Ext.apply(a, {reader:new Ext.data.ArrayReader(a)}))
|
|
}, loadData:function (e, b) {
|
|
if (this.expandData === true) {
|
|
var d = [];
|
|
for (var c = 0, a = e.length; c < a; c++) {
|
|
d[d.length] = [e[c]]
|
|
}
|
|
e = d
|
|
}
|
|
Ext.data.ArrayStore.superclass.loadData.call(this, e, b)
|
|
}});
|
|
Ext.reg("arraystore", Ext.data.ArrayStore);
|
|
Ext.data.SimpleStore = Ext.data.ArrayStore;
|
|
Ext.reg("simplestore", Ext.data.SimpleStore);
|
|
Ext.data.JsonStore = Ext.extend(Ext.data.Store, {constructor:function (a) {
|
|
Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(a, {reader:new Ext.data.JsonReader(a)}))
|
|
}});
|
|
Ext.reg("jsonstore", Ext.data.JsonStore);
|
|
Ext.data.XmlWriter = function (a) {
|
|
Ext.data.XmlWriter.superclass.constructor.apply(this, arguments);
|
|
this.tpl = (typeof(this.tpl) === "string") ? new Ext.XTemplate(this.tpl).compile() : this.tpl.compile()
|
|
};
|
|
Ext.extend(Ext.data.XmlWriter, Ext.data.DataWriter, {documentRoot:"xrequest", forceDocumentRoot:false, root:"records", xmlVersion:"1.0", xmlEncoding:"ISO-8859-15", tpl:'<tpl for="."><\u003fxml version="{version}" encoding="{encoding}"\u003f><tpl if="documentRoot"><{documentRoot}><tpl for="baseParams"><tpl for="."><{name}>{value}</{name}></tpl></tpl></tpl><tpl if="records.length>1"><{root}></tpl><tpl for="records"><{parent.record}><tpl for="."><{name}>{value}</{name}></tpl></{parent.record}></tpl><tpl if="records.length>1"></{root}></tpl><tpl if="documentRoot"></{documentRoot}></tpl></tpl>', render:function (b, c, a) {
|
|
c = this.toArray(c);
|
|
b.xmlData = this.tpl.applyTemplate({version:this.xmlVersion, encoding:this.xmlEncoding, documentRoot:(c.length > 0 || this.forceDocumentRoot === true) ? this.documentRoot : false, record:this.meta.record, root:this.root, baseParams:c, records:(Ext.isArray(a[0])) ? a : [a]})
|
|
}, createRecord:function (a) {
|
|
return this.toArray(this.toHash(a))
|
|
}, updateRecord:function (a) {
|
|
return this.toArray(this.toHash(a))
|
|
}, destroyRecord:function (b) {
|
|
var a = {};
|
|
a[this.meta.idProperty] = b.id;
|
|
return this.toArray(a)
|
|
}});
|
|
Ext.data.XmlReader = function (a, b) {
|
|
a = a || {};
|
|
Ext.applyIf(a, {idProperty:a.idProperty || a.idPath || a.id, successProperty:a.successProperty || a.success});
|
|
Ext.data.XmlReader.superclass.constructor.call(this, a, b || a.fields)
|
|
};
|
|
Ext.extend(Ext.data.XmlReader, Ext.data.DataReader, {read:function (a) {
|
|
var b = a.responseXML;
|
|
if (!b) {
|
|
throw {message:"XmlReader.read: XML Document not available"}
|
|
}
|
|
return this.readRecords(b)
|
|
}, readRecords:function (d) {
|
|
this.xmlData = d;
|
|
var a = d.documentElement || d, c = Ext.DomQuery, g = 0, e = true;
|
|
if (this.meta.totalProperty) {
|
|
g = this.getTotal(a, 0)
|
|
}
|
|
if (this.meta.successProperty) {
|
|
e = this.getSuccess(a)
|
|
}
|
|
var b = this.extractData(c.select(this.meta.record, a), true);
|
|
return{success:e, records:b, totalRecords:g || b.length}
|
|
}, readResponse:function (g, b) {
|
|
var e = Ext.DomQuery, h = b.responseXML, a = h.documentElement || h;
|
|
var c = new Ext.data.Response({action:g, success:this.getSuccess(a), message:this.getMessage(a), data:this.extractData(e.select(this.meta.record, a) || e.select(this.meta.root, a), false), raw:h});
|
|
if (Ext.isEmpty(c.success)) {
|
|
throw new Ext.data.DataReader.Error("successProperty-response", this.meta.successProperty)
|
|
}
|
|
if (g === Ext.data.Api.actions.create) {
|
|
var d = Ext.isDefined(c.data);
|
|
if (d && Ext.isEmpty(c.data)) {
|
|
throw new Ext.data.JsonReader.Error("root-empty", this.meta.root)
|
|
} else {
|
|
if (!d) {
|
|
throw new Ext.data.JsonReader.Error("root-undefined-response", this.meta.root)
|
|
}
|
|
}
|
|
}
|
|
return c
|
|
}, getSuccess:function () {
|
|
return true
|
|
}, buildExtractors:function () {
|
|
if (this.ef) {
|
|
return
|
|
}
|
|
var l = this.meta, h = this.recordType, e = h.prototype.fields, k = e.items, j = e.length;
|
|
if (l.totalProperty) {
|
|
this.getTotal = this.createAccessor(l.totalProperty)
|
|
}
|
|
if (l.successProperty) {
|
|
this.getSuccess = this.createAccessor(l.successProperty)
|
|
}
|
|
if (l.messageProperty) {
|
|
this.getMessage = this.createAccessor(l.messageProperty)
|
|
}
|
|
this.getRoot = function (g) {
|
|
return(!Ext.isEmpty(g[this.meta.record])) ? g[this.meta.record] : g[this.meta.root]
|
|
};
|
|
if (l.idPath || l.idProperty) {
|
|
var d = this.createAccessor(l.idPath || l.idProperty);
|
|
this.getId = function (g) {
|
|
var i = d(g) || g.id;
|
|
return(i === undefined || i === "") ? null : i
|
|
}
|
|
} else {
|
|
this.getId = function () {
|
|
return null
|
|
}
|
|
}
|
|
var c = [];
|
|
for (var b = 0; b < j; b++) {
|
|
e = k[b];
|
|
var a = (e.mapping !== undefined && e.mapping !== null) ? e.mapping : e.name;
|
|
c.push(this.createAccessor(a))
|
|
}
|
|
this.ef = c
|
|
}, createAccessor:function () {
|
|
var a = Ext.DomQuery;
|
|
return function (b) {
|
|
if (Ext.isFunction(b)) {
|
|
return b
|
|
}
|
|
switch (b) {
|
|
case this.meta.totalProperty:
|
|
return function (c, d) {
|
|
return a.selectNumber(b, c, d)
|
|
};
|
|
break;
|
|
case this.meta.successProperty:
|
|
return function (d, e) {
|
|
var c = a.selectValue(b, d, true);
|
|
var g = c !== false && c !== "false";
|
|
return g
|
|
};
|
|
break;
|
|
default:
|
|
return function (c, d) {
|
|
return a.selectValue(b, c, d)
|
|
};
|
|
break
|
|
}
|
|
}
|
|
}(), extractValues:function (h, d, a) {
|
|
var g, c = {};
|
|
for (var e = 0; e < a; e++) {
|
|
g = d[e];
|
|
var b = this.ef[e](h);
|
|
c[g.name] = g.convert((b !== undefined) ? b : g.defaultValue, h)
|
|
}
|
|
return c
|
|
}});
|
|
Ext.data.XmlStore = Ext.extend(Ext.data.Store, {constructor:function (a) {
|
|
Ext.data.XmlStore.superclass.constructor.call(this, Ext.apply(a, {reader:new Ext.data.XmlReader(a)}))
|
|
}});
|
|
Ext.reg("xmlstore", Ext.data.XmlStore);
|
|
Ext.data.GroupingStore = Ext.extend(Ext.data.Store, {constructor:function (d) {
|
|
d = d || {};
|
|
this.hasMultiSort = true;
|
|
this.multiSortInfo = this.multiSortInfo || {sorters:[]};
|
|
var e = this.multiSortInfo.sorters, c = d.groupField || this.groupField, b = d.sortInfo || this.sortInfo, a = d.groupDir || this.groupDir;
|
|
if (c) {
|
|
e.push({field:c, direction:a})
|
|
}
|
|
if (b) {
|
|
e.push(b)
|
|
}
|
|
Ext.data.GroupingStore.superclass.constructor.call(this, d);
|
|
this.addEvents("groupchange");
|
|
this.applyGroupField()
|
|
}, remoteGroup:false, groupOnSort:false, groupDir:"ASC", clearGrouping:function () {
|
|
this.groupField = false;
|
|
if (this.remoteGroup) {
|
|
if (this.baseParams) {
|
|
delete this.baseParams.groupBy;
|
|
delete this.baseParams.groupDir
|
|
}
|
|
var a = this.lastOptions;
|
|
if (a && a.params) {
|
|
delete a.params.groupBy;
|
|
delete a.params.groupDir
|
|
}
|
|
this.reload()
|
|
} else {
|
|
this.sort();
|
|
this.fireEvent("datachanged", this)
|
|
}
|
|
}, groupBy:function (e, a, d) {
|
|
d = d ? (String(d).toUpperCase() == "DESC" ? "DESC" : "ASC") : this.groupDir;
|
|
if (this.groupField == e && this.groupDir == d && !a) {
|
|
return
|
|
}
|
|
var c = this.multiSortInfo.sorters;
|
|
if (c.length > 0 && c[0].field == this.groupField) {
|
|
c.shift()
|
|
}
|
|
this.groupField = e;
|
|
this.groupDir = d;
|
|
this.applyGroupField();
|
|
var b = function () {
|
|
this.fireEvent("groupchange", this, this.getGroupState())
|
|
};
|
|
if (this.groupOnSort) {
|
|
this.sort(e, d);
|
|
b.call(this);
|
|
return
|
|
}
|
|
if (this.remoteGroup) {
|
|
this.on("load", b, this, {single:true});
|
|
this.reload()
|
|
} else {
|
|
this.sort(c);
|
|
b.call(this)
|
|
}
|
|
}, sort:function (h, c) {
|
|
if (this.remoteSort) {
|
|
return Ext.data.GroupingStore.superclass.sort.call(this, h, c)
|
|
}
|
|
var g = [];
|
|
if (Ext.isArray(arguments[0])) {
|
|
g = arguments[0]
|
|
} else {
|
|
if (h == undefined) {
|
|
g = this.sortInfo ? [this.sortInfo] : []
|
|
} else {
|
|
var e = this.fields.get(h);
|
|
if (!e) {
|
|
return false
|
|
}
|
|
var b = e.name, a = this.sortInfo || null, d = this.sortToggle ? this.sortToggle[b] : null;
|
|
if (!c) {
|
|
if (a && a.field == b) {
|
|
c = (this.sortToggle[b] || "ASC").toggle("ASC", "DESC")
|
|
} else {
|
|
c = e.sortDir
|
|
}
|
|
}
|
|
this.sortToggle[b] = c;
|
|
this.sortInfo = {field:b, direction:c};
|
|
g = [this.sortInfo]
|
|
}
|
|
}
|
|
if (this.groupField) {
|
|
g.unshift({direction:this.groupDir, field:this.groupField})
|
|
}
|
|
return this.multiSort.call(this, g, c)
|
|
}, applyGroupField:function () {
|
|
if (this.remoteGroup) {
|
|
if (!this.baseParams) {
|
|
this.baseParams = {}
|
|
}
|
|
Ext.apply(this.baseParams, {groupBy:this.groupField, groupDir:this.groupDir});
|
|
var a = this.lastOptions;
|
|
if (a && a.params) {
|
|
a.params.groupDir = this.groupDir;
|
|
delete a.params.groupBy
|
|
}
|
|
}
|
|
}, applyGrouping:function (a) {
|
|
if (this.groupField !== false) {
|
|
this.groupBy(this.groupField, true, this.groupDir);
|
|
return true
|
|
} else {
|
|
if (a === true) {
|
|
this.fireEvent("datachanged", this)
|
|
}
|
|
return false
|
|
}
|
|
}, getGroupState:function () {
|
|
return this.groupOnSort && this.groupField !== false ? (this.sortInfo ? this.sortInfo.field : undefined) : this.groupField
|
|
}});
|
|
Ext.reg("groupingstore", Ext.data.GroupingStore);
|
|
Ext.data.DirectProxy = function (a) {
|
|
Ext.apply(this, a);
|
|
if (typeof this.paramOrder == "string") {
|
|
this.paramOrder = this.paramOrder.split(/[\s,|]/)
|
|
}
|
|
Ext.data.DirectProxy.superclass.constructor.call(this, a)
|
|
};
|
|
Ext.extend(Ext.data.DirectProxy, Ext.data.DataProxy, {paramOrder:undefined, paramsAsHash:true, directFn:undefined, doRequest:function (b, c, a, e, k, l, n) {
|
|
var j = [], h = this.api[b] || this.directFn;
|
|
switch (b) {
|
|
case Ext.data.Api.actions.create:
|
|
j.push(a.jsonData);
|
|
break;
|
|
case Ext.data.Api.actions.read:
|
|
if (h.directCfg.method.len > 0) {
|
|
if (this.paramOrder) {
|
|
for (var d = 0, g = this.paramOrder.length; d < g; d++) {
|
|
j.push(a[this.paramOrder[d]])
|
|
}
|
|
} else {
|
|
if (this.paramsAsHash) {
|
|
j.push(a)
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case Ext.data.Api.actions.update:
|
|
j.push(a.jsonData);
|
|
break;
|
|
case Ext.data.Api.actions.destroy:
|
|
j.push(a.jsonData);
|
|
break
|
|
}
|
|
var m = {params:a || {}, request:{callback:k, scope:l, arg:n}, reader:e};
|
|
j.push(this.createCallback(b, c, m), this);
|
|
h.apply(window, j)
|
|
}, createCallback:function (d, a, b) {
|
|
var c = this;
|
|
return function (e, g) {
|
|
if (!g.status) {
|
|
if (d === Ext.data.Api.actions.read) {
|
|
c.fireEvent("loadexception", c, b, g, null)
|
|
}
|
|
c.fireEvent("exception", c, "remote", d, b, g, null);
|
|
b.request.callback.call(b.request.scope, null, b.request.arg, false);
|
|
return
|
|
}
|
|
if (d === Ext.data.Api.actions.read) {
|
|
c.onRead(d, b, e, g)
|
|
} else {
|
|
c.onWrite(d, b, e, g, a)
|
|
}
|
|
}
|
|
}, onRead:function (g, e, a, d) {
|
|
var b;
|
|
try {
|
|
b = e.reader.readRecords(a)
|
|
} catch (c) {
|
|
this.fireEvent("loadexception", this, e, d, c);
|
|
this.fireEvent("exception", this, "response", g, e, d, c);
|
|
e.request.callback.call(e.request.scope, null, e.request.arg, false);
|
|
return
|
|
}
|
|
this.fireEvent("load", this, d, e.request.arg);
|
|
e.request.callback.call(e.request.scope, b, e.request.arg, true)
|
|
}, onWrite:function (g, d, a, c, b) {
|
|
var e = d.reader.extractData(d.reader.getRoot(a), false);
|
|
var h = d.reader.getSuccess(a);
|
|
h = (h !== false);
|
|
if (h) {
|
|
this.fireEvent("write", this, g, e, c, b, d.request.arg)
|
|
} else {
|
|
this.fireEvent("exception", this, "remote", g, d, a, b)
|
|
}
|
|
d.request.callback.call(d.request.scope, e, c, h)
|
|
}});
|
|
Ext.data.DirectStore = Ext.extend(Ext.data.Store, {constructor:function (a) {
|
|
var b = Ext.apply({}, {batchTransactions:false}, a);
|
|
Ext.data.DirectStore.superclass.constructor.call(this, Ext.apply(b, {proxy:Ext.isDefined(b.proxy) ? b.proxy : new Ext.data.DirectProxy(Ext.copyTo({}, b, "paramOrder,paramsAsHash,directFn,api")), reader:(!Ext.isDefined(b.reader) && b.fields) ? new Ext.data.JsonReader(Ext.copyTo({}, b, "totalProperty,root,idProperty"), b.fields) : b.reader}))
|
|
}});
|
|
Ext.reg("directstore", Ext.data.DirectStore);
|
|
Ext.Direct = Ext.extend(Ext.util.Observable, {exceptions:{TRANSPORT:"xhr", PARSE:"parse", LOGIN:"login", SERVER:"exception"}, constructor:function () {
|
|
this.addEvents("event", "exception");
|
|
this.transactions = {};
|
|
this.providers = {}
|
|
}, addProvider:function (e) {
|
|
var c = arguments;
|
|
if (c.length > 1) {
|
|
for (var d = 0, b = c.length; d < b; d++) {
|
|
this.addProvider(c[d])
|
|
}
|
|
return
|
|
}
|
|
if (!e.events) {
|
|
e = new Ext.Direct.PROVIDERS[e.type](e)
|
|
}
|
|
e.id = e.id || Ext.id();
|
|
this.providers[e.id] = e;
|
|
e.on("data", this.onProviderData, this);
|
|
e.on("exception", this.onProviderException, this);
|
|
if (!e.isConnected()) {
|
|
e.connect()
|
|
}
|
|
return e
|
|
}, getProvider:function (a) {
|
|
return this.providers[a]
|
|
}, removeProvider:function (b) {
|
|
var a = b.id ? b : this.providers[b];
|
|
a.un("data", this.onProviderData, this);
|
|
a.un("exception", this.onProviderException, this);
|
|
delete this.providers[a.id];
|
|
return a
|
|
}, addTransaction:function (a) {
|
|
this.transactions[a.tid] = a;
|
|
return a
|
|
}, removeTransaction:function (a) {
|
|
delete this.transactions[a.tid || a];
|
|
return a
|
|
}, getTransaction:function (a) {
|
|
return this.transactions[a.tid || a]
|
|
}, onProviderData:function (d, c) {
|
|
if (Ext.isArray(c)) {
|
|
for (var b = 0, a = c.length; b < a; b++) {
|
|
this.onProviderData(d, c[b])
|
|
}
|
|
return
|
|
}
|
|
if (c.name && c.name != "event" && c.name != "exception") {
|
|
this.fireEvent(c.name, c)
|
|
} else {
|
|
if (c.type == "exception") {
|
|
this.fireEvent("exception", c)
|
|
}
|
|
}
|
|
this.fireEvent("event", c, d)
|
|
}, createEvent:function (a, b) {
|
|
return new Ext.Direct.eventTypes[a.type](Ext.apply(a, b))
|
|
}});
|
|
Ext.Direct = new Ext.Direct();
|
|
Ext.Direct.TID = 1;
|
|
Ext.Direct.PROVIDERS = {};
|
|
Ext.Direct.Transaction = function (a) {
|
|
Ext.apply(this, a);
|
|
this.tid = ++Ext.Direct.TID;
|
|
this.retryCount = 0
|
|
};
|
|
Ext.Direct.Transaction.prototype = {send:function () {
|
|
this.provider.queueTransaction(this)
|
|
}, retry:function () {
|
|
this.retryCount++;
|
|
this.send()
|
|
}, getProvider:function () {
|
|
return this.provider
|
|
}};
|
|
Ext.Direct.Event = function (a) {
|
|
Ext.apply(this, a)
|
|
};
|
|
Ext.Direct.Event.prototype = {status:true, getData:function () {
|
|
return this.data
|
|
}};
|
|
Ext.Direct.RemotingEvent = Ext.extend(Ext.Direct.Event, {type:"rpc", getTransaction:function () {
|
|
return this.transaction || Ext.Direct.getTransaction(this.tid)
|
|
}});
|
|
Ext.Direct.ExceptionEvent = Ext.extend(Ext.Direct.RemotingEvent, {status:false, type:"exception"});
|
|
Ext.Direct.eventTypes = {rpc:Ext.Direct.RemotingEvent, event:Ext.Direct.Event, exception:Ext.Direct.ExceptionEvent};
|
|
Ext.direct.Provider = Ext.extend(Ext.util.Observable, {priority:1, constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
this.addEvents("connect", "disconnect", "data", "exception");
|
|
Ext.direct.Provider.superclass.constructor.call(this, a)
|
|
}, isConnected:function () {
|
|
return false
|
|
}, connect:Ext.emptyFn, disconnect:Ext.emptyFn});
|
|
Ext.direct.JsonProvider = Ext.extend(Ext.direct.Provider, {parseResponse:function (a) {
|
|
if (!Ext.isEmpty(a.responseText)) {
|
|
if (typeof a.responseText == "object") {
|
|
return a.responseText
|
|
}
|
|
return Ext.decode(a.responseText)
|
|
}
|
|
return null
|
|
}, getEvents:function (j) {
|
|
var g = null;
|
|
try {
|
|
g = this.parseResponse(j)
|
|
} catch (h) {
|
|
var d = new Ext.Direct.ExceptionEvent({data:h, xhr:j, code:Ext.Direct.exceptions.PARSE, message:"Error parsing json response: \n\n " + g});
|
|
return[d]
|
|
}
|
|
var c = [];
|
|
if (Ext.isArray(g)) {
|
|
for (var b = 0, a = g.length; b < a; b++) {
|
|
c.push(Ext.Direct.createEvent(g[b]))
|
|
}
|
|
} else {
|
|
c.push(Ext.Direct.createEvent(g))
|
|
}
|
|
return c
|
|
}});
|
|
Ext.direct.PollingProvider = Ext.extend(Ext.direct.JsonProvider, {priority:3, interval:3000, constructor:function (a) {
|
|
Ext.direct.PollingProvider.superclass.constructor.call(this, a);
|
|
this.addEvents("beforepoll", "poll")
|
|
}, isConnected:function () {
|
|
return !!this.pollTask
|
|
}, connect:function () {
|
|
if (this.url && !this.pollTask) {
|
|
this.pollTask = Ext.TaskMgr.start({run:function () {
|
|
if (this.fireEvent("beforepoll", this) !== false) {
|
|
if (typeof this.url == "function") {
|
|
this.url(this.baseParams)
|
|
} else {
|
|
Ext.Ajax.request({url:this.url, callback:this.onData, scope:this, params:this.baseParams})
|
|
}
|
|
}
|
|
}, interval:this.interval, scope:this});
|
|
this.fireEvent("connect", this)
|
|
} else {
|
|
if (!this.url) {
|
|
throw"Error initializing PollingProvider, no url configured."
|
|
}
|
|
}
|
|
}, disconnect:function () {
|
|
if (this.pollTask) {
|
|
Ext.TaskMgr.stop(this.pollTask);
|
|
delete this.pollTask;
|
|
this.fireEvent("disconnect", this)
|
|
}
|
|
}, onData:function (d, j, h) {
|
|
if (j) {
|
|
var c = this.getEvents(h);
|
|
for (var b = 0, a = c.length; b < a; b++) {
|
|
var g = c[b];
|
|
this.fireEvent("data", this, g)
|
|
}
|
|
} else {
|
|
var g = new Ext.Direct.ExceptionEvent({data:g, code:Ext.Direct.exceptions.TRANSPORT, message:"Unable to connect to the server.", xhr:h});
|
|
this.fireEvent("data", this, g)
|
|
}
|
|
}});
|
|
Ext.Direct.PROVIDERS.polling = Ext.direct.PollingProvider;
|
|
Ext.direct.RemotingProvider = Ext.extend(Ext.direct.JsonProvider, {enableBuffer:10, maxRetries:1, timeout:undefined, constructor:function (a) {
|
|
Ext.direct.RemotingProvider.superclass.constructor.call(this, a);
|
|
this.addEvents("beforecall", "call");
|
|
this.namespace = (Ext.isString(this.namespace)) ? Ext.ns(this.namespace) : this.namespace || window;
|
|
this.transactions = {};
|
|
this.callBuffer = []
|
|
}, initAPI:function () {
|
|
var h = this.actions;
|
|
for (var j in h) {
|
|
var d = this.namespace[j] || (this.namespace[j] = {}), e = h[j];
|
|
for (var g = 0, b = e.length; g < b; g++) {
|
|
var a = e[g];
|
|
d[a.name] = this.createMethod(j, a)
|
|
}
|
|
}
|
|
}, isConnected:function () {
|
|
return !!this.connected
|
|
}, connect:function () {
|
|
if (this.url) {
|
|
this.initAPI();
|
|
this.connected = true;
|
|
this.fireEvent("connect", this)
|
|
} else {
|
|
if (!this.url) {
|
|
throw"Error initializing RemotingProvider, no url configured."
|
|
}
|
|
}
|
|
}, disconnect:function () {
|
|
if (this.connected) {
|
|
this.connected = false;
|
|
this.fireEvent("disconnect", this)
|
|
}
|
|
}, onData:function (a, h, j) {
|
|
if (h) {
|
|
var k = this.getEvents(j);
|
|
for (var b = 0, c = k.length; b < c; b++) {
|
|
var d = k[b], l = this.getTransaction(d);
|
|
this.fireEvent("data", this, d);
|
|
if (l) {
|
|
this.doCallback(l, d, true);
|
|
Ext.Direct.removeTransaction(l)
|
|
}
|
|
}
|
|
} else {
|
|
var g = [].concat(a.ts);
|
|
for (var b = 0, c = g.length; b < c; b++) {
|
|
var l = this.getTransaction(g[b]);
|
|
if (l && l.retryCount < this.maxRetries) {
|
|
l.retry()
|
|
} else {
|
|
var d = new Ext.Direct.ExceptionEvent({data:d, transaction:l, code:Ext.Direct.exceptions.TRANSPORT, message:"Unable to connect to the server.", xhr:j});
|
|
this.fireEvent("data", this, d);
|
|
if (l) {
|
|
this.doCallback(l, d, false);
|
|
Ext.Direct.removeTransaction(l)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, getCallData:function (a) {
|
|
return{action:a.action, method:a.method, data:a.data, type:"rpc", tid:a.tid}
|
|
}, doSend:function (d) {
|
|
var g = {url:this.url, callback:this.onData, scope:this, ts:d, timeout:this.timeout}, b;
|
|
if (Ext.isArray(d)) {
|
|
b = [];
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
b.push(this.getCallData(d[c]))
|
|
}
|
|
} else {
|
|
b = this.getCallData(d)
|
|
}
|
|
if (this.enableUrlEncode) {
|
|
var e = {};
|
|
e[Ext.isString(this.enableUrlEncode) ? this.enableUrlEncode : "data"] = Ext.encode(b);
|
|
g.params = e
|
|
} else {
|
|
g.jsonData = b
|
|
}
|
|
Ext.Ajax.request(g)
|
|
}, combineAndSend:function () {
|
|
var a = this.callBuffer.length;
|
|
if (a > 0) {
|
|
this.doSend(a == 1 ? this.callBuffer[0] : this.callBuffer);
|
|
this.callBuffer = []
|
|
}
|
|
}, queueTransaction:function (a) {
|
|
if (a.form) {
|
|
this.processForm(a);
|
|
return
|
|
}
|
|
this.callBuffer.push(a);
|
|
if (this.enableBuffer) {
|
|
if (!this.callTask) {
|
|
this.callTask = new Ext.util.DelayedTask(this.combineAndSend, this)
|
|
}
|
|
this.callTask.delay(Ext.isNumber(this.enableBuffer) ? this.enableBuffer : 10)
|
|
} else {
|
|
this.combineAndSend()
|
|
}
|
|
}, doCall:function (i, a, b) {
|
|
var h = null, e = b[a.len], g = b[a.len + 1];
|
|
if (a.len !== 0) {
|
|
h = b.slice(0, a.len)
|
|
}
|
|
var d = new Ext.Direct.Transaction({provider:this, args:b, action:i, method:a.name, data:h, cb:g && Ext.isFunction(e) ? e.createDelegate(g) : e});
|
|
if (this.fireEvent("beforecall", this, d, a) !== false) {
|
|
Ext.Direct.addTransaction(d);
|
|
this.queueTransaction(d);
|
|
this.fireEvent("call", this, d, a)
|
|
}
|
|
}, doForm:function (j, b, g, i, e) {
|
|
var d = new Ext.Direct.Transaction({provider:this, action:j, method:b.name, args:[g, i, e], cb:e && Ext.isFunction(i) ? i.createDelegate(e) : i, isForm:true});
|
|
if (this.fireEvent("beforecall", this, d, b) !== false) {
|
|
Ext.Direct.addTransaction(d);
|
|
var a = String(g.getAttribute("enctype")).toLowerCase() == "multipart/form-data", h = {extTID:d.tid, extAction:j, extMethod:b.name, extType:"rpc", extUpload:String(a)};
|
|
Ext.apply(d, {form:Ext.getDom(g), isUpload:a, params:i && Ext.isObject(i.params) ? Ext.apply(h, i.params) : h});
|
|
this.fireEvent("call", this, d, b);
|
|
this.processForm(d)
|
|
}
|
|
}, processForm:function (a) {
|
|
Ext.Ajax.request({url:this.url, params:a.params, callback:this.onData, scope:this, form:a.form, isUpload:a.isUpload, ts:a})
|
|
}, createMethod:function (d, a) {
|
|
var b;
|
|
if (!a.formHandler) {
|
|
b = function () {
|
|
this.doCall(d, a, Array.prototype.slice.call(arguments, 0))
|
|
}.createDelegate(this)
|
|
} else {
|
|
b = function (e, g, c) {
|
|
this.doForm(d, a, e, g, c)
|
|
}.createDelegate(this)
|
|
}
|
|
b.directCfg = {action:d, method:a};
|
|
return b
|
|
}, getTransaction:function (a) {
|
|
return a && a.tid ? Ext.Direct.getTransaction(a.tid) : null
|
|
}, doCallback:function (c, g) {
|
|
var d = g.status ? "success" : "failure";
|
|
if (c && c.cb) {
|
|
var b = c.cb, a = Ext.isDefined(g.result) ? g.result : g.data;
|
|
if (Ext.isFunction(b)) {
|
|
b(a, g)
|
|
} else {
|
|
Ext.callback(b[d], b.scope, [a, g]);
|
|
Ext.callback(b.callback, b.scope, [a, g])
|
|
}
|
|
}
|
|
}});
|
|
Ext.Direct.PROVIDERS.remoting = Ext.direct.RemotingProvider;
|
|
Ext.Resizable = Ext.extend(Ext.util.Observable, {constructor:function (d, e) {
|
|
this.el = Ext.get(d);
|
|
if (e && e.wrap) {
|
|
e.resizeChild = this.el;
|
|
this.el = this.el.wrap(typeof e.wrap == "object" ? e.wrap : {cls:"xresizable-wrap"});
|
|
this.el.id = this.el.dom.id = e.resizeChild.id + "-rzwrap";
|
|
this.el.setStyle("overflow", "hidden");
|
|
this.el.setPositioning(e.resizeChild.getPositioning());
|
|
e.resizeChild.clearPositioning();
|
|
if (!e.width || !e.height) {
|
|
var g = e.resizeChild.getSize();
|
|
this.el.setSize(g.width, g.height)
|
|
}
|
|
if (e.pinned && !e.adjustments) {
|
|
e.adjustments = "auto"
|
|
}
|
|
}
|
|
this.proxy = this.el.createProxy({tag:"div", cls:"x-resizable-proxy", id:this.el.id + "-rzproxy"}, Ext.getBody());
|
|
this.proxy.unselectable();
|
|
this.proxy.enableDisplayMode("block");
|
|
Ext.apply(this, e);
|
|
if (this.pinned) {
|
|
this.disableTrackOver = true;
|
|
this.el.addClass("x-resizable-pinned")
|
|
}
|
|
var k = this.el.getStyle("position");
|
|
if (k != "absolute" && k != "fixed") {
|
|
this.el.setStyle("position", "relative")
|
|
}
|
|
if (!this.handles) {
|
|
this.handles = "s,e,se";
|
|
if (this.multiDirectional) {
|
|
this.handles += ",n,w"
|
|
}
|
|
}
|
|
if (this.handles == "all") {
|
|
this.handles = "n s e w ne nw se sw"
|
|
}
|
|
var o = this.handles.split(/\s*?[,;]\s*?| /);
|
|
var c = Ext.Resizable.positions;
|
|
for (var j = 0, l = o.length; j < l; j++) {
|
|
if (o[j] && c[o[j]]) {
|
|
var n = c[o[j]];
|
|
this[n] = new Ext.Resizable.Handle(this, n, this.disableTrackOver, this.transparent, this.handleCls)
|
|
}
|
|
}
|
|
this.corner = this.southeast;
|
|
if (this.handles.indexOf("n") != -1 || this.handles.indexOf("w") != -1) {
|
|
this.updateBox = true
|
|
}
|
|
this.activeHandle = null;
|
|
if (this.resizeChild) {
|
|
if (typeof this.resizeChild == "boolean") {
|
|
this.resizeChild = Ext.get(this.el.dom.firstChild, true)
|
|
} else {
|
|
this.resizeChild = Ext.get(this.resizeChild, true)
|
|
}
|
|
}
|
|
if (this.adjustments == "auto") {
|
|
var b = this.resizeChild;
|
|
var m = this.west, h = this.east, a = this.north, o = this.south;
|
|
if (b && (m || a)) {
|
|
b.position("relative");
|
|
b.setLeft(m ? m.el.getWidth() : 0);
|
|
b.setTop(a ? a.el.getHeight() : 0)
|
|
}
|
|
this.adjustments = [(h ? -h.el.getWidth() : 0) + (m ? -m.el.getWidth() : 0), (a ? -a.el.getHeight() : 0) + (o ? -o.el.getHeight() : 0) - 1]
|
|
}
|
|
if (this.draggable) {
|
|
this.dd = this.dynamic ? this.el.initDD(null) : this.el.initDDProxy(null, {dragElId:this.proxy.id});
|
|
this.dd.setHandleElId(this.resizeChild ? this.resizeChild.id : this.el.id);
|
|
if (this.constrainTo) {
|
|
this.dd.constrainTo(this.constrainTo)
|
|
}
|
|
}
|
|
this.addEvents("beforeresize", "resize");
|
|
if (this.width !== null && this.height !== null) {
|
|
this.resizeTo(this.width, this.height)
|
|
} else {
|
|
this.updateChildSize()
|
|
}
|
|
if (Ext.isIE) {
|
|
this.el.dom.style.zoom = 1
|
|
}
|
|
Ext.Resizable.superclass.constructor.call(this)
|
|
}, adjustments:[0, 0], animate:false, disableTrackOver:false, draggable:false, duration:0.35, dynamic:false, easing:"easeOutStrong", enabled:true, handles:false, multiDirectional:false, height:null, width:null, heightIncrement:0, widthIncrement:0, minHeight:5, minWidth:5, maxHeight:10000, maxWidth:10000, minX:0, minY:0, pinned:false, preserveRatio:false, resizeChild:false, transparent:false, resizeTo:function (b, a) {
|
|
this.el.setSize(b, a);
|
|
this.updateChildSize();
|
|
this.fireEvent("resize", this, b, a, null)
|
|
}, startSizing:function (c, b) {
|
|
this.fireEvent("beforeresize", this, c);
|
|
if (this.enabled) {
|
|
if (!this.overlay) {
|
|
this.overlay = this.el.createProxy({tag:"div", cls:"x-resizable-overlay", html:" "}, Ext.getBody());
|
|
this.overlay.unselectable();
|
|
this.overlay.enableDisplayMode("block");
|
|
this.overlay.on({scope:this, mousemove:this.onMouseMove, mouseup:this.onMouseUp})
|
|
}
|
|
this.overlay.setStyle("cursor", b.el.getStyle("cursor"));
|
|
this.resizing = true;
|
|
this.startBox = this.el.getBox();
|
|
this.startPoint = c.getXY();
|
|
this.offsets = [(this.startBox.x + this.startBox.width) - this.startPoint[0], (this.startBox.y + this.startBox.height) - this.startPoint[1]];
|
|
this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
|
|
this.overlay.show();
|
|
if (this.constrainTo) {
|
|
var a = Ext.get(this.constrainTo);
|
|
this.resizeRegion = a.getRegion().adjust(a.getFrameWidth("t"), a.getFrameWidth("l"), -a.getFrameWidth("b"), -a.getFrameWidth("r"))
|
|
}
|
|
this.proxy.setStyle("visibility", "hidden");
|
|
this.proxy.show();
|
|
this.proxy.setBox(this.startBox);
|
|
if (!this.dynamic) {
|
|
this.proxy.setStyle("visibility", "visible")
|
|
}
|
|
}
|
|
}, onMouseDown:function (a, b) {
|
|
if (this.enabled) {
|
|
b.stopEvent();
|
|
this.activeHandle = a;
|
|
this.startSizing(b, a)
|
|
}
|
|
}, onMouseUp:function (b) {
|
|
this.activeHandle = null;
|
|
var a = this.resizeElement();
|
|
this.resizing = false;
|
|
this.handleOut();
|
|
this.overlay.hide();
|
|
this.proxy.hide();
|
|
this.fireEvent("resize", this, a.width, a.height, b)
|
|
}, updateChildSize:function () {
|
|
if (this.resizeChild) {
|
|
var d = this.el;
|
|
var e = this.resizeChild;
|
|
var c = this.adjustments;
|
|
if (d.dom.offsetWidth) {
|
|
var a = d.getSize(true);
|
|
e.setSize(a.width + c[0], a.height + c[1])
|
|
}
|
|
if (Ext.isIE) {
|
|
setTimeout(function () {
|
|
if (d.dom.offsetWidth) {
|
|
var g = d.getSize(true);
|
|
e.setSize(g.width + c[0], g.height + c[1])
|
|
}
|
|
}, 10)
|
|
}
|
|
}
|
|
}, snap:function (c, e, b) {
|
|
if (!e || !c) {
|
|
return c
|
|
}
|
|
var d = c;
|
|
var a = c % e;
|
|
if (a > 0) {
|
|
if (a > (e / 2)) {
|
|
d = c + (e - a)
|
|
} else {
|
|
d = c - a
|
|
}
|
|
}
|
|
return Math.max(b, d)
|
|
}, resizeElement:function () {
|
|
var a = this.proxy.getBox();
|
|
if (this.updateBox) {
|
|
this.el.setBox(a, false, this.animate, this.duration, null, this.easing)
|
|
} else {
|
|
this.el.setSize(a.width, a.height, this.animate, this.duration, null, this.easing)
|
|
}
|
|
this.updateChildSize();
|
|
if (!this.dynamic) {
|
|
this.proxy.hide()
|
|
}
|
|
if (this.draggable && this.constrainTo) {
|
|
this.dd.resetConstraints();
|
|
this.dd.constrainTo(this.constrainTo)
|
|
}
|
|
return a
|
|
}, constrain:function (b, c, a, d) {
|
|
if (b - c < a) {
|
|
c = b - a
|
|
} else {
|
|
if (b - c > d) {
|
|
c = b - d
|
|
}
|
|
}
|
|
return c
|
|
}, onMouseMove:function (z) {
|
|
if (this.enabled && this.activeHandle) {
|
|
try {
|
|
if (this.resizeRegion && !this.resizeRegion.contains(z.getPoint())) {
|
|
return
|
|
}
|
|
var t = this.curSize || this.startBox, l = this.startBox.x, k = this.startBox.y, c = l, b = k, m = t.width, u = t.height, d = m, o = u, n = this.minWidth, A = this.minHeight, s = this.maxWidth, D = this.maxHeight, i = this.widthIncrement, a = this.heightIncrement, B = z.getXY(), r = -(this.startPoint[0] - Math.max(this.minX, B[0])), p = -(this.startPoint[1] - Math.max(this.minY, B[1])), j = this.activeHandle.position, E, g;
|
|
switch (j) {
|
|
case"east":
|
|
m += r;
|
|
m = Math.min(Math.max(n, m), s);
|
|
break;
|
|
case"south":
|
|
u += p;
|
|
u = Math.min(Math.max(A, u), D);
|
|
break;
|
|
case"southeast":
|
|
m += r;
|
|
u += p;
|
|
m = Math.min(Math.max(n, m), s);
|
|
u = Math.min(Math.max(A, u), D);
|
|
break;
|
|
case"north":
|
|
p = this.constrain(u, p, A, D);
|
|
k += p;
|
|
u -= p;
|
|
break;
|
|
case"west":
|
|
r = this.constrain(m, r, n, s);
|
|
l += r;
|
|
m -= r;
|
|
break;
|
|
case"northeast":
|
|
m += r;
|
|
m = Math.min(Math.max(n, m), s);
|
|
p = this.constrain(u, p, A, D);
|
|
k += p;
|
|
u -= p;
|
|
break;
|
|
case"northwest":
|
|
r = this.constrain(m, r, n, s);
|
|
p = this.constrain(u, p, A, D);
|
|
k += p;
|
|
u -= p;
|
|
l += r;
|
|
m -= r;
|
|
break;
|
|
case"southwest":
|
|
r = this.constrain(m, r, n, s);
|
|
u += p;
|
|
u = Math.min(Math.max(A, u), D);
|
|
l += r;
|
|
m -= r;
|
|
break
|
|
}
|
|
var q = this.snap(m, i, n);
|
|
var C = this.snap(u, a, A);
|
|
if (q != m || C != u) {
|
|
switch (j) {
|
|
case"northeast":
|
|
k -= C - u;
|
|
break;
|
|
case"north":
|
|
k -= C - u;
|
|
break;
|
|
case"southwest":
|
|
l -= q - m;
|
|
break;
|
|
case"west":
|
|
l -= q - m;
|
|
break;
|
|
case"northwest":
|
|
l -= q - m;
|
|
k -= C - u;
|
|
break
|
|
}
|
|
m = q;
|
|
u = C
|
|
}
|
|
if (this.preserveRatio) {
|
|
switch (j) {
|
|
case"southeast":
|
|
case"east":
|
|
u = o * (m / d);
|
|
u = Math.min(Math.max(A, u), D);
|
|
m = d * (u / o);
|
|
break;
|
|
case"south":
|
|
m = d * (u / o);
|
|
m = Math.min(Math.max(n, m), s);
|
|
u = o * (m / d);
|
|
break;
|
|
case"northeast":
|
|
m = d * (u / o);
|
|
m = Math.min(Math.max(n, m), s);
|
|
u = o * (m / d);
|
|
break;
|
|
case"north":
|
|
E = m;
|
|
m = d * (u / o);
|
|
m = Math.min(Math.max(n, m), s);
|
|
u = o * (m / d);
|
|
l += (E - m) / 2;
|
|
break;
|
|
case"southwest":
|
|
u = o * (m / d);
|
|
u = Math.min(Math.max(A, u), D);
|
|
E = m;
|
|
m = d * (u / o);
|
|
l += E - m;
|
|
break;
|
|
case"west":
|
|
g = u;
|
|
u = o * (m / d);
|
|
u = Math.min(Math.max(A, u), D);
|
|
k += (g - u) / 2;
|
|
E = m;
|
|
m = d * (u / o);
|
|
l += E - m;
|
|
break;
|
|
case"northwest":
|
|
E = m;
|
|
g = u;
|
|
u = o * (m / d);
|
|
u = Math.min(Math.max(A, u), D);
|
|
m = d * (u / o);
|
|
k += g - u;
|
|
l += E - m;
|
|
break
|
|
}
|
|
}
|
|
this.proxy.setBounds(l, k, m, u);
|
|
if (this.dynamic) {
|
|
this.resizeElement()
|
|
}
|
|
} catch (v) {
|
|
}
|
|
}
|
|
}, handleOver:function () {
|
|
if (this.enabled) {
|
|
this.el.addClass("x-resizable-over")
|
|
}
|
|
}, handleOut:function () {
|
|
if (!this.resizing) {
|
|
this.el.removeClass("x-resizable-over")
|
|
}
|
|
}, getEl:function () {
|
|
return this.el
|
|
}, getResizeChild:function () {
|
|
return this.resizeChild
|
|
}, destroy:function (b) {
|
|
Ext.destroy(this.dd, this.overlay, this.proxy);
|
|
this.overlay = null;
|
|
this.proxy = null;
|
|
var c = Ext.Resizable.positions;
|
|
for (var a in c) {
|
|
if (typeof c[a] != "function" && this[c[a]]) {
|
|
this[c[a]].destroy()
|
|
}
|
|
}
|
|
if (b) {
|
|
this.el.update("");
|
|
Ext.destroy(this.el);
|
|
this.el = null
|
|
}
|
|
this.purgeListeners()
|
|
}, syncHandleHeight:function () {
|
|
var a = this.el.getHeight(true);
|
|
if (this.west) {
|
|
this.west.el.setHeight(a)
|
|
}
|
|
if (this.east) {
|
|
this.east.el.setHeight(a)
|
|
}
|
|
}});
|
|
Ext.Resizable.positions = {n:"north", s:"south", e:"east", w:"west", se:"southeast", sw:"southwest", nw:"northwest", ne:"northeast"};
|
|
Ext.Resizable.Handle = Ext.extend(Object, {constructor:function (d, g, c, e, a) {
|
|
if (!this.tpl) {
|
|
var b = Ext.DomHelper.createTemplate({tag:"div", cls:"x-resizable-handle x-resizable-handle-{0}"});
|
|
b.compile();
|
|
Ext.Resizable.Handle.prototype.tpl = b
|
|
}
|
|
this.position = g;
|
|
this.rz = d;
|
|
this.el = this.tpl.append(d.el.dom, [this.position], true);
|
|
this.el.unselectable();
|
|
if (e) {
|
|
this.el.setOpacity(0)
|
|
}
|
|
if (!Ext.isEmpty(a)) {
|
|
this.el.addClass(a)
|
|
}
|
|
this.el.on("mousedown", this.onMouseDown, this);
|
|
if (!c) {
|
|
this.el.on({scope:this, mouseover:this.onMouseOver, mouseout:this.onMouseOut})
|
|
}
|
|
}, afterResize:function (a) {
|
|
}, onMouseDown:function (a) {
|
|
this.rz.onMouseDown(this, a)
|
|
}, onMouseOver:function (a) {
|
|
this.rz.handleOver(this, a)
|
|
}, onMouseOut:function (a) {
|
|
this.rz.handleOut(this, a)
|
|
}, destroy:function () {
|
|
Ext.destroy(this.el);
|
|
this.el = null
|
|
}});
|
|
Ext.Window = Ext.extend(Ext.Panel, {baseCls:"x-window", resizable:true, draggable:true, closable:true, closeAction:"close", constrain:false, constrainHeader:false, plain:false, minimizable:false, maximizable:false, minHeight:100, minWidth:200, expandOnShow:true, showAnimDuration:0.25, hideAnimDuration:0.25, collapsible:false, initHidden:undefined, hidden:true, elements:"header,body", frame:true, floating:true, initComponent:function () {
|
|
this.initTools();
|
|
Ext.Window.superclass.initComponent.call(this);
|
|
this.addEvents("resize", "maximize", "minimize", "restore");
|
|
if (Ext.isDefined(this.initHidden)) {
|
|
this.hidden = this.initHidden
|
|
}
|
|
if (this.hidden === false) {
|
|
this.hidden = true;
|
|
this.show()
|
|
}
|
|
}, getState:function () {
|
|
return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox(true))
|
|
}, onRender:function (b, a) {
|
|
Ext.Window.superclass.onRender.call(this, b, a);
|
|
if (this.plain) {
|
|
this.el.addClass("x-window-plain")
|
|
}
|
|
this.focusEl = this.el.createChild({tag:"a", href:"#", cls:"x-dlg-focus", tabIndex:"-1", html:" "});
|
|
this.focusEl.swallowEvent("click", true);
|
|
this.proxy = this.el.createProxy("x-window-proxy");
|
|
this.proxy.enableDisplayMode("block");
|
|
if (this.modal) {
|
|
this.mask = this.container.createChild({cls:"ext-el-mask"}, this.el.dom);
|
|
this.mask.enableDisplayMode("block");
|
|
this.mask.hide();
|
|
this.mon(this.mask, "click", this.focus, this)
|
|
}
|
|
if (this.maximizable) {
|
|
this.mon(this.header, "dblclick", this.toggleMaximize, this)
|
|
}
|
|
}, initEvents:function () {
|
|
Ext.Window.superclass.initEvents.call(this);
|
|
if (this.animateTarget) {
|
|
this.setAnimateTarget(this.animateTarget)
|
|
}
|
|
if (this.resizable) {
|
|
this.resizer = new Ext.Resizable(this.el, {minWidth:this.minWidth, minHeight:this.minHeight, handles:this.resizeHandles || "all", pinned:true, resizeElement:this.resizerAction, handleCls:"x-window-handle"});
|
|
this.resizer.window = this;
|
|
this.mon(this.resizer, "beforeresize", this.beforeResize, this)
|
|
}
|
|
if (this.draggable) {
|
|
this.header.addClass("x-window-draggable")
|
|
}
|
|
this.mon(this.el, "mousedown", this.toFront, this);
|
|
this.manager = this.manager || Ext.WindowMgr;
|
|
this.manager.register(this);
|
|
if (this.maximized) {
|
|
this.maximized = false;
|
|
this.maximize()
|
|
}
|
|
if (this.closable) {
|
|
var a = this.getKeyMap();
|
|
a.on(27, this.onEsc, this);
|
|
a.disable()
|
|
}
|
|
}, initDraggable:function () {
|
|
this.dd = new Ext.Window.DD(this)
|
|
}, onEsc:function (a, b) {
|
|
if (this.activeGhost) {
|
|
this.unghost()
|
|
}
|
|
b.stopEvent();
|
|
this[this.closeAction]()
|
|
}, beforeDestroy:function () {
|
|
if (this.rendered) {
|
|
this.hide();
|
|
this.clearAnchor();
|
|
Ext.destroy(this.focusEl, this.resizer, this.dd, this.proxy, this.mask)
|
|
}
|
|
Ext.Window.superclass.beforeDestroy.call(this)
|
|
}, onDestroy:function () {
|
|
if (this.manager) {
|
|
this.manager.unregister(this)
|
|
}
|
|
Ext.Window.superclass.onDestroy.call(this)
|
|
}, initTools:function () {
|
|
if (this.minimizable) {
|
|
this.addTool({id:"minimize", handler:this.minimize.createDelegate(this, [])})
|
|
}
|
|
if (this.maximizable) {
|
|
this.addTool({id:"maximize", handler:this.maximize.createDelegate(this, [])});
|
|
this.addTool({id:"restore", handler:this.restore.createDelegate(this, []), hidden:true})
|
|
}
|
|
if (this.closable) {
|
|
this.addTool({id:"close", handler:this[this.closeAction].createDelegate(this, [])})
|
|
}
|
|
}, resizerAction:function () {
|
|
var a = this.proxy.getBox();
|
|
this.proxy.hide();
|
|
this.window.handleResize(a);
|
|
return a
|
|
}, beforeResize:function () {
|
|
this.resizer.minHeight = Math.max(this.minHeight, this.getFrameHeight() + 40);
|
|
this.resizer.minWidth = Math.max(this.minWidth, this.getFrameWidth() + 40);
|
|
this.resizeBox = this.el.getBox()
|
|
}, updateHandles:function () {
|
|
if (Ext.isIE && this.resizer) {
|
|
this.resizer.syncHandleHeight();
|
|
this.el.repaint()
|
|
}
|
|
}, handleResize:function (b) {
|
|
var a = this.resizeBox;
|
|
if (a.x != b.x || a.y != b.y) {
|
|
this.updateBox(b)
|
|
} else {
|
|
this.setSize(b);
|
|
if (Ext.isIE6 && Ext.isStrict) {
|
|
this.doLayout()
|
|
}
|
|
}
|
|
this.focus();
|
|
this.updateHandles();
|
|
this.saveState()
|
|
}, focus:function () {
|
|
var e = this.focusEl, a = this.defaultButton, c = typeof a, d, b;
|
|
if (Ext.isDefined(a)) {
|
|
if (Ext.isNumber(a) && this.fbar) {
|
|
e = this.fbar.items.get(a)
|
|
} else {
|
|
if (Ext.isString(a)) {
|
|
e = Ext.getCmp(a)
|
|
} else {
|
|
e = a
|
|
}
|
|
}
|
|
d = e.getEl();
|
|
b = Ext.getDom(this.container);
|
|
if (d && b) {
|
|
if (b != document.body && !Ext.lib.Region.getRegion(b).contains(Ext.lib.Region.getRegion(d.dom))) {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
e = e || this.focusEl;
|
|
e.focus.defer(10, e)
|
|
}, setAnimateTarget:function (a) {
|
|
a = Ext.get(a);
|
|
this.animateTarget = a
|
|
}, beforeShow:function () {
|
|
delete this.el.lastXY;
|
|
delete this.el.lastLT;
|
|
if (this.x === undefined || this.y === undefined) {
|
|
var a = this.el.getAlignToXY(this.container, "c-c");
|
|
var b = this.el.translatePoints(a[0], a[1]);
|
|
this.x = this.x === undefined ? b.left : this.x;
|
|
this.y = this.y === undefined ? b.top : this.y
|
|
}
|
|
this.el.setLeftTop(this.x, this.y);
|
|
if (this.expandOnShow) {
|
|
this.expand(false)
|
|
}
|
|
if (this.modal) {
|
|
Ext.getBody().addClass("x-body-masked");
|
|
this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
|
|
this.mask.show()
|
|
}
|
|
}, show:function (c, a, b) {
|
|
if (!this.rendered) {
|
|
this.render(Ext.getBody())
|
|
}
|
|
if (this.hidden === false) {
|
|
this.toFront();
|
|
return this
|
|
}
|
|
if (this.fireEvent("beforeshow", this) === false) {
|
|
return this
|
|
}
|
|
if (a) {
|
|
this.on("show", a, b, {single:true})
|
|
}
|
|
this.hidden = false;
|
|
if (Ext.isDefined(c)) {
|
|
this.setAnimateTarget(c)
|
|
}
|
|
this.beforeShow();
|
|
if (this.animateTarget) {
|
|
this.animShow()
|
|
} else {
|
|
this.afterShow()
|
|
}
|
|
return this
|
|
}, afterShow:function (b) {
|
|
if (this.isDestroyed) {
|
|
return false
|
|
}
|
|
this.proxy.hide();
|
|
this.el.setStyle("display", "block");
|
|
this.el.show();
|
|
if (this.maximized) {
|
|
this.fitContainer()
|
|
}
|
|
if (Ext.isMac && Ext.isGecko2) {
|
|
this.cascade(this.setAutoScroll)
|
|
}
|
|
if (this.monitorResize || this.modal || this.constrain || this.constrainHeader) {
|
|
Ext.EventManager.onWindowResize(this.onWindowResize, this)
|
|
}
|
|
this.doConstrain();
|
|
this.doLayout();
|
|
if (this.keyMap) {
|
|
this.keyMap.enable()
|
|
}
|
|
this.toFront();
|
|
this.updateHandles();
|
|
if (b && (Ext.isIE || Ext.isWebKit)) {
|
|
var a = this.getSize();
|
|
this.onResize(a.width, a.height)
|
|
}
|
|
this.onShow();
|
|
this.fireEvent("show", this)
|
|
}, animShow:function () {
|
|
this.proxy.show();
|
|
this.proxy.setBox(this.animateTarget.getBox());
|
|
this.proxy.setOpacity(0);
|
|
var a = this.getBox();
|
|
this.el.setStyle("display", "none");
|
|
this.proxy.shift(Ext.apply(a, {callback:this.afterShow.createDelegate(this, [true], false), scope:this, easing:"easeNone", duration:this.showAnimDuration, opacity:0.5}))
|
|
}, hide:function (c, a, b) {
|
|
if (this.hidden || this.fireEvent("beforehide", this) === false) {
|
|
return this
|
|
}
|
|
if (a) {
|
|
this.on("hide", a, b, {single:true})
|
|
}
|
|
this.hidden = true;
|
|
if (c !== undefined) {
|
|
this.setAnimateTarget(c)
|
|
}
|
|
if (this.modal) {
|
|
this.mask.hide();
|
|
Ext.getBody().removeClass("x-body-masked")
|
|
}
|
|
if (this.animateTarget) {
|
|
this.animHide()
|
|
} else {
|
|
this.el.hide();
|
|
this.afterHide()
|
|
}
|
|
return this
|
|
}, afterHide:function () {
|
|
this.proxy.hide();
|
|
if (this.monitorResize || this.modal || this.constrain || this.constrainHeader) {
|
|
Ext.EventManager.removeResizeListener(this.onWindowResize, this)
|
|
}
|
|
if (this.keyMap) {
|
|
this.keyMap.disable()
|
|
}
|
|
this.onHide();
|
|
this.fireEvent("hide", this)
|
|
}, animHide:function () {
|
|
this.proxy.setOpacity(0.5);
|
|
this.proxy.show();
|
|
var a = this.getBox(false);
|
|
this.proxy.setBox(a);
|
|
this.el.hide();
|
|
this.proxy.shift(Ext.apply(this.animateTarget.getBox(), {callback:this.afterHide, scope:this, duration:this.hideAnimDuration, easing:"easeNone", opacity:0}))
|
|
}, onShow:Ext.emptyFn, onHide:Ext.emptyFn, onWindowResize:function () {
|
|
if (this.maximized) {
|
|
this.fitContainer()
|
|
}
|
|
if (this.modal) {
|
|
this.mask.setSize("100%", "100%");
|
|
var a = this.mask.dom.offsetHeight;
|
|
this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true))
|
|
}
|
|
this.doConstrain()
|
|
}, doConstrain:function () {
|
|
if (this.constrain || this.constrainHeader) {
|
|
var b;
|
|
if (this.constrain) {
|
|
b = {right:this.el.shadowOffset, left:this.el.shadowOffset, bottom:this.el.shadowOffset}
|
|
} else {
|
|
var a = this.getSize();
|
|
b = {right:-(a.width - 100), bottom:-(a.height - 25 + this.el.getConstrainOffset())}
|
|
}
|
|
var c = this.el.getConstrainToXY(this.container, true, b);
|
|
if (c) {
|
|
this.setPosition(c[0], c[1])
|
|
}
|
|
}
|
|
}, ghost:function (a) {
|
|
var c = this.createGhost(a);
|
|
var b = this.getBox(true);
|
|
c.setLeftTop(b.x, b.y);
|
|
c.setWidth(b.width);
|
|
this.el.hide();
|
|
this.activeGhost = c;
|
|
return c
|
|
}, unghost:function (b, a) {
|
|
if (!this.activeGhost) {
|
|
return
|
|
}
|
|
if (b !== false) {
|
|
this.el.show();
|
|
this.focus.defer(10, this);
|
|
if (Ext.isMac && Ext.isGecko2) {
|
|
this.cascade(this.setAutoScroll)
|
|
}
|
|
}
|
|
if (a !== false) {
|
|
this.setPosition(this.activeGhost.getLeft(true), this.activeGhost.getTop(true))
|
|
}
|
|
this.activeGhost.hide();
|
|
this.activeGhost.remove();
|
|
delete this.activeGhost
|
|
}, minimize:function () {
|
|
this.fireEvent("minimize", this);
|
|
return this
|
|
}, close:function () {
|
|
if (this.fireEvent("beforeclose", this) !== false) {
|
|
if (this.hidden) {
|
|
this.doClose()
|
|
} else {
|
|
this.hide(null, this.doClose, this)
|
|
}
|
|
}
|
|
}, doClose:function () {
|
|
this.fireEvent("close", this);
|
|
this.destroy()
|
|
}, maximize:function () {
|
|
if (!this.maximized) {
|
|
this.expand(false);
|
|
this.restoreSize = this.getSize();
|
|
this.restorePos = this.getPosition(true);
|
|
if (this.maximizable) {
|
|
this.tools.maximize.hide();
|
|
this.tools.restore.show()
|
|
}
|
|
this.maximized = true;
|
|
this.el.disableShadow();
|
|
if (this.dd) {
|
|
this.dd.lock()
|
|
}
|
|
if (this.collapsible) {
|
|
this.tools.toggle.hide()
|
|
}
|
|
this.el.addClass("x-window-maximized");
|
|
this.container.addClass("x-window-maximized-ct");
|
|
this.setPosition(0, 0);
|
|
this.fitContainer();
|
|
this.fireEvent("maximize", this)
|
|
}
|
|
return this
|
|
}, restore:function () {
|
|
if (this.maximized) {
|
|
var a = this.tools;
|
|
this.el.removeClass("x-window-maximized");
|
|
if (a.restore) {
|
|
a.restore.hide()
|
|
}
|
|
if (a.maximize) {
|
|
a.maximize.show()
|
|
}
|
|
this.setPosition(this.restorePos[0], this.restorePos[1]);
|
|
this.setSize(this.restoreSize.width, this.restoreSize.height);
|
|
delete this.restorePos;
|
|
delete this.restoreSize;
|
|
this.maximized = false;
|
|
this.el.enableShadow(true);
|
|
if (this.dd) {
|
|
this.dd.unlock()
|
|
}
|
|
if (this.collapsible && a.toggle) {
|
|
a.toggle.show()
|
|
}
|
|
this.container.removeClass("x-window-maximized-ct");
|
|
this.doConstrain();
|
|
this.fireEvent("restore", this)
|
|
}
|
|
return this
|
|
}, toggleMaximize:function () {
|
|
return this[this.maximized ? "restore" : "maximize"]()
|
|
}, fitContainer:function () {
|
|
var a = this.container.getViewSize(false);
|
|
this.setSize(a.width, a.height)
|
|
}, setZIndex:function (a) {
|
|
if (this.modal) {
|
|
this.mask.setStyle("z-index", a)
|
|
}
|
|
this.el.setZIndex(++a);
|
|
a += 5;
|
|
if (this.resizer) {
|
|
this.resizer.proxy.setStyle("z-index", ++a)
|
|
}
|
|
this.lastZIndex = a
|
|
}, alignTo:function (b, a, c) {
|
|
var d = this.el.getAlignToXY(b, a, c);
|
|
this.setPagePosition(d[0], d[1]);
|
|
return this
|
|
}, anchorTo:function (c, e, d, b) {
|
|
this.clearAnchor();
|
|
this.anchorTarget = {el:c, alignment:e, offsets:d};
|
|
Ext.EventManager.onWindowResize(this.doAnchor, this);
|
|
var a = typeof b;
|
|
if (a != "undefined") {
|
|
Ext.EventManager.on(window, "scroll", this.doAnchor, this, {buffer:a == "number" ? b : 50})
|
|
}
|
|
return this.doAnchor()
|
|
}, doAnchor:function () {
|
|
var a = this.anchorTarget;
|
|
this.alignTo(a.el, a.alignment, a.offsets);
|
|
return this
|
|
}, clearAnchor:function () {
|
|
if (this.anchorTarget) {
|
|
Ext.EventManager.removeResizeListener(this.doAnchor, this);
|
|
Ext.EventManager.un(window, "scroll", this.doAnchor, this);
|
|
delete this.anchorTarget
|
|
}
|
|
return this
|
|
}, toFront:function (a) {
|
|
if (this.manager.bringToFront(this)) {
|
|
if (!a || !a.getTarget().focus) {
|
|
this.focus()
|
|
}
|
|
}
|
|
return this
|
|
}, setActive:function (a) {
|
|
if (a) {
|
|
if (!this.maximized) {
|
|
this.el.enableShadow(true)
|
|
}
|
|
this.fireEvent("activate", this)
|
|
} else {
|
|
this.el.disableShadow();
|
|
this.fireEvent("deactivate", this)
|
|
}
|
|
}, toBack:function () {
|
|
this.manager.sendToBack(this);
|
|
return this
|
|
}, center:function () {
|
|
var a = this.el.getAlignToXY(this.container, "c-c");
|
|
this.setPagePosition(a[0], a[1]);
|
|
return this
|
|
}});
|
|
Ext.reg("window", Ext.Window);
|
|
Ext.Window.DD = Ext.extend(Ext.dd.DD, {constructor:function (a) {
|
|
this.win = a;
|
|
Ext.Window.DD.superclass.constructor.call(this, a.el.id, "WindowDD-" + a.id);
|
|
this.setHandleElId(a.header.id);
|
|
this.scroll = false
|
|
}, moveOnly:true, headerOffsets:[100, 25], startDrag:function () {
|
|
var a = this.win;
|
|
this.proxy = a.ghost(a.initialConfig.cls);
|
|
if (a.constrain !== false) {
|
|
var c = a.el.shadowOffset;
|
|
this.constrainTo(a.container, {right:c, left:c, bottom:c})
|
|
} else {
|
|
if (a.constrainHeader !== false) {
|
|
var b = this.proxy.getSize();
|
|
this.constrainTo(a.container, {right:-(b.width - this.headerOffsets[0]), bottom:-(b.height - this.headerOffsets[1])})
|
|
}
|
|
}
|
|
}, b4Drag:Ext.emptyFn, onDrag:function (a) {
|
|
this.alignElWithMouse(this.proxy, a.getPageX(), a.getPageY())
|
|
}, endDrag:function (a) {
|
|
this.win.unghost();
|
|
this.win.saveState()
|
|
}});
|
|
Ext.WindowGroup = function () {
|
|
var g = {};
|
|
var d = [];
|
|
var e = null;
|
|
var c = function (j, i) {
|
|
return(!j._lastAccess || j._lastAccess < i._lastAccess) ? -1 : 1
|
|
};
|
|
var h = function () {
|
|
var l = d, j = l.length;
|
|
if (j > 0) {
|
|
l.sort(c);
|
|
var k = l[0].manager.zseed;
|
|
for (var m = 0; m < j; m++) {
|
|
var n = l[m];
|
|
if (n && !n.hidden) {
|
|
n.setZIndex(k + (m * 10))
|
|
}
|
|
}
|
|
}
|
|
a()
|
|
};
|
|
var b = function (i) {
|
|
if (i != e) {
|
|
if (e) {
|
|
e.setActive(false)
|
|
}
|
|
e = i;
|
|
if (i) {
|
|
i.setActive(true)
|
|
}
|
|
}
|
|
};
|
|
var a = function () {
|
|
for (var j = d.length - 1; j >= 0; --j) {
|
|
if (!d[j].hidden) {
|
|
b(d[j]);
|
|
return
|
|
}
|
|
}
|
|
b(null)
|
|
};
|
|
return{zseed:9000, register:function (i) {
|
|
if (i.manager) {
|
|
i.manager.unregister(i)
|
|
}
|
|
i.manager = this;
|
|
g[i.id] = i;
|
|
d.push(i);
|
|
i.on("hide", a)
|
|
}, unregister:function (i) {
|
|
delete i.manager;
|
|
delete g[i.id];
|
|
i.un("hide", a);
|
|
d.remove(i)
|
|
}, get:function (i) {
|
|
return typeof i == "object" ? i : g[i]
|
|
}, bringToFront:function (i) {
|
|
i = this.get(i);
|
|
if (i != e) {
|
|
i._lastAccess = new Date().getTime();
|
|
h();
|
|
return true
|
|
}
|
|
return false
|
|
}, sendToBack:function (i) {
|
|
i = this.get(i);
|
|
i._lastAccess = -(new Date().getTime());
|
|
h();
|
|
return i
|
|
}, hideAll:function () {
|
|
for (var i in g) {
|
|
if (g[i] && typeof g[i] != "function" && g[i].isVisible()) {
|
|
g[i].hide()
|
|
}
|
|
}
|
|
}, getActive:function () {
|
|
return e
|
|
}, getBy:function (l, k) {
|
|
var m = [];
|
|
for (var j = d.length - 1; j >= 0; --j) {
|
|
var n = d[j];
|
|
if (l.call(k || n, n) !== false) {
|
|
m.push(n)
|
|
}
|
|
}
|
|
return m
|
|
}, each:function (j, i) {
|
|
for (var k in g) {
|
|
if (g[k] && typeof g[k] != "function") {
|
|
if (j.call(i || g[k], g[k]) === false) {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}}
|
|
};
|
|
Ext.WindowMgr = new Ext.WindowGroup();
|
|
Ext.MessageBox = function () {
|
|
var u, b, q, t, h, l, s, a, n, p, j, g, r, v, o, i = "", d = "", m = ["ok", "yes", "no", "cancel"];
|
|
var c = function (x) {
|
|
r[x].blur();
|
|
if (u.isVisible()) {
|
|
u.hide();
|
|
w();
|
|
Ext.callback(b.fn, b.scope || window, [x, v.dom.value, b], 1)
|
|
}
|
|
};
|
|
var w = function () {
|
|
if (b && b.cls) {
|
|
u.el.removeClass(b.cls)
|
|
}
|
|
n.reset()
|
|
};
|
|
var e = function (z, x, y) {
|
|
if (b && b.closable !== false) {
|
|
u.hide();
|
|
w()
|
|
}
|
|
if (y) {
|
|
y.stopEvent()
|
|
}
|
|
};
|
|
var k = function (x) {
|
|
var z = 0, y;
|
|
if (!x) {
|
|
Ext.each(m, function (A) {
|
|
r[A].hide()
|
|
});
|
|
return z
|
|
}
|
|
u.footer.dom.style.display = "";
|
|
Ext.iterate(r, function (A, B) {
|
|
y = x[A];
|
|
if (y) {
|
|
B.show();
|
|
B.setText(Ext.isString(y) ? y : Ext.MessageBox.buttonText[A]);
|
|
z += B.getEl().getWidth() + 15
|
|
} else {
|
|
B.hide()
|
|
}
|
|
});
|
|
return z
|
|
};
|
|
return{getDialog:function (x) {
|
|
if (!u) {
|
|
var z = [];
|
|
r = {};
|
|
Ext.each(m, function (A) {
|
|
z.push(r[A] = new Ext.Button({text:this.buttonText[A], handler:c.createCallback(A), hideMode:"offsets"}))
|
|
}, this);
|
|
u = new Ext.Window({autoCreate:true, title:x, resizable:false, constrain:true, constrainHeader:true, minimizable:false, maximizable:false, stateful:false, modal:true, shim:true, buttonAlign:"center", width:400, height:100, minHeight:80, plain:true, footer:true, closable:true, close:function () {
|
|
if (b && b.buttons && b.buttons.no && !b.buttons.cancel) {
|
|
c("no")
|
|
} else {
|
|
c("cancel")
|
|
}
|
|
}, fbar:new Ext.Toolbar({items:z, enableOverflow:false})});
|
|
u.render(document.body);
|
|
u.getEl().addClass("x-window-dlg");
|
|
q = u.mask;
|
|
h = u.body.createChild({html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><div class="ext-mb-fix-cursor"><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div></div>'});
|
|
j = Ext.get(h.dom.firstChild);
|
|
var y = h.dom.childNodes[1];
|
|
l = Ext.get(y.firstChild);
|
|
s = Ext.get(y.childNodes[2].firstChild);
|
|
s.enableDisplayMode();
|
|
s.addKeyListener([10, 13], function () {
|
|
if (u.isVisible() && b && b.buttons) {
|
|
if (b.buttons.ok) {
|
|
c("ok")
|
|
} else {
|
|
if (b.buttons.yes) {
|
|
c("yes")
|
|
}
|
|
}
|
|
}
|
|
});
|
|
a = Ext.get(y.childNodes[2].childNodes[1]);
|
|
a.enableDisplayMode();
|
|
n = new Ext.ProgressBar({renderTo:h});
|
|
h.createChild({cls:"x-clear"})
|
|
}
|
|
return u
|
|
}, updateText:function (A) {
|
|
if (!u.isVisible() && !b.width) {
|
|
u.setSize(this.maxWidth, 100)
|
|
}
|
|
l.update(A ? A + " " : " ");
|
|
var y = d != "" ? (j.getWidth() + j.getMargins("lr")) : 0, C = l.getWidth() + l.getMargins("lr"), z = u.getFrameWidth("lr"), B = u.body.getFrameWidth("lr"), x;
|
|
x = Math.max(Math.min(b.width || y + C + z + B, b.maxWidth || this.maxWidth), Math.max(b.minWidth || this.minWidth, o || 0));
|
|
if (b.prompt === true) {
|
|
v.setWidth(x - y - z - B)
|
|
}
|
|
if (b.progress === true || b.wait === true) {
|
|
n.setSize(x - y - z - B)
|
|
}
|
|
if (Ext.isIE && x == o) {
|
|
x += 4
|
|
}
|
|
l.update(A || " ");
|
|
u.setSize(x, "auto").center();
|
|
return this
|
|
}, updateProgress:function (y, x, z) {
|
|
n.updateProgress(y, x);
|
|
if (z) {
|
|
this.updateText(z)
|
|
}
|
|
return this
|
|
}, isVisible:function () {
|
|
return u && u.isVisible()
|
|
}, hide:function () {
|
|
var x = u ? u.activeGhost : null;
|
|
if (this.isVisible() || x) {
|
|
u.hide();
|
|
w();
|
|
if (x) {
|
|
u.unghost(false, false)
|
|
}
|
|
}
|
|
return this
|
|
}, show:function (A) {
|
|
if (this.isVisible()) {
|
|
this.hide()
|
|
}
|
|
b = A;
|
|
var B = this.getDialog(b.title || " ");
|
|
B.setTitle(b.title || " ");
|
|
var x = (b.closable !== false && b.progress !== true && b.wait !== true);
|
|
B.tools.close.setDisplayed(x);
|
|
v = s;
|
|
b.prompt = b.prompt || (b.multiline ? true : false);
|
|
if (b.prompt) {
|
|
if (b.multiline) {
|
|
s.hide();
|
|
a.show();
|
|
a.setHeight(Ext.isNumber(b.multiline) ? b.multiline : this.defaultTextHeight);
|
|
v = a
|
|
} else {
|
|
s.show();
|
|
a.hide()
|
|
}
|
|
} else {
|
|
s.hide();
|
|
a.hide()
|
|
}
|
|
v.dom.value = b.value || "";
|
|
if (b.prompt) {
|
|
B.focusEl = v
|
|
} else {
|
|
var z = b.buttons;
|
|
var y = null;
|
|
if (z && z.ok) {
|
|
y = r.ok
|
|
} else {
|
|
if (z && z.yes) {
|
|
y = r.yes
|
|
}
|
|
}
|
|
if (y) {
|
|
B.focusEl = y
|
|
}
|
|
}
|
|
if (Ext.isDefined(b.iconCls)) {
|
|
B.setIconClass(b.iconCls)
|
|
}
|
|
this.setIcon(Ext.isDefined(b.icon) ? b.icon : i);
|
|
o = k(b.buttons);
|
|
n.setVisible(b.progress === true || b.wait === true);
|
|
this.updateProgress(0, b.progressText);
|
|
this.updateText(b.msg);
|
|
if (b.cls) {
|
|
B.el.addClass(b.cls)
|
|
}
|
|
B.proxyDrag = b.proxyDrag === true;
|
|
B.modal = b.modal !== false;
|
|
B.mask = b.modal !== false ? q : false;
|
|
if (!B.isVisible()) {
|
|
document.body.appendChild(u.el.dom);
|
|
B.setAnimateTarget(b.animEl);
|
|
B.on("show", function () {
|
|
if (x === true) {
|
|
B.keyMap.enable()
|
|
} else {
|
|
B.keyMap.disable()
|
|
}
|
|
}, this, {single:true});
|
|
B.show(b.animEl)
|
|
}
|
|
if (b.wait === true) {
|
|
n.wait(b.waitConfig)
|
|
}
|
|
return this
|
|
}, setIcon:function (x) {
|
|
if (!u) {
|
|
i = x;
|
|
return
|
|
}
|
|
i = undefined;
|
|
if (x && x != "") {
|
|
j.removeClass("x-hidden");
|
|
j.replaceClass(d, x);
|
|
h.addClass("x-dlg-icon");
|
|
d = x
|
|
} else {
|
|
j.replaceClass(d, "x-hidden");
|
|
h.removeClass("x-dlg-icon");
|
|
d = ""
|
|
}
|
|
return this
|
|
}, progress:function (z, y, x) {
|
|
this.show({title:z, msg:y, buttons:false, progress:true, closable:false, minWidth:this.minProgressWidth, progressText:x});
|
|
return this
|
|
}, wait:function (z, y, x) {
|
|
this.show({title:y, msg:z, buttons:false, closable:false, wait:true, modal:true, minWidth:this.minProgressWidth, waitConfig:x});
|
|
return this
|
|
}, alert:function (A, z, y, x) {
|
|
this.show({title:A, msg:z, buttons:this.OK, fn:y, scope:x, minWidth:this.minWidth});
|
|
return this
|
|
}, confirm:function (A, z, y, x) {
|
|
this.show({title:A, msg:z, buttons:this.YESNO, fn:y, scope:x, icon:this.QUESTION, minWidth:this.minWidth});
|
|
return this
|
|
}, prompt:function (C, B, z, y, x, A) {
|
|
this.show({title:C, msg:B, buttons:this.OKCANCEL, fn:z, minWidth:this.minPromptWidth, scope:y, prompt:true, multiline:x, value:A});
|
|
return this
|
|
}, OK:{ok:true}, CANCEL:{cancel:true}, OKCANCEL:{ok:true, cancel:true}, YESNO:{yes:true, no:true}, YESNOCANCEL:{yes:true, no:true, cancel:true}, INFO:"ext-mb-info", WARNING:"ext-mb-warning", QUESTION:"ext-mb-question", ERROR:"ext-mb-error", defaultTextHeight:75, maxWidth:600, minWidth:100, minProgressWidth:250, minPromptWidth:250, buttonText:{ok:"OK", cancel:"Cancel", yes:"Yes", no:"No"}}
|
|
}();
|
|
Ext.Msg = Ext.MessageBox;
|
|
Ext.dd.PanelProxy = Ext.extend(Object, {constructor:function (a, b) {
|
|
this.panel = a;
|
|
this.id = this.panel.id + "-ddproxy";
|
|
Ext.apply(this, b)
|
|
}, insertProxy:true, setStatus:Ext.emptyFn, reset:Ext.emptyFn, update:Ext.emptyFn, stop:Ext.emptyFn, sync:Ext.emptyFn, getEl:function () {
|
|
return this.ghost
|
|
}, getGhost:function () {
|
|
return this.ghost
|
|
}, getProxy:function () {
|
|
return this.proxy
|
|
}, hide:function () {
|
|
if (this.ghost) {
|
|
if (this.proxy) {
|
|
this.proxy.remove();
|
|
delete this.proxy
|
|
}
|
|
this.panel.el.dom.style.display = "";
|
|
this.ghost.remove();
|
|
delete this.ghost
|
|
}
|
|
}, show:function () {
|
|
if (!this.ghost) {
|
|
this.ghost = this.panel.createGhost(this.panel.initialConfig.cls, undefined, Ext.getBody());
|
|
this.ghost.setXY(this.panel.el.getXY());
|
|
if (this.insertProxy) {
|
|
this.proxy = this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});
|
|
this.proxy.setSize(this.panel.getSize())
|
|
}
|
|
this.panel.el.dom.style.display = "none"
|
|
}
|
|
}, repair:function (b, c, a) {
|
|
this.hide();
|
|
if (typeof c == "function") {
|
|
c.call(a || this)
|
|
}
|
|
}, moveProxy:function (a, b) {
|
|
if (this.proxy) {
|
|
a.insertBefore(this.proxy.dom, b)
|
|
}
|
|
}});
|
|
Ext.Panel.DD = Ext.extend(Ext.dd.DragSource, {constructor:function (b, a) {
|
|
this.panel = b;
|
|
this.dragData = {panel:b};
|
|
this.proxy = new Ext.dd.PanelProxy(b, a);
|
|
Ext.Panel.DD.superclass.constructor.call(this, b.el, a);
|
|
var d = b.header, c = b.body;
|
|
if (d) {
|
|
this.setHandleElId(d.id);
|
|
c = b.header
|
|
}
|
|
c.setStyle("cursor", "move");
|
|
this.scroll = false
|
|
}, showFrame:Ext.emptyFn, startDrag:Ext.emptyFn, b4StartDrag:function (a, b) {
|
|
this.proxy.show()
|
|
}, b4MouseDown:function (b) {
|
|
var a = b.getPageX(), c = b.getPageY();
|
|
this.autoOffset(a, c)
|
|
}, onInitDrag:function (a, b) {
|
|
this.onStartDrag(a, b);
|
|
return true
|
|
}, createFrame:Ext.emptyFn, getDragEl:function (a) {
|
|
return this.proxy.ghost.dom
|
|
}, endDrag:function (a) {
|
|
this.proxy.hide();
|
|
this.panel.saveState()
|
|
}, autoOffset:function (a, b) {
|
|
a -= this.startPageX;
|
|
b -= this.startPageY;
|
|
this.setDelta(a, b)
|
|
}});
|
|
Ext.state.Provider = Ext.extend(Ext.util.Observable, {constructor:function () {
|
|
this.addEvents("statechange");
|
|
this.state = {};
|
|
Ext.state.Provider.superclass.constructor.call(this)
|
|
}, get:function (b, a) {
|
|
return typeof this.state[b] == "undefined" ? a : this.state[b]
|
|
}, clear:function (a) {
|
|
delete this.state[a];
|
|
this.fireEvent("statechange", this, a, null)
|
|
}, set:function (a, b) {
|
|
this.state[a] = b;
|
|
this.fireEvent("statechange", this, a, b)
|
|
}, decodeValue:function (b) {
|
|
var e = /^(a|n|d|b|s|o|e)\:(.*)$/, h = e.exec(unescape(b)), d, c, a, g;
|
|
if (!h || !h[1]) {
|
|
return
|
|
}
|
|
c = h[1];
|
|
a = h[2];
|
|
switch (c) {
|
|
case"e":
|
|
return null;
|
|
case"n":
|
|
return parseFloat(a);
|
|
case"d":
|
|
return new Date(Date.parse(a));
|
|
case"b":
|
|
return(a == "1");
|
|
case"a":
|
|
d = [];
|
|
if (a != "") {
|
|
Ext.each(a.split("^"), function (i) {
|
|
d.push(this.decodeValue(i))
|
|
}, this)
|
|
}
|
|
return d;
|
|
case"o":
|
|
d = {};
|
|
if (a != "") {
|
|
Ext.each(a.split("^"), function (i) {
|
|
g = i.split("=");
|
|
d[g[0]] = this.decodeValue(g[1])
|
|
}, this)
|
|
}
|
|
return d;
|
|
default:
|
|
return a
|
|
}
|
|
}, encodeValue:function (c) {
|
|
var b, g = "", e = 0, a, d;
|
|
if (c == null) {
|
|
return"e:1"
|
|
} else {
|
|
if (typeof c == "number") {
|
|
b = "n:" + c
|
|
} else {
|
|
if (typeof c == "boolean") {
|
|
b = "b:" + (c ? "1" : "0")
|
|
} else {
|
|
if (Ext.isDate(c)) {
|
|
b = "d:" + c.toGMTString()
|
|
} else {
|
|
if (Ext.isArray(c)) {
|
|
for (a = c.length; e < a; e++) {
|
|
g += this.encodeValue(c[e]);
|
|
if (e != a - 1) {
|
|
g += "^"
|
|
}
|
|
}
|
|
b = "a:" + g
|
|
} else {
|
|
if (typeof c == "object") {
|
|
for (d in c) {
|
|
if (typeof c[d] != "function" && c[d] !== undefined) {
|
|
g += d + "=" + this.encodeValue(c[d]) + "^"
|
|
}
|
|
}
|
|
b = "o:" + g.substring(0, g.length - 1)
|
|
} else {
|
|
b = "s:" + c
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return escape(b)
|
|
}});
|
|
Ext.state.Manager = function () {
|
|
var a = new Ext.state.Provider();
|
|
return{setProvider:function (b) {
|
|
a = b
|
|
}, get:function (c, b) {
|
|
return a.get(c, b)
|
|
}, set:function (b, c) {
|
|
a.set(b, c)
|
|
}, clear:function (b) {
|
|
a.clear(b)
|
|
}, getProvider:function () {
|
|
return a
|
|
}}
|
|
}();
|
|
Ext.state.CookieProvider = Ext.extend(Ext.state.Provider, {constructor:function (a) {
|
|
Ext.state.CookieProvider.superclass.constructor.call(this);
|
|
this.path = "/";
|
|
this.expires = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 7));
|
|
this.domain = null;
|
|
this.secure = false;
|
|
Ext.apply(this, a);
|
|
this.state = this.readCookies()
|
|
}, set:function (a, b) {
|
|
if (typeof b == "undefined" || b === null) {
|
|
this.clear(a);
|
|
return
|
|
}
|
|
this.setCookie(a, b);
|
|
Ext.state.CookieProvider.superclass.set.call(this, a, b)
|
|
}, clear:function (a) {
|
|
this.clearCookie(a);
|
|
Ext.state.CookieProvider.superclass.clear.call(this, a)
|
|
}, readCookies:function () {
|
|
var d = {}, h = document.cookie + ";", b = /\s?(.*?)=(.*?);/g, g, a, e;
|
|
while ((g = b.exec(h)) != null) {
|
|
a = g[1];
|
|
e = g[2];
|
|
if (a && a.substring(0, 3) == "ys-") {
|
|
d[a.substr(3)] = this.decodeValue(e)
|
|
}
|
|
}
|
|
return d
|
|
}, setCookie:function (a, b) {
|
|
document.cookie = "ys-" + a + "=" + this.encodeValue(b) + ((this.expires == null) ? "" : ("; expires=" + this.expires.toGMTString())) + ((this.path == null) ? "" : ("; path=" + this.path)) + ((this.domain == null) ? "" : ("; domain=" + this.domain)) + ((this.secure == true) ? "; secure" : "")
|
|
}, clearCookie:function (a) {
|
|
document.cookie = "ys-" + a + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT" + ((this.path == null) ? "" : ("; path=" + this.path)) + ((this.domain == null) ? "" : ("; domain=" + this.domain)) + ((this.secure == true) ? "; secure" : "")
|
|
}});
|
|
Ext.DataView = Ext.extend(Ext.BoxComponent, {selectedClass:"x-view-selected", emptyText:"", deferEmptyText:true, trackOver:false, blockRefresh:false, last:false, initComponent:function () {
|
|
Ext.DataView.superclass.initComponent.call(this);
|
|
if (Ext.isString(this.tpl) || Ext.isArray(this.tpl)) {
|
|
this.tpl = new Ext.XTemplate(this.tpl)
|
|
}
|
|
this.addEvents("beforeclick", "click", "mouseenter", "mouseleave", "containerclick", "dblclick", "contextmenu", "containercontextmenu", "selectionchange", "beforeselect");
|
|
this.store = Ext.StoreMgr.lookup(this.store);
|
|
this.all = new Ext.CompositeElementLite();
|
|
this.selected = new Ext.CompositeElementLite()
|
|
}, afterRender:function () {
|
|
Ext.DataView.superclass.afterRender.call(this);
|
|
this.mon(this.getTemplateTarget(), {click:this.onClick, dblclick:this.onDblClick, contextmenu:this.onContextMenu, scope:this});
|
|
if (this.overClass || this.trackOver) {
|
|
this.mon(this.getTemplateTarget(), {mouseover:this.onMouseOver, mouseout:this.onMouseOut, scope:this})
|
|
}
|
|
if (this.store) {
|
|
this.bindStore(this.store, true)
|
|
}
|
|
}, refresh:function () {
|
|
this.clearSelections(false, true);
|
|
var b = this.getTemplateTarget(), a = this.store.getRange();
|
|
b.update("");
|
|
if (a.length < 1) {
|
|
if (!this.deferEmptyText || this.hasSkippedEmptyText) {
|
|
b.update(this.emptyText)
|
|
}
|
|
this.all.clear()
|
|
} else {
|
|
this.tpl.overwrite(b, this.collectData(a, 0));
|
|
this.all.fill(Ext.query(this.itemSelector, b.dom));
|
|
this.updateIndexes(0)
|
|
}
|
|
this.hasSkippedEmptyText = true
|
|
}, getTemplateTarget:function () {
|
|
return this.el
|
|
}, prepareData:function (a) {
|
|
return a
|
|
}, collectData:function (b, e) {
|
|
var d = [], c = 0, a = b.length;
|
|
for (; c < a; c++) {
|
|
d[d.length] = this.prepareData(b[c].data, e + c, b[c])
|
|
}
|
|
return d
|
|
}, bufferRender:function (a, b) {
|
|
var c = document.createElement("div");
|
|
this.tpl.overwrite(c, this.collectData(a, b));
|
|
return Ext.query(this.itemSelector, c)
|
|
}, onUpdate:function (g, a) {
|
|
var b = this.store.indexOf(a);
|
|
if (b > -1) {
|
|
var e = this.isSelected(b), c = this.all.elements[b], d = this.bufferRender([a], b)[0];
|
|
this.all.replaceElement(b, d, true);
|
|
if (e) {
|
|
this.selected.replaceElement(c, d);
|
|
this.all.item(b).addClass(this.selectedClass)
|
|
}
|
|
this.updateIndexes(b, b)
|
|
}
|
|
}, onAdd:function (g, d, e) {
|
|
if (this.all.getCount() === 0) {
|
|
this.refresh();
|
|
return
|
|
}
|
|
var c = this.bufferRender(d, e), h, b = this.all.elements;
|
|
if (e < this.all.getCount()) {
|
|
h = this.all.item(e).insertSibling(c, "before", true);
|
|
b.splice.apply(b, [e, 0].concat(c))
|
|
} else {
|
|
h = this.all.last().insertSibling(c, "after", true);
|
|
b.push.apply(b, c)
|
|
}
|
|
this.updateIndexes(e)
|
|
}, onRemove:function (c, a, b) {
|
|
this.deselect(b);
|
|
this.all.removeElement(b, true);
|
|
this.updateIndexes(b);
|
|
if (this.store.getCount() === 0) {
|
|
this.refresh()
|
|
}
|
|
}, refreshNode:function (a) {
|
|
this.onUpdate(this.store, this.store.getAt(a))
|
|
}, updateIndexes:function (d, c) {
|
|
var b = this.all.elements;
|
|
d = d || 0;
|
|
c = c || ((c === 0) ? 0 : (b.length - 1));
|
|
for (var a = d; a <= c; a++) {
|
|
b[a].viewIndex = a
|
|
}
|
|
}, getStore:function () {
|
|
return this.store
|
|
}, bindStore:function (a, b) {
|
|
if (!b && this.store) {
|
|
if (a !== this.store && this.store.autoDestroy) {
|
|
this.store.destroy()
|
|
} else {
|
|
this.store.un("beforeload", this.onBeforeLoad, this);
|
|
this.store.un("datachanged", this.onDataChanged, this);
|
|
this.store.un("add", this.onAdd, this);
|
|
this.store.un("remove", this.onRemove, this);
|
|
this.store.un("update", this.onUpdate, this);
|
|
this.store.un("clear", this.refresh, this)
|
|
}
|
|
if (!a) {
|
|
this.store = null
|
|
}
|
|
}
|
|
if (a) {
|
|
a = Ext.StoreMgr.lookup(a);
|
|
a.on({scope:this, beforeload:this.onBeforeLoad, datachanged:this.onDataChanged, add:this.onAdd, remove:this.onRemove, update:this.onUpdate, clear:this.refresh})
|
|
}
|
|
this.store = a;
|
|
if (a) {
|
|
this.refresh()
|
|
}
|
|
}, onDataChanged:function () {
|
|
if (this.blockRefresh !== true) {
|
|
this.refresh.apply(this, arguments)
|
|
}
|
|
}, findItemFromChild:function (a) {
|
|
return Ext.fly(a).findParent(this.itemSelector, this.getTemplateTarget())
|
|
}, onClick:function (c) {
|
|
var b = c.getTarget(this.itemSelector, this.getTemplateTarget()), a;
|
|
if (b) {
|
|
a = this.indexOf(b);
|
|
if (this.onItemClick(b, a, c) !== false) {
|
|
this.fireEvent("click", this, a, b, c)
|
|
}
|
|
} else {
|
|
if (this.fireEvent("containerclick", this, c) !== false) {
|
|
this.onContainerClick(c)
|
|
}
|
|
}
|
|
}, onContainerClick:function (a) {
|
|
this.clearSelections()
|
|
}, onContextMenu:function (b) {
|
|
var a = b.getTarget(this.itemSelector, this.getTemplateTarget());
|
|
if (a) {
|
|
this.fireEvent("contextmenu", this, this.indexOf(a), a, b)
|
|
} else {
|
|
this.fireEvent("containercontextmenu", this, b)
|
|
}
|
|
}, onDblClick:function (b) {
|
|
var a = b.getTarget(this.itemSelector, this.getTemplateTarget());
|
|
if (a) {
|
|
this.fireEvent("dblclick", this, this.indexOf(a), a, b)
|
|
}
|
|
}, onMouseOver:function (b) {
|
|
var a = b.getTarget(this.itemSelector, this.getTemplateTarget());
|
|
if (a && a !== this.lastItem) {
|
|
this.lastItem = a;
|
|
Ext.fly(a).addClass(this.overClass);
|
|
this.fireEvent("mouseenter", this, this.indexOf(a), a, b)
|
|
}
|
|
}, onMouseOut:function (a) {
|
|
if (this.lastItem) {
|
|
if (!a.within(this.lastItem, true, true)) {
|
|
Ext.fly(this.lastItem).removeClass(this.overClass);
|
|
this.fireEvent("mouseleave", this, this.indexOf(this.lastItem), this.lastItem, a);
|
|
delete this.lastItem
|
|
}
|
|
}
|
|
}, onItemClick:function (b, a, c) {
|
|
if (this.fireEvent("beforeclick", this, a, b, c) === false) {
|
|
return false
|
|
}
|
|
if (this.multiSelect) {
|
|
this.doMultiSelection(b, a, c);
|
|
c.preventDefault()
|
|
} else {
|
|
if (this.singleSelect) {
|
|
this.doSingleSelection(b, a, c);
|
|
c.preventDefault()
|
|
}
|
|
}
|
|
return true
|
|
}, doSingleSelection:function (b, a, c) {
|
|
if (c.ctrlKey && this.isSelected(a)) {
|
|
this.deselect(a)
|
|
} else {
|
|
this.select(a, false)
|
|
}
|
|
}, doMultiSelection:function (c, a, d) {
|
|
if (d.shiftKey && this.last !== false) {
|
|
var b = this.last;
|
|
this.selectRange(b, a, d.ctrlKey);
|
|
this.last = b
|
|
} else {
|
|
if ((d.ctrlKey || this.simpleSelect) && this.isSelected(a)) {
|
|
this.deselect(a)
|
|
} else {
|
|
this.select(a, d.ctrlKey || d.shiftKey || this.simpleSelect)
|
|
}
|
|
}
|
|
}, getSelectionCount:function () {
|
|
return this.selected.getCount()
|
|
}, getSelectedNodes:function () {
|
|
return this.selected.elements
|
|
}, getSelectedIndexes:function () {
|
|
var b = [], d = this.selected.elements, c = 0, a = d.length;
|
|
for (; c < a; c++) {
|
|
b.push(d[c].viewIndex)
|
|
}
|
|
return b
|
|
}, getSelectedRecords:function () {
|
|
return this.getRecords(this.selected.elements)
|
|
}, getRecords:function (c) {
|
|
var b = [], d = 0, a = c.length;
|
|
for (; d < a; d++) {
|
|
b[b.length] = this.store.getAt(c[d].viewIndex)
|
|
}
|
|
return b
|
|
}, getRecord:function (a) {
|
|
return this.store.getAt(a.viewIndex)
|
|
}, clearSelections:function (a, b) {
|
|
if ((this.multiSelect || this.singleSelect) && this.selected.getCount() > 0) {
|
|
if (!b) {
|
|
this.selected.removeClass(this.selectedClass)
|
|
}
|
|
this.selected.clear();
|
|
this.last = false;
|
|
if (!a) {
|
|
this.fireEvent("selectionchange", this, this.selected.elements)
|
|
}
|
|
}
|
|
}, isSelected:function (a) {
|
|
return this.selected.contains(this.getNode(a))
|
|
}, deselect:function (a) {
|
|
if (this.isSelected(a)) {
|
|
a = this.getNode(a);
|
|
this.selected.removeElement(a);
|
|
if (this.last == a.viewIndex) {
|
|
this.last = false
|
|
}
|
|
Ext.fly(a).removeClass(this.selectedClass);
|
|
this.fireEvent("selectionchange", this, this.selected.elements)
|
|
}
|
|
}, select:function (d, g, b) {
|
|
if (Ext.isArray(d)) {
|
|
if (!g) {
|
|
this.clearSelections(true)
|
|
}
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
this.select(d[c], true, true)
|
|
}
|
|
if (!b) {
|
|
this.fireEvent("selectionchange", this, this.selected.elements)
|
|
}
|
|
} else {
|
|
var e = this.getNode(d);
|
|
if (!g) {
|
|
this.clearSelections(true)
|
|
}
|
|
if (e && !this.isSelected(e)) {
|
|
if (this.fireEvent("beforeselect", this, e, this.selected.elements) !== false) {
|
|
Ext.fly(e).addClass(this.selectedClass);
|
|
this.selected.add(e);
|
|
this.last = e.viewIndex;
|
|
if (!b) {
|
|
this.fireEvent("selectionchange", this, this.selected.elements)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, selectRange:function (c, a, b) {
|
|
if (!b) {
|
|
this.clearSelections(true)
|
|
}
|
|
this.select(this.getNodes(c, a), true)
|
|
}, getNode:function (b) {
|
|
if (Ext.isString(b)) {
|
|
return document.getElementById(b)
|
|
} else {
|
|
if (Ext.isNumber(b)) {
|
|
return this.all.elements[b]
|
|
} else {
|
|
if (b instanceof Ext.data.Record) {
|
|
var a = this.store.indexOf(b);
|
|
return this.all.elements[a]
|
|
}
|
|
}
|
|
}
|
|
return b
|
|
}, getNodes:function (e, a) {
|
|
var d = this.all.elements, b = [], c;
|
|
e = e || 0;
|
|
a = !Ext.isDefined(a) ? Math.max(d.length - 1, 0) : a;
|
|
if (e <= a) {
|
|
for (c = e; c <= a && d[c]; c++) {
|
|
b.push(d[c])
|
|
}
|
|
} else {
|
|
for (c = e; c >= a && d[c]; c--) {
|
|
b.push(d[c])
|
|
}
|
|
}
|
|
return b
|
|
}, indexOf:function (a) {
|
|
a = this.getNode(a);
|
|
if (Ext.isNumber(a.viewIndex)) {
|
|
return a.viewIndex
|
|
}
|
|
return this.all.indexOf(a)
|
|
}, onBeforeLoad:function () {
|
|
if (this.loadingText) {
|
|
this.clearSelections(false, true);
|
|
this.getTemplateTarget().update('<div class="loading-indicator">' + this.loadingText + "</div>");
|
|
this.all.clear()
|
|
}
|
|
}, onDestroy:function () {
|
|
this.all.clear();
|
|
this.selected.clear();
|
|
Ext.DataView.superclass.onDestroy.call(this);
|
|
this.bindStore(null)
|
|
}});
|
|
Ext.DataView.prototype.setStore = Ext.DataView.prototype.bindStore;
|
|
Ext.reg("dataview", Ext.DataView);
|
|
Ext.list.ListView = Ext.extend(Ext.DataView, {itemSelector:"dl", selectedClass:"x-list-selected", overClass:"x-list-over", scrollOffset:undefined, columnResize:true, columnSort:true, maxColumnWidth:Ext.isIE ? 99 : 100, initComponent:function () {
|
|
if (this.columnResize) {
|
|
this.colResizer = new Ext.list.ColumnResizer(this.colResizer);
|
|
this.colResizer.init(this)
|
|
}
|
|
if (this.columnSort) {
|
|
this.colSorter = new Ext.list.Sorter(this.columnSort);
|
|
this.colSorter.init(this)
|
|
}
|
|
if (!this.internalTpl) {
|
|
this.internalTpl = new Ext.XTemplate('<div class="x-list-header"><div class="x-list-header-inner">', '<tpl for="columns">', '<div style="width:{[values.width*100]}%;text-align:{align};"><em unselectable="on" id="', this.id, '-xlhd-{#}">', "{header}", "</em></div>", "</tpl>", '<div class="x-clear"></div>', "</div></div>", '<div class="x-list-body"><div class="x-list-body-inner">', "</div></div>")
|
|
}
|
|
if (!this.tpl) {
|
|
this.tpl = new Ext.XTemplate('<tpl for="rows">', "<dl>", '<tpl for="parent.columns">', '<dt style="width:{[values.width*100]}%;text-align:{align};">', '<em unselectable="on"<tpl if="cls"> class="{cls}</tpl>">', "{[values.tpl.apply(parent)]}", "</em></dt>", "</tpl>", '<div class="x-clear"></div>', "</dl>", "</tpl>")
|
|
}
|
|
var l = this.columns, h = 0, k = 0, m = l.length, b = [];
|
|
for (var g = 0; g < m; g++) {
|
|
var n = l[g];
|
|
if (!n.isColumn) {
|
|
n.xtype = n.xtype ? (/^lv/.test(n.xtype) ? n.xtype : "lv" + n.xtype) : "lvcolumn";
|
|
n = Ext.create(n)
|
|
}
|
|
if (n.width) {
|
|
h += n.width * 100;
|
|
if (h > this.maxColumnWidth) {
|
|
n.width -= (h - this.maxColumnWidth) / 100
|
|
}
|
|
k++
|
|
}
|
|
b.push(n)
|
|
}
|
|
l = this.columns = b;
|
|
if (k < m) {
|
|
var d = m - k;
|
|
if (h < this.maxColumnWidth) {
|
|
var a = ((this.maxColumnWidth - h) / d) / 100;
|
|
for (var e = 0; e < m; e++) {
|
|
var n = l[e];
|
|
if (!n.width) {
|
|
n.width = a
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Ext.list.ListView.superclass.initComponent.call(this)
|
|
}, onRender:function () {
|
|
this.autoEl = {cls:"x-list-wrap"};
|
|
Ext.list.ListView.superclass.onRender.apply(this, arguments);
|
|
this.internalTpl.overwrite(this.el, {columns:this.columns});
|
|
this.innerBody = Ext.get(this.el.dom.childNodes[1].firstChild);
|
|
this.innerHd = Ext.get(this.el.dom.firstChild.firstChild);
|
|
if (this.hideHeaders) {
|
|
this.el.dom.firstChild.style.display = "none"
|
|
}
|
|
}, getTemplateTarget:function () {
|
|
return this.innerBody
|
|
}, collectData:function () {
|
|
var a = Ext.list.ListView.superclass.collectData.apply(this, arguments);
|
|
return{columns:this.columns, rows:a}
|
|
}, verifyInternalSize:function () {
|
|
if (this.lastSize) {
|
|
this.onResize(this.lastSize.width, this.lastSize.height)
|
|
}
|
|
}, onResize:function (c, e) {
|
|
var b = this.innerBody.dom, g = this.innerHd.dom, d = c - Ext.num(this.scrollOffset, Ext.getScrollBarWidth()) + "px", a;
|
|
if (!b) {
|
|
return
|
|
}
|
|
a = b.parentNode;
|
|
if (Ext.isNumber(c)) {
|
|
if (this.reserveScrollOffset || ((a.offsetWidth - a.clientWidth) > 10)) {
|
|
b.style.width = d;
|
|
g.style.width = d
|
|
} else {
|
|
b.style.width = c + "px";
|
|
g.style.width = c + "px";
|
|
setTimeout(function () {
|
|
if ((a.offsetWidth - a.clientWidth) > 10) {
|
|
b.style.width = d;
|
|
g.style.width = d
|
|
}
|
|
}, 10)
|
|
}
|
|
}
|
|
if (Ext.isNumber(e)) {
|
|
a.style.height = Math.max(0, e - g.parentNode.offsetHeight) + "px"
|
|
}
|
|
}, updateIndexes:function () {
|
|
Ext.list.ListView.superclass.updateIndexes.apply(this, arguments);
|
|
this.verifyInternalSize()
|
|
}, findHeaderIndex:function (g) {
|
|
g = g.dom || g;
|
|
var a = g.parentNode, d = a.parentNode.childNodes, b = 0, e;
|
|
for (; e = d[b]; b++) {
|
|
if (e == a) {
|
|
return b
|
|
}
|
|
}
|
|
return -1
|
|
}, setHdWidths:function () {
|
|
var d = this.innerHd.dom.getElementsByTagName("div"), c = 0, b = this.columns, a = b.length;
|
|
for (; c < a; c++) {
|
|
d[c].style.width = (b[c].width * 100) + "%"
|
|
}
|
|
}});
|
|
Ext.reg("listview", Ext.list.ListView);
|
|
Ext.ListView = Ext.list.ListView;
|
|
Ext.list.Column = Ext.extend(Object, {isColumn:true, align:"left", header:"", width:null, cls:"", constructor:function (a) {
|
|
if (!a.tpl) {
|
|
a.tpl = new Ext.XTemplate("{" + a.dataIndex + "}")
|
|
} else {
|
|
if (Ext.isString(a.tpl)) {
|
|
a.tpl = new Ext.XTemplate(a.tpl)
|
|
}
|
|
}
|
|
Ext.apply(this, a)
|
|
}});
|
|
Ext.reg("lvcolumn", Ext.list.Column);
|
|
Ext.list.NumberColumn = Ext.extend(Ext.list.Column, {format:"0,000.00", constructor:function (a) {
|
|
a.tpl = a.tpl || new Ext.XTemplate("{" + a.dataIndex + ':number("' + (a.format || this.format) + '")}');
|
|
Ext.list.NumberColumn.superclass.constructor.call(this, a)
|
|
}});
|
|
Ext.reg("lvnumbercolumn", Ext.list.NumberColumn);
|
|
Ext.list.DateColumn = Ext.extend(Ext.list.Column, {format:"m/d/Y", constructor:function (a) {
|
|
a.tpl = a.tpl || new Ext.XTemplate("{" + a.dataIndex + ':date("' + (a.format || this.format) + '")}');
|
|
Ext.list.DateColumn.superclass.constructor.call(this, a)
|
|
}});
|
|
Ext.reg("lvdatecolumn", Ext.list.DateColumn);
|
|
Ext.list.BooleanColumn = Ext.extend(Ext.list.Column, {trueText:"true", falseText:"false", undefinedText:" ", constructor:function (e) {
|
|
e.tpl = e.tpl || new Ext.XTemplate("{" + e.dataIndex + ":this.format}");
|
|
var b = this.trueText, d = this.falseText, a = this.undefinedText;
|
|
e.tpl.format = function (c) {
|
|
if (c === undefined) {
|
|
return a
|
|
}
|
|
if (!c || c === "false") {
|
|
return d
|
|
}
|
|
return b
|
|
};
|
|
Ext.list.DateColumn.superclass.constructor.call(this, e)
|
|
}});
|
|
Ext.reg("lvbooleancolumn", Ext.list.BooleanColumn);
|
|
Ext.list.ColumnResizer = Ext.extend(Ext.util.Observable, {minPct:0.05, constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
Ext.list.ColumnResizer.superclass.constructor.call(this)
|
|
}, init:function (a) {
|
|
this.view = a;
|
|
a.on("render", this.initEvents, this)
|
|
}, initEvents:function (a) {
|
|
a.mon(a.innerHd, "mousemove", this.handleHdMove, this);
|
|
this.tracker = new Ext.dd.DragTracker({onBeforeStart:this.onBeforeStart.createDelegate(this), onStart:this.onStart.createDelegate(this), onDrag:this.onDrag.createDelegate(this), onEnd:this.onEnd.createDelegate(this), tolerance:3, autoStart:300});
|
|
this.tracker.initEl(a.innerHd);
|
|
a.on("beforedestroy", this.tracker.destroy, this.tracker)
|
|
}, handleHdMove:function (i, d) {
|
|
var c = 5, b = i.getPageX(), j = i.getTarget("em", 3, true);
|
|
if (j) {
|
|
var h = j.getRegion(), g = j.dom.style, a = j.dom.parentNode;
|
|
if (b - h.left <= c && a != a.parentNode.firstChild) {
|
|
this.activeHd = Ext.get(a.previousSibling.firstChild);
|
|
g.cursor = Ext.isWebKit ? "e-resize" : "col-resize"
|
|
} else {
|
|
if (h.right - b <= c && a != a.parentNode.lastChild.previousSibling) {
|
|
this.activeHd = j;
|
|
g.cursor = Ext.isWebKit ? "w-resize" : "col-resize"
|
|
} else {
|
|
delete this.activeHd;
|
|
g.cursor = ""
|
|
}
|
|
}
|
|
}
|
|
}, onBeforeStart:function (a) {
|
|
this.dragHd = this.activeHd;
|
|
return !!this.dragHd
|
|
}, onStart:function (g) {
|
|
var d = this, b = d.view, c = d.dragHd, a = d.tracker.getXY()[0];
|
|
d.proxy = b.el.createChild({cls:"x-list-resizer"});
|
|
d.dragX = c.getX();
|
|
d.headerIndex = b.findHeaderIndex(c);
|
|
d.headersDisabled = b.disableHeaders;
|
|
b.disableHeaders = true;
|
|
d.proxy.setHeight(b.el.getHeight());
|
|
d.proxy.setX(d.dragX);
|
|
d.proxy.setWidth(a - d.dragX);
|
|
this.setBoundaries()
|
|
}, setBoundaries:function (j) {
|
|
var k = this.view, h = this.headerIndex, c = k.innerHd.getWidth(), j = k.innerHd.getX(), b = Math.ceil(c * this.minPct), l = c - b, e = k.columns.length, d = k.innerHd.select("em", true), g = b + j, a = l + j, i;
|
|
if (e == 2) {
|
|
this.minX = g;
|
|
this.maxX = a
|
|
} else {
|
|
i = d.item(h + 2);
|
|
this.minX = d.item(h).getX() + b;
|
|
this.maxX = i ? i.getX() - b : a;
|
|
if (h == 0) {
|
|
this.minX = g
|
|
} else {
|
|
if (h == e - 2) {
|
|
this.maxX = a
|
|
}
|
|
}
|
|
}
|
|
}, onDrag:function (c) {
|
|
var b = this, a = b.tracker.getXY()[0].constrain(b.minX, b.maxX);
|
|
b.proxy.setWidth(a - this.dragX)
|
|
}, onEnd:function (i) {
|
|
var g = this.proxy.getWidth(), h = this.headerIndex, l = this.view, c = l.columns, b = l.innerHd.getWidth(), k = Math.ceil(g * l.maxColumnWidth / b) / 100, d = this.headersDisabled, m = c[h], j = c[h + 1], a = m.width + j.width;
|
|
this.proxy.remove();
|
|
m.width = k;
|
|
j.width = a - k;
|
|
delete this.dragHd;
|
|
l.setHdWidths();
|
|
l.refresh();
|
|
setTimeout(function () {
|
|
l.disableHeaders = d
|
|
}, 100)
|
|
}});
|
|
Ext.ListView.ColumnResizer = Ext.list.ColumnResizer;
|
|
Ext.list.Sorter = Ext.extend(Ext.util.Observable, {sortClasses:["sort-asc", "sort-desc"], constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
Ext.list.Sorter.superclass.constructor.call(this)
|
|
}, init:function (a) {
|
|
this.view = a;
|
|
a.on("render", this.initEvents, this)
|
|
}, initEvents:function (a) {
|
|
a.mon(a.innerHd, "click", this.onHdClick, this);
|
|
a.innerHd.setStyle("cursor", "pointer");
|
|
a.mon(a.store, "datachanged", this.updateSortState, this);
|
|
this.updateSortState.defer(10, this, [a.store])
|
|
}, updateSortState:function (c) {
|
|
var g = c.getSortState();
|
|
if (!g) {
|
|
return
|
|
}
|
|
this.sortState = g;
|
|
var e = this.view.columns, h = -1;
|
|
for (var d = 0, a = e.length; d < a; d++) {
|
|
if (e[d].dataIndex == g.field) {
|
|
h = d;
|
|
break
|
|
}
|
|
}
|
|
if (h != -1) {
|
|
var b = g.direction;
|
|
this.updateSortIcon(h, b)
|
|
}
|
|
}, updateSortIcon:function (b, a) {
|
|
var d = this.sortClasses;
|
|
var c = this.view.innerHd.select("em").removeClass(d);
|
|
c.item(b).addClass(d[a == "DESC" ? 1 : 0])
|
|
}, onHdClick:function (c) {
|
|
var b = c.getTarget("em", 3);
|
|
if (b && !this.view.disableHeaders) {
|
|
var a = this.view.findHeaderIndex(b);
|
|
this.view.store.sort(this.view.columns[a].dataIndex)
|
|
}
|
|
}});
|
|
Ext.ListView.Sorter = Ext.list.Sorter;
|
|
Ext.TabPanel = Ext.extend(Ext.Panel, {deferredRender:true, tabWidth:120, minTabWidth:30, resizeTabs:false, enableTabScroll:false, scrollIncrement:0, scrollRepeatInterval:400, scrollDuration:0.35, animScroll:true, tabPosition:"top", baseCls:"x-tab-panel", autoTabs:false, autoTabSelector:"div.x-tab", activeTab:undefined, tabMargin:2, plain:false, wheelIncrement:20, idDelimiter:"__", itemCls:"x-tab-item", elements:"body", headerAsText:false, frame:false, hideBorders:true, initComponent:function () {
|
|
this.frame = false;
|
|
Ext.TabPanel.superclass.initComponent.call(this);
|
|
this.addEvents("beforetabchange", "tabchange", "contextmenu");
|
|
this.setLayout(new Ext.layout.CardLayout(Ext.apply({layoutOnCardChange:this.layoutOnTabChange, deferredRender:this.deferredRender}, this.layoutConfig)));
|
|
if (this.tabPosition == "top") {
|
|
this.elements += ",header";
|
|
this.stripTarget = "header"
|
|
} else {
|
|
this.elements += ",footer";
|
|
this.stripTarget = "footer"
|
|
}
|
|
if (!this.stack) {
|
|
this.stack = Ext.TabPanel.AccessStack()
|
|
}
|
|
this.initItems()
|
|
}, onRender:function (c, a) {
|
|
Ext.TabPanel.superclass.onRender.call(this, c, a);
|
|
if (this.plain) {
|
|
var g = this.tabPosition == "top" ? "header" : "footer";
|
|
this[g].addClass("x-tab-panel-" + g + "-plain")
|
|
}
|
|
var b = this[this.stripTarget];
|
|
this.stripWrap = b.createChild({cls:"x-tab-strip-wrap", cn:{tag:"ul", cls:"x-tab-strip x-tab-strip-" + this.tabPosition}});
|
|
var e = (this.tabPosition == "bottom" ? this.stripWrap : null);
|
|
b.createChild({cls:"x-tab-strip-spacer"}, e);
|
|
this.strip = new Ext.Element(this.stripWrap.dom.firstChild);
|
|
this.edge = this.strip.createChild({tag:"li", cls:"x-tab-edge", cn:[
|
|
{tag:"span", cls:"x-tab-strip-text", cn:" "}
|
|
]});
|
|
this.strip.createChild({cls:"x-clear"});
|
|
this.body.addClass("x-tab-panel-body-" + this.tabPosition);
|
|
if (!this.itemTpl) {
|
|
var d = new Ext.Template('<li class="{cls}" id="{id}"><a class="x-tab-strip-close"></a>', '<a class="x-tab-right" href="#"><em class="x-tab-left">', '<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>', "</em></a></li>");
|
|
d.disableFormats = true;
|
|
d.compile();
|
|
Ext.TabPanel.prototype.itemTpl = d
|
|
}
|
|
this.items.each(this.initTab, this)
|
|
}, afterRender:function () {
|
|
Ext.TabPanel.superclass.afterRender.call(this);
|
|
if (this.autoTabs) {
|
|
this.readTabs(false)
|
|
}
|
|
if (this.activeTab !== undefined) {
|
|
var a = Ext.isObject(this.activeTab) ? this.activeTab : this.items.get(this.activeTab);
|
|
delete this.activeTab;
|
|
this.setActiveTab(a)
|
|
}
|
|
}, initEvents:function () {
|
|
Ext.TabPanel.superclass.initEvents.call(this);
|
|
this.mon(this.strip, {scope:this, mousedown:this.onStripMouseDown, contextmenu:this.onStripContextMenu});
|
|
if (this.enableTabScroll) {
|
|
this.mon(this.strip, "mousewheel", this.onWheel, this)
|
|
}
|
|
}, findTargets:function (c) {
|
|
var b = null, a = c.getTarget("li:not(.x-tab-edge)", this.strip);
|
|
if (a) {
|
|
b = this.getComponent(a.id.split(this.idDelimiter)[1]);
|
|
if (b.disabled) {
|
|
return{close:null, item:null, el:null}
|
|
}
|
|
}
|
|
return{close:c.getTarget(".x-tab-strip-close", this.strip), item:b, el:a}
|
|
}, onStripMouseDown:function (b) {
|
|
if (b.button !== 0) {
|
|
return
|
|
}
|
|
b.preventDefault();
|
|
var a = this.findTargets(b);
|
|
if (a.close) {
|
|
if (a.item.fireEvent("beforeclose", a.item) !== false) {
|
|
a.item.fireEvent("close", a.item);
|
|
this.remove(a.item)
|
|
}
|
|
return
|
|
}
|
|
if (a.item && a.item != this.activeTab) {
|
|
this.setActiveTab(a.item)
|
|
}
|
|
}, onStripContextMenu:function (b) {
|
|
b.preventDefault();
|
|
var a = this.findTargets(b);
|
|
if (a.item) {
|
|
this.fireEvent("contextmenu", this, a.item, b)
|
|
}
|
|
}, readTabs:function (d) {
|
|
if (d === true) {
|
|
this.items.each(function (h) {
|
|
this.remove(h)
|
|
}, this)
|
|
}
|
|
var c = this.el.query(this.autoTabSelector);
|
|
for (var b = 0, a = c.length; b < a; b++) {
|
|
var e = c[b], g = e.getAttribute("title");
|
|
e.removeAttribute("title");
|
|
this.add({title:g, contentEl:e})
|
|
}
|
|
}, initTab:function (d, b) {
|
|
var e = this.strip.dom.childNodes[b], g = this.getTemplateArgs(d), c = e ? this.itemTpl.insertBefore(e, g) : this.itemTpl.append(this.strip, g), a = "x-tab-strip-over", h = Ext.get(c);
|
|
h.hover(function () {
|
|
if (!d.disabled) {
|
|
h.addClass(a)
|
|
}
|
|
}, function () {
|
|
h.removeClass(a)
|
|
});
|
|
if (d.tabTip) {
|
|
h.child("span.x-tab-strip-text", true).qtip = d.tabTip
|
|
}
|
|
d.tabEl = c;
|
|
h.select("a").on("click", function (i) {
|
|
if (!i.getPageX()) {
|
|
this.onStripMouseDown(i)
|
|
}
|
|
}, this, {preventDefault:true});
|
|
d.on({scope:this, disable:this.onItemDisabled, enable:this.onItemEnabled, titlechange:this.onItemTitleChanged, iconchange:this.onItemIconChanged, beforeshow:this.onBeforeShowItem})
|
|
}, getTemplateArgs:function (b) {
|
|
var a = b.closable ? "x-tab-strip-closable" : "";
|
|
if (b.disabled) {
|
|
a += " x-item-disabled"
|
|
}
|
|
if (b.iconCls) {
|
|
a += " x-tab-with-icon"
|
|
}
|
|
if (b.tabCls) {
|
|
a += " " + b.tabCls
|
|
}
|
|
return{id:this.id + this.idDelimiter + b.getItemId(), text:b.title, cls:a, iconCls:b.iconCls || ""}
|
|
}, onAdd:function (b) {
|
|
Ext.TabPanel.superclass.onAdd.call(this, b);
|
|
if (this.rendered) {
|
|
var a = this.items;
|
|
this.initTab(b, a.indexOf(b));
|
|
this.delegateUpdates()
|
|
}
|
|
}, onBeforeAdd:function (b) {
|
|
var a = b.events ? (this.items.containsKey(b.getItemId()) ? b : null) : this.items.get(b);
|
|
if (a) {
|
|
this.setActiveTab(b);
|
|
return false
|
|
}
|
|
Ext.TabPanel.superclass.onBeforeAdd.apply(this, arguments);
|
|
var c = b.elements;
|
|
b.elements = c ? c.replace(",header", "") : c;
|
|
b.border = (b.border === true)
|
|
}, onRemove:function (d) {
|
|
var b = Ext.get(d.tabEl);
|
|
if (b) {
|
|
b.select("a").removeAllListeners();
|
|
Ext.destroy(b)
|
|
}
|
|
Ext.TabPanel.superclass.onRemove.call(this, d);
|
|
this.stack.remove(d);
|
|
delete d.tabEl;
|
|
d.un("disable", this.onItemDisabled, this);
|
|
d.un("enable", this.onItemEnabled, this);
|
|
d.un("titlechange", this.onItemTitleChanged, this);
|
|
d.un("iconchange", this.onItemIconChanged, this);
|
|
d.un("beforeshow", this.onBeforeShowItem, this);
|
|
if (d == this.activeTab) {
|
|
var a = this.stack.next();
|
|
if (a) {
|
|
this.setActiveTab(a)
|
|
} else {
|
|
if (this.items.getCount() > 0) {
|
|
this.setActiveTab(0)
|
|
} else {
|
|
this.setActiveTab(null)
|
|
}
|
|
}
|
|
}
|
|
if (!this.destroying) {
|
|
this.delegateUpdates()
|
|
}
|
|
}, onBeforeShowItem:function (a) {
|
|
if (a != this.activeTab) {
|
|
this.setActiveTab(a);
|
|
return false
|
|
}
|
|
}, onItemDisabled:function (b) {
|
|
var a = this.getTabEl(b);
|
|
if (a) {
|
|
Ext.fly(a).addClass("x-item-disabled")
|
|
}
|
|
this.stack.remove(b)
|
|
}, onItemEnabled:function (b) {
|
|
var a = this.getTabEl(b);
|
|
if (a) {
|
|
Ext.fly(a).removeClass("x-item-disabled")
|
|
}
|
|
}, onItemTitleChanged:function (b) {
|
|
var a = this.getTabEl(b);
|
|
if (a) {
|
|
Ext.fly(a).child("span.x-tab-strip-text", true).innerHTML = b.title
|
|
}
|
|
}, onItemIconChanged:function (d, a, c) {
|
|
var b = this.getTabEl(d);
|
|
if (b) {
|
|
b = Ext.get(b);
|
|
b.child("span.x-tab-strip-text").replaceClass(c, a);
|
|
b[Ext.isEmpty(a) ? "removeClass" : "addClass"]("x-tab-with-icon")
|
|
}
|
|
}, getTabEl:function (a) {
|
|
var b = this.getComponent(a);
|
|
return b ? b.tabEl : null
|
|
}, onResize:function () {
|
|
Ext.TabPanel.superclass.onResize.apply(this, arguments);
|
|
this.delegateUpdates()
|
|
}, beginUpdate:function () {
|
|
this.suspendUpdates = true
|
|
}, endUpdate:function () {
|
|
this.suspendUpdates = false;
|
|
this.delegateUpdates()
|
|
}, hideTabStripItem:function (b) {
|
|
b = this.getComponent(b);
|
|
var a = this.getTabEl(b);
|
|
if (a) {
|
|
a.style.display = "none";
|
|
this.delegateUpdates()
|
|
}
|
|
this.stack.remove(b)
|
|
}, unhideTabStripItem:function (b) {
|
|
b = this.getComponent(b);
|
|
var a = this.getTabEl(b);
|
|
if (a) {
|
|
a.style.display = "";
|
|
this.delegateUpdates()
|
|
}
|
|
}, delegateUpdates:function () {
|
|
var a = this.rendered;
|
|
if (this.suspendUpdates) {
|
|
return
|
|
}
|
|
if (this.resizeTabs && a) {
|
|
this.autoSizeTabs()
|
|
}
|
|
if (this.enableTabScroll && a) {
|
|
this.autoScrollTabs()
|
|
}
|
|
}, autoSizeTabs:function () {
|
|
var h = this.items.length, b = this.tabPosition != "bottom" ? "header" : "footer", c = this[b].dom.offsetWidth, a = this[b].dom.clientWidth;
|
|
if (!this.resizeTabs || h < 1 || !a) {
|
|
return
|
|
}
|
|
var k = Math.max(Math.min(Math.floor((a - 4) / h) - this.tabMargin, this.tabWidth), this.minTabWidth);
|
|
this.lastTabWidth = k;
|
|
var m = this.strip.query("li:not(.x-tab-edge)");
|
|
for (var e = 0, j = m.length; e < j; e++) {
|
|
var l = m[e], n = Ext.fly(l).child(".x-tab-strip-inner", true), g = l.offsetWidth, d = n.offsetWidth;
|
|
n.style.width = (k - (g - d)) + "px"
|
|
}
|
|
}, adjustBodyWidth:function (a) {
|
|
if (this.header) {
|
|
this.header.setWidth(a)
|
|
}
|
|
if (this.footer) {
|
|
this.footer.setWidth(a)
|
|
}
|
|
return a
|
|
}, setActiveTab:function (c) {
|
|
c = this.getComponent(c);
|
|
if (this.fireEvent("beforetabchange", this, c, this.activeTab) === false) {
|
|
return
|
|
}
|
|
if (!this.rendered) {
|
|
this.activeTab = c;
|
|
return
|
|
}
|
|
if (this.activeTab != c) {
|
|
if (this.activeTab) {
|
|
var a = this.getTabEl(this.activeTab);
|
|
if (a) {
|
|
Ext.fly(a).removeClass("x-tab-strip-active")
|
|
}
|
|
}
|
|
this.activeTab = c;
|
|
if (c) {
|
|
var b = this.getTabEl(c);
|
|
Ext.fly(b).addClass("x-tab-strip-active");
|
|
this.stack.add(c);
|
|
this.layout.setActiveItem(c);
|
|
this.delegateUpdates();
|
|
if (this.scrolling) {
|
|
this.scrollToTab(c, this.animScroll)
|
|
}
|
|
}
|
|
this.fireEvent("tabchange", this, c)
|
|
}
|
|
}, getActiveTab:function () {
|
|
return this.activeTab || null
|
|
}, getItem:function (a) {
|
|
return this.getComponent(a)
|
|
}, autoScrollTabs:function () {
|
|
this.pos = this.tabPosition == "bottom" ? this.footer : this.header;
|
|
var h = this.items.length, d = this.pos.dom.offsetWidth, c = this.pos.dom.clientWidth, g = this.stripWrap, e = g.dom, b = e.offsetWidth, i = this.getScrollPos(), a = this.edge.getOffsetsTo(this.stripWrap)[0] + i;
|
|
if (!this.enableTabScroll || b < 20) {
|
|
return
|
|
}
|
|
if (h == 0 || a <= c) {
|
|
e.scrollLeft = 0;
|
|
g.setWidth(c);
|
|
if (this.scrolling) {
|
|
this.scrolling = false;
|
|
this.pos.removeClass("x-tab-scrolling");
|
|
this.scrollLeft.hide();
|
|
this.scrollRight.hide();
|
|
if (Ext.isAir || Ext.isWebKit) {
|
|
e.style.marginLeft = "";
|
|
e.style.marginRight = ""
|
|
}
|
|
}
|
|
} else {
|
|
if (!this.scrolling) {
|
|
this.pos.addClass("x-tab-scrolling");
|
|
if (Ext.isAir || Ext.isWebKit) {
|
|
e.style.marginLeft = "18px";
|
|
e.style.marginRight = "18px"
|
|
}
|
|
}
|
|
c -= g.getMargins("lr");
|
|
g.setWidth(c > 20 ? c : 20);
|
|
if (!this.scrolling) {
|
|
if (!this.scrollLeft) {
|
|
this.createScrollers()
|
|
} else {
|
|
this.scrollLeft.show();
|
|
this.scrollRight.show()
|
|
}
|
|
}
|
|
this.scrolling = true;
|
|
if (i > (a - c)) {
|
|
e.scrollLeft = a - c
|
|
} else {
|
|
this.scrollToTab(this.activeTab, false)
|
|
}
|
|
this.updateScrollButtons()
|
|
}
|
|
}, createScrollers:function () {
|
|
this.pos.addClass("x-tab-scrolling-" + this.tabPosition);
|
|
var c = this.stripWrap.dom.offsetHeight;
|
|
var a = this.pos.insertFirst({cls:"x-tab-scroller-left"});
|
|
a.setHeight(c);
|
|
a.addClassOnOver("x-tab-scroller-left-over");
|
|
this.leftRepeater = new Ext.util.ClickRepeater(a, {interval:this.scrollRepeatInterval, handler:this.onScrollLeft, scope:this});
|
|
this.scrollLeft = a;
|
|
var b = this.pos.insertFirst({cls:"x-tab-scroller-right"});
|
|
b.setHeight(c);
|
|
b.addClassOnOver("x-tab-scroller-right-over");
|
|
this.rightRepeater = new Ext.util.ClickRepeater(b, {interval:this.scrollRepeatInterval, handler:this.onScrollRight, scope:this});
|
|
this.scrollRight = b
|
|
}, getScrollWidth:function () {
|
|
return this.edge.getOffsetsTo(this.stripWrap)[0] + this.getScrollPos()
|
|
}, getScrollPos:function () {
|
|
return parseInt(this.stripWrap.dom.scrollLeft, 10) || 0
|
|
}, getScrollArea:function () {
|
|
return parseInt(this.stripWrap.dom.clientWidth, 10) || 0
|
|
}, getScrollAnim:function () {
|
|
return{duration:this.scrollDuration, callback:this.updateScrollButtons, scope:this}
|
|
}, getScrollIncrement:function () {
|
|
return this.scrollIncrement || (this.resizeTabs ? this.lastTabWidth + 2 : 100)
|
|
}, scrollToTab:function (e, a) {
|
|
if (!e) {
|
|
return
|
|
}
|
|
var c = this.getTabEl(e), h = this.getScrollPos(), d = this.getScrollArea(), g = Ext.fly(c).getOffsetsTo(this.stripWrap)[0] + h, b = g + c.offsetWidth;
|
|
if (g < h) {
|
|
this.scrollTo(g, a)
|
|
} else {
|
|
if (b > (h + d)) {
|
|
this.scrollTo(b - d, a)
|
|
}
|
|
}
|
|
}, scrollTo:function (b, a) {
|
|
this.stripWrap.scrollTo("left", b, a ? this.getScrollAnim() : false);
|
|
if (!a) {
|
|
this.updateScrollButtons()
|
|
}
|
|
}, onWheel:function (g) {
|
|
var h = g.getWheelDelta() * this.wheelIncrement * -1;
|
|
g.stopEvent();
|
|
var i = this.getScrollPos(), c = i + h, a = this.getScrollWidth() - this.getScrollArea();
|
|
var b = Math.max(0, Math.min(a, c));
|
|
if (b != i) {
|
|
this.scrollTo(b, false)
|
|
}
|
|
}, onScrollRight:function () {
|
|
var a = this.getScrollWidth() - this.getScrollArea(), c = this.getScrollPos(), b = Math.min(a, c + this.getScrollIncrement());
|
|
if (b != c) {
|
|
this.scrollTo(b, this.animScroll)
|
|
}
|
|
}, onScrollLeft:function () {
|
|
var b = this.getScrollPos(), a = Math.max(0, b - this.getScrollIncrement());
|
|
if (a != b) {
|
|
this.scrollTo(a, this.animScroll)
|
|
}
|
|
}, updateScrollButtons:function () {
|
|
var a = this.getScrollPos();
|
|
this.scrollLeft[a === 0 ? "addClass" : "removeClass"]("x-tab-scroller-left-disabled");
|
|
this.scrollRight[a >= (this.getScrollWidth() - this.getScrollArea()) ? "addClass" : "removeClass"]("x-tab-scroller-right-disabled")
|
|
}, beforeDestroy:function () {
|
|
Ext.destroy(this.leftRepeater, this.rightRepeater);
|
|
this.deleteMembers("strip", "edge", "scrollLeft", "scrollRight", "stripWrap");
|
|
this.activeTab = null;
|
|
Ext.TabPanel.superclass.beforeDestroy.apply(this)
|
|
}});
|
|
Ext.reg("tabpanel", Ext.TabPanel);
|
|
Ext.TabPanel.prototype.activate = Ext.TabPanel.prototype.setActiveTab;
|
|
Ext.TabPanel.AccessStack = function () {
|
|
var a = [];
|
|
return{add:function (b) {
|
|
a.push(b);
|
|
if (a.length > 10) {
|
|
a.shift()
|
|
}
|
|
}, remove:function (e) {
|
|
var d = [];
|
|
for (var c = 0, b = a.length; c < b; c++) {
|
|
if (a[c] != e) {
|
|
d.push(a[c])
|
|
}
|
|
}
|
|
a = d
|
|
}, next:function () {
|
|
return a.pop()
|
|
}}
|
|
};
|
|
Ext.Button = Ext.extend(Ext.BoxComponent, {hidden:false, disabled:false, pressed:false, enableToggle:false, menuAlign:"tl-bl?", type:"button", menuClassTarget:"tr:nth(2)", clickEvent:"click", handleMouseEvents:true, tooltipType:"qtip", buttonSelector:"button:first-child", scale:"small", iconAlign:"left", arrowAlign:"right", initComponent:function () {
|
|
if (this.menu) {
|
|
if (Ext.isArray(this.menu)) {
|
|
this.menu = {items:this.menu}
|
|
}
|
|
if (Ext.isObject(this.menu)) {
|
|
this.menu.ownerCt = this
|
|
}
|
|
this.menu = Ext.menu.MenuMgr.get(this.menu);
|
|
this.menu.ownerCt = undefined
|
|
}
|
|
Ext.Button.superclass.initComponent.call(this);
|
|
this.addEvents("click", "toggle", "mouseover", "mouseout", "menushow", "menuhide", "menutriggerover", "menutriggerout");
|
|
if (Ext.isString(this.toggleGroup)) {
|
|
this.enableToggle = true
|
|
}
|
|
}, getTemplateArgs:function () {
|
|
return[this.type, "x-btn-" + this.scale + " x-btn-icon-" + this.scale + "-" + this.iconAlign, this.getMenuClass(), this.cls, this.id]
|
|
}, setButtonClass:function () {
|
|
if (this.useSetClass) {
|
|
if (!Ext.isEmpty(this.oldCls)) {
|
|
this.el.removeClass([this.oldCls, "x-btn-pressed"])
|
|
}
|
|
this.oldCls = (this.iconCls || this.icon) ? (this.text ? "x-btn-text-icon" : "x-btn-icon") : "x-btn-noicon";
|
|
this.el.addClass([this.oldCls, this.pressed ? "x-btn-pressed" : null])
|
|
}
|
|
}, getMenuClass:function () {
|
|
return this.menu ? (this.arrowAlign != "bottom" ? "x-btn-arrow" : "x-btn-arrow-bottom") : ""
|
|
}, onRender:function (c, a) {
|
|
if (!this.template) {
|
|
if (!Ext.Button.buttonTemplate) {
|
|
Ext.Button.buttonTemplate = new Ext.Template('<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">', '<tr><td class="x-btn-tl"><i> </i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i> </i></td></tr>', '<tr><td class="x-btn-ml"><i> </i></td><td class="x-btn-mc"><em class="{2}" unselectable="on"><button type="{0}"></button></em></td><td class="x-btn-mr"><i> </i></td></tr>', '<tr><td class="x-btn-bl"><i> </i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i> </i></td></tr>', "</tbody></table>");
|
|
Ext.Button.buttonTemplate.compile()
|
|
}
|
|
this.template = Ext.Button.buttonTemplate
|
|
}
|
|
var b, d = this.getTemplateArgs();
|
|
if (a) {
|
|
b = this.template.insertBefore(a, d, true)
|
|
} else {
|
|
b = this.template.append(c, d, true)
|
|
}
|
|
this.btnEl = b.child(this.buttonSelector);
|
|
this.mon(this.btnEl, {scope:this, focus:this.onFocus, blur:this.onBlur});
|
|
this.initButtonEl(b, this.btnEl);
|
|
Ext.ButtonToggleMgr.register(this)
|
|
}, initButtonEl:function (b, c) {
|
|
this.el = b;
|
|
this.setIcon(this.icon);
|
|
this.setText(this.text);
|
|
this.setIconClass(this.iconCls);
|
|
if (Ext.isDefined(this.tabIndex)) {
|
|
c.dom.tabIndex = this.tabIndex
|
|
}
|
|
if (this.tooltip) {
|
|
this.setTooltip(this.tooltip, true)
|
|
}
|
|
if (this.handleMouseEvents) {
|
|
this.mon(b, {scope:this, mouseover:this.onMouseOver, mousedown:this.onMouseDown})
|
|
}
|
|
if (this.menu) {
|
|
this.mon(this.menu, {scope:this, show:this.onMenuShow, hide:this.onMenuHide})
|
|
}
|
|
if (this.repeat) {
|
|
var a = new Ext.util.ClickRepeater(b, Ext.isObject(this.repeat) ? this.repeat : {});
|
|
this.mon(a, "click", this.onRepeatClick, this)
|
|
} else {
|
|
this.mon(b, this.clickEvent, this.onClick, this)
|
|
}
|
|
}, afterRender:function () {
|
|
Ext.Button.superclass.afterRender.call(this);
|
|
this.useSetClass = true;
|
|
this.setButtonClass();
|
|
this.doc = Ext.getDoc();
|
|
this.doAutoWidth()
|
|
}, setIconClass:function (a) {
|
|
this.iconCls = a;
|
|
if (this.el) {
|
|
this.btnEl.dom.className = "";
|
|
this.btnEl.addClass(["x-btn-text", a || ""]);
|
|
this.setButtonClass()
|
|
}
|
|
return this
|
|
}, setTooltip:function (b, a) {
|
|
if (this.rendered) {
|
|
if (!a) {
|
|
this.clearTip()
|
|
}
|
|
if (Ext.isObject(b)) {
|
|
Ext.QuickTips.register(Ext.apply({target:this.btnEl.id}, b));
|
|
this.tooltip = b
|
|
} else {
|
|
this.btnEl.dom[this.tooltipType] = b
|
|
}
|
|
} else {
|
|
this.tooltip = b
|
|
}
|
|
return this
|
|
}, clearTip:function () {
|
|
if (Ext.isObject(this.tooltip)) {
|
|
Ext.QuickTips.unregister(this.btnEl)
|
|
}
|
|
}, beforeDestroy:function () {
|
|
if (this.rendered) {
|
|
this.clearTip()
|
|
}
|
|
if (this.menu && this.destroyMenu !== false) {
|
|
Ext.destroy(this.btnEl, this.menu)
|
|
}
|
|
Ext.destroy(this.repeater)
|
|
}, onDestroy:function () {
|
|
if (this.rendered) {
|
|
this.doc.un("mouseover", this.monitorMouseOver, this);
|
|
this.doc.un("mouseup", this.onMouseUp, this);
|
|
delete this.doc;
|
|
delete this.btnEl;
|
|
Ext.ButtonToggleMgr.unregister(this)
|
|
}
|
|
Ext.Button.superclass.onDestroy.call(this)
|
|
}, doAutoWidth:function () {
|
|
if (this.autoWidth !== false && this.el && this.text && this.width === undefined) {
|
|
this.el.setWidth("auto");
|
|
if (Ext.isIE7 && Ext.isStrict) {
|
|
var a = this.btnEl;
|
|
if (a && a.getWidth() > 20) {
|
|
a.clip();
|
|
a.setWidth(Ext.util.TextMetrics.measure(a, this.text).width + a.getFrameWidth("lr"))
|
|
}
|
|
}
|
|
if (this.minWidth) {
|
|
if (this.el.getWidth() < this.minWidth) {
|
|
this.el.setWidth(this.minWidth)
|
|
}
|
|
}
|
|
}
|
|
}, setHandler:function (b, a) {
|
|
this.handler = b;
|
|
this.scope = a;
|
|
return this
|
|
}, setText:function (a) {
|
|
this.text = a;
|
|
if (this.el) {
|
|
this.btnEl.update(a || " ");
|
|
this.setButtonClass()
|
|
}
|
|
this.doAutoWidth();
|
|
return this
|
|
}, setIcon:function (a) {
|
|
this.icon = a;
|
|
if (this.el) {
|
|
this.btnEl.setStyle("background-image", a ? "url(" + a + ")" : "");
|
|
this.setButtonClass()
|
|
}
|
|
return this
|
|
}, getText:function () {
|
|
return this.text
|
|
}, toggle:function (b, a) {
|
|
b = b === undefined ? !this.pressed : !!b;
|
|
if (b != this.pressed) {
|
|
if (this.rendered) {
|
|
this.el[b ? "addClass" : "removeClass"]("x-btn-pressed")
|
|
}
|
|
this.pressed = b;
|
|
if (!a) {
|
|
this.fireEvent("toggle", this, b);
|
|
if (this.toggleHandler) {
|
|
this.toggleHandler.call(this.scope || this, this, b)
|
|
}
|
|
}
|
|
}
|
|
return this
|
|
}, onDisable:function () {
|
|
this.onDisableChange(true)
|
|
}, onEnable:function () {
|
|
this.onDisableChange(false)
|
|
}, onDisableChange:function (a) {
|
|
if (this.el) {
|
|
if (!Ext.isIE6 || !this.text) {
|
|
this.el[a ? "addClass" : "removeClass"](this.disabledClass)
|
|
}
|
|
this.el.dom.disabled = a
|
|
}
|
|
this.disabled = a
|
|
}, showMenu:function () {
|
|
if (this.rendered && this.menu) {
|
|
if (this.tooltip) {
|
|
Ext.QuickTips.getQuickTip().cancelShow(this.btnEl)
|
|
}
|
|
if (this.menu.isVisible()) {
|
|
this.menu.hide()
|
|
}
|
|
this.menu.ownerCt = this;
|
|
this.menu.show(this.el, this.menuAlign)
|
|
}
|
|
return this
|
|
}, hideMenu:function () {
|
|
if (this.hasVisibleMenu()) {
|
|
this.menu.hide()
|
|
}
|
|
return this
|
|
}, hasVisibleMenu:function () {
|
|
return this.menu && this.menu.ownerCt == this && this.menu.isVisible()
|
|
}, onRepeatClick:function (a, b) {
|
|
this.onClick(b)
|
|
}, onClick:function (a) {
|
|
if (a) {
|
|
a.preventDefault()
|
|
}
|
|
if (a.button !== 0) {
|
|
return
|
|
}
|
|
if (!this.disabled) {
|
|
this.doToggle();
|
|
if (this.menu && !this.hasVisibleMenu() && !this.ignoreNextClick) {
|
|
this.showMenu()
|
|
}
|
|
this.fireEvent("click", this, a);
|
|
if (this.handler) {
|
|
this.handler.call(this.scope || this, this, a)
|
|
}
|
|
}
|
|
}, doToggle:function () {
|
|
if (this.enableToggle && (this.allowDepress !== false || !this.pressed)) {
|
|
this.toggle()
|
|
}
|
|
}, isMenuTriggerOver:function (b, a) {
|
|
return this.menu && !a
|
|
}, isMenuTriggerOut:function (b, a) {
|
|
return this.menu && !a
|
|
}, onMouseOver:function (b) {
|
|
if (!this.disabled) {
|
|
var a = b.within(this.el, true);
|
|
if (!a) {
|
|
this.el.addClass("x-btn-over");
|
|
if (!this.monitoringMouseOver) {
|
|
this.doc.on("mouseover", this.monitorMouseOver, this);
|
|
this.monitoringMouseOver = true
|
|
}
|
|
this.fireEvent("mouseover", this, b)
|
|
}
|
|
if (this.isMenuTriggerOver(b, a)) {
|
|
this.fireEvent("menutriggerover", this, this.menu, b)
|
|
}
|
|
}
|
|
}, monitorMouseOver:function (a) {
|
|
if (a.target != this.el.dom && !a.within(this.el)) {
|
|
if (this.monitoringMouseOver) {
|
|
this.doc.un("mouseover", this.monitorMouseOver, this);
|
|
this.monitoringMouseOver = false
|
|
}
|
|
this.onMouseOut(a)
|
|
}
|
|
}, onMouseOut:function (b) {
|
|
var a = b.within(this.el) && b.target != this.el.dom;
|
|
this.el.removeClass("x-btn-over");
|
|
this.fireEvent("mouseout", this, b);
|
|
if (this.isMenuTriggerOut(b, a)) {
|
|
this.fireEvent("menutriggerout", this, this.menu, b)
|
|
}
|
|
}, focus:function () {
|
|
this.btnEl.focus()
|
|
}, blur:function () {
|
|
this.btnEl.blur()
|
|
}, onFocus:function (a) {
|
|
if (!this.disabled) {
|
|
this.el.addClass("x-btn-focus")
|
|
}
|
|
}, onBlur:function (a) {
|
|
this.el.removeClass("x-btn-focus")
|
|
}, getClickEl:function (b, a) {
|
|
return this.el
|
|
}, onMouseDown:function (a) {
|
|
if (!this.disabled && a.button === 0) {
|
|
this.getClickEl(a).addClass("x-btn-click");
|
|
this.doc.on("mouseup", this.onMouseUp, this)
|
|
}
|
|
}, onMouseUp:function (a) {
|
|
if (a.button === 0) {
|
|
this.getClickEl(a, true).removeClass("x-btn-click");
|
|
this.doc.un("mouseup", this.onMouseUp, this)
|
|
}
|
|
}, onMenuShow:function (a) {
|
|
if (this.menu.ownerCt == this) {
|
|
this.menu.ownerCt = this;
|
|
this.ignoreNextClick = 0;
|
|
this.el.addClass("x-btn-menu-active");
|
|
this.fireEvent("menushow", this, this.menu)
|
|
}
|
|
}, onMenuHide:function (a) {
|
|
if (this.menu.ownerCt == this) {
|
|
this.el.removeClass("x-btn-menu-active");
|
|
this.ignoreNextClick = this.restoreClick.defer(250, this);
|
|
this.fireEvent("menuhide", this, this.menu);
|
|
delete this.menu.ownerCt
|
|
}
|
|
}, restoreClick:function () {
|
|
this.ignoreNextClick = 0
|
|
}});
|
|
Ext.reg("button", Ext.Button);
|
|
Ext.ButtonToggleMgr = function () {
|
|
var a = {};
|
|
|
|
function b(e, j) {
|
|
if (j) {
|
|
var h = a[e.toggleGroup];
|
|
for (var d = 0, c = h.length; d < c; d++) {
|
|
if (h[d] != e) {
|
|
h[d].toggle(false)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return{register:function (c) {
|
|
if (!c.toggleGroup) {
|
|
return
|
|
}
|
|
var d = a[c.toggleGroup];
|
|
if (!d) {
|
|
d = a[c.toggleGroup] = []
|
|
}
|
|
d.push(c);
|
|
c.on("toggle", b)
|
|
}, unregister:function (c) {
|
|
if (!c.toggleGroup) {
|
|
return
|
|
}
|
|
var d = a[c.toggleGroup];
|
|
if (d) {
|
|
d.remove(c);
|
|
c.un("toggle", b)
|
|
}
|
|
}, getPressed:function (h) {
|
|
var e = a[h];
|
|
if (e) {
|
|
for (var d = 0, c = e.length; d < c; d++) {
|
|
if (e[d].pressed === true) {
|
|
return e[d]
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
}}
|
|
}();
|
|
Ext.SplitButton = Ext.extend(Ext.Button, {arrowSelector:"em", split:true, initComponent:function () {
|
|
Ext.SplitButton.superclass.initComponent.call(this);
|
|
this.addEvents("arrowclick")
|
|
}, onRender:function () {
|
|
Ext.SplitButton.superclass.onRender.apply(this, arguments);
|
|
if (this.arrowTooltip) {
|
|
this.el.child(this.arrowSelector).dom[this.tooltipType] = this.arrowTooltip
|
|
}
|
|
}, setArrowHandler:function (b, a) {
|
|
this.arrowHandler = b;
|
|
this.scope = a
|
|
}, getMenuClass:function () {
|
|
return"x-btn-split" + (this.arrowAlign == "bottom" ? "-bottom" : "")
|
|
}, isClickOnArrow:function (c) {
|
|
if (this.arrowAlign != "bottom") {
|
|
var b = this.el.child("em.x-btn-split");
|
|
var a = b.getRegion().right - b.getPadding("r");
|
|
return c.getPageX() > a
|
|
} else {
|
|
return c.getPageY() > this.btnEl.getRegion().bottom
|
|
}
|
|
}, onClick:function (b, a) {
|
|
b.preventDefault();
|
|
if (!this.disabled) {
|
|
if (this.isClickOnArrow(b)) {
|
|
if (this.menu && !this.menu.isVisible() && !this.ignoreNextClick) {
|
|
this.showMenu()
|
|
}
|
|
this.fireEvent("arrowclick", this, b);
|
|
if (this.arrowHandler) {
|
|
this.arrowHandler.call(this.scope || this, this, b)
|
|
}
|
|
} else {
|
|
this.doToggle();
|
|
this.fireEvent("click", this, b);
|
|
if (this.handler) {
|
|
this.handler.call(this.scope || this, this, b)
|
|
}
|
|
}
|
|
}
|
|
}, isMenuTriggerOver:function (a) {
|
|
return this.menu && a.target.tagName == this.arrowSelector
|
|
}, isMenuTriggerOut:function (b, a) {
|
|
return this.menu && b.target.tagName != this.arrowSelector
|
|
}});
|
|
Ext.reg("splitbutton", Ext.SplitButton);
|
|
Ext.CycleButton = Ext.extend(Ext.SplitButton, {getItemText:function (a) {
|
|
if (a && this.showText === true) {
|
|
var b = "";
|
|
if (this.prependText) {
|
|
b += this.prependText
|
|
}
|
|
b += a.text;
|
|
return b
|
|
}
|
|
return undefined
|
|
}, setActiveItem:function (c, a) {
|
|
if (!Ext.isObject(c)) {
|
|
c = this.menu.getComponent(c)
|
|
}
|
|
if (c) {
|
|
if (!this.rendered) {
|
|
this.text = this.getItemText(c);
|
|
this.iconCls = c.iconCls
|
|
} else {
|
|
var b = this.getItemText(c);
|
|
if (b) {
|
|
this.setText(b)
|
|
}
|
|
this.setIconClass(c.iconCls)
|
|
}
|
|
this.activeItem = c;
|
|
if (!c.checked) {
|
|
c.setChecked(true, a)
|
|
}
|
|
if (this.forceIcon) {
|
|
this.setIconClass(this.forceIcon)
|
|
}
|
|
if (!a) {
|
|
this.fireEvent("change", this, c)
|
|
}
|
|
}
|
|
}, getActiveItem:function () {
|
|
return this.activeItem
|
|
}, initComponent:function () {
|
|
this.addEvents("change");
|
|
if (this.changeHandler) {
|
|
this.on("change", this.changeHandler, this.scope || this);
|
|
delete this.changeHandler
|
|
}
|
|
this.itemCount = this.items.length;
|
|
this.menu = {cls:"x-cycle-menu", items:[]};
|
|
var a = 0;
|
|
Ext.each(this.items, function (c, b) {
|
|
Ext.apply(c, {group:c.group || this.id, itemIndex:b, checkHandler:this.checkHandler, scope:this, checked:c.checked || false});
|
|
this.menu.items.push(c);
|
|
if (c.checked) {
|
|
a = b
|
|
}
|
|
}, this);
|
|
Ext.CycleButton.superclass.initComponent.call(this);
|
|
this.on("click", this.toggleSelected, this);
|
|
this.setActiveItem(a, true)
|
|
}, checkHandler:function (a, b) {
|
|
if (b) {
|
|
this.setActiveItem(a)
|
|
}
|
|
}, toggleSelected:function () {
|
|
var a = this.menu;
|
|
a.render();
|
|
if (!a.hasLayout) {
|
|
a.doLayout()
|
|
}
|
|
var d, b;
|
|
for (var c = 1; c < this.itemCount; c++) {
|
|
d = (this.activeItem.itemIndex + c) % this.itemCount;
|
|
b = a.items.itemAt(d);
|
|
if (!b.disabled) {
|
|
b.setChecked(true);
|
|
break
|
|
}
|
|
}
|
|
}});
|
|
Ext.reg("cycle", Ext.CycleButton);
|
|
Ext.Toolbar = function (a) {
|
|
if (Ext.isArray(a)) {
|
|
a = {items:a, layout:"toolbar"}
|
|
} else {
|
|
a = Ext.apply({layout:"toolbar"}, a);
|
|
if (a.buttons) {
|
|
a.items = a.buttons
|
|
}
|
|
}
|
|
Ext.Toolbar.superclass.constructor.call(this, a)
|
|
};
|
|
(function () {
|
|
var a = Ext.Toolbar;
|
|
Ext.extend(a, Ext.Container, {defaultType:"button", enableOverflow:false, trackMenus:true, internalDefaults:{removeMode:"container", hideParent:true}, toolbarCls:"x-toolbar", initComponent:function () {
|
|
a.superclass.initComponent.call(this);
|
|
this.addEvents("overflowchange")
|
|
}, onRender:function (c, b) {
|
|
if (!this.el) {
|
|
if (!this.autoCreate) {
|
|
this.autoCreate = {cls:this.toolbarCls + " x-small-editor"}
|
|
}
|
|
this.el = c.createChild(Ext.apply({id:this.id}, this.autoCreate), b);
|
|
Ext.Toolbar.superclass.onRender.apply(this, arguments)
|
|
}
|
|
}, lookupComponent:function (b) {
|
|
if (Ext.isString(b)) {
|
|
if (b == "-") {
|
|
b = new a.Separator()
|
|
} else {
|
|
if (b == " ") {
|
|
b = new a.Spacer()
|
|
} else {
|
|
if (b == "->") {
|
|
b = new a.Fill()
|
|
} else {
|
|
b = new a.TextItem(b)
|
|
}
|
|
}
|
|
}
|
|
this.applyDefaults(b)
|
|
} else {
|
|
if (b.isFormField || b.render) {
|
|
b = this.createComponent(b)
|
|
} else {
|
|
if (b.tag) {
|
|
b = new a.Item({autoEl:b})
|
|
} else {
|
|
if (b.tagName) {
|
|
b = new a.Item({el:b})
|
|
} else {
|
|
if (Ext.isObject(b)) {
|
|
b = b.xtype ? this.createComponent(b) : this.constructButton(b)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return b
|
|
}, applyDefaults:function (e) {
|
|
if (!Ext.isString(e)) {
|
|
e = Ext.Toolbar.superclass.applyDefaults.call(this, e);
|
|
var b = this.internalDefaults;
|
|
if (e.events) {
|
|
Ext.applyIf(e.initialConfig, b);
|
|
Ext.apply(e, b)
|
|
} else {
|
|
Ext.applyIf(e, b)
|
|
}
|
|
}
|
|
return e
|
|
}, addSeparator:function () {
|
|
return this.add(new a.Separator())
|
|
}, addSpacer:function () {
|
|
return this.add(new a.Spacer())
|
|
}, addFill:function () {
|
|
this.add(new a.Fill())
|
|
}, addElement:function (b) {
|
|
return this.addItem(new a.Item({el:b}))
|
|
}, addItem:function (b) {
|
|
return this.add.apply(this, arguments)
|
|
}, addButton:function (c) {
|
|
if (Ext.isArray(c)) {
|
|
var e = [];
|
|
for (var d = 0, b = c.length; d < b; d++) {
|
|
e.push(this.addButton(c[d]))
|
|
}
|
|
return e
|
|
}
|
|
return this.add(this.constructButton(c))
|
|
}, addText:function (b) {
|
|
return this.addItem(new a.TextItem(b))
|
|
}, addDom:function (b) {
|
|
return this.add(new a.Item({autoEl:b}))
|
|
}, addField:function (b) {
|
|
return this.add(b)
|
|
}, insertButton:function (c, g) {
|
|
if (Ext.isArray(g)) {
|
|
var e = [];
|
|
for (var d = 0, b = g.length; d < b; d++) {
|
|
e.push(this.insertButton(c + d, g[d]))
|
|
}
|
|
return e
|
|
}
|
|
return Ext.Toolbar.superclass.insert.call(this, c, g)
|
|
}, trackMenu:function (c, b) {
|
|
if (this.trackMenus && c.menu) {
|
|
var d = b ? "mun" : "mon";
|
|
this[d](c, "menutriggerover", this.onButtonTriggerOver, this);
|
|
this[d](c, "menushow", this.onButtonMenuShow, this);
|
|
this[d](c, "menuhide", this.onButtonMenuHide, this)
|
|
}
|
|
}, constructButton:function (d) {
|
|
var c = d.events ? d : this.createComponent(d, d.split ? "splitbutton" : this.defaultType);
|
|
return c
|
|
}, onAdd:function (b) {
|
|
Ext.Toolbar.superclass.onAdd.call(this);
|
|
this.trackMenu(b);
|
|
if (this.disabled) {
|
|
b.disable()
|
|
}
|
|
}, onRemove:function (b) {
|
|
Ext.Toolbar.superclass.onRemove.call(this);
|
|
if (b == this.activeMenuBtn) {
|
|
delete this.activeMenuBtn
|
|
}
|
|
this.trackMenu(b, true)
|
|
}, onDisable:function () {
|
|
this.items.each(function (b) {
|
|
if (b.disable) {
|
|
b.disable()
|
|
}
|
|
})
|
|
}, onEnable:function () {
|
|
this.items.each(function (b) {
|
|
if (b.enable) {
|
|
b.enable()
|
|
}
|
|
})
|
|
}, onButtonTriggerOver:function (b) {
|
|
if (this.activeMenuBtn && this.activeMenuBtn != b) {
|
|
this.activeMenuBtn.hideMenu();
|
|
b.showMenu();
|
|
this.activeMenuBtn = b
|
|
}
|
|
}, onButtonMenuShow:function (b) {
|
|
this.activeMenuBtn = b
|
|
}, onButtonMenuHide:function (b) {
|
|
delete this.activeMenuBtn
|
|
}});
|
|
Ext.reg("toolbar", Ext.Toolbar);
|
|
a.Item = Ext.extend(Ext.BoxComponent, {hideParent:true, enable:Ext.emptyFn, disable:Ext.emptyFn, focus:Ext.emptyFn});
|
|
Ext.reg("tbitem", a.Item);
|
|
a.Separator = Ext.extend(a.Item, {onRender:function (c, b) {
|
|
this.el = c.createChild({tag:"span", cls:"xtb-sep"}, b)
|
|
}});
|
|
Ext.reg("tbseparator", a.Separator);
|
|
a.Spacer = Ext.extend(a.Item, {onRender:function (c, b) {
|
|
this.el = c.createChild({tag:"div", cls:"xtb-spacer", style:this.width ? "width:" + this.width + "px" : ""}, b)
|
|
}});
|
|
Ext.reg("tbspacer", a.Spacer);
|
|
a.Fill = Ext.extend(a.Item, {render:Ext.emptyFn, isFill:true});
|
|
Ext.reg("tbfill", a.Fill);
|
|
a.TextItem = Ext.extend(a.Item, {constructor:function (b) {
|
|
a.TextItem.superclass.constructor.call(this, Ext.isString(b) ? {text:b} : b)
|
|
}, onRender:function (c, b) {
|
|
this.autoEl = {cls:"xtb-text", html:this.text || ""};
|
|
a.TextItem.superclass.onRender.call(this, c, b)
|
|
}, setText:function (b) {
|
|
if (this.rendered) {
|
|
this.el.update(b)
|
|
} else {
|
|
this.text = b
|
|
}
|
|
}});
|
|
Ext.reg("tbtext", a.TextItem);
|
|
a.Button = Ext.extend(Ext.Button, {});
|
|
a.SplitButton = Ext.extend(Ext.SplitButton, {});
|
|
Ext.reg("tbbutton", a.Button);
|
|
Ext.reg("tbsplit", a.SplitButton)
|
|
})();
|
|
Ext.ButtonGroup = Ext.extend(Ext.Panel, {baseCls:"x-btn-group", layout:"table", defaultType:"button", frame:true, internalDefaults:{removeMode:"container", hideParent:true}, initComponent:function () {
|
|
this.layoutConfig = this.layoutConfig || {};
|
|
Ext.applyIf(this.layoutConfig, {columns:this.columns});
|
|
if (!this.title) {
|
|
this.addClass("x-btn-group-notitle")
|
|
}
|
|
this.on("afterlayout", this.onAfterLayout, this);
|
|
Ext.ButtonGroup.superclass.initComponent.call(this)
|
|
}, applyDefaults:function (b) {
|
|
b = Ext.ButtonGroup.superclass.applyDefaults.call(this, b);
|
|
var a = this.internalDefaults;
|
|
if (b.events) {
|
|
Ext.applyIf(b.initialConfig, a);
|
|
Ext.apply(b, a)
|
|
} else {
|
|
Ext.applyIf(b, a)
|
|
}
|
|
return b
|
|
}, onAfterLayout:function () {
|
|
var a = this.body.getFrameWidth("lr") + this.body.dom.firstChild.offsetWidth;
|
|
this.body.setWidth(a);
|
|
this.el.setWidth(a + this.getFrameWidth())
|
|
}});
|
|
Ext.reg("buttongroup", Ext.ButtonGroup);
|
|
(function () {
|
|
var a = Ext.Toolbar;
|
|
Ext.PagingToolbar = Ext.extend(Ext.Toolbar, {pageSize:20, displayMsg:"Displaying {0} - {1} of {2}", emptyMsg:"No data to display", beforePageText:"Page", afterPageText:"of {0}", firstText:"First Page", prevText:"Previous Page", nextText:"Next Page", lastText:"Last Page", refreshText:"Refresh", initComponent:function () {
|
|
var c = [this.first = new a.Button({tooltip:this.firstText, overflowText:this.firstText, iconCls:"x-tbar-page-first", disabled:true, handler:this.moveFirst, scope:this}), this.prev = new a.Button({tooltip:this.prevText, overflowText:this.prevText, iconCls:"x-tbar-page-prev", disabled:true, handler:this.movePrevious, scope:this}), "-", this.beforePageText, this.inputItem = new Ext.form.NumberField({cls:"x-tbar-page-number", allowDecimals:false, allowNegative:false, enableKeyEvents:true, selectOnFocus:true, submitValue:false, listeners:{scope:this, keydown:this.onPagingKeyDown, blur:this.onPagingBlur}}), this.afterTextItem = new a.TextItem({text:String.format(this.afterPageText, 1)}), "-", this.next = new a.Button({tooltip:this.nextText, overflowText:this.nextText, iconCls:"x-tbar-page-next", disabled:true, handler:this.moveNext, scope:this}), this.last = new a.Button({tooltip:this.lastText, overflowText:this.lastText, iconCls:"x-tbar-page-last", disabled:true, handler:this.moveLast, scope:this}), "-", this.refresh = new a.Button({tooltip:this.refreshText, overflowText:this.refreshText, iconCls:"x-tbar-loading", handler:this.doRefresh, scope:this})];
|
|
var b = this.items || this.buttons || [];
|
|
if (this.prependButtons) {
|
|
this.items = b.concat(c)
|
|
} else {
|
|
this.items = c.concat(b)
|
|
}
|
|
delete this.buttons;
|
|
if (this.displayInfo) {
|
|
this.items.push("->");
|
|
this.items.push(this.displayItem = new a.TextItem({}))
|
|
}
|
|
Ext.PagingToolbar.superclass.initComponent.call(this);
|
|
this.addEvents("change", "beforechange");
|
|
this.on("afterlayout", this.onFirstLayout, this, {single:true});
|
|
this.cursor = 0;
|
|
this.bindStore(this.store, true)
|
|
}, onFirstLayout:function () {
|
|
if (this.dsLoaded) {
|
|
this.onLoad.apply(this, this.dsLoaded)
|
|
}
|
|
}, updateInfo:function () {
|
|
if (this.displayItem) {
|
|
var b = this.store.getCount();
|
|
var c = b == 0 ? this.emptyMsg : String.format(this.displayMsg, this.cursor + 1, this.cursor + b, this.store.getTotalCount());
|
|
this.displayItem.setText(c)
|
|
}
|
|
}, onLoad:function (b, e, j) {
|
|
if (!this.rendered) {
|
|
this.dsLoaded = [b, e, j];
|
|
return
|
|
}
|
|
var g = this.getParams();
|
|
this.cursor = (j.params && j.params[g.start]) ? j.params[g.start] : 0;
|
|
var i = this.getPageData(), c = i.activePage, h = i.pages;
|
|
this.afterTextItem.setText(String.format(this.afterPageText, i.pages));
|
|
this.inputItem.setValue(c);
|
|
this.first.setDisabled(c == 1);
|
|
this.prev.setDisabled(c == 1);
|
|
this.next.setDisabled(c == h);
|
|
this.last.setDisabled(c == h);
|
|
this.refresh.enable();
|
|
this.updateInfo();
|
|
this.fireEvent("change", this, i)
|
|
}, getPageData:function () {
|
|
var b = this.store.getTotalCount();
|
|
return{total:b, activePage:Math.ceil((this.cursor + this.pageSize) / this.pageSize), pages:b < this.pageSize ? 1 : Math.ceil(b / this.pageSize)}
|
|
}, changePage:function (b) {
|
|
this.doLoad(((b - 1) * this.pageSize).constrain(0, this.store.getTotalCount()))
|
|
}, onLoadError:function () {
|
|
if (!this.rendered) {
|
|
return
|
|
}
|
|
this.refresh.enable()
|
|
}, readPage:function (e) {
|
|
var b = this.inputItem.getValue(), c;
|
|
if (!b || isNaN(c = parseInt(b, 10))) {
|
|
this.inputItem.setValue(e.activePage);
|
|
return false
|
|
}
|
|
return c
|
|
}, onPagingFocus:function () {
|
|
this.inputItem.select()
|
|
}, onPagingBlur:function (b) {
|
|
this.inputItem.setValue(this.getPageData().activePage)
|
|
}, onPagingKeyDown:function (i, h) {
|
|
var c = h.getKey(), j = this.getPageData(), g;
|
|
if (c == h.RETURN) {
|
|
h.stopEvent();
|
|
g = this.readPage(j);
|
|
if (g !== false) {
|
|
g = Math.min(Math.max(1, g), j.pages) - 1;
|
|
this.doLoad(g * this.pageSize)
|
|
}
|
|
} else {
|
|
if (c == h.HOME || c == h.END) {
|
|
h.stopEvent();
|
|
g = c == h.HOME ? 1 : j.pages;
|
|
i.setValue(g)
|
|
} else {
|
|
if (c == h.UP || c == h.PAGEUP || c == h.DOWN || c == h.PAGEDOWN) {
|
|
h.stopEvent();
|
|
if ((g = this.readPage(j))) {
|
|
var b = h.shiftKey ? 10 : 1;
|
|
if (c == h.DOWN || c == h.PAGEDOWN) {
|
|
b *= -1
|
|
}
|
|
g += b;
|
|
if (g >= 1 & g <= j.pages) {
|
|
i.setValue(g)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, getParams:function () {
|
|
return this.paramNames || this.store.paramNames
|
|
}, beforeLoad:function () {
|
|
if (this.rendered && this.refresh) {
|
|
this.refresh.disable()
|
|
}
|
|
}, doLoad:function (d) {
|
|
var c = {}, b = this.getParams();
|
|
c[b.start] = d;
|
|
c[b.limit] = this.pageSize;
|
|
if (this.fireEvent("beforechange", this, c) !== false) {
|
|
this.store.load({params:c})
|
|
}
|
|
}, moveFirst:function () {
|
|
this.doLoad(0)
|
|
}, movePrevious:function () {
|
|
this.doLoad(Math.max(0, this.cursor - this.pageSize))
|
|
}, moveNext:function () {
|
|
this.doLoad(this.cursor + this.pageSize)
|
|
}, moveLast:function () {
|
|
var c = this.store.getTotalCount(), b = c % this.pageSize;
|
|
this.doLoad(b ? (c - b) : c - this.pageSize)
|
|
}, doRefresh:function () {
|
|
this.doLoad(this.cursor)
|
|
}, bindStore:function (c, d) {
|
|
var b;
|
|
if (!d && this.store) {
|
|
if (c !== this.store && this.store.autoDestroy) {
|
|
this.store.destroy()
|
|
} else {
|
|
this.store.un("beforeload", this.beforeLoad, this);
|
|
this.store.un("load", this.onLoad, this);
|
|
this.store.un("exception", this.onLoadError, this)
|
|
}
|
|
if (!c) {
|
|
this.store = null
|
|
}
|
|
}
|
|
if (c) {
|
|
c = Ext.StoreMgr.lookup(c);
|
|
c.on({scope:this, beforeload:this.beforeLoad, load:this.onLoad, exception:this.onLoadError});
|
|
b = true
|
|
}
|
|
this.store = c;
|
|
if (b) {
|
|
this.onLoad(c, null, {})
|
|
}
|
|
}, unbind:function (b) {
|
|
this.bindStore(null)
|
|
}, bind:function (b) {
|
|
this.bindStore(b)
|
|
}, onDestroy:function () {
|
|
this.bindStore(null);
|
|
Ext.PagingToolbar.superclass.onDestroy.call(this)
|
|
}})
|
|
})();
|
|
Ext.reg("paging", Ext.PagingToolbar);
|
|
Ext.History = (function () {
|
|
var e, c;
|
|
var k = false;
|
|
var d;
|
|
|
|
function g() {
|
|
var l = location.href, m = l.indexOf("#"), n = m >= 0 ? l.substr(m + 1) : null;
|
|
if (Ext.isGecko) {
|
|
n = decodeURIComponent(n)
|
|
}
|
|
return n
|
|
}
|
|
|
|
function a() {
|
|
c.value = d
|
|
}
|
|
|
|
function h(l) {
|
|
d = l;
|
|
Ext.History.fireEvent("change", l)
|
|
}
|
|
|
|
function i(m) {
|
|
var l = ['<html><body><div id="state">', Ext.util.Format.htmlEncode(m), "</div></body></html>"].join("");
|
|
try {
|
|
var o = e.contentWindow.document;
|
|
o.open();
|
|
o.write(l);
|
|
o.close();
|
|
return true
|
|
} catch (n) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
function b() {
|
|
if (!e.contentWindow || !e.contentWindow.document) {
|
|
setTimeout(b, 10);
|
|
return
|
|
}
|
|
var o = e.contentWindow.document;
|
|
var m = o.getElementById("state");
|
|
var l = m ? m.innerText : null;
|
|
var n = g();
|
|
setInterval(function () {
|
|
o = e.contentWindow.document;
|
|
m = o.getElementById("state");
|
|
var q = m ? m.innerText : null;
|
|
var p = g();
|
|
if (q !== l) {
|
|
l = q;
|
|
h(l);
|
|
location.hash = l;
|
|
n = l;
|
|
a()
|
|
} else {
|
|
if (p !== n) {
|
|
n = p;
|
|
i(p)
|
|
}
|
|
}
|
|
}, 50);
|
|
k = true;
|
|
Ext.History.fireEvent("ready", Ext.History)
|
|
}
|
|
|
|
function j() {
|
|
d = c.value ? c.value : g();
|
|
if (Ext.isIE) {
|
|
b()
|
|
} else {
|
|
var l = g();
|
|
setInterval(function () {
|
|
var m = g();
|
|
if (m !== l) {
|
|
l = m;
|
|
h(l);
|
|
a()
|
|
}
|
|
}, 50);
|
|
k = true;
|
|
Ext.History.fireEvent("ready", Ext.History)
|
|
}
|
|
}
|
|
|
|
return{fieldId:"x-history-field", iframeId:"x-history-frame", events:{}, init:function (m, l) {
|
|
if (k) {
|
|
Ext.callback(m, l, [this]);
|
|
return
|
|
}
|
|
if (!Ext.isReady) {
|
|
Ext.onReady(function () {
|
|
Ext.History.init(m, l)
|
|
});
|
|
return
|
|
}
|
|
c = Ext.getDom(Ext.History.fieldId);
|
|
if (Ext.isIE) {
|
|
e = Ext.getDom(Ext.History.iframeId)
|
|
}
|
|
this.addEvents("ready", "change");
|
|
if (m) {
|
|
this.on("ready", m, l, {single:true})
|
|
}
|
|
j()
|
|
}, add:function (l, m) {
|
|
if (m !== false) {
|
|
if (this.getToken() == l) {
|
|
return true
|
|
}
|
|
}
|
|
if (Ext.isIE) {
|
|
return i(l)
|
|
} else {
|
|
location.hash = l;
|
|
return true
|
|
}
|
|
}, back:function () {
|
|
history.go(-1)
|
|
}, forward:function () {
|
|
history.go(1)
|
|
}, getToken:function () {
|
|
return k ? d : g()
|
|
}}
|
|
})();
|
|
Ext.apply(Ext.History, new Ext.util.Observable());
|
|
Ext.Tip = Ext.extend(Ext.Panel, {minWidth:40, maxWidth:300, shadow:"sides", defaultAlign:"tl-bl?", autoRender:true, quickShowInterval:250, frame:true, hidden:true, baseCls:"x-tip", floating:{shadow:true, shim:true, useDisplay:true, constrain:false}, autoHeight:true, closeAction:"hide", initComponent:function () {
|
|
Ext.Tip.superclass.initComponent.call(this);
|
|
if (this.closable && !this.title) {
|
|
this.elements += ",header"
|
|
}
|
|
}, afterRender:function () {
|
|
Ext.Tip.superclass.afterRender.call(this);
|
|
if (this.closable) {
|
|
this.addTool({id:"close", handler:this[this.closeAction], scope:this})
|
|
}
|
|
}, showAt:function (a) {
|
|
Ext.Tip.superclass.show.call(this);
|
|
if (this.measureWidth !== false && (!this.initialConfig || typeof this.initialConfig.width != "number")) {
|
|
this.doAutoWidth()
|
|
}
|
|
if (this.constrainPosition) {
|
|
a = this.el.adjustForConstraints(a)
|
|
}
|
|
this.setPagePosition(a[0], a[1])
|
|
}, doAutoWidth:function (a) {
|
|
a = a || 0;
|
|
var b = this.body.getTextWidth();
|
|
if (this.title) {
|
|
b = Math.max(b, this.header.child("span").getTextWidth(this.title))
|
|
}
|
|
b += this.getFrameWidth() + (this.closable ? 20 : 0) + this.body.getPadding("lr") + a;
|
|
this.setWidth(b.constrain(this.minWidth, this.maxWidth));
|
|
if (Ext.isIE7 && !this.repainted) {
|
|
this.el.repaint();
|
|
this.repainted = true
|
|
}
|
|
}, showBy:function (a, b) {
|
|
if (!this.rendered) {
|
|
this.render(Ext.getBody())
|
|
}
|
|
this.showAt(this.el.getAlignToXY(a, b || this.defaultAlign))
|
|
}, initDraggable:function () {
|
|
this.dd = new Ext.Tip.DD(this, typeof this.draggable == "boolean" ? null : this.draggable);
|
|
this.header.addClass("x-tip-draggable")
|
|
}});
|
|
Ext.reg("tip", Ext.Tip);
|
|
Ext.Tip.DD = function (b, a) {
|
|
Ext.apply(this, a);
|
|
this.tip = b;
|
|
Ext.Tip.DD.superclass.constructor.call(this, b.el.id, "WindowDD-" + b.id);
|
|
this.setHandleElId(b.header.id);
|
|
this.scroll = false
|
|
};
|
|
Ext.extend(Ext.Tip.DD, Ext.dd.DD, {moveOnly:true, scroll:false, headerOffsets:[100, 25], startDrag:function () {
|
|
this.tip.el.disableShadow()
|
|
}, endDrag:function (a) {
|
|
this.tip.el.enableShadow(true)
|
|
}});
|
|
Ext.ToolTip = Ext.extend(Ext.Tip, {showDelay:500, hideDelay:200, dismissDelay:5000, trackMouse:false, anchorToTarget:true, anchorOffset:0, targetCounter:0, constrainPosition:false, initComponent:function () {
|
|
Ext.ToolTip.superclass.initComponent.call(this);
|
|
this.lastActive = new Date();
|
|
this.initTarget(this.target);
|
|
this.origAnchor = this.anchor
|
|
}, onRender:function (b, a) {
|
|
Ext.ToolTip.superclass.onRender.call(this, b, a);
|
|
this.anchorCls = "x-tip-anchor-" + this.getAnchorPosition();
|
|
this.anchorEl = this.el.createChild({cls:"x-tip-anchor " + this.anchorCls})
|
|
}, afterRender:function () {
|
|
Ext.ToolTip.superclass.afterRender.call(this);
|
|
this.anchorEl.setStyle("z-index", this.el.getZIndex() + 1).setVisibilityMode(Ext.Element.DISPLAY)
|
|
}, initTarget:function (c) {
|
|
var a;
|
|
if ((a = Ext.get(c))) {
|
|
if (this.target) {
|
|
var b = Ext.get(this.target);
|
|
this.mun(b, "mouseover", this.onTargetOver, this);
|
|
this.mun(b, "mouseout", this.onTargetOut, this);
|
|
this.mun(b, "mousemove", this.onMouseMove, this)
|
|
}
|
|
this.mon(a, {mouseover:this.onTargetOver, mouseout:this.onTargetOut, mousemove:this.onMouseMove, scope:this});
|
|
this.target = a
|
|
}
|
|
if (this.anchor) {
|
|
this.anchorTarget = this.target
|
|
}
|
|
}, onMouseMove:function (b) {
|
|
var a = this.delegate ? b.getTarget(this.delegate) : this.triggerElement = true;
|
|
if (a) {
|
|
this.targetXY = b.getXY();
|
|
if (a === this.triggerElement) {
|
|
if (!this.hidden && this.trackMouse) {
|
|
this.setPagePosition(this.getTargetXY())
|
|
}
|
|
} else {
|
|
this.hide();
|
|
this.lastActive = new Date(0);
|
|
this.onTargetOver(b)
|
|
}
|
|
} else {
|
|
if (!this.closable && this.isVisible()) {
|
|
this.hide()
|
|
}
|
|
}
|
|
}, getTargetXY:function () {
|
|
if (this.delegate) {
|
|
this.anchorTarget = this.triggerElement
|
|
}
|
|
if (this.anchor) {
|
|
this.targetCounter++;
|
|
var c = this.getOffsets(), l = (this.anchorToTarget && !this.trackMouse) ? this.el.getAlignToXY(this.anchorTarget, this.getAnchorAlign()) : this.targetXY, a = Ext.lib.Dom.getViewWidth() - 5, h = Ext.lib.Dom.getViewHeight() - 5, i = document.documentElement, e = document.body, k = (i.scrollLeft || e.scrollLeft || 0) + 5, j = (i.scrollTop || e.scrollTop || 0) + 5, b = [l[0] + c[0], l[1] + c[1]], g = this.getSize();
|
|
this.anchorEl.removeClass(this.anchorCls);
|
|
if (this.targetCounter < 2) {
|
|
if (b[0] < k) {
|
|
if (this.anchorToTarget) {
|
|
this.defaultAlign = "l-r";
|
|
if (this.mouseOffset) {
|
|
this.mouseOffset[0] *= -1
|
|
}
|
|
}
|
|
this.anchor = "left";
|
|
return this.getTargetXY()
|
|
}
|
|
if (b[0] + g.width > a) {
|
|
if (this.anchorToTarget) {
|
|
this.defaultAlign = "r-l";
|
|
if (this.mouseOffset) {
|
|
this.mouseOffset[0] *= -1
|
|
}
|
|
}
|
|
this.anchor = "right";
|
|
return this.getTargetXY()
|
|
}
|
|
if (b[1] < j) {
|
|
if (this.anchorToTarget) {
|
|
this.defaultAlign = "t-b";
|
|
if (this.mouseOffset) {
|
|
this.mouseOffset[1] *= -1
|
|
}
|
|
}
|
|
this.anchor = "top";
|
|
return this.getTargetXY()
|
|
}
|
|
if (b[1] + g.height > h) {
|
|
if (this.anchorToTarget) {
|
|
this.defaultAlign = "b-t";
|
|
if (this.mouseOffset) {
|
|
this.mouseOffset[1] *= -1
|
|
}
|
|
}
|
|
this.anchor = "bottom";
|
|
return this.getTargetXY()
|
|
}
|
|
}
|
|
this.anchorCls = "x-tip-anchor-" + this.getAnchorPosition();
|
|
this.anchorEl.addClass(this.anchorCls);
|
|
this.targetCounter = 0;
|
|
return b
|
|
} else {
|
|
var d = this.getMouseOffset();
|
|
return[this.targetXY[0] + d[0], this.targetXY[1] + d[1]]
|
|
}
|
|
}, getMouseOffset:function () {
|
|
var a = this.anchor ? [0, 0] : [15, 18];
|
|
if (this.mouseOffset) {
|
|
a[0] += this.mouseOffset[0];
|
|
a[1] += this.mouseOffset[1]
|
|
}
|
|
return a
|
|
}, getAnchorPosition:function () {
|
|
if (this.anchor) {
|
|
this.tipAnchor = this.anchor.charAt(0)
|
|
} else {
|
|
var a = this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);
|
|
if (!a) {
|
|
throw"AnchorTip.defaultAlign is invalid"
|
|
}
|
|
this.tipAnchor = a[1].charAt(0)
|
|
}
|
|
switch (this.tipAnchor) {
|
|
case"t":
|
|
return"top";
|
|
case"b":
|
|
return"bottom";
|
|
case"r":
|
|
return"right"
|
|
}
|
|
return"left"
|
|
}, getAnchorAlign:function () {
|
|
switch (this.anchor) {
|
|
case"top":
|
|
return"tl-bl";
|
|
case"left":
|
|
return"tl-tr";
|
|
case"right":
|
|
return"tr-tl";
|
|
default:
|
|
return"bl-tl"
|
|
}
|
|
}, getOffsets:function () {
|
|
var b, a = this.getAnchorPosition().charAt(0);
|
|
if (this.anchorToTarget && !this.trackMouse) {
|
|
switch (a) {
|
|
case"t":
|
|
b = [0, 9];
|
|
break;
|
|
case"b":
|
|
b = [0, -13];
|
|
break;
|
|
case"r":
|
|
b = [-13, 0];
|
|
break;
|
|
default:
|
|
b = [9, 0];
|
|
break
|
|
}
|
|
} else {
|
|
switch (a) {
|
|
case"t":
|
|
b = [-15 - this.anchorOffset, 30];
|
|
break;
|
|
case"b":
|
|
b = [-19 - this.anchorOffset, -13 - this.el.dom.offsetHeight];
|
|
break;
|
|
case"r":
|
|
b = [-15 - this.el.dom.offsetWidth, -13 - this.anchorOffset];
|
|
break;
|
|
default:
|
|
b = [25, -13 - this.anchorOffset];
|
|
break
|
|
}
|
|
}
|
|
var c = this.getMouseOffset();
|
|
b[0] += c[0];
|
|
b[1] += c[1];
|
|
return b
|
|
}, onTargetOver:function (b) {
|
|
if (this.disabled || b.within(this.target.dom, true)) {
|
|
return
|
|
}
|
|
var a = b.getTarget(this.delegate);
|
|
if (a) {
|
|
this.triggerElement = a;
|
|
this.clearTimer("hide");
|
|
this.targetXY = b.getXY();
|
|
this.delayShow()
|
|
}
|
|
}, delayShow:function () {
|
|
if (this.hidden && !this.showTimer) {
|
|
if (this.lastActive.getElapsed() < this.quickShowInterval) {
|
|
this.show()
|
|
} else {
|
|
this.showTimer = this.show.defer(this.showDelay, this)
|
|
}
|
|
} else {
|
|
if (!this.hidden && this.autoHide !== false) {
|
|
this.show()
|
|
}
|
|
}
|
|
}, onTargetOut:function (a) {
|
|
if (this.disabled || a.within(this.target.dom, true)) {
|
|
return
|
|
}
|
|
this.clearTimer("show");
|
|
if (this.autoHide !== false) {
|
|
this.delayHide()
|
|
}
|
|
}, delayHide:function () {
|
|
if (!this.hidden && !this.hideTimer) {
|
|
this.hideTimer = this.hide.defer(this.hideDelay, this)
|
|
}
|
|
}, hide:function () {
|
|
this.clearTimer("dismiss");
|
|
this.lastActive = new Date();
|
|
if (this.anchorEl) {
|
|
this.anchorEl.hide()
|
|
}
|
|
Ext.ToolTip.superclass.hide.call(this);
|
|
delete this.triggerElement
|
|
}, show:function () {
|
|
if (this.anchor) {
|
|
this.showAt([-1000, -1000]);
|
|
this.origConstrainPosition = this.constrainPosition;
|
|
this.constrainPosition = false;
|
|
this.anchor = this.origAnchor
|
|
}
|
|
this.showAt(this.getTargetXY());
|
|
if (this.anchor) {
|
|
this.anchorEl.show();
|
|
this.syncAnchor();
|
|
this.constrainPosition = this.origConstrainPosition
|
|
} else {
|
|
this.anchorEl.hide()
|
|
}
|
|
}, showAt:function (a) {
|
|
this.lastActive = new Date();
|
|
this.clearTimers();
|
|
Ext.ToolTip.superclass.showAt.call(this, a);
|
|
if (this.dismissDelay && this.autoHide !== false) {
|
|
this.dismissTimer = this.hide.defer(this.dismissDelay, this)
|
|
}
|
|
if (this.anchor && !this.anchorEl.isVisible()) {
|
|
this.syncAnchor();
|
|
this.anchorEl.show()
|
|
} else {
|
|
this.anchorEl.hide()
|
|
}
|
|
}, syncAnchor:function () {
|
|
var a, b, c;
|
|
switch (this.tipAnchor.charAt(0)) {
|
|
case"t":
|
|
a = "b";
|
|
b = "tl";
|
|
c = [20 + this.anchorOffset, 2];
|
|
break;
|
|
case"r":
|
|
a = "l";
|
|
b = "tr";
|
|
c = [-2, 11 + this.anchorOffset];
|
|
break;
|
|
case"b":
|
|
a = "t";
|
|
b = "bl";
|
|
c = [20 + this.anchorOffset, -2];
|
|
break;
|
|
default:
|
|
a = "r";
|
|
b = "tl";
|
|
c = [2, 11 + this.anchorOffset];
|
|
break
|
|
}
|
|
this.anchorEl.alignTo(this.el, a + "-" + b, c)
|
|
}, setPagePosition:function (a, b) {
|
|
Ext.ToolTip.superclass.setPagePosition.call(this, a, b);
|
|
if (this.anchor) {
|
|
this.syncAnchor()
|
|
}
|
|
}, clearTimer:function (a) {
|
|
a = a + "Timer";
|
|
clearTimeout(this[a]);
|
|
delete this[a]
|
|
}, clearTimers:function () {
|
|
this.clearTimer("show");
|
|
this.clearTimer("dismiss");
|
|
this.clearTimer("hide")
|
|
}, onShow:function () {
|
|
Ext.ToolTip.superclass.onShow.call(this);
|
|
Ext.getDoc().on("mousedown", this.onDocMouseDown, this)
|
|
}, onHide:function () {
|
|
Ext.ToolTip.superclass.onHide.call(this);
|
|
Ext.getDoc().un("mousedown", this.onDocMouseDown, this)
|
|
}, onDocMouseDown:function (a) {
|
|
if (this.autoHide !== true && !this.closable && !a.within(this.el.dom)) {
|
|
this.disable();
|
|
this.doEnable.defer(100, this)
|
|
}
|
|
}, doEnable:function () {
|
|
if (!this.isDestroyed) {
|
|
this.enable()
|
|
}
|
|
}, onDisable:function () {
|
|
this.clearTimers();
|
|
this.hide()
|
|
}, adjustPosition:function (a, d) {
|
|
if (this.constrainPosition) {
|
|
var c = this.targetXY[1], b = this.getSize().height;
|
|
if (d <= c && (d + b) >= c) {
|
|
d = c - b - 5
|
|
}
|
|
}
|
|
return{x:a, y:d}
|
|
}, beforeDestroy:function () {
|
|
this.clearTimers();
|
|
Ext.destroy(this.anchorEl);
|
|
delete this.anchorEl;
|
|
delete this.target;
|
|
delete this.anchorTarget;
|
|
delete this.triggerElement;
|
|
Ext.ToolTip.superclass.beforeDestroy.call(this)
|
|
}, onDestroy:function () {
|
|
Ext.getDoc().un("mousedown", this.onDocMouseDown, this);
|
|
Ext.ToolTip.superclass.onDestroy.call(this)
|
|
}});
|
|
Ext.reg("tooltip", Ext.ToolTip);
|
|
Ext.QuickTip = Ext.extend(Ext.ToolTip, {interceptTitles:false, tagConfig:{namespace:"ext", attribute:"qtip", width:"qwidth", target:"target", title:"qtitle", hide:"hide", cls:"qclass", align:"qalign", anchor:"anchor"}, initComponent:function () {
|
|
this.target = this.target || Ext.getDoc();
|
|
this.targets = this.targets || {};
|
|
Ext.QuickTip.superclass.initComponent.call(this)
|
|
}, register:function (e) {
|
|
var h = Ext.isArray(e) ? e : arguments;
|
|
for (var g = 0, a = h.length; g < a; g++) {
|
|
var l = h[g];
|
|
var k = l.target;
|
|
if (k) {
|
|
if (Ext.isArray(k)) {
|
|
for (var d = 0, b = k.length; d < b; d++) {
|
|
this.targets[Ext.id(k[d])] = l
|
|
}
|
|
} else {
|
|
this.targets[Ext.id(k)] = l
|
|
}
|
|
}
|
|
}
|
|
}, unregister:function (a) {
|
|
delete this.targets[Ext.id(a)]
|
|
}, cancelShow:function (b) {
|
|
var a = this.activeTarget;
|
|
b = Ext.get(b).dom;
|
|
if (this.isVisible()) {
|
|
if (a && a.el == b) {
|
|
this.hide()
|
|
}
|
|
} else {
|
|
if (a && a.el == b) {
|
|
this.clearTimer("show")
|
|
}
|
|
}
|
|
}, getTipCfg:function (d) {
|
|
var b = d.getTarget(), c, a;
|
|
if (this.interceptTitles && b.title && Ext.isString(b.title)) {
|
|
c = b.title;
|
|
b.qtip = c;
|
|
b.removeAttribute("title");
|
|
d.preventDefault()
|
|
} else {
|
|
a = this.tagConfig;
|
|
c = b.qtip || Ext.fly(b).getAttribute(a.attribute, a.namespace)
|
|
}
|
|
return c
|
|
}, onTargetOver:function (i) {
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
this.targetXY = i.getXY();
|
|
var c = i.getTarget();
|
|
if (!c || c.nodeType !== 1 || c == document || c == document.body) {
|
|
return
|
|
}
|
|
if (this.activeTarget && ((c == this.activeTarget.el) || Ext.fly(this.activeTarget.el).contains(c))) {
|
|
this.clearTimer("hide");
|
|
this.show();
|
|
return
|
|
}
|
|
if (c && this.targets[c.id]) {
|
|
this.activeTarget = this.targets[c.id];
|
|
this.activeTarget.el = c;
|
|
this.anchor = this.activeTarget.anchor;
|
|
if (this.anchor) {
|
|
this.anchorTarget = c
|
|
}
|
|
this.delayShow();
|
|
return
|
|
}
|
|
var g, h = Ext.fly(c), b = this.tagConfig, d = b.namespace;
|
|
if (g = this.getTipCfg(i)) {
|
|
var a = h.getAttribute(b.hide, d);
|
|
this.activeTarget = {el:c, text:g, width:h.getAttribute(b.width, d), autoHide:a != "user" && a !== "false", title:h.getAttribute(b.title, d), cls:h.getAttribute(b.cls, d), align:h.getAttribute(b.align, d)};
|
|
this.anchor = h.getAttribute(b.anchor, d);
|
|
if (this.anchor) {
|
|
this.anchorTarget = c
|
|
}
|
|
this.delayShow()
|
|
}
|
|
}, onTargetOut:function (a) {
|
|
if (this.activeTarget && a.within(this.activeTarget.el) && !this.getTipCfg(a)) {
|
|
return
|
|
}
|
|
this.clearTimer("show");
|
|
if (this.autoHide !== false) {
|
|
this.delayHide()
|
|
}
|
|
}, showAt:function (b) {
|
|
var a = this.activeTarget;
|
|
if (a) {
|
|
if (!this.rendered) {
|
|
this.render(Ext.getBody());
|
|
this.activeTarget = a
|
|
}
|
|
if (a.width) {
|
|
this.setWidth(a.width);
|
|
this.body.setWidth(this.adjustBodyWidth(a.width - this.getFrameWidth()));
|
|
this.measureWidth = false
|
|
} else {
|
|
this.measureWidth = true
|
|
}
|
|
this.setTitle(a.title || "");
|
|
this.body.update(a.text);
|
|
this.autoHide = a.autoHide;
|
|
this.dismissDelay = a.dismissDelay || this.dismissDelay;
|
|
if (this.lastCls) {
|
|
this.el.removeClass(this.lastCls);
|
|
delete this.lastCls
|
|
}
|
|
if (a.cls) {
|
|
this.el.addClass(a.cls);
|
|
this.lastCls = a.cls
|
|
}
|
|
if (this.anchor) {
|
|
this.constrainPosition = false
|
|
} else {
|
|
if (a.align) {
|
|
b = this.el.getAlignToXY(a.el, a.align);
|
|
this.constrainPosition = false
|
|
} else {
|
|
this.constrainPosition = true
|
|
}
|
|
}
|
|
}
|
|
Ext.QuickTip.superclass.showAt.call(this, b)
|
|
}, hide:function () {
|
|
delete this.activeTarget;
|
|
Ext.QuickTip.superclass.hide.call(this)
|
|
}});
|
|
Ext.reg("quicktip", Ext.QuickTip);
|
|
Ext.QuickTips = function () {
|
|
var b, a = false;
|
|
return{init:function (c) {
|
|
if (!b) {
|
|
if (!Ext.isReady) {
|
|
Ext.onReady(function () {
|
|
Ext.QuickTips.init(c)
|
|
});
|
|
return
|
|
}
|
|
b = new Ext.QuickTip({elements:"header,body", disabled:a});
|
|
if (c !== false) {
|
|
b.render(Ext.getBody())
|
|
}
|
|
}
|
|
}, ddDisable:function () {
|
|
if (b && !a) {
|
|
b.disable()
|
|
}
|
|
}, ddEnable:function () {
|
|
if (b && !a) {
|
|
b.enable()
|
|
}
|
|
}, enable:function () {
|
|
if (b) {
|
|
b.enable()
|
|
}
|
|
a = false
|
|
}, disable:function () {
|
|
if (b) {
|
|
b.disable()
|
|
}
|
|
a = true
|
|
}, isEnabled:function () {
|
|
return b !== undefined && !b.disabled
|
|
}, getQuickTip:function () {
|
|
return b
|
|
}, register:function () {
|
|
b.register.apply(b, arguments)
|
|
}, unregister:function () {
|
|
b.unregister.apply(b, arguments)
|
|
}, tips:function () {
|
|
b.register.apply(b, arguments)
|
|
}}
|
|
}();
|
|
Ext.slider.Tip = Ext.extend(Ext.Tip, {minWidth:10, offsets:[0, -10], init:function (a) {
|
|
a.on({scope:this, dragstart:this.onSlide, drag:this.onSlide, dragend:this.hide, destroy:this.destroy})
|
|
}, onSlide:function (b, c, a) {
|
|
this.show();
|
|
this.body.update(this.getText(a));
|
|
this.doAutoWidth();
|
|
this.el.alignTo(a.el, "b-t?", this.offsets)
|
|
}, getText:function (a) {
|
|
return String(a.value)
|
|
}});
|
|
Ext.ux.SliderTip = Ext.slider.Tip;
|
|
Ext.tree.TreePanel = Ext.extend(Ext.Panel, {rootVisible:true, animate:Ext.enableFx, lines:true, enableDD:false, hlDrop:Ext.enableFx, pathSeparator:"/", bubbleEvents:[], initComponent:function () {
|
|
Ext.tree.TreePanel.superclass.initComponent.call(this);
|
|
if (!this.eventModel) {
|
|
this.eventModel = new Ext.tree.TreeEventModel(this)
|
|
}
|
|
var a = this.loader;
|
|
if (!a) {
|
|
a = new Ext.tree.TreeLoader({dataUrl:this.dataUrl, requestMethod:this.requestMethod})
|
|
} else {
|
|
if (Ext.isObject(a) && !a.load) {
|
|
a = new Ext.tree.TreeLoader(a)
|
|
}
|
|
}
|
|
this.loader = a;
|
|
this.nodeHash = {};
|
|
if (this.root) {
|
|
var b = this.root;
|
|
delete this.root;
|
|
this.setRootNode(b)
|
|
}
|
|
this.addEvents("append", "remove", "movenode", "insert", "beforeappend", "beforeremove", "beforemovenode", "beforeinsert", "beforeload", "load", "textchange", "beforeexpandnode", "beforecollapsenode", "expandnode", "disabledchange", "collapsenode", "beforeclick", "click", "containerclick", "checkchange", "beforedblclick", "dblclick", "containerdblclick", "contextmenu", "containercontextmenu", "beforechildrenrendered", "startdrag", "enddrag", "dragdrop", "beforenodedrop", "nodedrop", "nodedragover");
|
|
if (this.singleExpand) {
|
|
this.on("beforeexpandnode", this.restrictExpand, this)
|
|
}
|
|
}, proxyNodeEvent:function (c, b, a, h, g, e, d) {
|
|
if (c == "collapse" || c == "expand" || c == "beforecollapse" || c == "beforeexpand" || c == "move" || c == "beforemove") {
|
|
c = c + "node"
|
|
}
|
|
return this.fireEvent(c, b, a, h, g, e, d)
|
|
}, getRootNode:function () {
|
|
return this.root
|
|
}, setRootNode:function (b) {
|
|
this.destroyRoot();
|
|
if (!b.render) {
|
|
b = this.loader.createNode(b)
|
|
}
|
|
this.root = b;
|
|
b.ownerTree = this;
|
|
b.isRoot = true;
|
|
this.registerNode(b);
|
|
if (!this.rootVisible) {
|
|
var a = b.attributes.uiProvider;
|
|
b.ui = a ? new a(b) : new Ext.tree.RootTreeNodeUI(b)
|
|
}
|
|
if (this.innerCt) {
|
|
this.clearInnerCt();
|
|
this.renderRoot()
|
|
}
|
|
return b
|
|
}, clearInnerCt:function () {
|
|
this.innerCt.update("")
|
|
}, renderRoot:function () {
|
|
this.root.render();
|
|
if (!this.rootVisible) {
|
|
this.root.renderChildren()
|
|
}
|
|
}, getNodeById:function (a) {
|
|
return this.nodeHash[a]
|
|
}, registerNode:function (a) {
|
|
this.nodeHash[a.id] = a
|
|
}, unregisterNode:function (a) {
|
|
delete this.nodeHash[a.id]
|
|
}, toString:function () {
|
|
return"[Tree" + (this.id ? " " + this.id : "") + "]"
|
|
}, restrictExpand:function (a) {
|
|
var b = a.parentNode;
|
|
if (b) {
|
|
if (b.expandedChild && b.expandedChild.parentNode == b) {
|
|
b.expandedChild.collapse()
|
|
}
|
|
b.expandedChild = a
|
|
}
|
|
}, getChecked:function (b, c) {
|
|
c = c || this.root;
|
|
var d = [];
|
|
var e = function () {
|
|
if (this.attributes.checked) {
|
|
d.push(!b ? this : (b == "id" ? this.id : this.attributes[b]))
|
|
}
|
|
};
|
|
c.cascade(e);
|
|
return d
|
|
}, getLoader:function () {
|
|
return this.loader
|
|
}, expandAll:function () {
|
|
this.root.expand(true)
|
|
}, collapseAll:function () {
|
|
this.root.collapse(true)
|
|
}, getSelectionModel:function () {
|
|
if (!this.selModel) {
|
|
this.selModel = new Ext.tree.DefaultSelectionModel()
|
|
}
|
|
return this.selModel
|
|
}, expandPath:function (g, a, h) {
|
|
if (Ext.isEmpty(g)) {
|
|
if (h) {
|
|
h(false, undefined)
|
|
}
|
|
return
|
|
}
|
|
a = a || "id";
|
|
var d = g.split(this.pathSeparator);
|
|
var c = this.root;
|
|
if (c.attributes[a] != d[1]) {
|
|
if (h) {
|
|
h(false, null)
|
|
}
|
|
return
|
|
}
|
|
var b = 1;
|
|
var e = function () {
|
|
if (++b == d.length) {
|
|
if (h) {
|
|
h(true, c)
|
|
}
|
|
return
|
|
}
|
|
var i = c.findChild(a, d[b]);
|
|
if (!i) {
|
|
if (h) {
|
|
h(false, c)
|
|
}
|
|
return
|
|
}
|
|
c = i;
|
|
i.expand(false, false, e)
|
|
};
|
|
c.expand(false, false, e)
|
|
}, selectPath:function (e, a, g) {
|
|
if (Ext.isEmpty(e)) {
|
|
if (g) {
|
|
g(false, undefined)
|
|
}
|
|
return
|
|
}
|
|
a = a || "id";
|
|
var c = e.split(this.pathSeparator), b = c.pop();
|
|
if (c.length > 1) {
|
|
var d = function (i, h) {
|
|
if (i && h) {
|
|
var j = h.findChild(a, b);
|
|
if (j) {
|
|
j.select();
|
|
if (g) {
|
|
g(true, j)
|
|
}
|
|
} else {
|
|
if (g) {
|
|
g(false, j)
|
|
}
|
|
}
|
|
} else {
|
|
if (g) {
|
|
g(false, j)
|
|
}
|
|
}
|
|
};
|
|
this.expandPath(c.join(this.pathSeparator), a, d)
|
|
} else {
|
|
this.root.select();
|
|
if (g) {
|
|
g(true, this.root)
|
|
}
|
|
}
|
|
}, getTreeEl:function () {
|
|
return this.body
|
|
}, onRender:function (b, a) {
|
|
Ext.tree.TreePanel.superclass.onRender.call(this, b, a);
|
|
this.el.addClass("x-tree");
|
|
this.innerCt = this.body.createChild({tag:"ul", cls:"x-tree-root-ct " + (this.useArrows ? "x-tree-arrows" : this.lines ? "x-tree-lines" : "x-tree-no-lines")})
|
|
}, initEvents:function () {
|
|
Ext.tree.TreePanel.superclass.initEvents.call(this);
|
|
if (this.containerScroll) {
|
|
Ext.dd.ScrollManager.register(this.body)
|
|
}
|
|
if ((this.enableDD || this.enableDrop) && !this.dropZone) {
|
|
this.dropZone = new Ext.tree.TreeDropZone(this, this.dropConfig || {ddGroup:this.ddGroup || "TreeDD", appendOnly:this.ddAppendOnly === true})
|
|
}
|
|
if ((this.enableDD || this.enableDrag) && !this.dragZone) {
|
|
this.dragZone = new Ext.tree.TreeDragZone(this, this.dragConfig || {ddGroup:this.ddGroup || "TreeDD", scroll:this.ddScroll})
|
|
}
|
|
this.getSelectionModel().init(this)
|
|
}, afterRender:function () {
|
|
Ext.tree.TreePanel.superclass.afterRender.call(this);
|
|
this.renderRoot()
|
|
}, beforeDestroy:function () {
|
|
if (this.rendered) {
|
|
Ext.dd.ScrollManager.unregister(this.body);
|
|
Ext.destroy(this.dropZone, this.dragZone)
|
|
}
|
|
this.destroyRoot();
|
|
Ext.destroy(this.loader);
|
|
this.nodeHash = this.root = this.loader = null;
|
|
Ext.tree.TreePanel.superclass.beforeDestroy.call(this)
|
|
}, destroyRoot:function () {
|
|
if (this.root && this.root.destroy) {
|
|
this.root.destroy(true)
|
|
}
|
|
}});
|
|
Ext.tree.TreePanel.nodeTypes = {};
|
|
Ext.reg("treepanel", Ext.tree.TreePanel);
|
|
Ext.tree.TreeEventModel = function (a) {
|
|
this.tree = a;
|
|
this.tree.on("render", this.initEvents, this)
|
|
};
|
|
Ext.tree.TreeEventModel.prototype = {initEvents:function () {
|
|
var a = this.tree;
|
|
if (a.trackMouseOver !== false) {
|
|
a.mon(a.innerCt, {scope:this, mouseover:this.delegateOver, mouseout:this.delegateOut})
|
|
}
|
|
a.mon(a.getTreeEl(), {scope:this, click:this.delegateClick, dblclick:this.delegateDblClick, contextmenu:this.delegateContextMenu})
|
|
}, getNode:function (b) {
|
|
var a;
|
|
if (a = b.getTarget(".x-tree-node-el", 10)) {
|
|
var c = Ext.fly(a, "_treeEvents").getAttribute("tree-node-id", "ext");
|
|
if (c) {
|
|
return this.tree.getNodeById(c)
|
|
}
|
|
}
|
|
return null
|
|
}, getNodeTarget:function (b) {
|
|
var a = b.getTarget(".x-tree-node-icon", 1);
|
|
if (!a) {
|
|
a = b.getTarget(".x-tree-node-el", 6)
|
|
}
|
|
return a
|
|
}, delegateOut:function (b, a) {
|
|
if (!this.beforeEvent(b)) {
|
|
return
|
|
}
|
|
if (b.getTarget(".x-tree-ec-icon", 1)) {
|
|
var c = this.getNode(b);
|
|
this.onIconOut(b, c);
|
|
if (c == this.lastEcOver) {
|
|
delete this.lastEcOver
|
|
}
|
|
}
|
|
if ((a = this.getNodeTarget(b)) && !b.within(a, true)) {
|
|
this.onNodeOut(b, this.getNode(b))
|
|
}
|
|
}, delegateOver:function (b, a) {
|
|
if (!this.beforeEvent(b)) {
|
|
return
|
|
}
|
|
if (Ext.isGecko && !this.trackingDoc) {
|
|
Ext.getBody().on("mouseover", this.trackExit, this);
|
|
this.trackingDoc = true
|
|
}
|
|
if (this.lastEcOver) {
|
|
this.onIconOut(b, this.lastEcOver);
|
|
delete this.lastEcOver
|
|
}
|
|
if (b.getTarget(".x-tree-ec-icon", 1)) {
|
|
this.lastEcOver = this.getNode(b);
|
|
this.onIconOver(b, this.lastEcOver)
|
|
}
|
|
if (a = this.getNodeTarget(b)) {
|
|
this.onNodeOver(b, this.getNode(b))
|
|
}
|
|
}, trackExit:function (a) {
|
|
if (this.lastOverNode) {
|
|
if (this.lastOverNode.ui && !a.within(this.lastOverNode.ui.getEl())) {
|
|
this.onNodeOut(a, this.lastOverNode)
|
|
}
|
|
delete this.lastOverNode;
|
|
Ext.getBody().un("mouseover", this.trackExit, this);
|
|
this.trackingDoc = false
|
|
}
|
|
}, delegateClick:function (b, a) {
|
|
if (this.beforeEvent(b)) {
|
|
if (b.getTarget("input[type=checkbox]", 1)) {
|
|
this.onCheckboxClick(b, this.getNode(b))
|
|
} else {
|
|
if (b.getTarget(".x-tree-ec-icon", 1)) {
|
|
this.onIconClick(b, this.getNode(b))
|
|
} else {
|
|
if (this.getNodeTarget(b)) {
|
|
this.onNodeClick(b, this.getNode(b))
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
this.checkContainerEvent(b, "click")
|
|
}
|
|
}, delegateDblClick:function (b, a) {
|
|
if (this.beforeEvent(b)) {
|
|
if (this.getNodeTarget(b)) {
|
|
this.onNodeDblClick(b, this.getNode(b))
|
|
}
|
|
} else {
|
|
this.checkContainerEvent(b, "dblclick")
|
|
}
|
|
}, delegateContextMenu:function (b, a) {
|
|
if (this.beforeEvent(b)) {
|
|
if (this.getNodeTarget(b)) {
|
|
this.onNodeContextMenu(b, this.getNode(b))
|
|
}
|
|
} else {
|
|
this.checkContainerEvent(b, "contextmenu")
|
|
}
|
|
}, checkContainerEvent:function (b, a) {
|
|
if (this.disabled) {
|
|
b.stopEvent();
|
|
return false
|
|
}
|
|
this.onContainerEvent(b, a)
|
|
}, onContainerEvent:function (b, a) {
|
|
this.tree.fireEvent("container" + a, this.tree, b)
|
|
}, onNodeClick:function (b, a) {
|
|
a.ui.onClick(b)
|
|
}, onNodeOver:function (b, a) {
|
|
this.lastOverNode = a;
|
|
a.ui.onOver(b)
|
|
}, onNodeOut:function (b, a) {
|
|
a.ui.onOut(b)
|
|
}, onIconOver:function (b, a) {
|
|
a.ui.addClass("x-tree-ec-over")
|
|
}, onIconOut:function (b, a) {
|
|
a.ui.removeClass("x-tree-ec-over")
|
|
}, onIconClick:function (b, a) {
|
|
a.ui.ecClick(b)
|
|
}, onCheckboxClick:function (b, a) {
|
|
a.ui.onCheckChange(b)
|
|
}, onNodeDblClick:function (b, a) {
|
|
a.ui.onDblClick(b)
|
|
}, onNodeContextMenu:function (b, a) {
|
|
a.ui.onContextMenu(b)
|
|
}, beforeEvent:function (b) {
|
|
var a = this.getNode(b);
|
|
if (this.disabled || !a || !a.ui) {
|
|
b.stopEvent();
|
|
return false
|
|
}
|
|
return true
|
|
}, disable:function () {
|
|
this.disabled = true
|
|
}, enable:function () {
|
|
this.disabled = false
|
|
}};
|
|
Ext.tree.DefaultSelectionModel = Ext.extend(Ext.util.Observable, {constructor:function (a) {
|
|
this.selNode = null;
|
|
this.addEvents("selectionchange", "beforeselect");
|
|
Ext.apply(this, a);
|
|
Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)
|
|
}, init:function (a) {
|
|
this.tree = a;
|
|
a.mon(a.getTreeEl(), "keydown", this.onKeyDown, this);
|
|
a.on("click", this.onNodeClick, this)
|
|
}, onNodeClick:function (a, b) {
|
|
this.select(a)
|
|
}, select:function (c, a) {
|
|
if (!Ext.fly(c.ui.wrap).isVisible() && a) {
|
|
return a.call(this, c)
|
|
}
|
|
var b = this.selNode;
|
|
if (c == b) {
|
|
c.ui.onSelectedChange(true)
|
|
} else {
|
|
if (this.fireEvent("beforeselect", this, c, b) !== false) {
|
|
if (b && b.ui) {
|
|
b.ui.onSelectedChange(false)
|
|
}
|
|
this.selNode = c;
|
|
c.ui.onSelectedChange(true);
|
|
this.fireEvent("selectionchange", this, c, b)
|
|
}
|
|
}
|
|
return c
|
|
}, unselect:function (b, a) {
|
|
if (this.selNode == b) {
|
|
this.clearSelections(a)
|
|
}
|
|
}, clearSelections:function (a) {
|
|
var b = this.selNode;
|
|
if (b) {
|
|
b.ui.onSelectedChange(false);
|
|
this.selNode = null;
|
|
if (a !== true) {
|
|
this.fireEvent("selectionchange", this, null)
|
|
}
|
|
}
|
|
return b
|
|
}, getSelectedNode:function () {
|
|
return this.selNode
|
|
}, isSelected:function (a) {
|
|
return this.selNode == a
|
|
}, selectPrevious:function (a) {
|
|
if (!(a = a || this.selNode || this.lastSelNode)) {
|
|
return null
|
|
}
|
|
var c = a.previousSibling;
|
|
if (c) {
|
|
if (!c.isExpanded() || c.childNodes.length < 1) {
|
|
return this.select(c, this.selectPrevious)
|
|
} else {
|
|
var b = c.lastChild;
|
|
while (b && b.isExpanded() && Ext.fly(b.ui.wrap).isVisible() && b.childNodes.length > 0) {
|
|
b = b.lastChild
|
|
}
|
|
return this.select(b, this.selectPrevious)
|
|
}
|
|
} else {
|
|
if (a.parentNode && (this.tree.rootVisible || !a.parentNode.isRoot)) {
|
|
return this.select(a.parentNode, this.selectPrevious)
|
|
}
|
|
}
|
|
return null
|
|
}, selectNext:function (b) {
|
|
if (!(b = b || this.selNode || this.lastSelNode)) {
|
|
return null
|
|
}
|
|
if (b.firstChild && b.isExpanded() && Ext.fly(b.ui.wrap).isVisible()) {
|
|
return this.select(b.firstChild, this.selectNext)
|
|
} else {
|
|
if (b.nextSibling) {
|
|
return this.select(b.nextSibling, this.selectNext)
|
|
} else {
|
|
if (b.parentNode) {
|
|
var a = null;
|
|
b.parentNode.bubble(function () {
|
|
if (this.nextSibling) {
|
|
a = this.getOwnerTree().selModel.select(this.nextSibling, this.selectNext);
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
}, onKeyDown:function (c) {
|
|
var b = this.selNode || this.lastSelNode;
|
|
var d = this;
|
|
if (!b) {
|
|
return
|
|
}
|
|
var a = c.getKey();
|
|
switch (a) {
|
|
case c.DOWN:
|
|
c.stopEvent();
|
|
this.selectNext();
|
|
break;
|
|
case c.UP:
|
|
c.stopEvent();
|
|
this.selectPrevious();
|
|
break;
|
|
case c.RIGHT:
|
|
c.preventDefault();
|
|
if (b.hasChildNodes()) {
|
|
if (!b.isExpanded()) {
|
|
b.expand()
|
|
} else {
|
|
if (b.firstChild) {
|
|
this.select(b.firstChild, c)
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case c.LEFT:
|
|
c.preventDefault();
|
|
if (b.hasChildNodes() && b.isExpanded()) {
|
|
b.collapse()
|
|
} else {
|
|
if (b.parentNode && (this.tree.rootVisible || b.parentNode != this.tree.getRootNode())) {
|
|
this.select(b.parentNode, c)
|
|
}
|
|
}
|
|
break
|
|
}
|
|
}});
|
|
Ext.tree.MultiSelectionModel = Ext.extend(Ext.util.Observable, {constructor:function (a) {
|
|
this.selNodes = [];
|
|
this.selMap = {};
|
|
this.addEvents("selectionchange");
|
|
Ext.apply(this, a);
|
|
Ext.tree.MultiSelectionModel.superclass.constructor.call(this)
|
|
}, init:function (a) {
|
|
this.tree = a;
|
|
a.mon(a.getTreeEl(), "keydown", this.onKeyDown, this);
|
|
a.on("click", this.onNodeClick, this)
|
|
}, onNodeClick:function (a, b) {
|
|
if (b.ctrlKey && this.isSelected(a)) {
|
|
this.unselect(a)
|
|
} else {
|
|
this.select(a, b, b.ctrlKey)
|
|
}
|
|
}, select:function (a, c, b) {
|
|
if (b !== true) {
|
|
this.clearSelections(true)
|
|
}
|
|
if (this.isSelected(a)) {
|
|
this.lastSelNode = a;
|
|
return a
|
|
}
|
|
this.selNodes.push(a);
|
|
this.selMap[a.id] = a;
|
|
this.lastSelNode = a;
|
|
a.ui.onSelectedChange(true);
|
|
this.fireEvent("selectionchange", this, this.selNodes);
|
|
return a
|
|
}, unselect:function (b) {
|
|
if (this.selMap[b.id]) {
|
|
b.ui.onSelectedChange(false);
|
|
var c = this.selNodes;
|
|
var a = c.indexOf(b);
|
|
if (a != -1) {
|
|
this.selNodes.splice(a, 1)
|
|
}
|
|
delete this.selMap[b.id];
|
|
this.fireEvent("selectionchange", this, this.selNodes)
|
|
}
|
|
}, clearSelections:function (b) {
|
|
var d = this.selNodes;
|
|
if (d.length > 0) {
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c].ui.onSelectedChange(false)
|
|
}
|
|
this.selNodes = [];
|
|
this.selMap = {};
|
|
if (b !== true) {
|
|
this.fireEvent("selectionchange", this, this.selNodes)
|
|
}
|
|
}
|
|
}, isSelected:function (a) {
|
|
return this.selMap[a.id] ? true : false
|
|
}, getSelectedNodes:function () {
|
|
return this.selNodes.concat([])
|
|
}, onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown, selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext, selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});
|
|
Ext.data.Tree = Ext.extend(Ext.util.Observable, {constructor:function (a) {
|
|
this.nodeHash = {};
|
|
this.root = null;
|
|
if (a) {
|
|
this.setRootNode(a)
|
|
}
|
|
this.addEvents("append", "remove", "move", "insert", "beforeappend", "beforeremove", "beforemove", "beforeinsert");
|
|
Ext.data.Tree.superclass.constructor.call(this)
|
|
}, pathSeparator:"/", proxyNodeEvent:function () {
|
|
return this.fireEvent.apply(this, arguments)
|
|
}, getRootNode:function () {
|
|
return this.root
|
|
}, setRootNode:function (a) {
|
|
this.root = a;
|
|
a.ownerTree = this;
|
|
a.isRoot = true;
|
|
this.registerNode(a);
|
|
return a
|
|
}, getNodeById:function (a) {
|
|
return this.nodeHash[a]
|
|
}, registerNode:function (a) {
|
|
this.nodeHash[a.id] = a
|
|
}, unregisterNode:function (a) {
|
|
delete this.nodeHash[a.id]
|
|
}, toString:function () {
|
|
return"[Tree" + (this.id ? " " + this.id : "") + "]"
|
|
}});
|
|
Ext.data.Node = Ext.extend(Ext.util.Observable, {constructor:function (a) {
|
|
this.attributes = a || {};
|
|
this.leaf = this.attributes.leaf;
|
|
this.id = this.attributes.id;
|
|
if (!this.id) {
|
|
this.id = Ext.id(null, "xnode-");
|
|
this.attributes.id = this.id
|
|
}
|
|
this.childNodes = [];
|
|
this.parentNode = null;
|
|
this.firstChild = null;
|
|
this.lastChild = null;
|
|
this.previousSibling = null;
|
|
this.nextSibling = null;
|
|
this.addEvents({append:true, remove:true, move:true, insert:true, beforeappend:true, beforeremove:true, beforemove:true, beforeinsert:true});
|
|
this.listeners = this.attributes.listeners;
|
|
Ext.data.Node.superclass.constructor.call(this)
|
|
}, fireEvent:function (b) {
|
|
if (Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false) {
|
|
return false
|
|
}
|
|
var a = this.getOwnerTree();
|
|
if (a) {
|
|
if (a.proxyNodeEvent.apply(a, arguments) === false) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}, isLeaf:function () {
|
|
return this.leaf === true
|
|
}, setFirstChild:function (a) {
|
|
this.firstChild = a
|
|
}, setLastChild:function (a) {
|
|
this.lastChild = a
|
|
}, isLast:function () {
|
|
return(!this.parentNode ? true : this.parentNode.lastChild == this)
|
|
}, isFirst:function () {
|
|
return(!this.parentNode ? true : this.parentNode.firstChild == this)
|
|
}, hasChildNodes:function () {
|
|
return !this.isLeaf() && this.childNodes.length > 0
|
|
}, isExpandable:function () {
|
|
return this.attributes.expandable || this.hasChildNodes()
|
|
}, appendChild:function (e) {
|
|
var g = false;
|
|
if (Ext.isArray(e)) {
|
|
g = e
|
|
} else {
|
|
if (arguments.length > 1) {
|
|
g = arguments
|
|
}
|
|
}
|
|
if (g) {
|
|
for (var d = 0, a = g.length; d < a; d++) {
|
|
this.appendChild(g[d])
|
|
}
|
|
} else {
|
|
if (this.fireEvent("beforeappend", this.ownerTree, this, e) === false) {
|
|
return false
|
|
}
|
|
var b = this.childNodes.length;
|
|
var c = e.parentNode;
|
|
if (c) {
|
|
if (e.fireEvent("beforemove", e.getOwnerTree(), e, c, this, b) === false) {
|
|
return false
|
|
}
|
|
c.removeChild(e)
|
|
}
|
|
b = this.childNodes.length;
|
|
if (b === 0) {
|
|
this.setFirstChild(e)
|
|
}
|
|
this.childNodes.push(e);
|
|
e.parentNode = this;
|
|
var h = this.childNodes[b - 1];
|
|
if (h) {
|
|
e.previousSibling = h;
|
|
h.nextSibling = e
|
|
} else {
|
|
e.previousSibling = null
|
|
}
|
|
e.nextSibling = null;
|
|
this.setLastChild(e);
|
|
e.setOwnerTree(this.getOwnerTree());
|
|
this.fireEvent("append", this.ownerTree, this, e, b);
|
|
if (c) {
|
|
e.fireEvent("move", this.ownerTree, e, c, this, b)
|
|
}
|
|
return e
|
|
}
|
|
}, removeChild:function (c, b) {
|
|
var a = this.childNodes.indexOf(c);
|
|
if (a == -1) {
|
|
return false
|
|
}
|
|
if (this.fireEvent("beforeremove", this.ownerTree, this, c) === false) {
|
|
return false
|
|
}
|
|
this.childNodes.splice(a, 1);
|
|
if (c.previousSibling) {
|
|
c.previousSibling.nextSibling = c.nextSibling
|
|
}
|
|
if (c.nextSibling) {
|
|
c.nextSibling.previousSibling = c.previousSibling
|
|
}
|
|
if (this.firstChild == c) {
|
|
this.setFirstChild(c.nextSibling)
|
|
}
|
|
if (this.lastChild == c) {
|
|
this.setLastChild(c.previousSibling)
|
|
}
|
|
this.fireEvent("remove", this.ownerTree, this, c);
|
|
if (b) {
|
|
c.destroy(true)
|
|
} else {
|
|
c.clear()
|
|
}
|
|
return c
|
|
}, clear:function (a) {
|
|
this.setOwnerTree(null, a);
|
|
this.parentNode = this.previousSibling = this.nextSibling = null;
|
|
if (a) {
|
|
this.firstChild = this.lastChild = null
|
|
}
|
|
}, destroy:function (a) {
|
|
if (a === true) {
|
|
this.purgeListeners();
|
|
this.clear(true);
|
|
Ext.each(this.childNodes, function (b) {
|
|
b.destroy(true)
|
|
});
|
|
this.childNodes = null
|
|
} else {
|
|
this.remove(true)
|
|
}
|
|
}, insertBefore:function (d, a) {
|
|
if (!a) {
|
|
return this.appendChild(d)
|
|
}
|
|
if (d == a) {
|
|
return false
|
|
}
|
|
if (this.fireEvent("beforeinsert", this.ownerTree, this, d, a) === false) {
|
|
return false
|
|
}
|
|
var b = this.childNodes.indexOf(a);
|
|
var c = d.parentNode;
|
|
var e = b;
|
|
if (c == this && this.childNodes.indexOf(d) < b) {
|
|
e--
|
|
}
|
|
if (c) {
|
|
if (d.fireEvent("beforemove", d.getOwnerTree(), d, c, this, b, a) === false) {
|
|
return false
|
|
}
|
|
c.removeChild(d)
|
|
}
|
|
if (e === 0) {
|
|
this.setFirstChild(d)
|
|
}
|
|
this.childNodes.splice(e, 0, d);
|
|
d.parentNode = this;
|
|
var g = this.childNodes[e - 1];
|
|
if (g) {
|
|
d.previousSibling = g;
|
|
g.nextSibling = d
|
|
} else {
|
|
d.previousSibling = null
|
|
}
|
|
d.nextSibling = a;
|
|
a.previousSibling = d;
|
|
d.setOwnerTree(this.getOwnerTree());
|
|
this.fireEvent("insert", this.ownerTree, this, d, a);
|
|
if (c) {
|
|
d.fireEvent("move", this.ownerTree, d, c, this, e, a)
|
|
}
|
|
return d
|
|
}, remove:function (a) {
|
|
if (this.parentNode) {
|
|
this.parentNode.removeChild(this, a)
|
|
}
|
|
return this
|
|
}, removeAll:function (a) {
|
|
var c = this.childNodes, b;
|
|
while ((b = c[0])) {
|
|
this.removeChild(b, a)
|
|
}
|
|
return this
|
|
}, item:function (a) {
|
|
return this.childNodes[a]
|
|
}, replaceChild:function (a, c) {
|
|
var b = c ? c.nextSibling : null;
|
|
this.removeChild(c);
|
|
this.insertBefore(a, b);
|
|
return c
|
|
}, indexOf:function (a) {
|
|
return this.childNodes.indexOf(a)
|
|
}, getOwnerTree:function () {
|
|
if (!this.ownerTree) {
|
|
var a = this;
|
|
while (a) {
|
|
if (a.ownerTree) {
|
|
this.ownerTree = a.ownerTree;
|
|
break
|
|
}
|
|
a = a.parentNode
|
|
}
|
|
}
|
|
return this.ownerTree
|
|
}, getDepth:function () {
|
|
var b = 0;
|
|
var a = this;
|
|
while (a.parentNode) {
|
|
++b;
|
|
a = a.parentNode
|
|
}
|
|
return b
|
|
}, setOwnerTree:function (a, b) {
|
|
if (a != this.ownerTree) {
|
|
if (this.ownerTree) {
|
|
this.ownerTree.unregisterNode(this)
|
|
}
|
|
this.ownerTree = a;
|
|
if (b !== true) {
|
|
Ext.each(this.childNodes, function (c) {
|
|
c.setOwnerTree(a)
|
|
})
|
|
}
|
|
if (a) {
|
|
a.registerNode(this)
|
|
}
|
|
}
|
|
}, setId:function (b) {
|
|
if (b !== this.id) {
|
|
var a = this.ownerTree;
|
|
if (a) {
|
|
a.unregisterNode(this)
|
|
}
|
|
this.id = this.attributes.id = b;
|
|
if (a) {
|
|
a.registerNode(this)
|
|
}
|
|
this.onIdChange(b)
|
|
}
|
|
}, onIdChange:Ext.emptyFn, getPath:function (c) {
|
|
c = c || "id";
|
|
var e = this.parentNode;
|
|
var a = [this.attributes[c]];
|
|
while (e) {
|
|
a.unshift(e.attributes[c]);
|
|
e = e.parentNode
|
|
}
|
|
var d = this.getOwnerTree().pathSeparator;
|
|
return d + a.join(d)
|
|
}, bubble:function (c, b, a) {
|
|
var d = this;
|
|
while (d) {
|
|
if (c.apply(b || d, a || [d]) === false) {
|
|
break
|
|
}
|
|
d = d.parentNode
|
|
}
|
|
}, cascade:function (g, e, b) {
|
|
if (g.apply(e || this, b || [this]) !== false) {
|
|
var d = this.childNodes;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c].cascade(g, e, b)
|
|
}
|
|
}
|
|
}, eachChild:function (g, e, b) {
|
|
var d = this.childNodes;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
if (g.apply(e || d[c], b || [d[c]]) === false) {
|
|
break
|
|
}
|
|
}
|
|
}, findChild:function (b, c, a) {
|
|
return this.findChildBy(function () {
|
|
return this.attributes[b] == c
|
|
}, null, a)
|
|
}, findChildBy:function (h, g, b) {
|
|
var e = this.childNodes, a = e.length, d = 0, j, c;
|
|
for (; d < a; d++) {
|
|
j = e[d];
|
|
if (h.call(g || j, j) === true) {
|
|
return j
|
|
} else {
|
|
if (b) {
|
|
c = j.findChildBy(h, g, b);
|
|
if (c != null) {
|
|
return c
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
}, sort:function (e, d) {
|
|
var c = this.childNodes;
|
|
var a = c.length;
|
|
if (a > 0) {
|
|
var g = d ? function () {
|
|
e.apply(d, arguments)
|
|
} : e;
|
|
c.sort(g);
|
|
for (var b = 0; b < a; b++) {
|
|
var h = c[b];
|
|
h.previousSibling = c[b - 1];
|
|
h.nextSibling = c[b + 1];
|
|
if (b === 0) {
|
|
this.setFirstChild(h)
|
|
}
|
|
if (b == a - 1) {
|
|
this.setLastChild(h)
|
|
}
|
|
}
|
|
}
|
|
}, contains:function (a) {
|
|
return a.isAncestor(this)
|
|
}, isAncestor:function (a) {
|
|
var b = this.parentNode;
|
|
while (b) {
|
|
if (b == a) {
|
|
return true
|
|
}
|
|
b = b.parentNode
|
|
}
|
|
return false
|
|
}, toString:function () {
|
|
return"[Node" + (this.id ? " " + this.id : "") + "]"
|
|
}});
|
|
Ext.tree.TreeNode = Ext.extend(Ext.data.Node, {constructor:function (a) {
|
|
a = a || {};
|
|
if (Ext.isString(a)) {
|
|
a = {text:a}
|
|
}
|
|
this.childrenRendered = false;
|
|
this.rendered = false;
|
|
Ext.tree.TreeNode.superclass.constructor.call(this, a);
|
|
this.expanded = a.expanded === true;
|
|
this.isTarget = a.isTarget !== false;
|
|
this.draggable = a.draggable !== false && a.allowDrag !== false;
|
|
this.allowChildren = a.allowChildren !== false && a.allowDrop !== false;
|
|
this.text = a.text;
|
|
this.disabled = a.disabled === true;
|
|
this.hidden = a.hidden === true;
|
|
this.addEvents("textchange", "beforeexpand", "beforecollapse", "expand", "disabledchange", "collapse", "beforeclick", "click", "checkchange", "beforedblclick", "dblclick", "contextmenu", "beforechildrenrendered");
|
|
var b = this.attributes.uiProvider || this.defaultUI || Ext.tree.TreeNodeUI;
|
|
this.ui = new b(this)
|
|
}, preventHScroll:true, isExpanded:function () {
|
|
return this.expanded
|
|
}, getUI:function () {
|
|
return this.ui
|
|
}, getLoader:function () {
|
|
var a;
|
|
return this.loader || ((a = this.getOwnerTree()) && a.loader ? a.loader : (this.loader = new Ext.tree.TreeLoader()))
|
|
}, setFirstChild:function (a) {
|
|
var b = this.firstChild;
|
|
Ext.tree.TreeNode.superclass.setFirstChild.call(this, a);
|
|
if (this.childrenRendered && b && a != b) {
|
|
b.renderIndent(true, true)
|
|
}
|
|
if (this.rendered) {
|
|
this.renderIndent(true, true)
|
|
}
|
|
}, setLastChild:function (b) {
|
|
var a = this.lastChild;
|
|
Ext.tree.TreeNode.superclass.setLastChild.call(this, b);
|
|
if (this.childrenRendered && a && b != a) {
|
|
a.renderIndent(true, true)
|
|
}
|
|
if (this.rendered) {
|
|
this.renderIndent(true, true)
|
|
}
|
|
}, appendChild:function (b) {
|
|
if (!b.render && !Ext.isArray(b)) {
|
|
b = this.getLoader().createNode(b)
|
|
}
|
|
var a = Ext.tree.TreeNode.superclass.appendChild.call(this, b);
|
|
if (a && this.childrenRendered) {
|
|
a.render()
|
|
}
|
|
this.ui.updateExpandIcon();
|
|
return a
|
|
}, removeChild:function (b, a) {
|
|
this.ownerTree.getSelectionModel().unselect(b);
|
|
Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments);
|
|
if (!a) {
|
|
var c = b.ui.rendered;
|
|
if (c) {
|
|
b.ui.remove()
|
|
}
|
|
if (c && this.childNodes.length < 1) {
|
|
this.collapse(false, false)
|
|
} else {
|
|
this.ui.updateExpandIcon()
|
|
}
|
|
if (!this.firstChild && !this.isHiddenRoot()) {
|
|
this.childrenRendered = false
|
|
}
|
|
}
|
|
return b
|
|
}, insertBefore:function (c, a) {
|
|
if (!c.render) {
|
|
c = this.getLoader().createNode(c)
|
|
}
|
|
var b = Ext.tree.TreeNode.superclass.insertBefore.call(this, c, a);
|
|
if (b && a && this.childrenRendered) {
|
|
c.render()
|
|
}
|
|
this.ui.updateExpandIcon();
|
|
return b
|
|
}, setText:function (b) {
|
|
var a = this.text;
|
|
this.text = this.attributes.text = b;
|
|
if (this.rendered) {
|
|
this.ui.onTextChange(this, b, a)
|
|
}
|
|
this.fireEvent("textchange", this, b, a)
|
|
}, setIconCls:function (b) {
|
|
var a = this.attributes.iconCls;
|
|
this.attributes.iconCls = b;
|
|
if (this.rendered) {
|
|
this.ui.onIconClsChange(this, b, a)
|
|
}
|
|
}, setTooltip:function (a, b) {
|
|
this.attributes.qtip = a;
|
|
this.attributes.qtipTitle = b;
|
|
if (this.rendered) {
|
|
this.ui.onTipChange(this, a, b)
|
|
}
|
|
}, setIcon:function (a) {
|
|
this.attributes.icon = a;
|
|
if (this.rendered) {
|
|
this.ui.onIconChange(this, a)
|
|
}
|
|
}, setHref:function (a, b) {
|
|
this.attributes.href = a;
|
|
this.attributes.hrefTarget = b;
|
|
if (this.rendered) {
|
|
this.ui.onHrefChange(this, a, b)
|
|
}
|
|
}, setCls:function (b) {
|
|
var a = this.attributes.cls;
|
|
this.attributes.cls = b;
|
|
if (this.rendered) {
|
|
this.ui.onClsChange(this, b, a)
|
|
}
|
|
}, select:function () {
|
|
var a = this.getOwnerTree();
|
|
if (a) {
|
|
a.getSelectionModel().select(this)
|
|
}
|
|
}, unselect:function (a) {
|
|
var b = this.getOwnerTree();
|
|
if (b) {
|
|
b.getSelectionModel().unselect(this, a)
|
|
}
|
|
}, isSelected:function () {
|
|
var a = this.getOwnerTree();
|
|
return a ? a.getSelectionModel().isSelected(this) : false
|
|
}, expand:function (a, c, d, b) {
|
|
if (!this.expanded) {
|
|
if (this.fireEvent("beforeexpand", this, a, c) === false) {
|
|
return
|
|
}
|
|
if (!this.childrenRendered) {
|
|
this.renderChildren()
|
|
}
|
|
this.expanded = true;
|
|
if (!this.isHiddenRoot() && (this.getOwnerTree().animate && c !== false) || c) {
|
|
this.ui.animExpand(function () {
|
|
this.fireEvent("expand", this);
|
|
this.runCallback(d, b || this, [this]);
|
|
if (a === true) {
|
|
this.expandChildNodes(true, true)
|
|
}
|
|
}.createDelegate(this));
|
|
return
|
|
} else {
|
|
this.ui.expand();
|
|
this.fireEvent("expand", this);
|
|
this.runCallback(d, b || this, [this])
|
|
}
|
|
} else {
|
|
this.runCallback(d, b || this, [this])
|
|
}
|
|
if (a === true) {
|
|
this.expandChildNodes(true)
|
|
}
|
|
}, runCallback:function (a, c, b) {
|
|
if (Ext.isFunction(a)) {
|
|
a.apply(c, b)
|
|
}
|
|
}, isHiddenRoot:function () {
|
|
return this.isRoot && !this.getOwnerTree().rootVisible
|
|
}, collapse:function (b, g, h, e) {
|
|
if (this.expanded && !this.isHiddenRoot()) {
|
|
if (this.fireEvent("beforecollapse", this, b, g) === false) {
|
|
return
|
|
}
|
|
this.expanded = false;
|
|
if ((this.getOwnerTree().animate && g !== false) || g) {
|
|
this.ui.animCollapse(function () {
|
|
this.fireEvent("collapse", this);
|
|
this.runCallback(h, e || this, [this]);
|
|
if (b === true) {
|
|
this.collapseChildNodes(true)
|
|
}
|
|
}.createDelegate(this));
|
|
return
|
|
} else {
|
|
this.ui.collapse();
|
|
this.fireEvent("collapse", this);
|
|
this.runCallback(h, e || this, [this])
|
|
}
|
|
} else {
|
|
if (!this.expanded) {
|
|
this.runCallback(h, e || this, [this])
|
|
}
|
|
}
|
|
if (b === true) {
|
|
var d = this.childNodes;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c].collapse(true, false)
|
|
}
|
|
}
|
|
}, delayedExpand:function (a) {
|
|
if (!this.expandProcId) {
|
|
this.expandProcId = this.expand.defer(a, this)
|
|
}
|
|
}, cancelExpand:function () {
|
|
if (this.expandProcId) {
|
|
clearTimeout(this.expandProcId)
|
|
}
|
|
this.expandProcId = false
|
|
}, toggle:function () {
|
|
if (this.expanded) {
|
|
this.collapse()
|
|
} else {
|
|
this.expand()
|
|
}
|
|
}, ensureVisible:function (c, b) {
|
|
var a = this.getOwnerTree();
|
|
a.expandPath(this.parentNode ? this.parentNode.getPath() : this.getPath(), false, function () {
|
|
var d = a.getNodeById(this.id);
|
|
a.getTreeEl().scrollChildIntoView(d.ui.anchor);
|
|
this.runCallback(c, b || this, [this])
|
|
}.createDelegate(this))
|
|
}, expandChildNodes:function (b, e) {
|
|
var d = this.childNodes, c, a = d.length;
|
|
for (c = 0; c < a; c++) {
|
|
d[c].expand(b, e)
|
|
}
|
|
}, collapseChildNodes:function (b) {
|
|
var d = this.childNodes;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c].collapse(b)
|
|
}
|
|
}, disable:function () {
|
|
this.disabled = true;
|
|
this.unselect();
|
|
if (this.rendered && this.ui.onDisableChange) {
|
|
this.ui.onDisableChange(this, true)
|
|
}
|
|
this.fireEvent("disabledchange", this, true)
|
|
}, enable:function () {
|
|
this.disabled = false;
|
|
if (this.rendered && this.ui.onDisableChange) {
|
|
this.ui.onDisableChange(this, false)
|
|
}
|
|
this.fireEvent("disabledchange", this, false)
|
|
}, renderChildren:function (b) {
|
|
if (b !== false) {
|
|
this.fireEvent("beforechildrenrendered", this)
|
|
}
|
|
var d = this.childNodes;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c].render(true)
|
|
}
|
|
this.childrenRendered = true
|
|
}, sort:function (e, d) {
|
|
Ext.tree.TreeNode.superclass.sort.apply(this, arguments);
|
|
if (this.childrenRendered) {
|
|
var c = this.childNodes;
|
|
for (var b = 0, a = c.length; b < a; b++) {
|
|
c[b].render(true)
|
|
}
|
|
}
|
|
}, render:function (a) {
|
|
this.ui.render(a);
|
|
if (!this.rendered) {
|
|
this.getOwnerTree().registerNode(this);
|
|
this.rendered = true;
|
|
if (this.expanded) {
|
|
this.expanded = false;
|
|
this.expand(false, false)
|
|
}
|
|
}
|
|
}, renderIndent:function (b, e) {
|
|
if (e) {
|
|
this.ui.childIndent = null
|
|
}
|
|
this.ui.renderIndent();
|
|
if (b === true && this.childrenRendered) {
|
|
var d = this.childNodes;
|
|
for (var c = 0, a = d.length; c < a; c++) {
|
|
d[c].renderIndent(true, e)
|
|
}
|
|
}
|
|
}, beginUpdate:function () {
|
|
this.childrenRendered = false
|
|
}, endUpdate:function () {
|
|
if (this.expanded && this.rendered) {
|
|
this.renderChildren()
|
|
}
|
|
}, destroy:function (a) {
|
|
if (a === true) {
|
|
this.unselect(true)
|
|
}
|
|
Ext.tree.TreeNode.superclass.destroy.call(this, a);
|
|
Ext.destroy(this.ui, this.loader);
|
|
this.ui = this.loader = null
|
|
}, onIdChange:function (a) {
|
|
this.ui.onIdChange(a)
|
|
}});
|
|
Ext.tree.TreePanel.nodeTypes.node = Ext.tree.TreeNode;
|
|
Ext.tree.AsyncTreeNode = function (a) {
|
|
this.loaded = a && a.loaded === true;
|
|
this.loading = false;
|
|
Ext.tree.AsyncTreeNode.superclass.constructor.apply(this, arguments);
|
|
this.addEvents("beforeload", "load")
|
|
};
|
|
Ext.extend(Ext.tree.AsyncTreeNode, Ext.tree.TreeNode, {expand:function (b, e, h, c) {
|
|
if (this.loading) {
|
|
var g;
|
|
var d = function () {
|
|
if (!this.loading) {
|
|
clearInterval(g);
|
|
this.expand(b, e, h, c)
|
|
}
|
|
}.createDelegate(this);
|
|
g = setInterval(d, 200);
|
|
return
|
|
}
|
|
if (!this.loaded) {
|
|
if (this.fireEvent("beforeload", this) === false) {
|
|
return
|
|
}
|
|
this.loading = true;
|
|
this.ui.beforeLoad(this);
|
|
var a = this.loader || this.attributes.loader || this.getOwnerTree().getLoader();
|
|
if (a) {
|
|
a.load(this, this.loadComplete.createDelegate(this, [b, e, h, c]), this);
|
|
return
|
|
}
|
|
}
|
|
Ext.tree.AsyncTreeNode.superclass.expand.call(this, b, e, h, c)
|
|
}, isLoading:function () {
|
|
return this.loading
|
|
}, loadComplete:function (a, c, d, b) {
|
|
this.loading = false;
|
|
this.loaded = true;
|
|
this.ui.afterLoad(this);
|
|
this.fireEvent("load", this);
|
|
this.expand(a, c, d, b)
|
|
}, isLoaded:function () {
|
|
return this.loaded
|
|
}, hasChildNodes:function () {
|
|
if (!this.isLeaf() && !this.loaded) {
|
|
return true
|
|
} else {
|
|
return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this)
|
|
}
|
|
}, reload:function (b, a) {
|
|
this.collapse(false, false);
|
|
while (this.firstChild) {
|
|
this.removeChild(this.firstChild).destroy()
|
|
}
|
|
this.childrenRendered = false;
|
|
this.loaded = false;
|
|
if (this.isHiddenRoot()) {
|
|
this.expanded = false
|
|
}
|
|
this.expand(false, false, b, a)
|
|
}});
|
|
Ext.tree.TreePanel.nodeTypes.async = Ext.tree.AsyncTreeNode;
|
|
Ext.tree.TreeNodeUI = Ext.extend(Object, {constructor:function (a) {
|
|
Ext.apply(this, {node:a, rendered:false, animating:false, wasLeaf:true, ecc:"x-tree-ec-icon x-tree-elbow", emptyIcon:Ext.BLANK_IMAGE_URL})
|
|
}, removeChild:function (a) {
|
|
if (this.rendered) {
|
|
this.ctNode.removeChild(a.ui.getEl())
|
|
}
|
|
}, beforeLoad:function () {
|
|
this.addClass("x-tree-node-loading")
|
|
}, afterLoad:function () {
|
|
this.removeClass("x-tree-node-loading")
|
|
}, onTextChange:function (b, c, a) {
|
|
if (this.rendered) {
|
|
this.textNode.innerHTML = c
|
|
}
|
|
}, onIconClsChange:function (c, a, b) {
|
|
if (this.rendered) {
|
|
Ext.fly(this.iconNode).replaceClass(b, a)
|
|
}
|
|
}, onIconChange:function (b, a) {
|
|
if (this.rendered) {
|
|
var c = Ext.isEmpty(a);
|
|
this.iconNode.src = c ? this.emptyIcon : a;
|
|
Ext.fly(this.iconNode)[c ? "removeClass" : "addClass"]("x-tree-node-inline-icon")
|
|
}
|
|
}, onTipChange:function (b, c, d) {
|
|
if (this.rendered) {
|
|
var a = Ext.isDefined(d);
|
|
if (this.textNode.setAttributeNS) {
|
|
this.textNode.setAttributeNS("ext", "qtip", c);
|
|
if (a) {
|
|
this.textNode.setAttributeNS("ext", "qtitle", d)
|
|
}
|
|
} else {
|
|
this.textNode.setAttribute("ext:qtip", c);
|
|
if (a) {
|
|
this.textNode.setAttribute("ext:qtitle", d)
|
|
}
|
|
}
|
|
}
|
|
}, onHrefChange:function (b, a, c) {
|
|
if (this.rendered) {
|
|
this.anchor.href = this.getHref(a);
|
|
if (Ext.isDefined(c)) {
|
|
this.anchor.target = c
|
|
}
|
|
}
|
|
}, onClsChange:function (c, a, b) {
|
|
if (this.rendered) {
|
|
Ext.fly(this.elNode).replaceClass(b, a)
|
|
}
|
|
}, onDisableChange:function (a, b) {
|
|
this.disabled = b;
|
|
if (this.checkbox) {
|
|
this.checkbox.disabled = b
|
|
}
|
|
this[b ? "addClass" : "removeClass"]("x-tree-node-disabled")
|
|
}, onSelectedChange:function (a) {
|
|
if (a) {
|
|
this.focus();
|
|
this.addClass("x-tree-selected")
|
|
} else {
|
|
this.removeClass("x-tree-selected")
|
|
}
|
|
}, onMove:function (a, h, e, g, d, b) {
|
|
this.childIndent = null;
|
|
if (this.rendered) {
|
|
var i = g.ui.getContainer();
|
|
if (!i) {
|
|
this.holder = document.createElement("div");
|
|
this.holder.appendChild(this.wrap);
|
|
return
|
|
}
|
|
var c = b ? b.ui.getEl() : null;
|
|
if (c) {
|
|
i.insertBefore(this.wrap, c)
|
|
} else {
|
|
i.appendChild(this.wrap)
|
|
}
|
|
this.node.renderIndent(true, e != g)
|
|
}
|
|
}, addClass:function (a) {
|
|
if (this.elNode) {
|
|
Ext.fly(this.elNode).addClass(a)
|
|
}
|
|
}, removeClass:function (a) {
|
|
if (this.elNode) {
|
|
Ext.fly(this.elNode).removeClass(a)
|
|
}
|
|
}, remove:function () {
|
|
if (this.rendered) {
|
|
this.holder = document.createElement("div");
|
|
this.holder.appendChild(this.wrap)
|
|
}
|
|
}, fireEvent:function () {
|
|
return this.node.fireEvent.apply(this.node, arguments)
|
|
}, initEvents:function () {
|
|
this.node.on("move", this.onMove, this);
|
|
if (this.node.disabled) {
|
|
this.onDisableChange(this.node, true)
|
|
}
|
|
if (this.node.hidden) {
|
|
this.hide()
|
|
}
|
|
var b = this.node.getOwnerTree();
|
|
var a = b.enableDD || b.enableDrag || b.enableDrop;
|
|
if (a && (!this.node.isRoot || b.rootVisible)) {
|
|
Ext.dd.Registry.register(this.elNode, {node:this.node, handles:this.getDDHandles(), isHandle:false})
|
|
}
|
|
}, getDDHandles:function () {
|
|
return[this.iconNode, this.textNode, this.elNode]
|
|
}, hide:function () {
|
|
this.node.hidden = true;
|
|
if (this.wrap) {
|
|
this.wrap.style.display = "none"
|
|
}
|
|
}, show:function () {
|
|
this.node.hidden = false;
|
|
if (this.wrap) {
|
|
this.wrap.style.display = ""
|
|
}
|
|
}, onContextMenu:function (a) {
|
|
if (this.node.hasListener("contextmenu") || this.node.getOwnerTree().hasListener("contextmenu")) {
|
|
a.preventDefault();
|
|
this.focus();
|
|
this.fireEvent("contextmenu", this.node, a)
|
|
}
|
|
}, onClick:function (c) {
|
|
if (this.dropping) {
|
|
c.stopEvent();
|
|
return
|
|
}
|
|
if (this.fireEvent("beforeclick", this.node, c) !== false) {
|
|
var b = c.getTarget("a");
|
|
if (!this.disabled && this.node.attributes.href && b) {
|
|
this.fireEvent("click", this.node, c);
|
|
return
|
|
} else {
|
|
if (b && c.ctrlKey) {
|
|
c.stopEvent()
|
|
}
|
|
}
|
|
c.preventDefault();
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
if (this.node.attributes.singleClickExpand && !this.animating && this.node.isExpandable()) {
|
|
this.node.toggle()
|
|
}
|
|
this.fireEvent("click", this.node, c)
|
|
} else {
|
|
c.stopEvent()
|
|
}
|
|
}, onDblClick:function (a) {
|
|
a.preventDefault();
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
if (this.fireEvent("beforedblclick", this.node, a) !== false) {
|
|
if (this.checkbox) {
|
|
this.toggleCheck()
|
|
}
|
|
if (!this.animating && this.node.isExpandable()) {
|
|
this.node.toggle()
|
|
}
|
|
this.fireEvent("dblclick", this.node, a)
|
|
}
|
|
}, onOver:function (a) {
|
|
this.addClass("x-tree-node-over")
|
|
}, onOut:function (a) {
|
|
this.removeClass("x-tree-node-over")
|
|
}, onCheckChange:function () {
|
|
var a = this.checkbox.checked;
|
|
this.checkbox.defaultChecked = a;
|
|
this.node.attributes.checked = a;
|
|
this.fireEvent("checkchange", this.node, a)
|
|
}, ecClick:function (a) {
|
|
if (!this.animating && this.node.isExpandable()) {
|
|
this.node.toggle()
|
|
}
|
|
}, startDrop:function () {
|
|
this.dropping = true
|
|
}, endDrop:function () {
|
|
setTimeout(function () {
|
|
this.dropping = false
|
|
}.createDelegate(this), 50)
|
|
}, expand:function () {
|
|
this.updateExpandIcon();
|
|
this.ctNode.style.display = ""
|
|
}, focus:function () {
|
|
if (!this.node.preventHScroll) {
|
|
try {
|
|
this.anchor.focus()
|
|
} catch (c) {
|
|
}
|
|
} else {
|
|
try {
|
|
var b = this.node.getOwnerTree().getTreeEl().dom;
|
|
var a = b.scrollLeft;
|
|
this.anchor.focus();
|
|
b.scrollLeft = a
|
|
} catch (c) {
|
|
}
|
|
}
|
|
}, toggleCheck:function (b) {
|
|
var a = this.checkbox;
|
|
if (a) {
|
|
a.checked = (b === undefined ? !a.checked : b);
|
|
this.onCheckChange()
|
|
}
|
|
}, blur:function () {
|
|
try {
|
|
this.anchor.blur()
|
|
} catch (a) {
|
|
}
|
|
}, animExpand:function (b) {
|
|
var a = Ext.get(this.ctNode);
|
|
a.stopFx();
|
|
if (!this.node.isExpandable()) {
|
|
this.updateExpandIcon();
|
|
this.ctNode.style.display = "";
|
|
Ext.callback(b);
|
|
return
|
|
}
|
|
this.animating = true;
|
|
this.updateExpandIcon();
|
|
a.slideIn("t", {callback:function () {
|
|
this.animating = false;
|
|
Ext.callback(b)
|
|
}, scope:this, duration:this.node.ownerTree.duration || 0.25})
|
|
}, highlight:function () {
|
|
var a = this.node.getOwnerTree();
|
|
Ext.fly(this.wrap).highlight(a.hlColor || "C3DAF9", {endColor:a.hlBaseColor})
|
|
}, collapse:function () {
|
|
this.updateExpandIcon();
|
|
this.ctNode.style.display = "none"
|
|
}, animCollapse:function (b) {
|
|
var a = Ext.get(this.ctNode);
|
|
a.enableDisplayMode("block");
|
|
a.stopFx();
|
|
this.animating = true;
|
|
this.updateExpandIcon();
|
|
a.slideOut("t", {callback:function () {
|
|
this.animating = false;
|
|
Ext.callback(b)
|
|
}, scope:this, duration:this.node.ownerTree.duration || 0.25})
|
|
}, getContainer:function () {
|
|
return this.ctNode
|
|
}, getEl:function () {
|
|
return this.wrap
|
|
}, appendDDGhost:function (a) {
|
|
a.appendChild(this.elNode.cloneNode(true))
|
|
}, getDDRepairXY:function () {
|
|
return Ext.lib.Dom.getXY(this.iconNode)
|
|
}, onRender:function () {
|
|
this.render()
|
|
}, render:function (c) {
|
|
var e = this.node, b = e.attributes;
|
|
var d = e.parentNode ? e.parentNode.ui.getContainer() : e.ownerTree.innerCt.dom;
|
|
if (!this.rendered) {
|
|
this.rendered = true;
|
|
this.renderElements(e, b, d, c);
|
|
if (b.qtip) {
|
|
this.onTipChange(e, b.qtip, b.qtipTitle)
|
|
} else {
|
|
if (b.qtipCfg) {
|
|
b.qtipCfg.target = Ext.id(this.textNode);
|
|
Ext.QuickTips.register(b.qtipCfg)
|
|
}
|
|
}
|
|
this.initEvents();
|
|
if (!this.node.expanded) {
|
|
this.updateExpandIcon(true)
|
|
}
|
|
} else {
|
|
if (c === true) {
|
|
d.appendChild(this.wrap)
|
|
}
|
|
}
|
|
}, renderElements:function (e, k, j, l) {
|
|
this.indentMarkup = e.parentNode ? e.parentNode.ui.getChildIndent() : "";
|
|
var g = Ext.isBoolean(k.checked), b, c = this.getHref(k.href), d = ['<li class="x-tree-node"><div ext:tree-node-id="', e.id, '" class="x-tree-node-el x-tree-node-leaf x-unselectable ', k.cls, '" unselectable="on">', '<span class="x-tree-node-indent">', this.indentMarkup, "</span>", '<img alt="" src="', this.emptyIcon, '" class="x-tree-ec-icon x-tree-elbow" />', '<img alt="" src="', k.icon || this.emptyIcon, '" class="x-tree-node-icon', (k.icon ? " x-tree-node-inline-icon" : ""), (k.iconCls ? " " + k.iconCls : ""), '" unselectable="on" />', g ? ('<input class="x-tree-node-cb" type="checkbox" ' + (k.checked ? 'checked="checked" />' : "/>")) : "", '<a hidefocus="on" class="x-tree-node-anchor" href="', c, '" tabIndex="1" ', k.hrefTarget ? ' target="' + k.hrefTarget + '"' : "", '><span unselectable="on">', e.text, "</span></a></div>", '<ul class="x-tree-node-ct" style="display:none;"></ul>', "</li>"].join("");
|
|
if (l !== true && e.nextSibling && (b = e.nextSibling.ui.getEl())) {
|
|
this.wrap = Ext.DomHelper.insertHtml("beforeBegin", b, d)
|
|
} else {
|
|
this.wrap = Ext.DomHelper.insertHtml("beforeEnd", j, d)
|
|
}
|
|
this.elNode = this.wrap.childNodes[0];
|
|
this.ctNode = this.wrap.childNodes[1];
|
|
var i = this.elNode.childNodes;
|
|
this.indentNode = i[0];
|
|
this.ecNode = i[1];
|
|
this.iconNode = i[2];
|
|
var h = 3;
|
|
if (g) {
|
|
this.checkbox = i[3];
|
|
this.checkbox.defaultChecked = this.checkbox.checked;
|
|
h++
|
|
}
|
|
this.anchor = i[h];
|
|
this.textNode = i[h].firstChild
|
|
}, getHref:function (a) {
|
|
return Ext.isEmpty(a) ? (Ext.isGecko ? "" : "#") : a
|
|
}, getAnchor:function () {
|
|
return this.anchor
|
|
}, getTextEl:function () {
|
|
return this.textNode
|
|
}, getIconEl:function () {
|
|
return this.iconNode
|
|
}, isChecked:function () {
|
|
return this.checkbox ? this.checkbox.checked : false
|
|
}, updateExpandIcon:function () {
|
|
if (this.rendered) {
|
|
var g = this.node, d, c, a = g.isLast() ? "x-tree-elbow-end" : "x-tree-elbow", e = g.hasChildNodes();
|
|
if (e || g.attributes.expandable) {
|
|
if (g.expanded) {
|
|
a += "-minus";
|
|
d = "x-tree-node-collapsed";
|
|
c = "x-tree-node-expanded"
|
|
} else {
|
|
a += "-plus";
|
|
d = "x-tree-node-expanded";
|
|
c = "x-tree-node-collapsed"
|
|
}
|
|
if (this.wasLeaf) {
|
|
this.removeClass("x-tree-node-leaf");
|
|
this.wasLeaf = false
|
|
}
|
|
if (this.c1 != d || this.c2 != c) {
|
|
Ext.fly(this.elNode).replaceClass(d, c);
|
|
this.c1 = d;
|
|
this.c2 = c
|
|
}
|
|
} else {
|
|
if (!this.wasLeaf) {
|
|
Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-collapsed");
|
|
delete this.c1;
|
|
delete this.c2;
|
|
this.wasLeaf = true
|
|
}
|
|
}
|
|
var b = "x-tree-ec-icon " + a;
|
|
if (this.ecc != b) {
|
|
this.ecNode.className = b;
|
|
this.ecc = b
|
|
}
|
|
}
|
|
}, onIdChange:function (a) {
|
|
if (this.rendered) {
|
|
this.elNode.setAttribute("ext:tree-node-id", a)
|
|
}
|
|
}, getChildIndent:function () {
|
|
if (!this.childIndent) {
|
|
var a = [], b = this.node;
|
|
while (b) {
|
|
if (!b.isRoot || (b.isRoot && b.ownerTree.rootVisible)) {
|
|
if (!b.isLast()) {
|
|
a.unshift('<img alt="" src="' + this.emptyIcon + '" class="x-tree-elbow-line" />')
|
|
} else {
|
|
a.unshift('<img alt="" src="' + this.emptyIcon + '" class="x-tree-icon" />')
|
|
}
|
|
}
|
|
b = b.parentNode
|
|
}
|
|
this.childIndent = a.join("")
|
|
}
|
|
return this.childIndent
|
|
}, renderIndent:function () {
|
|
if (this.rendered) {
|
|
var a = "", b = this.node.parentNode;
|
|
if (b) {
|
|
a = b.ui.getChildIndent()
|
|
}
|
|
if (this.indentMarkup != a) {
|
|
this.indentNode.innerHTML = a;
|
|
this.indentMarkup = a
|
|
}
|
|
this.updateExpandIcon()
|
|
}
|
|
}, destroy:function () {
|
|
if (this.elNode) {
|
|
Ext.dd.Registry.unregister(this.elNode.id)
|
|
}
|
|
Ext.each(["textnode", "anchor", "checkbox", "indentNode", "ecNode", "iconNode", "elNode", "ctNode", "wrap", "holder"], function (a) {
|
|
if (this[a]) {
|
|
Ext.fly(this[a]).remove();
|
|
delete this[a]
|
|
}
|
|
}, this);
|
|
delete this.node
|
|
}});
|
|
Ext.tree.RootTreeNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {render:function () {
|
|
if (!this.rendered) {
|
|
var a = this.node.ownerTree.innerCt.dom;
|
|
this.node.expanded = true;
|
|
a.innerHTML = '<div class="x-tree-root-node"></div>';
|
|
this.wrap = this.ctNode = a.firstChild
|
|
}
|
|
}, collapse:Ext.emptyFn, expand:Ext.emptyFn});
|
|
Ext.tree.TreeLoader = function (a) {
|
|
this.baseParams = {};
|
|
Ext.apply(this, a);
|
|
this.addEvents("beforeload", "load", "loadexception");
|
|
Ext.tree.TreeLoader.superclass.constructor.call(this);
|
|
if (Ext.isString(this.paramOrder)) {
|
|
this.paramOrder = this.paramOrder.split(/[\s,|]/)
|
|
}
|
|
};
|
|
Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, {uiProviders:{}, clearOnLoad:true, paramOrder:undefined, paramsAsHash:false, nodeParameter:"node", directFn:undefined, load:function (b, c, a) {
|
|
if (this.clearOnLoad) {
|
|
while (b.firstChild) {
|
|
b.removeChild(b.firstChild)
|
|
}
|
|
}
|
|
if (this.doPreload(b)) {
|
|
this.runCallback(c, a || b, [b])
|
|
} else {
|
|
if (this.directFn || this.dataUrl || this.url) {
|
|
this.requestData(b, c, a || b)
|
|
}
|
|
}
|
|
}, doPreload:function (d) {
|
|
if (d.attributes.children) {
|
|
if (d.childNodes.length < 1) {
|
|
var c = d.attributes.children;
|
|
d.beginUpdate();
|
|
for (var b = 0, a = c.length; b < a; b++) {
|
|
var e = d.appendChild(this.createNode(c[b]));
|
|
if (this.preloadChildren) {
|
|
this.doPreload(e)
|
|
}
|
|
}
|
|
d.endUpdate()
|
|
}
|
|
return true
|
|
}
|
|
return false
|
|
}, getParams:function (g) {
|
|
var e = Ext.apply({}, this.baseParams), h = this.nodeParameter, b = this.paramOrder;
|
|
h && (e[h] = g.id);
|
|
if (this.directFn) {
|
|
var c = [g.id];
|
|
if (b) {
|
|
if (h && b.indexOf(h) > -1) {
|
|
c = []
|
|
}
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
c.push(e[b[d]])
|
|
}
|
|
} else {
|
|
if (this.paramsAsHash) {
|
|
c = [e]
|
|
}
|
|
}
|
|
return c
|
|
} else {
|
|
return e
|
|
}
|
|
}, requestData:function (c, d, b) {
|
|
if (this.fireEvent("beforeload", this, c, d) !== false) {
|
|
if (this.directFn) {
|
|
var a = this.getParams(c);
|
|
a.push(this.processDirectResponse.createDelegate(this, [
|
|
{callback:d, node:c, scope:b}
|
|
], true));
|
|
this.directFn.apply(window, a)
|
|
} else {
|
|
this.transId = Ext.Ajax.request({method:this.requestMethod, url:this.dataUrl || this.url, success:this.handleResponse, failure:this.handleFailure, scope:this, argument:{callback:d, node:c, scope:b}, params:this.getParams(c)})
|
|
}
|
|
} else {
|
|
this.runCallback(d, b || c, [])
|
|
}
|
|
}, processDirectResponse:function (a, b, c) {
|
|
if (b.status) {
|
|
this.handleResponse({responseData:Ext.isArray(a) ? a : null, responseText:a, argument:c})
|
|
} else {
|
|
this.handleFailure({argument:c})
|
|
}
|
|
}, runCallback:function (a, c, b) {
|
|
if (Ext.isFunction(a)) {
|
|
a.apply(c, b)
|
|
}
|
|
}, isLoading:function () {
|
|
return !!this.transId
|
|
}, abort:function () {
|
|
if (this.isLoading()) {
|
|
Ext.Ajax.abort(this.transId)
|
|
}
|
|
}, createNode:function (attr) {
|
|
if (this.baseAttrs) {
|
|
Ext.applyIf(attr, this.baseAttrs)
|
|
}
|
|
if (this.applyLoader !== false && !attr.loader) {
|
|
attr.loader = this
|
|
}
|
|
if (Ext.isString(attr.uiProvider)) {
|
|
attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider)
|
|
}
|
|
if (attr.nodeType) {
|
|
return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr)
|
|
} else {
|
|
return attr.leaf ? new Ext.tree.TreeNode(attr) : new Ext.tree.AsyncTreeNode(attr)
|
|
}
|
|
}, processResponse:function (d, c, k, l) {
|
|
var m = d.responseText;
|
|
try {
|
|
var a = d.responseData || Ext.decode(m);
|
|
c.beginUpdate();
|
|
for (var g = 0, h = a.length; g < h; g++) {
|
|
var b = this.createNode(a[g]);
|
|
if (b) {
|
|
c.appendChild(b)
|
|
}
|
|
}
|
|
c.endUpdate();
|
|
this.runCallback(k, l || c, [c])
|
|
} catch (j) {
|
|
this.handleFailure(d)
|
|
}
|
|
}, handleResponse:function (c) {
|
|
this.transId = false;
|
|
var b = c.argument;
|
|
this.processResponse(c, b.node, b.callback, b.scope);
|
|
this.fireEvent("load", this, b.node, c)
|
|
}, handleFailure:function (c) {
|
|
this.transId = false;
|
|
var b = c.argument;
|
|
this.fireEvent("loadexception", this, b.node, c);
|
|
this.runCallback(b.callback, b.scope || b.node, [b.node])
|
|
}, destroy:function () {
|
|
this.abort();
|
|
this.purgeListeners()
|
|
}});
|
|
Ext.tree.TreeFilter = function (a, b) {
|
|
this.tree = a;
|
|
this.filtered = {};
|
|
Ext.apply(this, b)
|
|
};
|
|
Ext.tree.TreeFilter.prototype = {clearBlank:false, reverse:false, autoClear:false, remove:false, filter:function (d, a, b) {
|
|
a = a || "text";
|
|
var c;
|
|
if (typeof d == "string") {
|
|
var e = d.length;
|
|
if (e == 0 && this.clearBlank) {
|
|
this.clear();
|
|
return
|
|
}
|
|
d = d.toLowerCase();
|
|
c = function (g) {
|
|
return g.attributes[a].substr(0, e).toLowerCase() == d
|
|
}
|
|
} else {
|
|
if (d.exec) {
|
|
c = function (g) {
|
|
return d.test(g.attributes[a])
|
|
}
|
|
} else {
|
|
throw"Illegal filter type, must be string or regex"
|
|
}
|
|
}
|
|
this.filterBy(c, null, b)
|
|
}, filterBy:function (d, c, b) {
|
|
b = b || this.tree.root;
|
|
if (this.autoClear) {
|
|
this.clear()
|
|
}
|
|
var a = this.filtered, i = this.reverse;
|
|
var e = function (k) {
|
|
if (k == b) {
|
|
return true
|
|
}
|
|
if (a[k.id]) {
|
|
return false
|
|
}
|
|
var j = d.call(c || k, k);
|
|
if (!j || i) {
|
|
a[k.id] = k;
|
|
k.ui.hide();
|
|
return false
|
|
}
|
|
return true
|
|
};
|
|
b.cascade(e);
|
|
if (this.remove) {
|
|
for (var h in a) {
|
|
if (typeof h != "function") {
|
|
var g = a[h];
|
|
if (g && g.parentNode) {
|
|
g.parentNode.removeChild(g)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, clear:function () {
|
|
var b = this.tree;
|
|
var a = this.filtered;
|
|
for (var d in a) {
|
|
if (typeof d != "function") {
|
|
var c = a[d];
|
|
if (c) {
|
|
c.ui.show()
|
|
}
|
|
}
|
|
}
|
|
this.filtered = {}
|
|
}};
|
|
Ext.tree.TreeSorter = Ext.extend(Object, {constructor:function (a, c) {
|
|
Ext.apply(this, c);
|
|
a.on({scope:this, beforechildrenrendered:this.doSort, append:this.updateSort, insert:this.updateSort, textchange:this.updateSortParent});
|
|
var e = this.dir && this.dir.toLowerCase() == "desc", i = this.property || "text", d = this.sortType, h = this.folderSort, b = this.caseSensitive === true, g = this.leafAttr || "leaf";
|
|
if (Ext.isString(d)) {
|
|
d = Ext.data.SortTypes[d]
|
|
}
|
|
this.sortFn = function (o, m) {
|
|
var k = o.attributes, j = m.attributes;
|
|
if (h) {
|
|
if (k[g] && !j[g]) {
|
|
return 1
|
|
}
|
|
if (!k[g] && j[g]) {
|
|
return -1
|
|
}
|
|
}
|
|
var n = k[i], l = j[i], q = d ? d(n) : (b ? n : n.toUpperCase()), p = d ? d(l) : (b ? l : l.toUpperCase());
|
|
if (q < p) {
|
|
return e ? 1 : -1
|
|
} else {
|
|
if (q > p) {
|
|
return e ? -1 : 1
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
}, doSort:function (a) {
|
|
a.sort(this.sortFn)
|
|
}, updateSort:function (a, b) {
|
|
if (b.childrenRendered) {
|
|
this.doSort.defer(1, this, [b])
|
|
}
|
|
}, updateSortParent:function (a) {
|
|
var b = a.parentNode;
|
|
if (b && b.childrenRendered) {
|
|
this.doSort.defer(1, this, [b])
|
|
}
|
|
}});
|
|
if (Ext.dd.DropZone) {
|
|
Ext.tree.TreeDropZone = function (a, b) {
|
|
this.allowParentInsert = b.allowParentInsert || false;
|
|
this.allowContainerDrop = b.allowContainerDrop || false;
|
|
this.appendOnly = b.appendOnly || false;
|
|
Ext.tree.TreeDropZone.superclass.constructor.call(this, a.getTreeEl(), b);
|
|
this.tree = a;
|
|
this.dragOverData = {};
|
|
this.lastInsertClass = "x-tree-no-status"
|
|
};
|
|
Ext.extend(Ext.tree.TreeDropZone, Ext.dd.DropZone, {ddGroup:"TreeDD", expandDelay:1000, expandNode:function (a) {
|
|
if (a.hasChildNodes() && !a.isExpanded()) {
|
|
a.expand(false, null, this.triggerCacheRefresh.createDelegate(this))
|
|
}
|
|
}, queueExpand:function (a) {
|
|
this.expandProcId = this.expandNode.defer(this.expandDelay, this, [a])
|
|
}, cancelExpand:function () {
|
|
if (this.expandProcId) {
|
|
clearTimeout(this.expandProcId);
|
|
this.expandProcId = false
|
|
}
|
|
}, isValidDropPoint:function (a, k, i, d, c) {
|
|
if (!a || !c) {
|
|
return false
|
|
}
|
|
var g = a.node;
|
|
var h = c.node;
|
|
if (!(g && g.isTarget && k)) {
|
|
return false
|
|
}
|
|
if (k == "append" && g.allowChildren === false) {
|
|
return false
|
|
}
|
|
if ((k == "above" || k == "below") && (g.parentNode && g.parentNode.allowChildren === false)) {
|
|
return false
|
|
}
|
|
if (h && (g == h || h.contains(g))) {
|
|
return false
|
|
}
|
|
var b = this.dragOverData;
|
|
b.tree = this.tree;
|
|
b.target = g;
|
|
b.data = c;
|
|
b.point = k;
|
|
b.source = i;
|
|
b.rawEvent = d;
|
|
b.dropNode = h;
|
|
b.cancel = false;
|
|
var j = this.tree.fireEvent("nodedragover", b);
|
|
return b.cancel === false && j !== false
|
|
}, getDropPoint:function (h, g, l) {
|
|
var m = g.node;
|
|
if (m.isRoot) {
|
|
return m.allowChildren !== false ? "append" : false
|
|
}
|
|
var c = g.ddel;
|
|
var o = Ext.lib.Dom.getY(c), j = o + c.offsetHeight;
|
|
var i = Ext.lib.Event.getPageY(h);
|
|
var k = m.allowChildren === false || m.isLeaf();
|
|
if (this.appendOnly || m.parentNode.allowChildren === false) {
|
|
return k ? false : "append"
|
|
}
|
|
var d = false;
|
|
if (!this.allowParentInsert) {
|
|
d = m.hasChildNodes() && m.isExpanded()
|
|
}
|
|
var a = (j - o) / (k ? 2 : 3);
|
|
if (i >= o && i < (o + a)) {
|
|
return"above"
|
|
} else {
|
|
if (!d && (k || i >= j - a && i <= j)) {
|
|
return"below"
|
|
} else {
|
|
return"append"
|
|
}
|
|
}
|
|
}, onNodeEnter:function (d, a, c, b) {
|
|
this.cancelExpand()
|
|
}, onContainerOver:function (a, c, b) {
|
|
if (this.allowContainerDrop && this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode, node:this.tree.getRootNode()}, "append", a, c, b)) {
|
|
return this.dropAllowed
|
|
}
|
|
return this.dropNotAllowed
|
|
}, onNodeOver:function (b, i, h, g) {
|
|
var k = this.getDropPoint(h, b, i);
|
|
var c = b.node;
|
|
if (!this.expandProcId && k == "append" && c.hasChildNodes() && !b.node.isExpanded()) {
|
|
this.queueExpand(c)
|
|
} else {
|
|
if (k != "append") {
|
|
this.cancelExpand()
|
|
}
|
|
}
|
|
var d = this.dropNotAllowed;
|
|
if (this.isValidDropPoint(b, k, i, h, g)) {
|
|
if (k) {
|
|
var a = b.ddel;
|
|
var j;
|
|
if (k == "above") {
|
|
d = b.node.isFirst() ? "x-tree-drop-ok-above" : "x-tree-drop-ok-between";
|
|
j = "x-tree-drag-insert-above"
|
|
} else {
|
|
if (k == "below") {
|
|
d = b.node.isLast() ? "x-tree-drop-ok-below" : "x-tree-drop-ok-between";
|
|
j = "x-tree-drag-insert-below"
|
|
} else {
|
|
d = "x-tree-drop-ok-append";
|
|
j = "x-tree-drag-append"
|
|
}
|
|
}
|
|
if (this.lastInsertClass != j) {
|
|
Ext.fly(a).replaceClass(this.lastInsertClass, j);
|
|
this.lastInsertClass = j
|
|
}
|
|
}
|
|
}
|
|
return d
|
|
}, onNodeOut:function (d, a, c, b) {
|
|
this.cancelExpand();
|
|
this.removeDropIndicators(d)
|
|
}, onNodeDrop:function (i, b, h, d) {
|
|
var a = this.getDropPoint(h, i, b);
|
|
var g = i.node;
|
|
g.ui.startDrop();
|
|
if (!this.isValidDropPoint(i, a, b, h, d)) {
|
|
g.ui.endDrop();
|
|
return false
|
|
}
|
|
var c = d.node || (b.getTreeNode ? b.getTreeNode(d, g, a, h) : null);
|
|
return this.processDrop(g, d, a, b, h, c)
|
|
}, onContainerDrop:function (a, g, c) {
|
|
if (this.allowContainerDrop && this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode, node:this.tree.getRootNode()}, "append", a, g, c)) {
|
|
var d = this.tree.getRootNode();
|
|
d.ui.startDrop();
|
|
var b = c.node || (a.getTreeNode ? a.getTreeNode(c, d, "append", g) : null);
|
|
return this.processDrop(d, c, "append", a, g, b)
|
|
}
|
|
return false
|
|
}, processDrop:function (j, h, b, a, i, d) {
|
|
var g = {tree:this.tree, target:j, data:h, point:b, source:a, rawEvent:i, dropNode:d, cancel:!d, dropStatus:false};
|
|
var c = this.tree.fireEvent("beforenodedrop", g);
|
|
if (c === false || g.cancel === true || !g.dropNode) {
|
|
j.ui.endDrop();
|
|
return g.dropStatus
|
|
}
|
|
j = g.target;
|
|
if (b == "append" && !j.isExpanded()) {
|
|
j.expand(false, null, function () {
|
|
this.completeDrop(g)
|
|
}.createDelegate(this))
|
|
} else {
|
|
this.completeDrop(g)
|
|
}
|
|
return true
|
|
}, completeDrop:function (h) {
|
|
var d = h.dropNode, e = h.point, c = h.target;
|
|
if (!Ext.isArray(d)) {
|
|
d = [d]
|
|
}
|
|
var g;
|
|
for (var b = 0, a = d.length; b < a; b++) {
|
|
g = d[b];
|
|
if (e == "above") {
|
|
c.parentNode.insertBefore(g, c)
|
|
} else {
|
|
if (e == "below") {
|
|
c.parentNode.insertBefore(g, c.nextSibling)
|
|
} else {
|
|
c.appendChild(g)
|
|
}
|
|
}
|
|
}
|
|
g.ui.focus();
|
|
if (Ext.enableFx && this.tree.hlDrop) {
|
|
g.ui.highlight()
|
|
}
|
|
c.ui.endDrop();
|
|
this.tree.fireEvent("nodedrop", h)
|
|
}, afterNodeMoved:function (a, c, g, d, b) {
|
|
if (Ext.enableFx && this.tree.hlDrop) {
|
|
b.ui.focus();
|
|
b.ui.highlight()
|
|
}
|
|
this.tree.fireEvent("nodedrop", this.tree, d, c, a, g)
|
|
}, getTree:function () {
|
|
return this.tree
|
|
}, removeDropIndicators:function (b) {
|
|
if (b && b.ddel) {
|
|
var a = b.ddel;
|
|
Ext.fly(a).removeClass(["x-tree-drag-insert-above", "x-tree-drag-insert-below", "x-tree-drag-append"]);
|
|
this.lastInsertClass = "_noclass"
|
|
}
|
|
}, beforeDragDrop:function (b, a, c) {
|
|
this.cancelExpand();
|
|
return true
|
|
}, afterRepair:function (a) {
|
|
if (a && Ext.enableFx) {
|
|
a.node.ui.highlight()
|
|
}
|
|
this.hideProxy()
|
|
}})
|
|
}
|
|
if (Ext.dd.DragZone) {
|
|
Ext.tree.TreeDragZone = function (a, b) {
|
|
Ext.tree.TreeDragZone.superclass.constructor.call(this, a.innerCt, b);
|
|
this.tree = a
|
|
};
|
|
Ext.extend(Ext.tree.TreeDragZone, Ext.dd.DragZone, {ddGroup:"TreeDD", onBeforeDrag:function (a, b) {
|
|
var c = a.node;
|
|
return c && c.draggable && !c.disabled
|
|
}, onInitDrag:function (b) {
|
|
var a = this.dragData;
|
|
this.tree.getSelectionModel().select(a.node);
|
|
this.tree.eventModel.disable();
|
|
this.proxy.update("");
|
|
a.node.ui.appendDDGhost(this.proxy.ghost.dom);
|
|
this.tree.fireEvent("startdrag", this.tree, a.node, b)
|
|
}, getRepairXY:function (b, a) {
|
|
return a.node.ui.getDDRepairXY()
|
|
}, onEndDrag:function (a, b) {
|
|
this.tree.eventModel.enable.defer(100, this.tree.eventModel);
|
|
this.tree.fireEvent("enddrag", this.tree, a.node, b)
|
|
}, onValidDrop:function (a, b, c) {
|
|
this.tree.fireEvent("dragdrop", this.tree, this.dragData.node, a, b);
|
|
this.hideProxy()
|
|
}, beforeInvalidDrop:function (a, c) {
|
|
var b = this.tree.getSelectionModel();
|
|
b.clearSelections();
|
|
b.select(this.dragData.node)
|
|
}, afterRepair:function () {
|
|
if (Ext.enableFx && this.tree.hlDrop) {
|
|
Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9")
|
|
}
|
|
this.dragging = false
|
|
}})
|
|
}
|
|
Ext.tree.TreeEditor = function (a, c, b) {
|
|
c = c || {};
|
|
var d = c.events ? c : new Ext.form.TextField(c);
|
|
Ext.tree.TreeEditor.superclass.constructor.call(this, d, b);
|
|
this.tree = a;
|
|
if (!a.rendered) {
|
|
a.on("render", this.initEditor, this)
|
|
} else {
|
|
this.initEditor(a)
|
|
}
|
|
};
|
|
Ext.extend(Ext.tree.TreeEditor, Ext.Editor, {alignment:"l-l", autoSize:false, hideEl:false, cls:"x-small-editor x-tree-editor", shim:false, shadow:"frame", maxWidth:250, editDelay:350, initEditor:function (a) {
|
|
a.on({scope:this, beforeclick:this.beforeNodeClick, dblclick:this.onNodeDblClick});
|
|
this.on({scope:this, complete:this.updateNode, beforestartedit:this.fitToTree, specialkey:this.onSpecialKey});
|
|
this.on("startedit", this.bindScroll, this, {delay:10})
|
|
}, fitToTree:function (b, c) {
|
|
var e = this.tree.getTreeEl().dom, d = c.dom;
|
|
if (e.scrollLeft > d.offsetLeft) {
|
|
e.scrollLeft = d.offsetLeft
|
|
}
|
|
var a = Math.min(this.maxWidth, (e.clientWidth > 20 ? e.clientWidth : e.offsetWidth) - Math.max(0, d.offsetLeft - e.scrollLeft) - 5);
|
|
this.setSize(a, "")
|
|
}, triggerEdit:function (a, c) {
|
|
this.completeEdit();
|
|
if (a.attributes.editable !== false) {
|
|
this.editNode = a;
|
|
if (this.tree.autoScroll) {
|
|
Ext.fly(a.ui.getEl()).scrollIntoView(this.tree.body)
|
|
}
|
|
var b = a.text || "";
|
|
if (!Ext.isGecko && Ext.isEmpty(a.text)) {
|
|
a.setText(" ")
|
|
}
|
|
this.autoEditTimer = this.startEdit.defer(this.editDelay, this, [a.ui.textNode, b]);
|
|
return false
|
|
}
|
|
}, bindScroll:function () {
|
|
this.tree.getTreeEl().on("scroll", this.cancelEdit, this)
|
|
}, beforeNodeClick:function (a, b) {
|
|
clearTimeout(this.autoEditTimer);
|
|
if (this.tree.getSelectionModel().isSelected(a)) {
|
|
b.stopEvent();
|
|
return this.triggerEdit(a)
|
|
}
|
|
}, onNodeDblClick:function (a, b) {
|
|
clearTimeout(this.autoEditTimer)
|
|
}, updateNode:function (a, b) {
|
|
this.tree.getTreeEl().un("scroll", this.cancelEdit, this);
|
|
this.editNode.setText(b)
|
|
}, onHide:function () {
|
|
Ext.tree.TreeEditor.superclass.onHide.call(this);
|
|
if (this.editNode) {
|
|
this.editNode.ui.focus.defer(50, this.editNode.ui)
|
|
}
|
|
}, onSpecialKey:function (c, b) {
|
|
var a = b.getKey();
|
|
if (a == b.ESC) {
|
|
b.stopEvent();
|
|
this.cancelEdit()
|
|
} else {
|
|
if (a == b.ENTER && !b.hasModifier()) {
|
|
b.stopEvent();
|
|
this.completeEdit()
|
|
}
|
|
}
|
|
}, onDestroy:function () {
|
|
clearTimeout(this.autoEditTimer);
|
|
Ext.tree.TreeEditor.superclass.onDestroy.call(this);
|
|
var a = this.tree;
|
|
a.un("beforeclick", this.beforeNodeClick, this);
|
|
a.un("dblclick", this.onNodeDblClick, this)
|
|
}});
|
|
/* SWFObject v2.2 <http://code.google.com/p/swfobject/>
|
|
is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
|
|
*/
|
|
var swfobject = function () {
|
|
var E = "undefined", s = "object", T = "Shockwave Flash", X = "ShockwaveFlash.ShockwaveFlash", r = "application/x-shockwave-flash", S = "SWFObjectExprInst", y = "onreadystatechange", P = window, k = document, u = navigator, U = false, V = [i], p = [], O = [], J = [], m, R, F, C, K = false, a = false, o, H, n = true, N = function () {
|
|
var ab = typeof k.getElementById != E && typeof k.getElementsByTagName != E && typeof k.createElement != E, ai = u.userAgent.toLowerCase(), Z = u.platform.toLowerCase(), af = Z ? (/win/).test(Z) : /win/.test(ai), ad = Z ? (/mac/).test(Z) : /mac/.test(ai), ag = /webkit/.test(ai) ? parseFloat(ai.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, Y = !+"\v1", ah = [0, 0, 0], ac = null;
|
|
if (typeof u.plugins != E && typeof u.plugins[T] == s) {
|
|
ac = u.plugins[T].description;
|
|
if (ac && !(typeof u.mimeTypes != E && u.mimeTypes[r] && !u.mimeTypes[r].enabledPlugin)) {
|
|
U = true;
|
|
Y = false;
|
|
ac = ac.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
|
|
ah[0] = parseInt(ac.replace(/^(.*)\..*$/, "$1"), 10);
|
|
ah[1] = parseInt(ac.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
|
|
ah[2] = /[a-zA-Z]/.test(ac) ? parseInt(ac.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0
|
|
}
|
|
} else {
|
|
if (typeof P.ActiveXObject != E) {
|
|
try {
|
|
var ae = new ActiveXObject(X);
|
|
if (ae) {
|
|
ac = ae.GetVariable("$version");
|
|
if (ac) {
|
|
Y = true;
|
|
ac = ac.split(" ")[1].split(",");
|
|
ah = [parseInt(ac[0], 10), parseInt(ac[1], 10), parseInt(ac[2], 10)]
|
|
}
|
|
}
|
|
} catch (aa) {
|
|
}
|
|
}
|
|
}
|
|
return{w3:ab, pv:ah, wk:ag, ie:Y, win:af, mac:ad}
|
|
}(), l = function () {
|
|
if (!N.w3) {
|
|
return
|
|
}
|
|
if ((typeof k.readyState != E && k.readyState == "complete") || (typeof k.readyState == E && (k.getElementsByTagName("body")[0] || k.body))) {
|
|
g()
|
|
}
|
|
if (!K) {
|
|
if (typeof k.addEventListener != E) {
|
|
k.addEventListener("DOMContentLoaded", g, false)
|
|
}
|
|
if (N.ie && N.win) {
|
|
k.attachEvent(y, function () {
|
|
if (k.readyState == "complete") {
|
|
k.detachEvent(y, arguments.callee);
|
|
g()
|
|
}
|
|
});
|
|
if (P == top) {
|
|
(function () {
|
|
if (K) {
|
|
return
|
|
}
|
|
try {
|
|
k.documentElement.doScroll("left")
|
|
} catch (Y) {
|
|
setTimeout(arguments.callee, 0);
|
|
return
|
|
}
|
|
g()
|
|
})()
|
|
}
|
|
}
|
|
if (N.wk) {
|
|
(function () {
|
|
if (K) {
|
|
return
|
|
}
|
|
if (!(/loaded|complete/).test(k.readyState)) {
|
|
setTimeout(arguments.callee, 0);
|
|
return
|
|
}
|
|
g()
|
|
})()
|
|
}
|
|
t(g)
|
|
}
|
|
}();
|
|
|
|
function g() {
|
|
if (K) {
|
|
return
|
|
}
|
|
try {
|
|
var aa = k.getElementsByTagName("body")[0].appendChild(D("span"));
|
|
aa.parentNode.removeChild(aa)
|
|
} catch (ab) {
|
|
return
|
|
}
|
|
K = true;
|
|
var Y = V.length;
|
|
for (var Z = 0; Z < Y; Z++) {
|
|
V[Z]()
|
|
}
|
|
}
|
|
|
|
function L(Y) {
|
|
if (K) {
|
|
Y()
|
|
} else {
|
|
V[V.length] = Y
|
|
}
|
|
}
|
|
|
|
function t(Z) {
|
|
if (typeof P.addEventListener != E) {
|
|
P.addEventListener("load", Z, false)
|
|
} else {
|
|
if (typeof k.addEventListener != E) {
|
|
k.addEventListener("load", Z, false)
|
|
} else {
|
|
if (typeof P.attachEvent != E) {
|
|
j(P, "onload", Z)
|
|
} else {
|
|
if (typeof P.onload == "function") {
|
|
var Y = P.onload;
|
|
P.onload = function () {
|
|
Y();
|
|
Z()
|
|
}
|
|
} else {
|
|
P.onload = Z
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function i() {
|
|
if (U) {
|
|
W()
|
|
} else {
|
|
I()
|
|
}
|
|
}
|
|
|
|
function W() {
|
|
var Y = k.getElementsByTagName("body")[0];
|
|
var ab = D(s);
|
|
ab.setAttribute("type", r);
|
|
var aa = Y.appendChild(ab);
|
|
if (aa) {
|
|
var Z = 0;
|
|
(function () {
|
|
if (typeof aa.GetVariable != E) {
|
|
var ac = aa.GetVariable("$version");
|
|
if (ac) {
|
|
ac = ac.split(" ")[1].split(",");
|
|
N.pv = [parseInt(ac[0], 10), parseInt(ac[1], 10), parseInt(ac[2], 10)]
|
|
}
|
|
} else {
|
|
if (Z < 10) {
|
|
Z++;
|
|
setTimeout(arguments.callee, 10);
|
|
return
|
|
}
|
|
}
|
|
Y.removeChild(ab);
|
|
aa = null;
|
|
I()
|
|
})()
|
|
} else {
|
|
I()
|
|
}
|
|
}
|
|
|
|
function I() {
|
|
var ah = p.length;
|
|
if (ah > 0) {
|
|
for (var ag = 0; ag < ah; ag++) {
|
|
var Z = p[ag].id;
|
|
var ac = p[ag].callbackFn;
|
|
var ab = {success:false, id:Z};
|
|
if (N.pv[0] > 0) {
|
|
var af = c(Z);
|
|
if (af) {
|
|
if (G(p[ag].swfVersion) && !(N.wk && N.wk < 312)) {
|
|
x(Z, true);
|
|
if (ac) {
|
|
ab.success = true;
|
|
ab.ref = A(Z);
|
|
ac(ab)
|
|
}
|
|
} else {
|
|
if (p[ag].expressInstall && B()) {
|
|
var aj = {};
|
|
aj.data = p[ag].expressInstall;
|
|
aj.width = af.getAttribute("width") || "0";
|
|
aj.height = af.getAttribute("height") || "0";
|
|
if (af.getAttribute("class")) {
|
|
aj.styleclass = af.getAttribute("class")
|
|
}
|
|
if (af.getAttribute("align")) {
|
|
aj.align = af.getAttribute("align")
|
|
}
|
|
var ai = {};
|
|
var Y = af.getElementsByTagName("param");
|
|
var ad = Y.length;
|
|
for (var ae = 0; ae < ad; ae++) {
|
|
if (Y[ae].getAttribute("name").toLowerCase() != "movie") {
|
|
ai[Y[ae].getAttribute("name")] = Y[ae].getAttribute("value")
|
|
}
|
|
}
|
|
Q(aj, ai, Z, ac)
|
|
} else {
|
|
q(af);
|
|
if (ac) {
|
|
ac(ab)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
x(Z, true);
|
|
if (ac) {
|
|
var aa = A(Z);
|
|
if (aa && typeof aa.SetVariable != E) {
|
|
ab.success = true;
|
|
ab.ref = aa
|
|
}
|
|
ac(ab)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function A(ab) {
|
|
var Y = null;
|
|
var Z = c(ab);
|
|
if (Z && Z.nodeName == "OBJECT") {
|
|
if (typeof Z.SetVariable != E) {
|
|
Y = Z
|
|
} else {
|
|
var aa = Z.getElementsByTagName(s)[0];
|
|
if (aa) {
|
|
Y = aa
|
|
}
|
|
}
|
|
}
|
|
return Y
|
|
}
|
|
|
|
function B() {
|
|
return !a && G("6.0.65") && (N.win || N.mac) && !(N.wk && N.wk < 312)
|
|
}
|
|
|
|
function Q(ab, ac, Y, aa) {
|
|
a = true;
|
|
F = aa || null;
|
|
C = {success:false, id:Y};
|
|
var af = c(Y);
|
|
if (af) {
|
|
if (af.nodeName == "OBJECT") {
|
|
m = h(af);
|
|
R = null
|
|
} else {
|
|
m = af;
|
|
R = Y
|
|
}
|
|
ab.id = S;
|
|
if (typeof ab.width == E || (!(/%$/).test(ab.width) && parseInt(ab.width, 10) < 310)) {
|
|
ab.width = "310"
|
|
}
|
|
if (typeof ab.height == E || (!(/%$/).test(ab.height) && parseInt(ab.height, 10) < 137)) {
|
|
ab.height = "137"
|
|
}
|
|
k.title = k.title.slice(0, 47) + " - Flash Player Installation";
|
|
var ae = N.ie && N.win ? "ActiveX" : "PlugIn", ad = "MMredirectURL=" + P.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + ae + "&MMdoctitle=" + k.title;
|
|
if (typeof ac.flashvars != E) {
|
|
ac.flashvars += "&" + ad
|
|
} else {
|
|
ac.flashvars = ad
|
|
}
|
|
if (N.ie && N.win && af.readyState != 4) {
|
|
var Z = D("div");
|
|
Y += "SWFObjectNew";
|
|
Z.setAttribute("id", Y);
|
|
af.parentNode.insertBefore(Z, af);
|
|
af.style.display = "none";
|
|
(function () {
|
|
if (af.readyState == 4) {
|
|
af.parentNode.removeChild(af)
|
|
} else {
|
|
setTimeout(arguments.callee, 10)
|
|
}
|
|
})()
|
|
}
|
|
v(ab, ac, Y)
|
|
}
|
|
}
|
|
|
|
function q(Z) {
|
|
if (N.ie && N.win && Z.readyState != 4) {
|
|
var Y = D("div");
|
|
Z.parentNode.insertBefore(Y, Z);
|
|
Y.parentNode.replaceChild(h(Z), Y);
|
|
Z.style.display = "none";
|
|
(function () {
|
|
if (Z.readyState == 4) {
|
|
Z.parentNode.removeChild(Z)
|
|
} else {
|
|
setTimeout(arguments.callee, 10)
|
|
}
|
|
})()
|
|
} else {
|
|
Z.parentNode.replaceChild(h(Z), Z)
|
|
}
|
|
}
|
|
|
|
function h(ad) {
|
|
var ab = D("div");
|
|
if (N.win && N.ie) {
|
|
ab.innerHTML = ad.innerHTML
|
|
} else {
|
|
var Z = ad.getElementsByTagName(s)[0];
|
|
if (Z) {
|
|
var ae = Z.childNodes;
|
|
if (ae) {
|
|
var Y = ae.length;
|
|
for (var aa = 0; aa < Y; aa++) {
|
|
if (!(ae[aa].nodeType == 1 && ae[aa].nodeName == "PARAM") && !(ae[aa].nodeType == 8)) {
|
|
ab.appendChild(ae[aa].cloneNode(true))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ab
|
|
}
|
|
|
|
function v(aj, ah, Z) {
|
|
var Y, ab = c(Z);
|
|
if (N.wk && N.wk < 312) {
|
|
return Y
|
|
}
|
|
if (ab) {
|
|
if (typeof aj.id == E) {
|
|
aj.id = Z
|
|
}
|
|
if (N.ie && N.win) {
|
|
var ai = "";
|
|
for (var af in aj) {
|
|
if (aj[af] != Object.prototype[af]) {
|
|
if (af.toLowerCase() == "data") {
|
|
ah.movie = aj[af]
|
|
} else {
|
|
if (af.toLowerCase() == "styleclass") {
|
|
ai += ' class="' + aj[af] + '"'
|
|
} else {
|
|
if (af.toLowerCase() != "classid") {
|
|
ai += " " + af + '="' + aj[af] + '"'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var ag = "";
|
|
for (var ae in ah) {
|
|
if (ah[ae] != Object.prototype[ae]) {
|
|
ag += '<param name="' + ae + '" value="' + ah[ae] + '" />'
|
|
}
|
|
}
|
|
ab.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + ai + ">" + ag + "</object>";
|
|
O[O.length] = aj.id;
|
|
Y = c(aj.id)
|
|
} else {
|
|
var aa = D(s);
|
|
aa.setAttribute("type", r);
|
|
for (var ad in aj) {
|
|
if (aj[ad] != Object.prototype[ad]) {
|
|
if (ad.toLowerCase() == "styleclass") {
|
|
aa.setAttribute("class", aj[ad])
|
|
} else {
|
|
if (ad.toLowerCase() != "classid") {
|
|
aa.setAttribute(ad, aj[ad])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (var ac in ah) {
|
|
if (ah[ac] != Object.prototype[ac] && ac.toLowerCase() != "movie") {
|
|
e(aa, ac, ah[ac])
|
|
}
|
|
}
|
|
ab.parentNode.replaceChild(aa, ab);
|
|
Y = aa
|
|
}
|
|
}
|
|
return Y
|
|
}
|
|
|
|
function e(aa, Y, Z) {
|
|
var ab = D("param");
|
|
ab.setAttribute("name", Y);
|
|
ab.setAttribute("value", Z);
|
|
aa.appendChild(ab)
|
|
}
|
|
|
|
function z(Z) {
|
|
var Y = c(Z);
|
|
if (Y && Y.nodeName == "OBJECT") {
|
|
if (N.ie && N.win) {
|
|
Y.style.display = "none";
|
|
(function () {
|
|
if (Y.readyState == 4) {
|
|
b(Z)
|
|
} else {
|
|
setTimeout(arguments.callee, 10)
|
|
}
|
|
})()
|
|
} else {
|
|
Y.parentNode.removeChild(Y)
|
|
}
|
|
}
|
|
}
|
|
|
|
function b(aa) {
|
|
var Z = c(aa);
|
|
if (Z) {
|
|
for (var Y in Z) {
|
|
if (typeof Z[Y] == "function") {
|
|
Z[Y] = null
|
|
}
|
|
}
|
|
Z.parentNode.removeChild(Z)
|
|
}
|
|
}
|
|
|
|
function c(aa) {
|
|
var Y = null;
|
|
try {
|
|
Y = k.getElementById(aa)
|
|
} catch (Z) {
|
|
}
|
|
return Y
|
|
}
|
|
|
|
function D(Y) {
|
|
return k.createElement(Y)
|
|
}
|
|
|
|
function j(aa, Y, Z) {
|
|
aa.attachEvent(Y, Z);
|
|
J[J.length] = [aa, Y, Z]
|
|
}
|
|
|
|
function G(aa) {
|
|
var Z = N.pv, Y = aa.split(".");
|
|
Y[0] = parseInt(Y[0], 10);
|
|
Y[1] = parseInt(Y[1], 10) || 0;
|
|
Y[2] = parseInt(Y[2], 10) || 0;
|
|
return(Z[0] > Y[0] || (Z[0] == Y[0] && Z[1] > Y[1]) || (Z[0] == Y[0] && Z[1] == Y[1] && Z[2] >= Y[2])) ? true : false
|
|
}
|
|
|
|
function w(ad, Z, ae, ac) {
|
|
if (N.ie && N.mac) {
|
|
return
|
|
}
|
|
var ab = k.getElementsByTagName("head")[0];
|
|
if (!ab) {
|
|
return
|
|
}
|
|
var Y = (ae && typeof ae == "string") ? ae : "screen";
|
|
if (ac) {
|
|
o = null;
|
|
H = null
|
|
}
|
|
if (!o || H != Y) {
|
|
var aa = D("style");
|
|
aa.setAttribute("type", "text/css");
|
|
aa.setAttribute("media", Y);
|
|
o = ab.appendChild(aa);
|
|
if (N.ie && N.win && typeof k.styleSheets != E && k.styleSheets.length > 0) {
|
|
o = k.styleSheets[k.styleSheets.length - 1]
|
|
}
|
|
H = Y
|
|
}
|
|
if (N.ie && N.win) {
|
|
if (o && typeof o.addRule == s) {
|
|
o.addRule(ad, Z)
|
|
}
|
|
} else {
|
|
if (o && typeof k.createTextNode != E) {
|
|
o.appendChild(k.createTextNode(ad + " {" + Z + "}"))
|
|
}
|
|
}
|
|
}
|
|
|
|
function x(aa, Y) {
|
|
if (!n) {
|
|
return
|
|
}
|
|
var Z = Y ? "visible" : "hidden";
|
|
if (K && c(aa)) {
|
|
c(aa).style.visibility = Z
|
|
} else {
|
|
w("#" + aa, "visibility:" + Z)
|
|
}
|
|
}
|
|
|
|
function M(Z) {
|
|
var aa = /[\\\"<>\.;]/;
|
|
var Y = aa.exec(Z) != null;
|
|
return Y && typeof encodeURIComponent != E ? encodeURIComponent(Z) : Z
|
|
}
|
|
|
|
var d = function () {
|
|
if (N.ie && N.win) {
|
|
window.attachEvent("onunload", function () {
|
|
var ad = J.length;
|
|
for (var ac = 0; ac < ad; ac++) {
|
|
J[ac][0].detachEvent(J[ac][1], J[ac][2])
|
|
}
|
|
var aa = O.length;
|
|
for (var ab = 0; ab < aa; ab++) {
|
|
z(O[ab])
|
|
}
|
|
for (var Z in N) {
|
|
N[Z] = null
|
|
}
|
|
N = null;
|
|
for (var Y in swfobject) {
|
|
swfobject[Y] = null
|
|
}
|
|
swfobject = null;
|
|
window.detachEvent("onunload", arguments.callee)
|
|
})
|
|
}
|
|
}();
|
|
return{registerObject:function (ac, Y, ab, aa) {
|
|
if (N.w3 && ac && Y) {
|
|
var Z = {};
|
|
Z.id = ac;
|
|
Z.swfVersion = Y;
|
|
Z.expressInstall = ab;
|
|
Z.callbackFn = aa;
|
|
p[p.length] = Z;
|
|
x(ac, false)
|
|
} else {
|
|
if (aa) {
|
|
aa({success:false, id:ac})
|
|
}
|
|
}
|
|
}, getObjectById:function (Y) {
|
|
if (N.w3) {
|
|
return A(Y)
|
|
}
|
|
}, embedSWF:function (ac, ai, af, ah, Z, ab, aa, ae, ag, ad) {
|
|
var Y = {success:false, id:ai};
|
|
if (N.w3 && !(N.wk && N.wk < 312) && ac && ai && af && ah && Z) {
|
|
x(ai, false);
|
|
L(function () {
|
|
af += "";
|
|
ah += "";
|
|
var ak = {};
|
|
if (ag && typeof ag === s) {
|
|
for (var am in ag) {
|
|
ak[am] = ag[am]
|
|
}
|
|
}
|
|
ak.data = ac;
|
|
ak.width = af;
|
|
ak.height = ah;
|
|
var an = {};
|
|
if (ae && typeof ae === s) {
|
|
for (var al in ae) {
|
|
an[al] = ae[al]
|
|
}
|
|
}
|
|
if (aa && typeof aa === s) {
|
|
for (var aj in aa) {
|
|
if (typeof an.flashvars != E) {
|
|
an.flashvars += "&" + aj + "=" + aa[aj]
|
|
} else {
|
|
an.flashvars = aj + "=" + aa[aj]
|
|
}
|
|
}
|
|
}
|
|
if (G(Z)) {
|
|
var ao = v(ak, an, ai);
|
|
if (ak.id == ai) {
|
|
x(ai, true)
|
|
}
|
|
Y.success = true;
|
|
Y.ref = ao
|
|
} else {
|
|
if (ab && B()) {
|
|
ak.data = ab;
|
|
Q(ak, an, ai, ad);
|
|
return
|
|
} else {
|
|
x(ai, true)
|
|
}
|
|
}
|
|
if (ad) {
|
|
ad(Y)
|
|
}
|
|
})
|
|
} else {
|
|
if (ad) {
|
|
ad(Y)
|
|
}
|
|
}
|
|
}, switchOffAutoHideShow:function () {
|
|
n = false
|
|
}, ua:N, getFlashPlayerVersion:function () {
|
|
return{major:N.pv[0], minor:N.pv[1], release:N.pv[2]}
|
|
}, hasFlashPlayerVersion:G, createSWF:function (aa, Z, Y) {
|
|
if (N.w3) {
|
|
return v(aa, Z, Y)
|
|
} else {
|
|
return undefined
|
|
}
|
|
}, showExpressInstall:function (aa, ab, Y, Z) {
|
|
if (N.w3 && B()) {
|
|
Q(aa, ab, Y, Z)
|
|
}
|
|
}, removeSWF:function (Y) {
|
|
if (N.w3) {
|
|
z(Y)
|
|
}
|
|
}, createCSS:function (ab, aa, Z, Y) {
|
|
if (N.w3) {
|
|
w(ab, aa, Z, Y)
|
|
}
|
|
}, addDomLoadEvent:L, addLoadEvent:t, getQueryParamValue:function (ab) {
|
|
var aa = k.location.search || k.location.hash;
|
|
if (aa) {
|
|
if (/\?/.test(aa)) {
|
|
aa = aa.split("?")[1]
|
|
}
|
|
if (ab == null) {
|
|
return M(aa)
|
|
}
|
|
var Z = aa.split("&");
|
|
for (var Y = 0; Y < Z.length; Y++) {
|
|
if (Z[Y].substring(0, Z[Y].indexOf("=")) == ab) {
|
|
return M(Z[Y].substring((Z[Y].indexOf("=") + 1)))
|
|
}
|
|
}
|
|
}
|
|
return""
|
|
}, expressInstallCallback:function () {
|
|
if (a) {
|
|
var Y = c(S);
|
|
if (Y && m) {
|
|
Y.parentNode.replaceChild(m, Y);
|
|
if (R) {
|
|
x(R, true);
|
|
if (N.ie && N.win) {
|
|
m.style.display = "block"
|
|
}
|
|
}
|
|
if (F) {
|
|
F(C)
|
|
}
|
|
}
|
|
a = false
|
|
}
|
|
}}
|
|
}();
|
|
Ext.FlashComponent = Ext.extend(Ext.BoxComponent, {flashVersion:"9.0.115", backgroundColor:"#ffffff", wmode:"opaque", flashVars:undefined, flashParams:undefined, url:undefined, swfId:undefined, swfWidth:"100%", swfHeight:"100%", expressInstall:false, initComponent:function () {
|
|
Ext.FlashComponent.superclass.initComponent.call(this);
|
|
this.addEvents("initialize")
|
|
}, onRender:function () {
|
|
Ext.FlashComponent.superclass.onRender.apply(this, arguments);
|
|
var b = Ext.apply({allowScriptAccess:"always", bgcolor:this.backgroundColor, wmode:this.wmode}, this.flashParams), a = Ext.apply({allowedDomain:document.location.hostname, YUISwfId:this.getId(), YUIBridgeCallback:"Ext.FlashEventProxy.onEvent"}, this.flashVars);
|
|
new swfobject.embedSWF(this.url, this.id, this.swfWidth, this.swfHeight, this.flashVersion, this.expressInstall ? Ext.FlashComponent.EXPRESS_INSTALL_URL : undefined, a, b);
|
|
this.swf = Ext.getDom(this.id);
|
|
this.el = Ext.get(this.swf)
|
|
}, getSwfId:function () {
|
|
return this.swfId || (this.swfId = "extswf" + (++Ext.Component.AUTO_ID))
|
|
}, getId:function () {
|
|
return this.id || (this.id = "extflashcmp" + (++Ext.Component.AUTO_ID))
|
|
}, onFlashEvent:function (a) {
|
|
switch (a.type) {
|
|
case"swfReady":
|
|
this.initSwf();
|
|
return;
|
|
case"log":
|
|
return
|
|
}
|
|
a.component = this;
|
|
this.fireEvent(a.type.toLowerCase().replace(/event$/, ""), a)
|
|
}, initSwf:function () {
|
|
this.onSwfReady(!!this.isInitialized);
|
|
this.isInitialized = true;
|
|
this.fireEvent("initialize", this)
|
|
}, beforeDestroy:function () {
|
|
if (this.rendered) {
|
|
swfobject.removeSWF(this.swf.id)
|
|
}
|
|
Ext.FlashComponent.superclass.beforeDestroy.call(this)
|
|
}, onSwfReady:Ext.emptyFn});
|
|
Ext.FlashComponent.EXPRESS_INSTALL_URL = "http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf";
|
|
Ext.reg("flash", Ext.FlashComponent);
|
|
Ext.FlashEventProxy = {onEvent:function (c, b) {
|
|
var a = Ext.getCmp(c);
|
|
if (a) {
|
|
a.onFlashEvent(b)
|
|
} else {
|
|
arguments.callee.defer(10, this, [c, b])
|
|
}
|
|
}};
|
|
Ext.chart.Chart = Ext.extend(Ext.FlashComponent, {refreshBuffer:100, chartStyle:{padding:10, animationEnabled:true, font:{name:"Tahoma", color:4473924, size:11}, dataTip:{padding:5, border:{color:10075112, size:1}, background:{color:14346230, alpha:0.9}, font:{name:"Tahoma", color:1393291, size:10, bold:true}}}, extraStyle:null, seriesStyles:null, disableCaching:Ext.isIE || Ext.isOpera, disableCacheParam:"_dc", initComponent:function () {
|
|
Ext.chart.Chart.superclass.initComponent.call(this);
|
|
if (!this.url) {
|
|
this.url = Ext.chart.Chart.CHART_URL
|
|
}
|
|
if (this.disableCaching) {
|
|
this.url = Ext.urlAppend(this.url, String.format("{0}={1}", this.disableCacheParam, new Date().getTime()))
|
|
}
|
|
this.addEvents("itemmouseover", "itemmouseout", "itemclick", "itemdoubleclick", "itemdragstart", "itemdrag", "itemdragend", "beforerefresh", "refresh");
|
|
this.store = Ext.StoreMgr.lookup(this.store)
|
|
}, setStyle:function (a, b) {
|
|
this.swf.setStyle(a, Ext.encode(b))
|
|
}, setStyles:function (a) {
|
|
this.swf.setStyles(Ext.encode(a))
|
|
}, setSeriesStyles:function (b) {
|
|
this.seriesStyles = b;
|
|
var a = [];
|
|
Ext.each(b, function (c) {
|
|
a.push(Ext.encode(c))
|
|
});
|
|
this.swf.setSeriesStyles(a)
|
|
}, setCategoryNames:function (a) {
|
|
this.swf.setCategoryNames(a)
|
|
}, setLegendRenderer:function (c, b) {
|
|
var a = this;
|
|
b = b || a;
|
|
a.removeFnProxy(a.legendFnName);
|
|
a.legendFnName = a.createFnProxy(function (d) {
|
|
return c.call(b, d)
|
|
});
|
|
a.swf.setLegendLabelFunction(a.legendFnName)
|
|
}, setTipRenderer:function (c, b) {
|
|
var a = this;
|
|
b = b || a;
|
|
a.removeFnProxy(a.tipFnName);
|
|
a.tipFnName = a.createFnProxy(function (h, e, g) {
|
|
var d = a.store.getAt(e);
|
|
return c.call(b, a, d, e, g)
|
|
});
|
|
a.swf.setDataTipFunction(a.tipFnName)
|
|
}, setSeries:function (a) {
|
|
this.series = a;
|
|
this.refresh()
|
|
}, bindStore:function (a, b) {
|
|
if (!b && this.store) {
|
|
if (a !== this.store && this.store.autoDestroy) {
|
|
this.store.destroy()
|
|
} else {
|
|
this.store.un("datachanged", this.refresh, this);
|
|
this.store.un("add", this.delayRefresh, this);
|
|
this.store.un("remove", this.delayRefresh, this);
|
|
this.store.un("update", this.delayRefresh, this);
|
|
this.store.un("clear", this.refresh, this)
|
|
}
|
|
}
|
|
if (a) {
|
|
a = Ext.StoreMgr.lookup(a);
|
|
a.on({scope:this, datachanged:this.refresh, add:this.delayRefresh, remove:this.delayRefresh, update:this.delayRefresh, clear:this.refresh})
|
|
}
|
|
this.store = a;
|
|
if (a && !b) {
|
|
this.refresh()
|
|
}
|
|
}, onSwfReady:function (b) {
|
|
Ext.chart.Chart.superclass.onSwfReady.call(this, b);
|
|
var a;
|
|
this.swf.setType(this.type);
|
|
if (this.chartStyle) {
|
|
this.setStyles(Ext.apply({}, this.extraStyle, this.chartStyle))
|
|
}
|
|
if (this.categoryNames) {
|
|
this.setCategoryNames(this.categoryNames)
|
|
}
|
|
if (this.tipRenderer) {
|
|
a = this.getFunctionRef(this.tipRenderer);
|
|
this.setTipRenderer(a.fn, a.scope)
|
|
}
|
|
if (this.legendRenderer) {
|
|
a = this.getFunctionRef(this.legendRenderer);
|
|
this.setLegendRenderer(a.fn, a.scope)
|
|
}
|
|
if (!b) {
|
|
this.bindStore(this.store, true)
|
|
}
|
|
this.refresh.defer(10, this)
|
|
}, delayRefresh:function () {
|
|
if (!this.refreshTask) {
|
|
this.refreshTask = new Ext.util.DelayedTask(this.refresh, this)
|
|
}
|
|
this.refreshTask.delay(this.refreshBuffer)
|
|
}, refresh:function () {
|
|
if (this.fireEvent("beforerefresh", this) !== false) {
|
|
var m = false;
|
|
var k = [], c = this.store.data.items;
|
|
for (var g = 0, l = c.length; g < l; g++) {
|
|
k[g] = c[g].data
|
|
}
|
|
var e = [];
|
|
var d = 0;
|
|
var n = null;
|
|
var h = 0;
|
|
if (this.series) {
|
|
d = this.series.length;
|
|
for (h = 0; h < d; h++) {
|
|
n = this.series[h];
|
|
var b = {};
|
|
for (var a in n) {
|
|
if (a == "style" && n.style !== null) {
|
|
b.style = Ext.encode(n.style);
|
|
m = true
|
|
} else {
|
|
b[a] = n[a]
|
|
}
|
|
}
|
|
e.push(b)
|
|
}
|
|
}
|
|
if (d > 0) {
|
|
for (h = 0; h < d; h++) {
|
|
n = e[h];
|
|
if (!n.type) {
|
|
n.type = this.type
|
|
}
|
|
n.dataProvider = k
|
|
}
|
|
} else {
|
|
e.push({type:this.type, dataProvider:k})
|
|
}
|
|
this.swf.setDataProvider(e);
|
|
if (this.seriesStyles) {
|
|
this.setSeriesStyles(this.seriesStyles)
|
|
}
|
|
this.fireEvent("refresh", this)
|
|
}
|
|
}, createFnProxy:function (a) {
|
|
var b = "extFnProxy" + (++Ext.chart.Chart.PROXY_FN_ID);
|
|
Ext.chart.Chart.proxyFunction[b] = a;
|
|
return"Ext.chart.Chart.proxyFunction." + b
|
|
}, removeFnProxy:function (a) {
|
|
if (!Ext.isEmpty(a)) {
|
|
a = a.replace("Ext.chart.Chart.proxyFunction.", "");
|
|
delete Ext.chart.Chart.proxyFunction[a]
|
|
}
|
|
}, getFunctionRef:function (a) {
|
|
if (Ext.isFunction(a)) {
|
|
return{fn:a, scope:this}
|
|
} else {
|
|
return{fn:a.fn, scope:a.scope || this}
|
|
}
|
|
}, onDestroy:function () {
|
|
if (this.refreshTask && this.refreshTask.cancel) {
|
|
this.refreshTask.cancel()
|
|
}
|
|
Ext.chart.Chart.superclass.onDestroy.call(this);
|
|
this.bindStore(null);
|
|
this.removeFnProxy(this.tipFnName);
|
|
this.removeFnProxy(this.legendFnName)
|
|
}});
|
|
Ext.reg("chart", Ext.chart.Chart);
|
|
Ext.chart.Chart.PROXY_FN_ID = 0;
|
|
Ext.chart.Chart.proxyFunction = {};
|
|
Ext.chart.Chart.CHART_URL = "http://yui.yahooapis.com/2.8.2/build/charts/assets/charts.swf";
|
|
Ext.chart.PieChart = Ext.extend(Ext.chart.Chart, {type:"pie", onSwfReady:function (a) {
|
|
Ext.chart.PieChart.superclass.onSwfReady.call(this, a);
|
|
this.setDataField(this.dataField);
|
|
this.setCategoryField(this.categoryField)
|
|
}, setDataField:function (a) {
|
|
this.dataField = a;
|
|
this.swf.setDataField(a)
|
|
}, setCategoryField:function (a) {
|
|
this.categoryField = a;
|
|
this.swf.setCategoryField(a)
|
|
}});
|
|
Ext.reg("piechart", Ext.chart.PieChart);
|
|
Ext.chart.CartesianChart = Ext.extend(Ext.chart.Chart, {onSwfReady:function (a) {
|
|
Ext.chart.CartesianChart.superclass.onSwfReady.call(this, a);
|
|
this.labelFn = [];
|
|
if (this.xField) {
|
|
this.setXField(this.xField)
|
|
}
|
|
if (this.yField) {
|
|
this.setYField(this.yField)
|
|
}
|
|
if (this.xAxis) {
|
|
this.setXAxis(this.xAxis)
|
|
}
|
|
if (this.xAxes) {
|
|
this.setXAxes(this.xAxes)
|
|
}
|
|
if (this.yAxis) {
|
|
this.setYAxis(this.yAxis)
|
|
}
|
|
if (this.yAxes) {
|
|
this.setYAxes(this.yAxes)
|
|
}
|
|
if (Ext.isDefined(this.constrainViewport)) {
|
|
this.swf.setConstrainViewport(this.constrainViewport)
|
|
}
|
|
}, setXField:function (a) {
|
|
this.xField = a;
|
|
this.swf.setHorizontalField(a)
|
|
}, setYField:function (a) {
|
|
this.yField = a;
|
|
this.swf.setVerticalField(a)
|
|
}, setXAxis:function (a) {
|
|
this.xAxis = this.createAxis("xAxis", a);
|
|
this.swf.setHorizontalAxis(this.xAxis)
|
|
}, setXAxes:function (c) {
|
|
var b;
|
|
for (var a = 0; a < c.length; a++) {
|
|
b = this.createAxis("xAxis" + a, c[a]);
|
|
this.swf.setHorizontalAxis(b)
|
|
}
|
|
}, setYAxis:function (a) {
|
|
this.yAxis = this.createAxis("yAxis", a);
|
|
this.swf.setVerticalAxis(this.yAxis)
|
|
}, setYAxes:function (c) {
|
|
var b;
|
|
for (var a = 0; a < c.length; a++) {
|
|
b = this.createAxis("yAxis" + a, c[a]);
|
|
this.swf.setVerticalAxis(b)
|
|
}
|
|
}, createAxis:function (b, d) {
|
|
var e = Ext.apply({}, d), c, a;
|
|
if (this[b]) {
|
|
a = this[b].labelFunction;
|
|
this.removeFnProxy(a);
|
|
this.labelFn.remove(a)
|
|
}
|
|
if (e.labelRenderer) {
|
|
c = this.getFunctionRef(e.labelRenderer);
|
|
e.labelFunction = this.createFnProxy(function (g) {
|
|
return c.fn.call(c.scope, g)
|
|
});
|
|
delete e.labelRenderer;
|
|
this.labelFn.push(e.labelFunction)
|
|
}
|
|
if (b.indexOf("xAxis") > -1 && e.position == "left") {
|
|
e.position = "bottom"
|
|
}
|
|
return e
|
|
}, onDestroy:function () {
|
|
Ext.chart.CartesianChart.superclass.onDestroy.call(this);
|
|
Ext.each(this.labelFn, function (a) {
|
|
this.removeFnProxy(a)
|
|
}, this)
|
|
}});
|
|
Ext.reg("cartesianchart", Ext.chart.CartesianChart);
|
|
Ext.chart.LineChart = Ext.extend(Ext.chart.CartesianChart, {type:"line"});
|
|
Ext.reg("linechart", Ext.chart.LineChart);
|
|
Ext.chart.ColumnChart = Ext.extend(Ext.chart.CartesianChart, {type:"column"});
|
|
Ext.reg("columnchart", Ext.chart.ColumnChart);
|
|
Ext.chart.StackedColumnChart = Ext.extend(Ext.chart.CartesianChart, {type:"stackcolumn"});
|
|
Ext.reg("stackedcolumnchart", Ext.chart.StackedColumnChart);
|
|
Ext.chart.BarChart = Ext.extend(Ext.chart.CartesianChart, {type:"bar"});
|
|
Ext.reg("barchart", Ext.chart.BarChart);
|
|
Ext.chart.StackedBarChart = Ext.extend(Ext.chart.CartesianChart, {type:"stackbar"});
|
|
Ext.reg("stackedbarchart", Ext.chart.StackedBarChart);
|
|
Ext.chart.Axis = function (a) {
|
|
Ext.apply(this, a)
|
|
};
|
|
Ext.chart.Axis.prototype = {type:null, orientation:"horizontal", reverse:false, labelFunction:null, hideOverlappingLabels:true, labelSpacing:2};
|
|
Ext.chart.NumericAxis = Ext.extend(Ext.chart.Axis, {type:"numeric", minimum:NaN, maximum:NaN, majorUnit:NaN, minorUnit:NaN, snapToUnits:true, alwaysShowZero:true, scale:"linear", roundMajorUnit:true, calculateByLabelSize:true, position:"left", adjustMaximumByMajorUnit:true, adjustMinimumByMajorUnit:true});
|
|
Ext.chart.TimeAxis = Ext.extend(Ext.chart.Axis, {type:"time", minimum:null, maximum:null, majorUnit:NaN, majorTimeUnit:null, minorUnit:NaN, minorTimeUnit:null, snapToUnits:true, stackingEnabled:false, calculateByLabelSize:true});
|
|
Ext.chart.CategoryAxis = Ext.extend(Ext.chart.Axis, {type:"category", categoryNames:null, calculateCategoryCount:false});
|
|
Ext.chart.Series = function (a) {
|
|
Ext.apply(this, a)
|
|
};
|
|
Ext.chart.Series.prototype = {type:null, displayName:null};
|
|
Ext.chart.CartesianSeries = Ext.extend(Ext.chart.Series, {xField:null, yField:null, showInLegend:true, axis:"primary"});
|
|
Ext.chart.ColumnSeries = Ext.extend(Ext.chart.CartesianSeries, {type:"column"});
|
|
Ext.chart.LineSeries = Ext.extend(Ext.chart.CartesianSeries, {type:"line"});
|
|
Ext.chart.BarSeries = Ext.extend(Ext.chart.CartesianSeries, {type:"bar"});
|
|
Ext.chart.PieSeries = Ext.extend(Ext.chart.Series, {type:"pie", dataField:null, categoryField:null});
|
|
Ext.menu.Menu = Ext.extend(Ext.Container, {minWidth:120, shadow:"sides", subMenuAlign:"tl-tr?", defaultAlign:"tl-bl?", allowOtherMenus:false, ignoreParentClicks:false, enableScrolling:true, maxHeight:null, scrollIncrement:24, showSeparator:true, defaultOffsets:[0, 0], plain:false, floating:true, zIndex:15000, hidden:true, layout:"menu", hideMode:"offsets", scrollerHeight:8, autoLayout:true, defaultType:"menuitem", bufferResize:false, initComponent:function () {
|
|
if (Ext.isArray(this.initialConfig)) {
|
|
Ext.apply(this, {items:this.initialConfig})
|
|
}
|
|
this.addEvents("click", "mouseover", "mouseout", "itemclick");
|
|
Ext.menu.MenuMgr.register(this);
|
|
if (this.floating) {
|
|
Ext.EventManager.onWindowResize(this.hide, this)
|
|
} else {
|
|
if (this.initialConfig.hidden !== false) {
|
|
this.hidden = false
|
|
}
|
|
this.internalDefaults = {hideOnClick:false}
|
|
}
|
|
Ext.menu.Menu.superclass.initComponent.call(this);
|
|
if (this.autoLayout) {
|
|
var a = this.doLayout.createDelegate(this, []);
|
|
this.on({add:a, remove:a})
|
|
}
|
|
}, getLayoutTarget:function () {
|
|
return this.ul
|
|
}, onRender:function (b, a) {
|
|
if (!b) {
|
|
b = Ext.getBody()
|
|
}
|
|
var c = {id:this.getId(), cls:"x-menu " + ((this.floating) ? "x-menu-floating x-layer " : "") + (this.cls || "") + (this.plain ? " x-menu-plain" : "") + (this.showSeparator ? "" : " x-menu-nosep"), style:this.style, cn:[
|
|
{tag:"a", cls:"x-menu-focus", href:"#", onclick:"return false;", tabIndex:"-1"},
|
|
{tag:"ul", cls:"x-menu-list"}
|
|
]};
|
|
if (this.floating) {
|
|
this.el = new Ext.Layer({shadow:this.shadow, dh:c, constrain:false, parentEl:b, zindex:this.zIndex})
|
|
} else {
|
|
this.el = b.createChild(c)
|
|
}
|
|
Ext.menu.Menu.superclass.onRender.call(this, b, a);
|
|
if (!this.keyNav) {
|
|
this.keyNav = new Ext.menu.MenuNav(this)
|
|
}
|
|
this.focusEl = this.el.child("a.x-menu-focus");
|
|
this.ul = this.el.child("ul.x-menu-list");
|
|
this.mon(this.ul, {scope:this, click:this.onClick, mouseover:this.onMouseOver, mouseout:this.onMouseOut});
|
|
if (this.enableScrolling) {
|
|
this.mon(this.el, {scope:this, delegate:".x-menu-scroller", click:this.onScroll, mouseover:this.deactivateActive})
|
|
}
|
|
}, findTargetItem:function (b) {
|
|
var a = b.getTarget(".x-menu-list-item", this.ul, true);
|
|
if (a && a.menuItemId) {
|
|
return this.items.get(a.menuItemId)
|
|
}
|
|
}, onClick:function (b) {
|
|
var a = this.findTargetItem(b);
|
|
if (a) {
|
|
if (a.isFormField) {
|
|
this.setActiveItem(a)
|
|
} else {
|
|
if (a instanceof Ext.menu.BaseItem) {
|
|
if (a.menu && this.ignoreParentClicks) {
|
|
a.expandMenu();
|
|
b.preventDefault()
|
|
} else {
|
|
if (a.onClick) {
|
|
a.onClick(b);
|
|
this.fireEvent("click", this, a, b)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, setActiveItem:function (a, b) {
|
|
if (a != this.activeItem) {
|
|
this.deactivateActive();
|
|
if ((this.activeItem = a).isFormField) {
|
|
a.focus()
|
|
} else {
|
|
a.activate(b)
|
|
}
|
|
} else {
|
|
if (b) {
|
|
a.expandMenu()
|
|
}
|
|
}
|
|
}, deactivateActive:function () {
|
|
var b = this.activeItem;
|
|
if (b) {
|
|
if (b.isFormField) {
|
|
if (b.collapse) {
|
|
b.collapse()
|
|
}
|
|
} else {
|
|
b.deactivate()
|
|
}
|
|
delete this.activeItem
|
|
}
|
|
}, tryActivate:function (g, e) {
|
|
var b = this.items;
|
|
for (var c = g, a = b.length; c >= 0 && c < a; c += e) {
|
|
var d = b.get(c);
|
|
if (d.isVisible() && !d.disabled && (d.canActivate || d.isFormField)) {
|
|
this.setActiveItem(d, false);
|
|
return d
|
|
}
|
|
}
|
|
return false
|
|
}, onMouseOver:function (b) {
|
|
var a = this.findTargetItem(b);
|
|
if (a) {
|
|
if (a.canActivate && !a.disabled) {
|
|
this.setActiveItem(a, true)
|
|
}
|
|
}
|
|
this.over = true;
|
|
this.fireEvent("mouseover", this, b, a)
|
|
}, onMouseOut:function (b) {
|
|
var a = this.findTargetItem(b);
|
|
if (a) {
|
|
if (a == this.activeItem && a.shouldDeactivate && a.shouldDeactivate(b)) {
|
|
this.activeItem.deactivate();
|
|
delete this.activeItem
|
|
}
|
|
}
|
|
this.over = false;
|
|
this.fireEvent("mouseout", this, b, a)
|
|
}, onScroll:function (d, b) {
|
|
if (d) {
|
|
d.stopEvent()
|
|
}
|
|
var a = this.ul.dom, c = Ext.fly(b).is(".x-menu-scroller-top");
|
|
a.scrollTop += this.scrollIncrement * (c ? -1 : 1);
|
|
if (c ? a.scrollTop <= 0 : a.scrollTop + this.activeMax >= a.scrollHeight) {
|
|
this.onScrollerOut(null, b)
|
|
}
|
|
}, onScrollerIn:function (d, b) {
|
|
var a = this.ul.dom, c = Ext.fly(b).is(".x-menu-scroller-top");
|
|
if (c ? a.scrollTop > 0 : a.scrollTop + this.activeMax < a.scrollHeight) {
|
|
Ext.fly(b).addClass(["x-menu-item-active", "x-menu-scroller-active"])
|
|
}
|
|
}, onScrollerOut:function (b, a) {
|
|
Ext.fly(a).removeClass(["x-menu-item-active", "x-menu-scroller-active"])
|
|
}, show:function (b, c, a) {
|
|
if (this.floating) {
|
|
this.parentMenu = a;
|
|
if (!this.el) {
|
|
this.render();
|
|
this.doLayout(false, true)
|
|
}
|
|
this.showAt(this.el.getAlignToXY(b, c || this.defaultAlign, this.defaultOffsets), a)
|
|
} else {
|
|
Ext.menu.Menu.superclass.show.call(this)
|
|
}
|
|
}, showAt:function (b, a) {
|
|
if (this.fireEvent("beforeshow", this) !== false) {
|
|
this.parentMenu = a;
|
|
if (!this.el) {
|
|
this.render()
|
|
}
|
|
if (this.enableScrolling) {
|
|
this.el.setXY(b);
|
|
b[1] = this.constrainScroll(b[1]);
|
|
b = [this.el.adjustForConstraints(b)[0], b[1]]
|
|
} else {
|
|
b = this.el.adjustForConstraints(b)
|
|
}
|
|
this.el.setXY(b);
|
|
this.el.show();
|
|
Ext.menu.Menu.superclass.onShow.call(this);
|
|
if (Ext.isIE) {
|
|
this.fireEvent("autosize", this);
|
|
if (!Ext.isIE8) {
|
|
this.el.repaint()
|
|
}
|
|
}
|
|
this.hidden = false;
|
|
this.focus();
|
|
this.fireEvent("show", this)
|
|
}
|
|
}, constrainScroll:function (i) {
|
|
var b, d = this.ul.setHeight("auto").getHeight(), a = i, h, e, g, c;
|
|
if (this.floating) {
|
|
e = Ext.fly(this.el.dom.parentNode);
|
|
g = e.getScroll().top;
|
|
c = e.getViewSize().height;
|
|
h = i - g;
|
|
b = this.maxHeight ? this.maxHeight : c - h;
|
|
if (d > c) {
|
|
b = c;
|
|
a = i - h
|
|
} else {
|
|
if (b < d) {
|
|
a = i - (d - b);
|
|
b = d
|
|
}
|
|
}
|
|
} else {
|
|
b = this.getHeight()
|
|
}
|
|
if (this.maxHeight) {
|
|
b = Math.min(this.maxHeight, b)
|
|
}
|
|
if (d > b && b > 0) {
|
|
this.activeMax = b - this.scrollerHeight * 2 - this.el.getFrameWidth("tb") - Ext.num(this.el.shadowOffset, 0);
|
|
this.ul.setHeight(this.activeMax);
|
|
this.createScrollers();
|
|
this.el.select(".x-menu-scroller").setDisplayed("")
|
|
} else {
|
|
this.ul.setHeight(d);
|
|
this.el.select(".x-menu-scroller").setDisplayed("none")
|
|
}
|
|
this.ul.dom.scrollTop = 0;
|
|
return a
|
|
}, createScrollers:function () {
|
|
if (!this.scroller) {
|
|
this.scroller = {pos:0, top:this.el.insertFirst({tag:"div", cls:"x-menu-scroller x-menu-scroller-top", html:" "}), bottom:this.el.createChild({tag:"div", cls:"x-menu-scroller x-menu-scroller-bottom", html:" "})};
|
|
this.scroller.top.hover(this.onScrollerIn, this.onScrollerOut, this);
|
|
this.scroller.topRepeater = new Ext.util.ClickRepeater(this.scroller.top, {listeners:{click:this.onScroll.createDelegate(this, [null, this.scroller.top], false)}});
|
|
this.scroller.bottom.hover(this.onScrollerIn, this.onScrollerOut, this);
|
|
this.scroller.bottomRepeater = new Ext.util.ClickRepeater(this.scroller.bottom, {listeners:{click:this.onScroll.createDelegate(this, [null, this.scroller.bottom], false)}})
|
|
}
|
|
}, onLayout:function () {
|
|
if (this.isVisible()) {
|
|
if (this.enableScrolling) {
|
|
this.constrainScroll(this.el.getTop())
|
|
}
|
|
if (this.floating) {
|
|
this.el.sync()
|
|
}
|
|
}
|
|
}, focus:function () {
|
|
if (!this.hidden) {
|
|
this.doFocus.defer(50, this)
|
|
}
|
|
}, doFocus:function () {
|
|
if (!this.hidden) {
|
|
this.focusEl.focus()
|
|
}
|
|
}, hide:function (a) {
|
|
if (!this.isDestroyed) {
|
|
this.deepHide = a;
|
|
Ext.menu.Menu.superclass.hide.call(this);
|
|
delete this.deepHide
|
|
}
|
|
}, onHide:function () {
|
|
Ext.menu.Menu.superclass.onHide.call(this);
|
|
this.deactivateActive();
|
|
if (this.el && this.floating) {
|
|
this.el.hide()
|
|
}
|
|
var a = this.parentMenu;
|
|
if (this.deepHide === true && a) {
|
|
if (a.floating) {
|
|
a.hide(true)
|
|
} else {
|
|
a.deactivateActive()
|
|
}
|
|
}
|
|
}, lookupComponent:function (a) {
|
|
if (Ext.isString(a)) {
|
|
a = (a == "separator" || a == "-") ? new Ext.menu.Separator() : new Ext.menu.TextItem(a);
|
|
this.applyDefaults(a)
|
|
} else {
|
|
if (Ext.isObject(a)) {
|
|
a = this.getMenuItem(a)
|
|
} else {
|
|
if (a.tagName || a.el) {
|
|
a = new Ext.BoxComponent({el:a})
|
|
}
|
|
}
|
|
}
|
|
return a
|
|
}, applyDefaults:function (b) {
|
|
if (!Ext.isString(b)) {
|
|
b = Ext.menu.Menu.superclass.applyDefaults.call(this, b);
|
|
var a = this.internalDefaults;
|
|
if (a) {
|
|
if (b.events) {
|
|
Ext.applyIf(b.initialConfig, a);
|
|
Ext.apply(b, a)
|
|
} else {
|
|
Ext.applyIf(b, a)
|
|
}
|
|
}
|
|
}
|
|
return b
|
|
}, getMenuItem:function (a) {
|
|
a.ownerCt = this;
|
|
if (!a.isXType) {
|
|
if (!a.xtype && Ext.isBoolean(a.checked)) {
|
|
return new Ext.menu.CheckItem(a)
|
|
}
|
|
return Ext.create(a, this.defaultType)
|
|
}
|
|
return a
|
|
}, addSeparator:function () {
|
|
return this.add(new Ext.menu.Separator())
|
|
}, addElement:function (a) {
|
|
return this.add(new Ext.menu.BaseItem({el:a}))
|
|
}, addItem:function (a) {
|
|
return this.add(a)
|
|
}, addMenuItem:function (a) {
|
|
return this.add(this.getMenuItem(a))
|
|
}, addText:function (a) {
|
|
return this.add(new Ext.menu.TextItem(a))
|
|
}, onDestroy:function () {
|
|
Ext.EventManager.removeResizeListener(this.hide, this);
|
|
var a = this.parentMenu;
|
|
if (a && a.activeChild == this) {
|
|
delete a.activeChild
|
|
}
|
|
delete this.parentMenu;
|
|
Ext.menu.Menu.superclass.onDestroy.call(this);
|
|
Ext.menu.MenuMgr.unregister(this);
|
|
if (this.keyNav) {
|
|
this.keyNav.disable()
|
|
}
|
|
var b = this.scroller;
|
|
if (b) {
|
|
Ext.destroy(b.topRepeater, b.bottomRepeater, b.top, b.bottom)
|
|
}
|
|
Ext.destroy(this.el, this.focusEl, this.ul)
|
|
}});
|
|
Ext.reg("menu", Ext.menu.Menu);
|
|
Ext.menu.MenuNav = Ext.extend(Ext.KeyNav, function () {
|
|
function a(d, c) {
|
|
if (!c.tryActivate(c.items.indexOf(c.activeItem) - 1, -1)) {
|
|
c.tryActivate(c.items.length - 1, -1)
|
|
}
|
|
}
|
|
|
|
function b(d, c) {
|
|
if (!c.tryActivate(c.items.indexOf(c.activeItem) + 1, 1)) {
|
|
c.tryActivate(0, 1)
|
|
}
|
|
}
|
|
|
|
return{constructor:function (c) {
|
|
Ext.menu.MenuNav.superclass.constructor.call(this, c.el);
|
|
this.scope = this.menu = c
|
|
}, doRelay:function (g, d) {
|
|
var c = g.getKey();
|
|
if (this.menu.activeItem && this.menu.activeItem.isFormField && c != g.TAB) {
|
|
return false
|
|
}
|
|
if (!this.menu.activeItem && g.isNavKeyPress() && c != g.SPACE && c != g.RETURN) {
|
|
this.menu.tryActivate(0, 1);
|
|
return false
|
|
}
|
|
return d.call(this.scope || this, g, this.menu)
|
|
}, tab:function (d, c) {
|
|
d.stopEvent();
|
|
if (d.shiftKey) {
|
|
a(d, c)
|
|
} else {
|
|
b(d, c)
|
|
}
|
|
}, up:a, down:b, right:function (d, c) {
|
|
if (c.activeItem) {
|
|
c.activeItem.expandMenu(true)
|
|
}
|
|
}, left:function (d, c) {
|
|
c.hide();
|
|
if (c.parentMenu && c.parentMenu.activeItem) {
|
|
c.parentMenu.activeItem.activate()
|
|
}
|
|
}, enter:function (d, c) {
|
|
if (c.activeItem) {
|
|
d.stopPropagation();
|
|
c.activeItem.onClick(d);
|
|
c.fireEvent("click", this, c.activeItem);
|
|
return true
|
|
}
|
|
}}
|
|
}());
|
|
Ext.menu.MenuMgr = function () {
|
|
var h, e, b, d = {}, a = false, l = new Date();
|
|
|
|
function n() {
|
|
h = {};
|
|
e = new Ext.util.MixedCollection();
|
|
b = Ext.getDoc().addKeyListener(27, j);
|
|
b.disable()
|
|
}
|
|
|
|
function j() {
|
|
if (e && e.length > 0) {
|
|
var o = e.clone();
|
|
o.each(function (p) {
|
|
p.hide()
|
|
});
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
function g(o) {
|
|
e.remove(o);
|
|
if (e.length < 1) {
|
|
b.disable();
|
|
Ext.getDoc().un("mousedown", m);
|
|
a = false
|
|
}
|
|
}
|
|
|
|
function k(o) {
|
|
var p = e.last();
|
|
l = new Date();
|
|
e.add(o);
|
|
if (!a) {
|
|
b.enable();
|
|
Ext.getDoc().on("mousedown", m);
|
|
a = true
|
|
}
|
|
if (o.parentMenu) {
|
|
o.getEl().setZIndex(parseInt(o.parentMenu.getEl().getStyle("z-index"), 10) + 3);
|
|
o.parentMenu.activeChild = o
|
|
} else {
|
|
if (p && !p.isDestroyed && p.isVisible()) {
|
|
o.getEl().setZIndex(parseInt(p.getEl().getStyle("z-index"), 10) + 3)
|
|
}
|
|
}
|
|
}
|
|
|
|
function c(o) {
|
|
if (o.activeChild) {
|
|
o.activeChild.hide()
|
|
}
|
|
if (o.autoHideTimer) {
|
|
clearTimeout(o.autoHideTimer);
|
|
delete o.autoHideTimer
|
|
}
|
|
}
|
|
|
|
function i(o) {
|
|
var p = o.parentMenu;
|
|
if (!p && !o.allowOtherMenus) {
|
|
j()
|
|
} else {
|
|
if (p && p.activeChild) {
|
|
p.activeChild.hide()
|
|
}
|
|
}
|
|
}
|
|
|
|
function m(o) {
|
|
if (l.getElapsed() > 50 && e.length > 0 && !o.getTarget(".x-menu")) {
|
|
j()
|
|
}
|
|
}
|
|
|
|
return{hideAll:function () {
|
|
return j()
|
|
}, register:function (o) {
|
|
if (!h) {
|
|
n()
|
|
}
|
|
h[o.id] = o;
|
|
o.on({beforehide:c, hide:g, beforeshow:i, show:k})
|
|
}, get:function (o) {
|
|
if (typeof o == "string") {
|
|
if (!h) {
|
|
return null
|
|
}
|
|
return h[o]
|
|
} else {
|
|
if (o.events) {
|
|
return o
|
|
} else {
|
|
if (typeof o.length == "number") {
|
|
return new Ext.menu.Menu({items:o})
|
|
} else {
|
|
return Ext.create(o, "menu")
|
|
}
|
|
}
|
|
}
|
|
}, unregister:function (o) {
|
|
delete h[o.id];
|
|
o.un("beforehide", c);
|
|
o.un("hide", g);
|
|
o.un("beforeshow", i);
|
|
o.un("show", k)
|
|
}, registerCheckable:function (o) {
|
|
var p = o.group;
|
|
if (p) {
|
|
if (!d[p]) {
|
|
d[p] = []
|
|
}
|
|
d[p].push(o)
|
|
}
|
|
}, unregisterCheckable:function (o) {
|
|
var p = o.group;
|
|
if (p) {
|
|
d[p].remove(o)
|
|
}
|
|
}, onCheckChange:function (q, r) {
|
|
if (q.group && r) {
|
|
var t = d[q.group], p = 0, o = t.length, s;
|
|
for (; p < o; p++) {
|
|
s = t[p];
|
|
if (s != q) {
|
|
s.setChecked(false)
|
|
}
|
|
}
|
|
}
|
|
}, getCheckedItem:function (q) {
|
|
var r = d[q];
|
|
if (r) {
|
|
for (var p = 0, o = r.length; p < o; p++) {
|
|
if (r[p].checked) {
|
|
return r[p]
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
}, setCheckedItem:function (q, s) {
|
|
var r = d[q];
|
|
if (r) {
|
|
for (var p = 0, o = r.length; p < o; p++) {
|
|
if (r[p].id == s) {
|
|
r[p].setChecked(true)
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
}}
|
|
}();
|
|
Ext.menu.BaseItem = Ext.extend(Ext.Component, {canActivate:false, activeClass:"x-menu-item-active", hideOnClick:true, clickHideDelay:1, ctype:"Ext.menu.BaseItem", actionMode:"container", initComponent:function () {
|
|
Ext.menu.BaseItem.superclass.initComponent.call(this);
|
|
this.addEvents("click", "activate", "deactivate");
|
|
if (this.handler) {
|
|
this.on("click", this.handler, this.scope)
|
|
}
|
|
}, onRender:function (b, a) {
|
|
Ext.menu.BaseItem.superclass.onRender.apply(this, arguments);
|
|
if (this.ownerCt && this.ownerCt instanceof Ext.menu.Menu) {
|
|
this.parentMenu = this.ownerCt
|
|
} else {
|
|
this.container.addClass("x-menu-list-item");
|
|
this.mon(this.el, {scope:this, click:this.onClick, mouseenter:this.activate, mouseleave:this.deactivate})
|
|
}
|
|
}, setHandler:function (b, a) {
|
|
if (this.handler) {
|
|
this.un("click", this.handler, this.scope)
|
|
}
|
|
this.on("click", this.handler = b, this.scope = a)
|
|
}, onClick:function (a) {
|
|
if (!this.disabled && this.fireEvent("click", this, a) !== false && (this.parentMenu && this.parentMenu.fireEvent("itemclick", this, a) !== false)) {
|
|
this.handleClick(a)
|
|
} else {
|
|
a.stopEvent()
|
|
}
|
|
}, activate:function () {
|
|
if (this.disabled) {
|
|
return false
|
|
}
|
|
var a = this.container;
|
|
a.addClass(this.activeClass);
|
|
this.region = a.getRegion().adjust(2, 2, -2, -2);
|
|
this.fireEvent("activate", this);
|
|
return true
|
|
}, deactivate:function () {
|
|
this.container.removeClass(this.activeClass);
|
|
this.fireEvent("deactivate", this)
|
|
}, shouldDeactivate:function (a) {
|
|
return !this.region || !this.region.contains(a.getPoint())
|
|
}, handleClick:function (b) {
|
|
var a = this.parentMenu;
|
|
if (this.hideOnClick) {
|
|
if (a.floating) {
|
|
this.clickHideDelayTimer = a.hide.defer(this.clickHideDelay, a, [true])
|
|
} else {
|
|
a.deactivateActive()
|
|
}
|
|
}
|
|
}, beforeDestroy:function () {
|
|
clearTimeout(this.clickHideDelayTimer);
|
|
Ext.menu.BaseItem.superclass.beforeDestroy.call(this)
|
|
}, expandMenu:Ext.emptyFn, hideMenu:Ext.emptyFn});
|
|
Ext.reg("menubaseitem", Ext.menu.BaseItem);
|
|
Ext.menu.TextItem = Ext.extend(Ext.menu.BaseItem, {hideOnClick:false, itemCls:"x-menu-text", constructor:function (a) {
|
|
if (typeof a == "string") {
|
|
a = {text:a}
|
|
}
|
|
Ext.menu.TextItem.superclass.constructor.call(this, a)
|
|
}, onRender:function () {
|
|
var a = document.createElement("span");
|
|
a.className = this.itemCls;
|
|
a.innerHTML = this.text;
|
|
this.el = a;
|
|
Ext.menu.TextItem.superclass.onRender.apply(this, arguments)
|
|
}});
|
|
Ext.reg("menutextitem", Ext.menu.TextItem);
|
|
Ext.menu.Separator = Ext.extend(Ext.menu.BaseItem, {itemCls:"x-menu-sep", hideOnClick:false, activeClass:"", onRender:function (a) {
|
|
var b = document.createElement("span");
|
|
b.className = this.itemCls;
|
|
b.innerHTML = " ";
|
|
this.el = b;
|
|
a.addClass("x-menu-sep-li");
|
|
Ext.menu.Separator.superclass.onRender.apply(this, arguments)
|
|
}});
|
|
Ext.reg("menuseparator", Ext.menu.Separator);
|
|
Ext.menu.Item = Ext.extend(Ext.menu.BaseItem, {itemCls:"x-menu-item", canActivate:true, showDelay:200, altText:"", hideDelay:200, ctype:"Ext.menu.Item", initComponent:function () {
|
|
Ext.menu.Item.superclass.initComponent.call(this);
|
|
if (this.menu) {
|
|
if (Ext.isArray(this.menu)) {
|
|
this.menu = {items:this.menu}
|
|
}
|
|
if (Ext.isObject(this.menu)) {
|
|
this.menu.ownerCt = this
|
|
}
|
|
this.menu = Ext.menu.MenuMgr.get(this.menu);
|
|
this.menu.ownerCt = undefined
|
|
}
|
|
}, onRender:function (d, b) {
|
|
if (!this.itemTpl) {
|
|
this.itemTpl = Ext.menu.Item.prototype.itemTpl = new Ext.XTemplate('<a id="{id}" class="{cls}" hidefocus="true" unselectable="on" href="{href}"', '<tpl if="hrefTarget">', ' target="{hrefTarget}"', "</tpl>", ">", '<img alt="{altText}" src="{icon}" class="x-menu-item-icon {iconCls}"/>', '<span class="x-menu-item-text">{text}</span>', "</a>")
|
|
}
|
|
var c = this.getTemplateArgs();
|
|
this.el = b ? this.itemTpl.insertBefore(b, c, true) : this.itemTpl.append(d, c, true);
|
|
this.iconEl = this.el.child("img.x-menu-item-icon");
|
|
this.textEl = this.el.child(".x-menu-item-text");
|
|
if (!this.href) {
|
|
this.mon(this.el, "click", Ext.emptyFn, null, {preventDefault:true})
|
|
}
|
|
Ext.menu.Item.superclass.onRender.call(this, d, b)
|
|
}, getTemplateArgs:function () {
|
|
return{id:this.id, cls:this.itemCls + (this.menu ? " x-menu-item-arrow" : "") + (this.cls ? " " + this.cls : ""), href:this.href || "#", hrefTarget:this.hrefTarget, icon:this.icon || Ext.BLANK_IMAGE_URL, iconCls:this.iconCls || "", text:this.itemText || this.text || " ", altText:this.altText || ""}
|
|
}, setText:function (a) {
|
|
this.text = a || " ";
|
|
if (this.rendered) {
|
|
this.textEl.update(this.text);
|
|
this.parentMenu.layout.doAutoSize()
|
|
}
|
|
}, setIconClass:function (a) {
|
|
var b = this.iconCls;
|
|
this.iconCls = a;
|
|
if (this.rendered) {
|
|
this.iconEl.replaceClass(b, this.iconCls)
|
|
}
|
|
}, beforeDestroy:function () {
|
|
clearTimeout(this.showTimer);
|
|
clearTimeout(this.hideTimer);
|
|
if (this.menu) {
|
|
delete this.menu.ownerCt;
|
|
this.menu.destroy()
|
|
}
|
|
Ext.menu.Item.superclass.beforeDestroy.call(this)
|
|
}, handleClick:function (a) {
|
|
if (!this.href) {
|
|
a.stopEvent()
|
|
}
|
|
Ext.menu.Item.superclass.handleClick.apply(this, arguments)
|
|
}, activate:function (a) {
|
|
if (Ext.menu.Item.superclass.activate.apply(this, arguments)) {
|
|
this.focus();
|
|
if (a) {
|
|
this.expandMenu()
|
|
}
|
|
}
|
|
return true
|
|
}, shouldDeactivate:function (a) {
|
|
if (Ext.menu.Item.superclass.shouldDeactivate.call(this, a)) {
|
|
if (this.menu && this.menu.isVisible()) {
|
|
return !this.menu.getEl().getRegion().contains(a.getPoint())
|
|
}
|
|
return true
|
|
}
|
|
return false
|
|
}, deactivate:function () {
|
|
Ext.menu.Item.superclass.deactivate.apply(this, arguments);
|
|
this.hideMenu()
|
|
}, expandMenu:function (a) {
|
|
if (!this.disabled && this.menu) {
|
|
clearTimeout(this.hideTimer);
|
|
delete this.hideTimer;
|
|
if (!this.menu.isVisible() && !this.showTimer) {
|
|
this.showTimer = this.deferExpand.defer(this.showDelay, this, [a])
|
|
} else {
|
|
if (this.menu.isVisible() && a) {
|
|
this.menu.tryActivate(0, 1)
|
|
}
|
|
}
|
|
}
|
|
}, deferExpand:function (a) {
|
|
delete this.showTimer;
|
|
this.menu.show(this.container, this.parentMenu.subMenuAlign || "tl-tr?", this.parentMenu);
|
|
if (a) {
|
|
this.menu.tryActivate(0, 1)
|
|
}
|
|
}, hideMenu:function () {
|
|
clearTimeout(this.showTimer);
|
|
delete this.showTimer;
|
|
if (!this.hideTimer && this.menu && this.menu.isVisible()) {
|
|
this.hideTimer = this.deferHide.defer(this.hideDelay, this)
|
|
}
|
|
}, deferHide:function () {
|
|
delete this.hideTimer;
|
|
if (this.menu.over) {
|
|
this.parentMenu.setActiveItem(this, false)
|
|
} else {
|
|
this.menu.hide()
|
|
}
|
|
}});
|
|
Ext.reg("menuitem", Ext.menu.Item);
|
|
Ext.menu.CheckItem = Ext.extend(Ext.menu.Item, {itemCls:"x-menu-item x-menu-check-item", groupClass:"x-menu-group-item", checked:false, ctype:"Ext.menu.CheckItem", initComponent:function () {
|
|
Ext.menu.CheckItem.superclass.initComponent.call(this);
|
|
this.addEvents("beforecheckchange", "checkchange");
|
|
if (this.checkHandler) {
|
|
this.on("checkchange", this.checkHandler, this.scope)
|
|
}
|
|
Ext.menu.MenuMgr.registerCheckable(this)
|
|
}, onRender:function (a) {
|
|
Ext.menu.CheckItem.superclass.onRender.apply(this, arguments);
|
|
if (this.group) {
|
|
this.el.addClass(this.groupClass)
|
|
}
|
|
if (this.checked) {
|
|
this.checked = false;
|
|
this.setChecked(true, true)
|
|
}
|
|
}, destroy:function () {
|
|
Ext.menu.MenuMgr.unregisterCheckable(this);
|
|
Ext.menu.CheckItem.superclass.destroy.apply(this, arguments)
|
|
}, setChecked:function (b, a) {
|
|
var c = a === true;
|
|
if (this.checked != b && (c || this.fireEvent("beforecheckchange", this, b) !== false)) {
|
|
Ext.menu.MenuMgr.onCheckChange(this, b);
|
|
if (this.container) {
|
|
this.container[b ? "addClass" : "removeClass"]("x-menu-item-checked")
|
|
}
|
|
this.checked = b;
|
|
if (!c) {
|
|
this.fireEvent("checkchange", this, b)
|
|
}
|
|
}
|
|
}, handleClick:function (a) {
|
|
if (!this.disabled && !(this.checked && this.group)) {
|
|
this.setChecked(!this.checked)
|
|
}
|
|
Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments)
|
|
}});
|
|
Ext.reg("menucheckitem", Ext.menu.CheckItem);
|
|
Ext.menu.DateMenu = Ext.extend(Ext.menu.Menu, {enableScrolling:false, hideOnClick:true, pickerId:null, cls:"x-date-menu", initComponent:function () {
|
|
this.on("beforeshow", this.onBeforeShow, this);
|
|
if (this.strict = (Ext.isIE7 && Ext.isStrict)) {
|
|
this.on("show", this.onShow, this, {single:true, delay:20})
|
|
}
|
|
Ext.apply(this, {plain:true, showSeparator:false, items:this.picker = new Ext.DatePicker(Ext.applyIf({internalRender:this.strict || !Ext.isIE, ctCls:"x-menu-date-item", id:this.pickerId}, this.initialConfig))});
|
|
this.picker.purgeListeners();
|
|
Ext.menu.DateMenu.superclass.initComponent.call(this);
|
|
this.relayEvents(this.picker, ["select"]);
|
|
this.on("show", this.picker.focus, this.picker);
|
|
this.on("select", this.menuHide, this);
|
|
if (this.handler) {
|
|
this.on("select", this.handler, this.scope || this)
|
|
}
|
|
}, menuHide:function () {
|
|
if (this.hideOnClick) {
|
|
this.hide(true)
|
|
}
|
|
}, onBeforeShow:function () {
|
|
if (this.picker) {
|
|
this.picker.hideMonthPicker(true)
|
|
}
|
|
}, onShow:function () {
|
|
var a = this.picker.getEl();
|
|
a.setWidth(a.getWidth())
|
|
}});
|
|
Ext.reg("datemenu", Ext.menu.DateMenu);
|
|
Ext.menu.ColorMenu = Ext.extend(Ext.menu.Menu, {enableScrolling:false, hideOnClick:true, cls:"x-color-menu", paletteId:null, initComponent:function () {
|
|
Ext.apply(this, {plain:true, showSeparator:false, items:this.palette = new Ext.ColorPalette(Ext.applyIf({id:this.paletteId}, this.initialConfig))});
|
|
this.palette.purgeListeners();
|
|
Ext.menu.ColorMenu.superclass.initComponent.call(this);
|
|
this.relayEvents(this.palette, ["select"]);
|
|
this.on("select", this.menuHide, this);
|
|
if (this.handler) {
|
|
this.on("select", this.handler, this.scope || this)
|
|
}
|
|
}, menuHide:function () {
|
|
if (this.hideOnClick) {
|
|
this.hide(true)
|
|
}
|
|
}});
|
|
Ext.reg("colormenu", Ext.menu.ColorMenu);
|
|
Ext.form.Field = Ext.extend(Ext.BoxComponent, {invalidClass:"x-form-invalid", invalidText:"The value in this field is invalid", focusClass:"x-form-focus", validationEvent:"keyup", validateOnBlur:true, validationDelay:250, defaultAutoCreate:{tag:"input", type:"text", size:"20", autocomplete:"off"}, fieldClass:"x-form-field", msgTarget:"qtip", msgFx:"normal", readOnly:false, disabled:false, submitValue:true, isFormField:true, msgDisplay:"", hasFocus:false, initComponent:function () {
|
|
Ext.form.Field.superclass.initComponent.call(this);
|
|
this.addEvents("focus", "blur", "specialkey", "change", "invalid", "valid")
|
|
}, getName:function () {
|
|
return this.rendered && this.el.dom.name ? this.el.dom.name : this.name || this.id || ""
|
|
}, onRender:function (c, a) {
|
|
if (!this.el) {
|
|
var b = this.getAutoCreate();
|
|
if (!b.name) {
|
|
b.name = this.name || this.id
|
|
}
|
|
if (this.inputType) {
|
|
b.type = this.inputType
|
|
}
|
|
this.autoEl = b
|
|
}
|
|
Ext.form.Field.superclass.onRender.call(this, c, a);
|
|
if (this.submitValue === false) {
|
|
this.el.dom.removeAttribute("name")
|
|
}
|
|
var d = this.el.dom.type;
|
|
if (d) {
|
|
if (d == "password") {
|
|
d = "text"
|
|
}
|
|
this.el.addClass("x-form-" + d)
|
|
}
|
|
if (this.readOnly) {
|
|
this.setReadOnly(true)
|
|
}
|
|
if (this.tabIndex !== undefined) {
|
|
this.el.dom.setAttribute("tabIndex", this.tabIndex)
|
|
}
|
|
this.el.addClass([this.fieldClass, this.cls])
|
|
}, getItemCt:function () {
|
|
return this.itemCt
|
|
}, initValue:function () {
|
|
if (this.value !== undefined) {
|
|
this.setValue(this.value)
|
|
} else {
|
|
if (!Ext.isEmpty(this.el.dom.value) && this.el.dom.value != this.emptyText) {
|
|
this.setValue(this.el.dom.value)
|
|
}
|
|
}
|
|
this.originalValue = this.getValue()
|
|
}, isDirty:function () {
|
|
if (this.disabled || !this.rendered) {
|
|
return false
|
|
}
|
|
return String(this.getValue()) !== String(this.originalValue)
|
|
}, setReadOnly:function (a) {
|
|
if (this.rendered) {
|
|
this.el.dom.readOnly = a
|
|
}
|
|
this.readOnly = a
|
|
}, afterRender:function () {
|
|
Ext.form.Field.superclass.afterRender.call(this);
|
|
this.initEvents();
|
|
this.initValue()
|
|
}, fireKey:function (a) {
|
|
if (a.isSpecialKey()) {
|
|
this.fireEvent("specialkey", this, a)
|
|
}
|
|
}, reset:function () {
|
|
this.setValue(this.originalValue);
|
|
this.clearInvalid()
|
|
}, initEvents:function () {
|
|
this.mon(this.el, Ext.EventManager.getKeyEvent(), this.fireKey, this);
|
|
this.mon(this.el, "focus", this.onFocus, this);
|
|
this.mon(this.el, "blur", this.onBlur, this, this.inEditor ? {buffer:10} : null)
|
|
}, preFocus:Ext.emptyFn, onFocus:function () {
|
|
this.preFocus();
|
|
if (this.focusClass) {
|
|
this.el.addClass(this.focusClass)
|
|
}
|
|
if (!this.hasFocus) {
|
|
this.hasFocus = true;
|
|
this.startValue = this.getValue();
|
|
this.fireEvent("focus", this)
|
|
}
|
|
}, beforeBlur:Ext.emptyFn, onBlur:function () {
|
|
this.beforeBlur();
|
|
if (this.focusClass) {
|
|
this.el.removeClass(this.focusClass)
|
|
}
|
|
this.hasFocus = false;
|
|
if (this.validationEvent !== false && (this.validateOnBlur || this.validationEvent == "blur")) {
|
|
this.validate()
|
|
}
|
|
var a = this.getValue();
|
|
if (String(a) !== String(this.startValue)) {
|
|
this.fireEvent("change", this, a, this.startValue)
|
|
}
|
|
this.fireEvent("blur", this);
|
|
this.postBlur()
|
|
}, postBlur:Ext.emptyFn, isValid:function (a) {
|
|
if (this.disabled) {
|
|
return true
|
|
}
|
|
var c = this.preventMark;
|
|
this.preventMark = a === true;
|
|
var b = this.validateValue(this.processValue(this.getRawValue()), a);
|
|
this.preventMark = c;
|
|
return b
|
|
}, validate:function () {
|
|
if (this.disabled || this.validateValue(this.processValue(this.getRawValue()))) {
|
|
this.clearInvalid();
|
|
return true
|
|
}
|
|
return false
|
|
}, processValue:function (a) {
|
|
return a
|
|
}, validateValue:function (b) {
|
|
var a = this.getErrors(b)[0];
|
|
if (a == undefined) {
|
|
return true
|
|
} else {
|
|
this.markInvalid(a);
|
|
return false
|
|
}
|
|
}, getErrors:function () {
|
|
return[]
|
|
}, getActiveError:function () {
|
|
return this.activeError || ""
|
|
}, markInvalid:function (c) {
|
|
if (this.rendered && !this.preventMark) {
|
|
c = c || this.invalidText;
|
|
var a = this.getMessageHandler();
|
|
if (a) {
|
|
a.mark(this, c)
|
|
} else {
|
|
if (this.msgTarget) {
|
|
this.el.addClass(this.invalidClass);
|
|
var b = Ext.getDom(this.msgTarget);
|
|
if (b) {
|
|
b.innerHTML = c;
|
|
b.style.display = this.msgDisplay
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.setActiveError(c)
|
|
}, clearInvalid:function () {
|
|
if (this.rendered && !this.preventMark) {
|
|
this.el.removeClass(this.invalidClass);
|
|
var a = this.getMessageHandler();
|
|
if (a) {
|
|
a.clear(this)
|
|
} else {
|
|
if (this.msgTarget) {
|
|
this.el.removeClass(this.invalidClass);
|
|
var b = Ext.getDom(this.msgTarget);
|
|
if (b) {
|
|
b.innerHTML = "";
|
|
b.style.display = "none"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.unsetActiveError()
|
|
}, setActiveError:function (b, a) {
|
|
this.activeError = b;
|
|
if (a !== true) {
|
|
this.fireEvent("invalid", this, b)
|
|
}
|
|
}, unsetActiveError:function (a) {
|
|
delete this.activeError;
|
|
if (a !== true) {
|
|
this.fireEvent("valid", this)
|
|
}
|
|
}, getMessageHandler:function () {
|
|
return Ext.form.MessageTargets[this.msgTarget]
|
|
}, getErrorCt:function () {
|
|
return this.el.findParent(".x-form-element", 5, true) || this.el.findParent(".x-form-field-wrap", 5, true)
|
|
}, alignErrorEl:function () {
|
|
this.errorEl.setWidth(this.getErrorCt().getWidth(true) - 20)
|
|
}, alignErrorIcon:function () {
|
|
this.errorIcon.alignTo(this.el, "tl-tr", [2, 0])
|
|
}, getRawValue:function () {
|
|
var a = this.rendered ? this.el.getValue() : Ext.value(this.value, "");
|
|
if (a === this.emptyText) {
|
|
a = ""
|
|
}
|
|
return a
|
|
}, getValue:function () {
|
|
if (!this.rendered) {
|
|
return this.value
|
|
}
|
|
var a = this.el.getValue();
|
|
if (a === this.emptyText || a === undefined) {
|
|
a = ""
|
|
}
|
|
return a
|
|
}, setRawValue:function (a) {
|
|
return this.rendered ? (this.el.dom.value = (Ext.isEmpty(a) ? "" : a)) : ""
|
|
}, setValue:function (a) {
|
|
this.value = a;
|
|
if (this.rendered) {
|
|
this.el.dom.value = (Ext.isEmpty(a) ? "" : a);
|
|
this.validate()
|
|
}
|
|
return this
|
|
}, append:function (a) {
|
|
this.setValue([this.getValue(), a].join(""))
|
|
}});
|
|
Ext.form.MessageTargets = {qtip:{mark:function (a, b) {
|
|
a.el.addClass(a.invalidClass);
|
|
a.el.dom.qtip = b;
|
|
a.el.dom.qclass = "x-form-invalid-tip";
|
|
if (Ext.QuickTips) {
|
|
Ext.QuickTips.enable()
|
|
}
|
|
}, clear:function (a) {
|
|
a.el.removeClass(a.invalidClass);
|
|
a.el.dom.qtip = ""
|
|
}}, title:{mark:function (a, b) {
|
|
a.el.addClass(a.invalidClass);
|
|
a.el.dom.title = b
|
|
}, clear:function (a) {
|
|
a.el.dom.title = ""
|
|
}}, under:{mark:function (b, c) {
|
|
b.el.addClass(b.invalidClass);
|
|
if (!b.errorEl) {
|
|
var a = b.getErrorCt();
|
|
if (!a) {
|
|
b.el.dom.title = c;
|
|
return
|
|
}
|
|
b.errorEl = a.createChild({cls:"x-form-invalid-msg"});
|
|
b.on("resize", b.alignErrorEl, b);
|
|
b.on("destroy", function () {
|
|
Ext.destroy(this.errorEl)
|
|
}, b)
|
|
}
|
|
b.alignErrorEl();
|
|
b.errorEl.update(c);
|
|
Ext.form.Field.msgFx[b.msgFx].show(b.errorEl, b)
|
|
}, clear:function (a) {
|
|
a.el.removeClass(a.invalidClass);
|
|
if (a.errorEl) {
|
|
Ext.form.Field.msgFx[a.msgFx].hide(a.errorEl, a)
|
|
} else {
|
|
a.el.dom.title = ""
|
|
}
|
|
}}, side:{mark:function (b, c) {
|
|
b.el.addClass(b.invalidClass);
|
|
if (!b.errorIcon) {
|
|
var a = b.getErrorCt();
|
|
if (!a) {
|
|
b.el.dom.title = c;
|
|
return
|
|
}
|
|
b.errorIcon = a.createChild({cls:"x-form-invalid-icon"});
|
|
if (b.ownerCt) {
|
|
b.ownerCt.on("afterlayout", b.alignErrorIcon, b);
|
|
b.ownerCt.on("expand", b.alignErrorIcon, b)
|
|
}
|
|
b.on("resize", b.alignErrorIcon, b);
|
|
b.on("destroy", function () {
|
|
Ext.destroy(this.errorIcon)
|
|
}, b)
|
|
}
|
|
b.alignErrorIcon();
|
|
b.errorIcon.dom.qtip = c;
|
|
b.errorIcon.dom.qclass = "x-form-invalid-tip";
|
|
b.errorIcon.show()
|
|
}, clear:function (a) {
|
|
a.el.removeClass(a.invalidClass);
|
|
if (a.errorIcon) {
|
|
a.errorIcon.dom.qtip = "";
|
|
a.errorIcon.hide()
|
|
} else {
|
|
a.el.dom.title = ""
|
|
}
|
|
}}};
|
|
Ext.form.Field.msgFx = {normal:{show:function (a, b) {
|
|
a.setDisplayed("block")
|
|
}, hide:function (a, b) {
|
|
a.setDisplayed(false).update("")
|
|
}}, slide:{show:function (a, b) {
|
|
a.slideIn("t", {stopFx:true})
|
|
}, hide:function (a, b) {
|
|
a.slideOut("t", {stopFx:true, useDisplay:true})
|
|
}}, slideRight:{show:function (a, b) {
|
|
a.fixDisplay();
|
|
a.alignTo(b.el, "tl-tr");
|
|
a.slideIn("l", {stopFx:true})
|
|
}, hide:function (a, b) {
|
|
a.slideOut("l", {stopFx:true, useDisplay:true})
|
|
}}};
|
|
Ext.reg("field", Ext.form.Field);
|
|
Ext.form.TextField = Ext.extend(Ext.form.Field, {grow:false, growMin:30, growMax:800, vtype:null, maskRe:null, disableKeyFilter:false, allowBlank:true, minLength:0, maxLength:Number.MAX_VALUE, minLengthText:"The minimum length for this field is {0}", maxLengthText:"The maximum length for this field is {0}", selectOnFocus:false, blankText:"This field is required", validator:null, regex:null, regexText:"", emptyText:null, emptyClass:"x-form-empty-field", initComponent:function () {
|
|
Ext.form.TextField.superclass.initComponent.call(this);
|
|
this.addEvents("autosize", "keydown", "keyup", "keypress")
|
|
}, initEvents:function () {
|
|
Ext.form.TextField.superclass.initEvents.call(this);
|
|
if (this.validationEvent == "keyup") {
|
|
this.validationTask = new Ext.util.DelayedTask(this.validate, this);
|
|
this.mon(this.el, "keyup", this.filterValidation, this)
|
|
} else {
|
|
if (this.validationEvent !== false && this.validationEvent != "blur") {
|
|
this.mon(this.el, this.validationEvent, this.validate, this, {buffer:this.validationDelay})
|
|
}
|
|
}
|
|
if (this.selectOnFocus || this.emptyText) {
|
|
this.mon(this.el, "mousedown", this.onMouseDown, this);
|
|
if (this.emptyText) {
|
|
this.applyEmptyText()
|
|
}
|
|
}
|
|
if (this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Ext.form.VTypes[this.vtype + "Mask"]))) {
|
|
this.mon(this.el, "keypress", this.filterKeys, this)
|
|
}
|
|
if (this.grow) {
|
|
this.mon(this.el, "keyup", this.onKeyUpBuffered, this, {buffer:50});
|
|
this.mon(this.el, "click", this.autoSize, this)
|
|
}
|
|
if (this.enableKeyEvents) {
|
|
this.mon(this.el, {scope:this, keyup:this.onKeyUp, keydown:this.onKeyDown, keypress:this.onKeyPress})
|
|
}
|
|
}, onMouseDown:function (a) {
|
|
if (!this.hasFocus) {
|
|
this.mon(this.el, "mouseup", Ext.emptyFn, this, {single:true, preventDefault:true})
|
|
}
|
|
}, processValue:function (a) {
|
|
if (this.stripCharsRe) {
|
|
var b = a.replace(this.stripCharsRe, "");
|
|
if (b !== a) {
|
|
this.setRawValue(b);
|
|
return b
|
|
}
|
|
}
|
|
return a
|
|
}, filterValidation:function (a) {
|
|
if (!a.isNavKeyPress()) {
|
|
this.validationTask.delay(this.validationDelay)
|
|
}
|
|
}, onDisable:function () {
|
|
Ext.form.TextField.superclass.onDisable.call(this);
|
|
if (Ext.isIE) {
|
|
this.el.dom.unselectable = "on"
|
|
}
|
|
}, onEnable:function () {
|
|
Ext.form.TextField.superclass.onEnable.call(this);
|
|
if (Ext.isIE) {
|
|
this.el.dom.unselectable = ""
|
|
}
|
|
}, onKeyUpBuffered:function (a) {
|
|
if (this.doAutoSize(a)) {
|
|
this.autoSize()
|
|
}
|
|
}, doAutoSize:function (a) {
|
|
return !a.isNavKeyPress()
|
|
}, onKeyUp:function (a) {
|
|
this.fireEvent("keyup", this, a)
|
|
}, onKeyDown:function (a) {
|
|
this.fireEvent("keydown", this, a)
|
|
}, onKeyPress:function (a) {
|
|
this.fireEvent("keypress", this, a)
|
|
}, reset:function () {
|
|
Ext.form.TextField.superclass.reset.call(this);
|
|
this.applyEmptyText()
|
|
}, applyEmptyText:function () {
|
|
if (this.rendered && this.emptyText && this.getRawValue().length < 1 && !this.hasFocus) {
|
|
this.setRawValue(this.emptyText);
|
|
this.el.addClass(this.emptyClass)
|
|
}
|
|
}, preFocus:function () {
|
|
var a = this.el, b;
|
|
if (this.emptyText) {
|
|
if (a.dom.value == this.emptyText) {
|
|
this.setRawValue("");
|
|
b = true
|
|
}
|
|
a.removeClass(this.emptyClass)
|
|
}
|
|
if (this.selectOnFocus || b) {
|
|
a.dom.select()
|
|
}
|
|
}, postBlur:function () {
|
|
this.applyEmptyText()
|
|
}, filterKeys:function (b) {
|
|
if (b.ctrlKey) {
|
|
return
|
|
}
|
|
var a = b.getKey();
|
|
if (Ext.isGecko && (b.isNavKeyPress() || a == b.BACKSPACE || (a == b.DELETE && b.button == -1))) {
|
|
return
|
|
}
|
|
var c = String.fromCharCode(b.getCharCode());
|
|
if (!Ext.isGecko && b.isSpecialKey() && !c) {
|
|
return
|
|
}
|
|
if (!this.maskRe.test(c)) {
|
|
b.stopEvent()
|
|
}
|
|
}, setValue:function (a) {
|
|
if (this.emptyText && this.el && !Ext.isEmpty(a)) {
|
|
this.el.removeClass(this.emptyClass)
|
|
}
|
|
Ext.form.TextField.superclass.setValue.apply(this, arguments);
|
|
this.applyEmptyText();
|
|
this.autoSize();
|
|
return this
|
|
}, getErrors:function (a) {
|
|
var d = Ext.form.TextField.superclass.getErrors.apply(this, arguments);
|
|
a = Ext.isDefined(a) ? a : this.processValue(this.getRawValue());
|
|
if (Ext.isFunction(this.validator)) {
|
|
var c = this.validator(a);
|
|
if (c !== true) {
|
|
d.push(c)
|
|
}
|
|
}
|
|
if (a.length < 1 || a === this.emptyText) {
|
|
if (this.allowBlank) {
|
|
return d
|
|
} else {
|
|
d.push(this.blankText)
|
|
}
|
|
}
|
|
if (!this.allowBlank && (a.length < 1 || a === this.emptyText)) {
|
|
d.push(this.blankText)
|
|
}
|
|
if (a.length < this.minLength) {
|
|
d.push(String.format(this.minLengthText, this.minLength))
|
|
}
|
|
if (a.length > this.maxLength) {
|
|
d.push(String.format(this.maxLengthText, this.maxLength))
|
|
}
|
|
if (this.vtype) {
|
|
var b = Ext.form.VTypes;
|
|
if (!b[this.vtype](a, this)) {
|
|
d.push(this.vtypeText || b[this.vtype + "Text"])
|
|
}
|
|
}
|
|
if (this.regex && !this.regex.test(a)) {
|
|
d.push(this.regexText)
|
|
}
|
|
return d
|
|
}, selectText:function (h, a) {
|
|
var c = this.getRawValue();
|
|
var e = false;
|
|
if (c.length > 0) {
|
|
h = h === undefined ? 0 : h;
|
|
a = a === undefined ? c.length : a;
|
|
var g = this.el.dom;
|
|
if (g.setSelectionRange) {
|
|
g.setSelectionRange(h, a)
|
|
} else {
|
|
if (g.createTextRange) {
|
|
var b = g.createTextRange();
|
|
b.moveStart("character", h);
|
|
b.moveEnd("character", a - c.length);
|
|
b.select()
|
|
}
|
|
}
|
|
e = Ext.isGecko || Ext.isOpera
|
|
} else {
|
|
e = true
|
|
}
|
|
if (e) {
|
|
this.focus()
|
|
}
|
|
}, autoSize:function () {
|
|
if (!this.grow || !this.rendered) {
|
|
return
|
|
}
|
|
if (!this.metrics) {
|
|
this.metrics = Ext.util.TextMetrics.createInstance(this.el)
|
|
}
|
|
var c = this.el;
|
|
var b = c.dom.value;
|
|
var e = document.createElement("div");
|
|
e.appendChild(document.createTextNode(b));
|
|
b = e.innerHTML;
|
|
Ext.removeNode(e);
|
|
e = null;
|
|
b += " ";
|
|
var a = Math.min(this.growMax, Math.max(this.metrics.getWidth(b) + 10, this.growMin));
|
|
this.el.setWidth(a);
|
|
this.fireEvent("autosize", this, a)
|
|
}, onDestroy:function () {
|
|
if (this.validationTask) {
|
|
this.validationTask.cancel();
|
|
this.validationTask = null
|
|
}
|
|
Ext.form.TextField.superclass.onDestroy.call(this)
|
|
}});
|
|
Ext.reg("textfield", Ext.form.TextField);
|
|
Ext.form.TriggerField = Ext.extend(Ext.form.TextField, {defaultAutoCreate:{tag:"input", type:"text", size:"16", autocomplete:"off"}, hideTrigger:false, editable:true, readOnly:false, wrapFocusClass:"x-trigger-wrap-focus", autoSize:Ext.emptyFn, monitorTab:true, deferHeight:true, mimicing:false, actionMode:"wrap", defaultTriggerWidth:17, onResize:function (a, c) {
|
|
Ext.form.TriggerField.superclass.onResize.call(this, a, c);
|
|
var b = this.getTriggerWidth();
|
|
if (Ext.isNumber(a)) {
|
|
this.el.setWidth(a - b)
|
|
}
|
|
this.wrap.setWidth(this.el.getWidth() + b)
|
|
}, getTriggerWidth:function () {
|
|
var a = this.trigger.getWidth();
|
|
if (!this.hideTrigger && !this.readOnly && a === 0) {
|
|
a = this.defaultTriggerWidth
|
|
}
|
|
return a
|
|
}, alignErrorIcon:function () {
|
|
if (this.wrap) {
|
|
this.errorIcon.alignTo(this.wrap, "tl-tr", [2, 0])
|
|
}
|
|
}, onRender:function (b, a) {
|
|
this.doc = Ext.isIE ? Ext.getBody() : Ext.getDoc();
|
|
Ext.form.TriggerField.superclass.onRender.call(this, b, a);
|
|
this.wrap = this.el.wrap({cls:"x-form-field-wrap x-form-field-trigger-wrap"});
|
|
this.trigger = this.wrap.createChild(this.triggerConfig || {tag:"img", src:Ext.BLANK_IMAGE_URL, alt:"", cls:"x-form-trigger " + this.triggerClass});
|
|
this.initTrigger();
|
|
if (!this.width) {
|
|
this.wrap.setWidth(this.el.getWidth() + this.trigger.getWidth())
|
|
}
|
|
this.resizeEl = this.positionEl = this.wrap
|
|
}, getWidth:function () {
|
|
return(this.el.getWidth() + this.trigger.getWidth())
|
|
}, updateEditState:function () {
|
|
if (this.rendered) {
|
|
if (this.readOnly) {
|
|
this.el.dom.readOnly = true;
|
|
this.el.addClass("x-trigger-noedit");
|
|
this.mun(this.el, "click", this.onTriggerClick, this);
|
|
this.trigger.setDisplayed(false)
|
|
} else {
|
|
if (!this.editable) {
|
|
this.el.dom.readOnly = true;
|
|
this.el.addClass("x-trigger-noedit");
|
|
this.mon(this.el, "click", this.onTriggerClick, this)
|
|
} else {
|
|
this.el.dom.readOnly = false;
|
|
this.el.removeClass("x-trigger-noedit");
|
|
this.mun(this.el, "click", this.onTriggerClick, this)
|
|
}
|
|
this.trigger.setDisplayed(!this.hideTrigger)
|
|
}
|
|
this.onResize(this.width || this.wrap.getWidth())
|
|
}
|
|
}, setHideTrigger:function (a) {
|
|
if (a != this.hideTrigger) {
|
|
this.hideTrigger = a;
|
|
this.updateEditState()
|
|
}
|
|
}, setEditable:function (a) {
|
|
if (a != this.editable) {
|
|
this.editable = a;
|
|
this.updateEditState()
|
|
}
|
|
}, setReadOnly:function (a) {
|
|
if (a != this.readOnly) {
|
|
this.readOnly = a;
|
|
this.updateEditState()
|
|
}
|
|
}, afterRender:function () {
|
|
Ext.form.TriggerField.superclass.afterRender.call(this);
|
|
this.updateEditState()
|
|
}, initTrigger:function () {
|
|
this.mon(this.trigger, "click", this.onTriggerClick, this, {preventDefault:true});
|
|
this.trigger.addClassOnOver("x-form-trigger-over");
|
|
this.trigger.addClassOnClick("x-form-trigger-click")
|
|
}, onDestroy:function () {
|
|
Ext.destroy(this.trigger, this.wrap);
|
|
if (this.mimicing) {
|
|
this.doc.un("mousedown", this.mimicBlur, this)
|
|
}
|
|
delete this.doc;
|
|
Ext.form.TriggerField.superclass.onDestroy.call(this)
|
|
}, onFocus:function () {
|
|
Ext.form.TriggerField.superclass.onFocus.call(this);
|
|
if (!this.mimicing) {
|
|
this.wrap.addClass(this.wrapFocusClass);
|
|
this.mimicing = true;
|
|
this.doc.on("mousedown", this.mimicBlur, this, {delay:10});
|
|
if (this.monitorTab) {
|
|
this.on("specialkey", this.checkTab, this)
|
|
}
|
|
}
|
|
}, checkTab:function (a, b) {
|
|
if (b.getKey() == b.TAB) {
|
|
this.triggerBlur()
|
|
}
|
|
}, onBlur:Ext.emptyFn, mimicBlur:function (a) {
|
|
if (!this.isDestroyed && !this.wrap.contains(a.target) && this.validateBlur(a)) {
|
|
this.triggerBlur()
|
|
}
|
|
}, triggerBlur:function () {
|
|
this.mimicing = false;
|
|
this.doc.un("mousedown", this.mimicBlur, this);
|
|
if (this.monitorTab && this.el) {
|
|
this.un("specialkey", this.checkTab, this)
|
|
}
|
|
Ext.form.TriggerField.superclass.onBlur.call(this);
|
|
if (this.wrap) {
|
|
this.wrap.removeClass(this.wrapFocusClass)
|
|
}
|
|
}, beforeBlur:Ext.emptyFn, validateBlur:function (a) {
|
|
return true
|
|
}, onTriggerClick:Ext.emptyFn});
|
|
Ext.form.TwinTriggerField = Ext.extend(Ext.form.TriggerField, {initComponent:function () {
|
|
Ext.form.TwinTriggerField.superclass.initComponent.call(this);
|
|
this.triggerConfig = {tag:"span", cls:"x-form-twin-triggers", cn:[
|
|
{tag:"img", src:Ext.BLANK_IMAGE_URL, alt:"", cls:"x-form-trigger " + this.trigger1Class},
|
|
{tag:"img", src:Ext.BLANK_IMAGE_URL, alt:"", cls:"x-form-trigger " + this.trigger2Class}
|
|
]}
|
|
}, getTrigger:function (a) {
|
|
return this.triggers[a]
|
|
}, afterRender:function () {
|
|
Ext.form.TwinTriggerField.superclass.afterRender.call(this);
|
|
var c = this.triggers, b = 0, a = c.length;
|
|
for (; b < a; ++b) {
|
|
if (this["hideTrigger" + (b + 1)]) {
|
|
c[b].hide()
|
|
}
|
|
}
|
|
}, initTrigger:function () {
|
|
var a = this.trigger.select(".x-form-trigger", true), b = this;
|
|
a.each(function (d, g, c) {
|
|
var e = "Trigger" + (c + 1);
|
|
d.hide = function () {
|
|
var h = b.wrap.getWidth();
|
|
this.dom.style.display = "none";
|
|
b.el.setWidth(h - b.trigger.getWidth());
|
|
b["hidden" + e] = true
|
|
};
|
|
d.show = function () {
|
|
var h = b.wrap.getWidth();
|
|
this.dom.style.display = "";
|
|
b.el.setWidth(h - b.trigger.getWidth());
|
|
b["hidden" + e] = false
|
|
};
|
|
this.mon(d, "click", this["on" + e + "Click"], this, {preventDefault:true});
|
|
d.addClassOnOver("x-form-trigger-over");
|
|
d.addClassOnClick("x-form-trigger-click")
|
|
}, this);
|
|
this.triggers = a.elements
|
|
}, getTriggerWidth:function () {
|
|
var a = 0;
|
|
Ext.each(this.triggers, function (d, c) {
|
|
var e = "Trigger" + (c + 1), b = d.getWidth();
|
|
if (b === 0 && !this["hidden" + e]) {
|
|
a += this.defaultTriggerWidth
|
|
} else {
|
|
a += b
|
|
}
|
|
}, this);
|
|
return a
|
|
}, onDestroy:function () {
|
|
Ext.destroy(this.triggers);
|
|
Ext.form.TwinTriggerField.superclass.onDestroy.call(this)
|
|
}, onTrigger1Click:Ext.emptyFn, onTrigger2Click:Ext.emptyFn});
|
|
Ext.reg("trigger", Ext.form.TriggerField);
|
|
Ext.form.TextArea = Ext.extend(Ext.form.TextField, {growMin:60, growMax:1000, growAppend:" \n ", enterIsSpecial:false, preventScrollbars:false, onRender:function (b, a) {
|
|
if (!this.el) {
|
|
this.defaultAutoCreate = {tag:"textarea", style:"width:100px;height:60px;", autocomplete:"off"}
|
|
}
|
|
Ext.form.TextArea.superclass.onRender.call(this, b, a);
|
|
if (this.grow) {
|
|
this.textSizeEl = Ext.DomHelper.append(document.body, {tag:"pre", cls:"x-form-grow-sizer"});
|
|
if (this.preventScrollbars) {
|
|
this.el.setStyle("overflow", "hidden")
|
|
}
|
|
this.el.setHeight(this.growMin)
|
|
}
|
|
}, onDestroy:function () {
|
|
Ext.removeNode(this.textSizeEl);
|
|
Ext.form.TextArea.superclass.onDestroy.call(this)
|
|
}, fireKey:function (a) {
|
|
if (a.isSpecialKey() && (this.enterIsSpecial || (a.getKey() != a.ENTER || a.hasModifier()))) {
|
|
this.fireEvent("specialkey", this, a)
|
|
}
|
|
}, doAutoSize:function (a) {
|
|
return !a.isNavKeyPress() || a.getKey() == a.ENTER
|
|
}, filterValidation:function (a) {
|
|
if (!a.isNavKeyPress() || (!this.enterIsSpecial && a.keyCode == a.ENTER)) {
|
|
this.validationTask.delay(this.validationDelay)
|
|
}
|
|
}, autoSize:function () {
|
|
if (!this.grow || !this.textSizeEl) {
|
|
return
|
|
}
|
|
var c = this.el, a = Ext.util.Format.htmlEncode(c.dom.value), d = this.textSizeEl, b;
|
|
Ext.fly(d).setWidth(this.el.getWidth());
|
|
if (a.length < 1) {
|
|
a = "  "
|
|
} else {
|
|
a += this.growAppend;
|
|
if (Ext.isIE) {
|
|
a = a.replace(/\n/g, " <br />")
|
|
}
|
|
}
|
|
d.innerHTML = a;
|
|
b = Math.min(this.growMax, Math.max(d.offsetHeight, this.growMin));
|
|
if (b != this.lastHeight) {
|
|
this.lastHeight = b;
|
|
this.el.setHeight(b);
|
|
this.fireEvent("autosize", this, b)
|
|
}
|
|
}});
|
|
Ext.reg("textarea", Ext.form.TextArea);
|
|
Ext.form.NumberField = Ext.extend(Ext.form.TextField, {fieldClass:"x-form-field x-form-num-field", allowDecimals:true, decimalSeparator:".", decimalPrecision:2, allowNegative:true, minValue:Number.NEGATIVE_INFINITY, maxValue:Number.MAX_VALUE, minText:"The minimum value for this field is {0}", maxText:"The maximum value for this field is {0}", nanText:"{0} is not a valid number", baseChars:"0123456789", autoStripChars:false, initEvents:function () {
|
|
var a = this.baseChars + "";
|
|
if (this.allowDecimals) {
|
|
a += this.decimalSeparator
|
|
}
|
|
if (this.allowNegative) {
|
|
a += "-"
|
|
}
|
|
a = Ext.escapeRe(a);
|
|
this.maskRe = new RegExp("[" + a + "]");
|
|
if (this.autoStripChars) {
|
|
this.stripCharsRe = new RegExp("[^" + a + "]", "gi")
|
|
}
|
|
Ext.form.NumberField.superclass.initEvents.call(this)
|
|
}, getErrors:function (b) {
|
|
var c = Ext.form.NumberField.superclass.getErrors.apply(this, arguments);
|
|
b = Ext.isDefined(b) ? b : this.processValue(this.getRawValue());
|
|
if (b.length < 1) {
|
|
return c
|
|
}
|
|
b = String(b).replace(this.decimalSeparator, ".");
|
|
if (isNaN(b)) {
|
|
c.push(String.format(this.nanText, b))
|
|
}
|
|
var a = this.parseValue(b);
|
|
if (a < this.minValue) {
|
|
c.push(String.format(this.minText, this.minValue))
|
|
}
|
|
if (a > this.maxValue) {
|
|
c.push(String.format(this.maxText, this.maxValue))
|
|
}
|
|
return c
|
|
}, getValue:function () {
|
|
return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))
|
|
}, setValue:function (a) {
|
|
a = Ext.isNumber(a) ? a : parseFloat(String(a).replace(this.decimalSeparator, "."));
|
|
a = this.fixPrecision(a);
|
|
a = isNaN(a) ? "" : String(a).replace(".", this.decimalSeparator);
|
|
return Ext.form.NumberField.superclass.setValue.call(this, a)
|
|
}, setMinValue:function (a) {
|
|
this.minValue = Ext.num(a, Number.NEGATIVE_INFINITY)
|
|
}, setMaxValue:function (a) {
|
|
this.maxValue = Ext.num(a, Number.MAX_VALUE)
|
|
}, parseValue:function (a) {
|
|
a = parseFloat(String(a).replace(this.decimalSeparator, "."));
|
|
return isNaN(a) ? "" : a
|
|
}, fixPrecision:function (b) {
|
|
var a = isNaN(b);
|
|
if (!this.allowDecimals || this.decimalPrecision == -1 || a || !b) {
|
|
return a ? "" : b
|
|
}
|
|
return parseFloat(parseFloat(b).toFixed(this.decimalPrecision))
|
|
}, beforeBlur:function () {
|
|
var a = this.parseValue(this.getRawValue());
|
|
if (!Ext.isEmpty(a)) {
|
|
this.setValue(a)
|
|
}
|
|
}});
|
|
Ext.reg("numberfield", Ext.form.NumberField);
|
|
Ext.form.DateField = Ext.extend(Ext.form.TriggerField, {format:"m/d/Y", altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j", disabledDaysText:"Disabled", disabledDatesText:"Disabled", minText:"The date in this field must be equal to or after {0}", maxText:"The date in this field must be equal to or before {0}", invalidText:"{0} is not a valid date - it must be in the format {1}", triggerClass:"x-form-date-trigger", showToday:true, startDay:0, defaultAutoCreate:{tag:"input", type:"text", size:"10", autocomplete:"off"}, initTime:"12", initTimeFormat:"H", safeParse:function (b, c) {
|
|
if (Date.formatContainsHourInfo(c)) {
|
|
return Date.parseDate(b, c)
|
|
} else {
|
|
var a = Date.parseDate(b + " " + this.initTime, c + " " + this.initTimeFormat);
|
|
if (a) {
|
|
return a.clearTime()
|
|
}
|
|
}
|
|
}, initComponent:function () {
|
|
Ext.form.DateField.superclass.initComponent.call(this);
|
|
this.addEvents("select");
|
|
if (Ext.isString(this.minValue)) {
|
|
this.minValue = this.parseDate(this.minValue)
|
|
}
|
|
if (Ext.isString(this.maxValue)) {
|
|
this.maxValue = this.parseDate(this.maxValue)
|
|
}
|
|
this.disabledDatesRE = null;
|
|
this.initDisabledDays()
|
|
}, initEvents:function () {
|
|
Ext.form.DateField.superclass.initEvents.call(this);
|
|
this.keyNav = new Ext.KeyNav(this.el, {down:function (a) {
|
|
this.onTriggerClick()
|
|
}, scope:this, forceKeyDown:true})
|
|
}, initDisabledDays:function () {
|
|
if (this.disabledDates) {
|
|
var b = this.disabledDates, a = b.length - 1, c = "(?:";
|
|
Ext.each(b, function (g, e) {
|
|
c += Ext.isDate(g) ? "^" + Ext.escapeRe(g.dateFormat(this.format)) + "$" : b[e];
|
|
if (e != a) {
|
|
c += "|"
|
|
}
|
|
}, this);
|
|
this.disabledDatesRE = new RegExp(c + ")")
|
|
}
|
|
}, setDisabledDates:function (a) {
|
|
this.disabledDates = a;
|
|
this.initDisabledDays();
|
|
if (this.menu) {
|
|
this.menu.picker.setDisabledDates(this.disabledDatesRE)
|
|
}
|
|
}, setDisabledDays:function (a) {
|
|
this.disabledDays = a;
|
|
if (this.menu) {
|
|
this.menu.picker.setDisabledDays(a)
|
|
}
|
|
}, setMinValue:function (a) {
|
|
this.minValue = (Ext.isString(a) ? this.parseDate(a) : a);
|
|
if (this.menu) {
|
|
this.menu.picker.setMinDate(this.minValue)
|
|
}
|
|
}, setMaxValue:function (a) {
|
|
this.maxValue = (Ext.isString(a) ? this.parseDate(a) : a);
|
|
if (this.menu) {
|
|
this.menu.picker.setMaxDate(this.maxValue)
|
|
}
|
|
}, getErrors:function (e) {
|
|
var h = Ext.form.DateField.superclass.getErrors.apply(this, arguments);
|
|
e = this.formatDate(e || this.processValue(this.getRawValue()));
|
|
if (e.length < 1) {
|
|
return h
|
|
}
|
|
var c = e;
|
|
e = this.parseDate(e);
|
|
if (!e) {
|
|
h.push(String.format(this.invalidText, c, this.format));
|
|
return h
|
|
}
|
|
var g = e.getTime();
|
|
if (this.minValue && g < this.minValue.clearTime().getTime()) {
|
|
h.push(String.format(this.minText, this.formatDate(this.minValue)))
|
|
}
|
|
if (this.maxValue && g > this.maxValue.clearTime().getTime()) {
|
|
h.push(String.format(this.maxText, this.formatDate(this.maxValue)))
|
|
}
|
|
if (this.disabledDays) {
|
|
var a = e.getDay();
|
|
for (var b = 0; b < this.disabledDays.length; b++) {
|
|
if (a === this.disabledDays[b]) {
|
|
h.push(this.disabledDaysText);
|
|
break
|
|
}
|
|
}
|
|
}
|
|
var d = this.formatDate(e);
|
|
if (this.disabledDatesRE && this.disabledDatesRE.test(d)) {
|
|
h.push(String.format(this.disabledDatesText, d))
|
|
}
|
|
return h
|
|
}, validateBlur:function () {
|
|
return !this.menu || !this.menu.isVisible()
|
|
}, getValue:function () {
|
|
return this.parseDate(Ext.form.DateField.superclass.getValue.call(this)) || ""
|
|
}, setValue:function (a) {
|
|
return Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(a)))
|
|
}, parseDate:function (g) {
|
|
if (!g || Ext.isDate(g)) {
|
|
return g
|
|
}
|
|
var b = this.safeParse(g, this.format), c = this.altFormats, e = this.altFormatsArray;
|
|
if (!b && c) {
|
|
e = e || c.split("|");
|
|
for (var d = 0, a = e.length; d < a && !b; d++) {
|
|
b = this.safeParse(g, e[d])
|
|
}
|
|
}
|
|
return b
|
|
}, onDestroy:function () {
|
|
Ext.destroy(this.menu, this.keyNav);
|
|
Ext.form.DateField.superclass.onDestroy.call(this)
|
|
}, formatDate:function (a) {
|
|
return Ext.isDate(a) ? a.dateFormat(this.format) : a
|
|
}, onTriggerClick:function () {
|
|
if (this.disabled) {
|
|
return
|
|
}
|
|
if (this.menu == null) {
|
|
this.menu = new Ext.menu.DateMenu({hideOnClick:false, focusOnSelect:false})
|
|
}
|
|
this.onFocus();
|
|
Ext.apply(this.menu.picker, {minDate:this.minValue, maxDate:this.maxValue, disabledDatesRE:this.disabledDatesRE, disabledDatesText:this.disabledDatesText, disabledDays:this.disabledDays, disabledDaysText:this.disabledDaysText, format:this.format, showToday:this.showToday, startDay:this.startDay, minText:String.format(this.minText, this.formatDate(this.minValue)), maxText:String.format(this.maxText, this.formatDate(this.maxValue))});
|
|
this.menu.picker.setValue(this.getValue() || new Date());
|
|
this.menu.show(this.el, "tl-bl?");
|
|
this.menuEvents("on")
|
|
}, menuEvents:function (a) {
|
|
this.menu[a]("select", this.onSelect, this);
|
|
this.menu[a]("hide", this.onMenuHide, this);
|
|
this.menu[a]("show", this.onFocus, this)
|
|
}, onSelect:function (a, b) {
|
|
this.setValue(b);
|
|
this.fireEvent("select", this, b);
|
|
this.menu.hide()
|
|
}, onMenuHide:function () {
|
|
this.focus(false, 60);
|
|
this.menuEvents("un")
|
|
}, beforeBlur:function () {
|
|
var a = this.parseDate(this.getRawValue());
|
|
if (a) {
|
|
this.setValue(a)
|
|
}
|
|
}});
|
|
Ext.reg("datefield", Ext.form.DateField);
|
|
Ext.form.DisplayField = Ext.extend(Ext.form.Field, {validationEvent:false, validateOnBlur:false, defaultAutoCreate:{tag:"div"}, fieldClass:"x-form-display-field", htmlEncode:false, initEvents:Ext.emptyFn, isValid:function () {
|
|
return true
|
|
}, validate:function () {
|
|
return true
|
|
}, getRawValue:function () {
|
|
var a = this.rendered ? this.el.dom.innerHTML : Ext.value(this.value, "");
|
|
if (a === this.emptyText) {
|
|
a = ""
|
|
}
|
|
if (this.htmlEncode) {
|
|
a = Ext.util.Format.htmlDecode(a)
|
|
}
|
|
return a
|
|
}, getValue:function () {
|
|
return this.getRawValue()
|
|
}, getName:function () {
|
|
return this.name
|
|
}, setRawValue:function (a) {
|
|
if (this.htmlEncode) {
|
|
a = Ext.util.Format.htmlEncode(a)
|
|
}
|
|
return this.rendered ? (this.el.dom.innerHTML = (Ext.isEmpty(a) ? "" : a)) : (this.value = a)
|
|
}, setValue:function (a) {
|
|
this.setRawValue(a);
|
|
return this
|
|
}});
|
|
Ext.reg("displayfield", Ext.form.DisplayField);
|
|
Ext.form.ComboBox = Ext.extend(Ext.form.TriggerField, {defaultAutoCreate:{tag:"input", type:"text", size:"24", autocomplete:"off"}, listClass:"", selectedClass:"x-combo-selected", listEmptyText:"", triggerClass:"x-form-arrow-trigger", shadow:"sides", listAlign:"tl-bl?", maxHeight:300, minHeight:90, triggerAction:"query", minChars:4, autoSelect:true, typeAhead:false, queryDelay:500, pageSize:0, selectOnFocus:false, queryParam:"query", loadingText:"Loading...", resizable:false, handleHeight:8, allQuery:"", mode:"remote", minListWidth:70, forceSelection:false, typeAheadDelay:250, lazyInit:true, clearFilterOnReset:true, submitValue:undefined, initComponent:function () {
|
|
Ext.form.ComboBox.superclass.initComponent.call(this);
|
|
this.addEvents("expand", "collapse", "beforeselect", "select", "beforequery");
|
|
if (this.transform) {
|
|
var c = Ext.getDom(this.transform);
|
|
if (!this.hiddenName) {
|
|
this.hiddenName = c.name
|
|
}
|
|
if (!this.store) {
|
|
this.mode = "local";
|
|
var j = [], e = c.options;
|
|
for (var b = 0, a = e.length; b < a; b++) {
|
|
var h = e[b], g = (h.hasAttribute ? h.hasAttribute("value") : h.getAttributeNode("value").specified) ? h.value : h.text;
|
|
if (h.selected && Ext.isEmpty(this.value, true)) {
|
|
this.value = g
|
|
}
|
|
j.push([g, h.text])
|
|
}
|
|
this.store = new Ext.data.ArrayStore({idIndex:0, fields:["value", "text"], data:j, autoDestroy:true});
|
|
this.valueField = "value";
|
|
this.displayField = "text"
|
|
}
|
|
c.name = Ext.id();
|
|
if (!this.lazyRender) {
|
|
this.target = true;
|
|
this.el = Ext.DomHelper.insertBefore(c, this.autoCreate || this.defaultAutoCreate);
|
|
this.render(this.el.parentNode, c)
|
|
}
|
|
Ext.removeNode(c)
|
|
} else {
|
|
if (this.store) {
|
|
this.store = Ext.StoreMgr.lookup(this.store);
|
|
if (this.store.autoCreated) {
|
|
this.displayField = this.valueField = "field1";
|
|
if (!this.store.expandData) {
|
|
this.displayField = "field2"
|
|
}
|
|
this.mode = "local"
|
|
}
|
|
}
|
|
}
|
|
this.selectedIndex = -1;
|
|
if (this.mode == "local") {
|
|
if (!Ext.isDefined(this.initialConfig.queryDelay)) {
|
|
this.queryDelay = 10
|
|
}
|
|
if (!Ext.isDefined(this.initialConfig.minChars)) {
|
|
this.minChars = 0
|
|
}
|
|
}
|
|
}, onRender:function (b, a) {
|
|
if (this.hiddenName && !Ext.isDefined(this.submitValue)) {
|
|
this.submitValue = false
|
|
}
|
|
Ext.form.ComboBox.superclass.onRender.call(this, b, a);
|
|
if (this.hiddenName) {
|
|
this.hiddenField = this.el.insertSibling({tag:"input", type:"hidden", name:this.hiddenName, id:(this.hiddenId || Ext.id())}, "before", true)
|
|
}
|
|
if (Ext.isGecko) {
|
|
this.el.dom.setAttribute("autocomplete", "off")
|
|
}
|
|
if (!this.lazyInit) {
|
|
this.initList()
|
|
} else {
|
|
this.on("focus", this.initList, this, {single:true})
|
|
}
|
|
}, initValue:function () {
|
|
Ext.form.ComboBox.superclass.initValue.call(this);
|
|
if (this.hiddenField) {
|
|
this.hiddenField.value = Ext.value(Ext.isDefined(this.hiddenValue) ? this.hiddenValue : this.value, "")
|
|
}
|
|
}, getParentZIndex:function () {
|
|
var a;
|
|
if (this.ownerCt) {
|
|
this.findParentBy(function (b) {
|
|
a = parseInt(b.getPositionEl().getStyle("z-index"), 10);
|
|
return !!a
|
|
})
|
|
}
|
|
return a
|
|
}, getZIndex:function (b) {
|
|
b = b || Ext.getDom(this.getListParent() || Ext.getBody());
|
|
var a = parseInt(Ext.fly(b).getStyle("z-index"), 10);
|
|
if (!a) {
|
|
a = this.getParentZIndex()
|
|
}
|
|
return(a || 12000) + 5
|
|
}, initList:function () {
|
|
if (!this.list) {
|
|
var a = "x-combo-list", c = Ext.getDom(this.getListParent() || Ext.getBody());
|
|
this.list = new Ext.Layer({parentEl:c, shadow:this.shadow, cls:[a, this.listClass].join(" "), constrain:false, zindex:this.getZIndex(c)});
|
|
var b = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth);
|
|
this.list.setSize(b, 0);
|
|
this.list.swallowEvent("mousewheel");
|
|
this.assetHeight = 0;
|
|
if (this.syncFont !== false) {
|
|
this.list.setStyle("font-size", this.el.getStyle("font-size"))
|
|
}
|
|
if (this.title) {
|
|
this.header = this.list.createChild({cls:a + "-hd", html:this.title});
|
|
this.assetHeight += this.header.getHeight()
|
|
}
|
|
this.innerList = this.list.createChild({cls:a + "-inner"});
|
|
this.mon(this.innerList, "mouseover", this.onViewOver, this);
|
|
this.mon(this.innerList, "mousemove", this.onViewMove, this);
|
|
this.innerList.setWidth(b - this.list.getFrameWidth("lr"));
|
|
if (this.pageSize) {
|
|
this.footer = this.list.createChild({cls:a + "-ft"});
|
|
this.pageTb = new Ext.PagingToolbar({store:this.store, pageSize:this.pageSize, renderTo:this.footer});
|
|
this.assetHeight += this.footer.getHeight()
|
|
}
|
|
if (!this.tpl) {
|
|
this.tpl = '<tpl for="."><div class="' + a + '-item">{' + this.displayField + "}</div></tpl>"
|
|
}
|
|
this.view = new Ext.DataView({applyTo:this.innerList, tpl:this.tpl, singleSelect:true, selectedClass:this.selectedClass, itemSelector:this.itemSelector || "." + a + "-item", emptyText:this.listEmptyText, deferEmptyText:false});
|
|
this.mon(this.view, {containerclick:this.onViewClick, click:this.onViewClick, scope:this});
|
|
this.bindStore(this.store, true);
|
|
if (this.resizable) {
|
|
this.resizer = new Ext.Resizable(this.list, {pinned:true, handles:"se"});
|
|
this.mon(this.resizer, "resize", function (g, d, e) {
|
|
this.maxHeight = e - this.handleHeight - this.list.getFrameWidth("tb") - this.assetHeight;
|
|
this.listWidth = d;
|
|
this.innerList.setWidth(d - this.list.getFrameWidth("lr"));
|
|
this.restrictHeight()
|
|
}, this);
|
|
this[this.pageSize ? "footer" : "innerList"].setStyle("margin-bottom", this.handleHeight + "px")
|
|
}
|
|
}
|
|
}, getListParent:function () {
|
|
return document.body
|
|
}, getStore:function () {
|
|
return this.store
|
|
}, bindStore:function (a, b) {
|
|
if (this.store && !b) {
|
|
if (this.store !== a && this.store.autoDestroy) {
|
|
this.store.destroy()
|
|
} else {
|
|
this.store.un("beforeload", this.onBeforeLoad, this);
|
|
this.store.un("load", this.onLoad, this);
|
|
this.store.un("exception", this.collapse, this)
|
|
}
|
|
if (!a) {
|
|
this.store = null;
|
|
if (this.view) {
|
|
this.view.bindStore(null)
|
|
}
|
|
if (this.pageTb) {
|
|
this.pageTb.bindStore(null)
|
|
}
|
|
}
|
|
}
|
|
if (a) {
|
|
if (!b) {
|
|
this.lastQuery = null;
|
|
if (this.pageTb) {
|
|
this.pageTb.bindStore(a)
|
|
}
|
|
}
|
|
this.store = Ext.StoreMgr.lookup(a);
|
|
this.store.on({scope:this, beforeload:this.onBeforeLoad, load:this.onLoad, exception:this.collapse});
|
|
if (this.view) {
|
|
this.view.bindStore(a)
|
|
}
|
|
}
|
|
}, reset:function () {
|
|
if (this.clearFilterOnReset && this.mode == "local") {
|
|
this.store.clearFilter()
|
|
}
|
|
Ext.form.ComboBox.superclass.reset.call(this)
|
|
}, initEvents:function () {
|
|
Ext.form.ComboBox.superclass.initEvents.call(this);
|
|
this.keyNav = new Ext.KeyNav(this.el, {up:function (a) {
|
|
this.inKeyMode = true;
|
|
this.selectPrev()
|
|
}, down:function (a) {
|
|
if (!this.isExpanded()) {
|
|
this.onTriggerClick()
|
|
} else {
|
|
this.inKeyMode = true;
|
|
this.selectNext()
|
|
}
|
|
}, enter:function (a) {
|
|
this.onViewClick()
|
|
}, esc:function (a) {
|
|
this.collapse()
|
|
}, tab:function (a) {
|
|
if (this.forceSelection === true) {
|
|
this.collapse()
|
|
} else {
|
|
this.onViewClick(false)
|
|
}
|
|
return true
|
|
}, scope:this, doRelay:function (c, b, a) {
|
|
if (a == "down" || this.scope.isExpanded()) {
|
|
var d = Ext.KeyNav.prototype.doRelay.apply(this, arguments);
|
|
if (!Ext.isIE && Ext.EventManager.useKeydown) {
|
|
this.scope.fireKey(c)
|
|
}
|
|
return d
|
|
}
|
|
return true
|
|
}, forceKeyDown:true, defaultEventAction:"stopEvent"});
|
|
this.queryDelay = Math.max(this.queryDelay || 10, this.mode == "local" ? 10 : 250);
|
|
this.dqTask = new Ext.util.DelayedTask(this.initQuery, this);
|
|
if (this.typeAhead) {
|
|
this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this)
|
|
}
|
|
if (!this.enableKeyEvents) {
|
|
this.mon(this.el, "keyup", this.onKeyUp, this)
|
|
}
|
|
}, onDestroy:function () {
|
|
if (this.dqTask) {
|
|
this.dqTask.cancel();
|
|
this.dqTask = null
|
|
}
|
|
this.bindStore(null);
|
|
Ext.destroy(this.resizer, this.view, this.pageTb, this.list);
|
|
Ext.destroyMembers(this, "hiddenField");
|
|
Ext.form.ComboBox.superclass.onDestroy.call(this)
|
|
}, fireKey:function (a) {
|
|
if (!this.isExpanded()) {
|
|
Ext.form.ComboBox.superclass.fireKey.call(this, a)
|
|
}
|
|
}, onResize:function (a, b) {
|
|
Ext.form.ComboBox.superclass.onResize.apply(this, arguments);
|
|
if (!isNaN(a) && this.isVisible() && this.list) {
|
|
this.doResize(a)
|
|
} else {
|
|
this.bufferSize = a
|
|
}
|
|
}, doResize:function (a) {
|
|
if (!Ext.isDefined(this.listWidth)) {
|
|
var b = Math.max(a, this.minListWidth);
|
|
this.list.setWidth(b);
|
|
this.innerList.setWidth(b - this.list.getFrameWidth("lr"))
|
|
}
|
|
}, onEnable:function () {
|
|
Ext.form.ComboBox.superclass.onEnable.apply(this, arguments);
|
|
if (this.hiddenField) {
|
|
this.hiddenField.disabled = false
|
|
}
|
|
}, onDisable:function () {
|
|
Ext.form.ComboBox.superclass.onDisable.apply(this, arguments);
|
|
if (this.hiddenField) {
|
|
this.hiddenField.disabled = true
|
|
}
|
|
}, onBeforeLoad:function () {
|
|
if (!this.hasFocus) {
|
|
return
|
|
}
|
|
this.innerList.update(this.loadingText ? '<div class="loading-indicator">' + this.loadingText + "</div>" : "");
|
|
this.restrictHeight();
|
|
this.selectedIndex = -1
|
|
}, onLoad:function () {
|
|
if (!this.hasFocus) {
|
|
return
|
|
}
|
|
if (this.store.getCount() > 0 || this.listEmptyText) {
|
|
this.expand();
|
|
this.restrictHeight();
|
|
if (this.lastQuery == this.allQuery) {
|
|
if (this.editable) {
|
|
this.el.dom.select()
|
|
}
|
|
if (this.autoSelect !== false && !this.selectByValue(this.value, true)) {
|
|
this.select(0, true)
|
|
}
|
|
} else {
|
|
if (this.autoSelect !== false) {
|
|
this.selectNext()
|
|
}
|
|
if (this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE) {
|
|
this.taTask.delay(this.typeAheadDelay)
|
|
}
|
|
}
|
|
} else {
|
|
this.collapse()
|
|
}
|
|
}, onTypeAhead:function () {
|
|
if (this.store.getCount() > 0) {
|
|
var b = this.store.getAt(0);
|
|
var c = b.data[this.displayField];
|
|
var a = c.length;
|
|
var d = this.getRawValue().length;
|
|
if (d != a) {
|
|
this.setRawValue(c);
|
|
this.selectText(d, c.length)
|
|
}
|
|
}
|
|
}, assertValue:function () {
|
|
var b = this.getRawValue(), a;
|
|
if (this.valueField && Ext.isDefined(this.value)) {
|
|
a = this.findRecord(this.valueField, this.value)
|
|
}
|
|
if (!a || a.get(this.displayField) != b) {
|
|
a = this.findRecord(this.displayField, b)
|
|
}
|
|
if (!a && this.forceSelection) {
|
|
if (b.length > 0 && b != this.emptyText) {
|
|
this.el.dom.value = Ext.value(this.lastSelectionText, "");
|
|
this.applyEmptyText()
|
|
} else {
|
|
this.clearValue()
|
|
}
|
|
} else {
|
|
if (a && this.valueField) {
|
|
if (this.value == b) {
|
|
return
|
|
}
|
|
b = a.get(this.valueField || this.displayField)
|
|
}
|
|
this.setValue(b)
|
|
}
|
|
}, onSelect:function (a, b) {
|
|
if (this.fireEvent("beforeselect", this, a, b) !== false) {
|
|
this.setValue(a.data[this.valueField || this.displayField]);
|
|
this.collapse();
|
|
this.fireEvent("select", this, a, b)
|
|
}
|
|
}, getName:function () {
|
|
var a = this.hiddenField;
|
|
return a && a.name ? a.name : this.hiddenName || Ext.form.ComboBox.superclass.getName.call(this)
|
|
}, getValue:function () {
|
|
if (this.valueField) {
|
|
return Ext.isDefined(this.value) ? this.value : ""
|
|
} else {
|
|
return Ext.form.ComboBox.superclass.getValue.call(this)
|
|
}
|
|
}, clearValue:function () {
|
|
if (this.hiddenField) {
|
|
this.hiddenField.value = ""
|
|
}
|
|
this.setRawValue("");
|
|
this.lastSelectionText = "";
|
|
this.applyEmptyText();
|
|
this.value = ""
|
|
}, setValue:function (a) {
|
|
var c = a;
|
|
if (this.valueField) {
|
|
var b = this.findRecord(this.valueField, a);
|
|
if (b) {
|
|
c = b.data[this.displayField]
|
|
} else {
|
|
if (Ext.isDefined(this.valueNotFoundText)) {
|
|
c = this.valueNotFoundText
|
|
}
|
|
}
|
|
}
|
|
this.lastSelectionText = c;
|
|
if (this.hiddenField) {
|
|
this.hiddenField.value = Ext.value(a, "")
|
|
}
|
|
Ext.form.ComboBox.superclass.setValue.call(this, c);
|
|
this.value = a;
|
|
return this
|
|
}, findRecord:function (c, b) {
|
|
var a;
|
|
if (this.store.getCount() > 0) {
|
|
this.store.each(function (d) {
|
|
if (d.data[c] == b) {
|
|
a = d;
|
|
return false
|
|
}
|
|
})
|
|
}
|
|
return a
|
|
}, onViewMove:function (b, a) {
|
|
this.inKeyMode = false
|
|
}, onViewOver:function (d, b) {
|
|
if (this.inKeyMode) {
|
|
return
|
|
}
|
|
var c = this.view.findItemFromChild(b);
|
|
if (c) {
|
|
var a = this.view.indexOf(c);
|
|
this.select(a, false)
|
|
}
|
|
}, onViewClick:function (b) {
|
|
var a = this.view.getSelectedIndexes()[0], c = this.store, d = c.getAt(a);
|
|
if (d) {
|
|
this.onSelect(d, a)
|
|
} else {
|
|
this.collapse()
|
|
}
|
|
if (b !== false) {
|
|
this.el.focus()
|
|
}
|
|
}, restrictHeight:function () {
|
|
this.innerList.dom.style.height = "";
|
|
var b = this.innerList.dom, e = this.list.getFrameWidth("tb") + (this.resizable ? this.handleHeight : 0) + this.assetHeight, c = Math.max(b.clientHeight, b.offsetHeight, b.scrollHeight), a = this.getPosition()[1] - Ext.getBody().getScroll().top, g = Ext.lib.Dom.getViewHeight() - a - this.getSize().height, d = Math.max(a, g, this.minHeight || 0) - this.list.shadowOffset - e - 5;
|
|
c = Math.min(c, d, this.maxHeight);
|
|
this.innerList.setHeight(c);
|
|
this.list.beginUpdate();
|
|
this.list.setHeight(c + e);
|
|
this.list.alignTo.apply(this.list, [this.el].concat(this.listAlign));
|
|
this.list.endUpdate()
|
|
}, isExpanded:function () {
|
|
return this.list && this.list.isVisible()
|
|
}, selectByValue:function (a, c) {
|
|
if (!Ext.isEmpty(a, true)) {
|
|
var b = this.findRecord(this.valueField || this.displayField, a);
|
|
if (b) {
|
|
this.select(this.store.indexOf(b), c);
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}, select:function (a, c) {
|
|
this.selectedIndex = a;
|
|
this.view.select(a);
|
|
if (c !== false) {
|
|
var b = this.view.getNode(a);
|
|
if (b) {
|
|
this.innerList.scrollChildIntoView(b, false)
|
|
}
|
|
}
|
|
}, selectNext:function () {
|
|
var a = this.store.getCount();
|
|
if (a > 0) {
|
|
if (this.selectedIndex == -1) {
|
|
this.select(0)
|
|
} else {
|
|
if (this.selectedIndex < a - 1) {
|
|
this.select(this.selectedIndex + 1)
|
|
}
|
|
}
|
|
}
|
|
}, selectPrev:function () {
|
|
var a = this.store.getCount();
|
|
if (a > 0) {
|
|
if (this.selectedIndex == -1) {
|
|
this.select(0)
|
|
} else {
|
|
if (this.selectedIndex !== 0) {
|
|
this.select(this.selectedIndex - 1)
|
|
}
|
|
}
|
|
}
|
|
}, onKeyUp:function (b) {
|
|
var a = b.getKey();
|
|
if (this.editable !== false && this.readOnly !== true && (a == b.BACKSPACE || !b.isSpecialKey())) {
|
|
this.lastKey = a;
|
|
this.dqTask.delay(this.queryDelay)
|
|
}
|
|
Ext.form.ComboBox.superclass.onKeyUp.call(this, b)
|
|
}, validateBlur:function () {
|
|
return !this.list || !this.list.isVisible()
|
|
}, initQuery:function () {
|
|
this.doQuery(this.getRawValue())
|
|
}, beforeBlur:function () {
|
|
this.assertValue()
|
|
}, postBlur:function () {
|
|
Ext.form.ComboBox.superclass.postBlur.call(this);
|
|
this.collapse();
|
|
this.inKeyMode = false
|
|
}, doQuery:function (c, b) {
|
|
c = Ext.isEmpty(c) ? "" : c;
|
|
var a = {query:c, forceAll:b, combo:this, cancel:false};
|
|
if (this.fireEvent("beforequery", a) === false || a.cancel) {
|
|
return false
|
|
}
|
|
c = a.query;
|
|
b = a.forceAll;
|
|
if (b === true || (c.length >= this.minChars)) {
|
|
if (this.lastQuery !== c) {
|
|
this.lastQuery = c;
|
|
if (this.mode == "local") {
|
|
this.selectedIndex = -1;
|
|
if (b) {
|
|
this.store.clearFilter()
|
|
} else {
|
|
this.store.filter(this.displayField, c)
|
|
}
|
|
this.onLoad()
|
|
} else {
|
|
this.store.baseParams[this.queryParam] = c;
|
|
this.store.load({params:this.getParams(c)});
|
|
this.expand()
|
|
}
|
|
} else {
|
|
this.selectedIndex = -1;
|
|
this.onLoad()
|
|
}
|
|
}
|
|
}, getParams:function (a) {
|
|
var b = {}, c = this.store.paramNames;
|
|
if (this.pageSize) {
|
|
b[c.start] = 0;
|
|
b[c.limit] = this.pageSize
|
|
}
|
|
return b
|
|
}, collapse:function () {
|
|
if (!this.isExpanded()) {
|
|
return
|
|
}
|
|
this.list.hide();
|
|
Ext.getDoc().un("mousewheel", this.collapseIf, this);
|
|
Ext.getDoc().un("mousedown", this.collapseIf, this);
|
|
this.fireEvent("collapse", this)
|
|
}, collapseIf:function (a) {
|
|
if (!this.isDestroyed && !a.within(this.wrap) && !a.within(this.list)) {
|
|
this.collapse()
|
|
}
|
|
}, expand:function () {
|
|
if (this.isExpanded() || !this.hasFocus) {
|
|
return
|
|
}
|
|
if (this.title || this.pageSize) {
|
|
this.assetHeight = 0;
|
|
if (this.title) {
|
|
this.assetHeight += this.header.getHeight()
|
|
}
|
|
if (this.pageSize) {
|
|
this.assetHeight += this.footer.getHeight()
|
|
}
|
|
}
|
|
if (this.bufferSize) {
|
|
this.doResize(this.bufferSize);
|
|
delete this.bufferSize
|
|
}
|
|
this.list.alignTo.apply(this.list, [this.el].concat(this.listAlign));
|
|
this.list.setZIndex(this.getZIndex());
|
|
this.list.show();
|
|
if (Ext.isGecko2) {
|
|
this.innerList.setOverflow("auto")
|
|
}
|
|
this.mon(Ext.getDoc(), {scope:this, mousewheel:this.collapseIf, mousedown:this.collapseIf});
|
|
this.fireEvent("expand", this)
|
|
}, onTriggerClick:function () {
|
|
if (this.readOnly || this.disabled) {
|
|
return
|
|
}
|
|
if (this.isExpanded()) {
|
|
this.collapse();
|
|
this.el.focus()
|
|
} else {
|
|
this.onFocus({});
|
|
if (this.triggerAction == "all") {
|
|
this.doQuery(this.allQuery, true)
|
|
} else {
|
|
this.doQuery(this.getRawValue())
|
|
}
|
|
this.el.focus()
|
|
}
|
|
}});
|
|
Ext.reg("combo", Ext.form.ComboBox);
|
|
Ext.form.Checkbox = Ext.extend(Ext.form.Field, {focusClass:undefined, fieldClass:"x-form-field", checked:false, boxLabel:" ", defaultAutoCreate:{tag:"input", type:"checkbox", autocomplete:"off"}, actionMode:"wrap", initComponent:function () {
|
|
Ext.form.Checkbox.superclass.initComponent.call(this);
|
|
this.addEvents("check")
|
|
}, onResize:function () {
|
|
Ext.form.Checkbox.superclass.onResize.apply(this, arguments);
|
|
if (!this.boxLabel && !this.fieldLabel) {
|
|
this.el.alignTo(this.wrap, "c-c")
|
|
}
|
|
}, initEvents:function () {
|
|
Ext.form.Checkbox.superclass.initEvents.call(this);
|
|
this.mon(this.el, {scope:this, click:this.onClick, change:this.onClick})
|
|
}, markInvalid:Ext.emptyFn, clearInvalid:Ext.emptyFn, onRender:function (b, a) {
|
|
Ext.form.Checkbox.superclass.onRender.call(this, b, a);
|
|
if (this.inputValue !== undefined) {
|
|
this.el.dom.value = this.inputValue
|
|
}
|
|
this.wrap = this.el.wrap({cls:"x-form-check-wrap"});
|
|
if (this.boxLabel) {
|
|
this.wrap.createChild({tag:"label", htmlFor:this.el.id, cls:"x-form-cb-label", html:this.boxLabel})
|
|
}
|
|
if (this.checked) {
|
|
this.setValue(true)
|
|
} else {
|
|
this.checked = this.el.dom.checked
|
|
}
|
|
if (Ext.isIE && !Ext.isStrict) {
|
|
this.wrap.repaint()
|
|
}
|
|
this.resizeEl = this.positionEl = this.wrap
|
|
}, onDestroy:function () {
|
|
Ext.destroy(this.wrap);
|
|
Ext.form.Checkbox.superclass.onDestroy.call(this)
|
|
}, initValue:function () {
|
|
this.originalValue = this.getValue()
|
|
}, getValue:function () {
|
|
if (this.rendered) {
|
|
return this.el.dom.checked
|
|
}
|
|
return this.checked
|
|
}, onClick:function () {
|
|
if (this.el.dom.checked != this.checked) {
|
|
this.setValue(this.el.dom.checked)
|
|
}
|
|
}, setValue:function (a) {
|
|
var c = this.checked, b = this.inputValue;
|
|
if (a === false) {
|
|
this.checked = false
|
|
} else {
|
|
this.checked = (a === true || a === "true" || a == "1" || (b ? a == b : String(a).toLowerCase() == "on"))
|
|
}
|
|
if (this.rendered) {
|
|
this.el.dom.checked = this.checked;
|
|
this.el.dom.defaultChecked = this.checked
|
|
}
|
|
if (c != this.checked) {
|
|
this.fireEvent("check", this, this.checked);
|
|
if (this.handler) {
|
|
this.handler.call(this.scope || this, this, this.checked)
|
|
}
|
|
}
|
|
return this
|
|
}});
|
|
Ext.reg("checkbox", Ext.form.Checkbox);
|
|
Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, {columns:"auto", vertical:false, allowBlank:true, blankText:"You must select at least one item in this group", defaultType:"checkbox", groupCls:"x-form-check-group", initComponent:function () {
|
|
this.addEvents("change");
|
|
this.on("change", this.validate, this);
|
|
Ext.form.CheckboxGroup.superclass.initComponent.call(this)
|
|
}, onRender:function (j, g) {
|
|
if (!this.el) {
|
|
var p = {autoEl:{id:this.id}, cls:this.groupCls, layout:"column", renderTo:j, bufferResize:false};
|
|
var a = {xtype:"container", defaultType:this.defaultType, layout:"form", defaults:{hideLabel:true, anchor:"100%"}};
|
|
if (this.items[0].items) {
|
|
Ext.apply(p, {layoutConfig:{columns:this.items.length}, defaults:this.defaults, items:this.items});
|
|
for (var e = 0, m = this.items.length; e < m; e++) {
|
|
Ext.applyIf(this.items[e], a)
|
|
}
|
|
} else {
|
|
var d, n = [];
|
|
if (typeof this.columns == "string") {
|
|
this.columns = this.items.length
|
|
}
|
|
if (!Ext.isArray(this.columns)) {
|
|
var k = [];
|
|
for (var e = 0; e < this.columns; e++) {
|
|
k.push((100 / this.columns) * 0.01)
|
|
}
|
|
this.columns = k
|
|
}
|
|
d = this.columns.length;
|
|
for (var e = 0; e < d; e++) {
|
|
var b = Ext.apply({items:[]}, a);
|
|
b[this.columns[e] <= 1 ? "columnWidth" : "width"] = this.columns[e];
|
|
if (this.defaults) {
|
|
b.defaults = Ext.apply(b.defaults || {}, this.defaults)
|
|
}
|
|
n.push(b)
|
|
}
|
|
if (this.vertical) {
|
|
var r = Math.ceil(this.items.length / d), o = 0;
|
|
for (var e = 0, m = this.items.length; e < m; e++) {
|
|
if (e > 0 && e % r == 0) {
|
|
o++
|
|
}
|
|
if (this.items[e].fieldLabel) {
|
|
this.items[e].hideLabel = false
|
|
}
|
|
n[o].items.push(this.items[e])
|
|
}
|
|
} else {
|
|
for (var e = 0, m = this.items.length; e < m; e++) {
|
|
var q = e % d;
|
|
if (this.items[e].fieldLabel) {
|
|
this.items[e].hideLabel = false
|
|
}
|
|
n[q].items.push(this.items[e])
|
|
}
|
|
}
|
|
Ext.apply(p, {layoutConfig:{columns:d}, items:n})
|
|
}
|
|
this.panel = new Ext.Container(p);
|
|
this.panel.ownerCt = this;
|
|
this.el = this.panel.getEl();
|
|
if (this.forId && this.itemCls) {
|
|
var c = this.el.up(this.itemCls).child("label", true);
|
|
if (c) {
|
|
c.setAttribute("htmlFor", this.forId)
|
|
}
|
|
}
|
|
var h = this.panel.findBy(function (i) {
|
|
return i.isFormField
|
|
}, this);
|
|
this.items = new Ext.util.MixedCollection();
|
|
this.items.addAll(h)
|
|
}
|
|
Ext.form.CheckboxGroup.superclass.onRender.call(this, j, g)
|
|
}, initValue:function () {
|
|
if (this.value) {
|
|
this.setValue.apply(this, this.buffered ? this.value : [this.value]);
|
|
delete this.buffered;
|
|
delete this.value
|
|
}
|
|
}, afterRender:function () {
|
|
Ext.form.CheckboxGroup.superclass.afterRender.call(this);
|
|
this.eachItem(function (a) {
|
|
a.on("check", this.fireChecked, this);
|
|
a.inGroup = true
|
|
})
|
|
}, doLayout:function () {
|
|
if (this.rendered) {
|
|
this.panel.forceLayout = this.ownerCt.forceLayout;
|
|
this.panel.doLayout()
|
|
}
|
|
}, fireChecked:function () {
|
|
var a = [];
|
|
this.eachItem(function (b) {
|
|
if (b.checked) {
|
|
a.push(b)
|
|
}
|
|
});
|
|
this.fireEvent("change", this, a)
|
|
}, getErrors:function () {
|
|
var b = Ext.form.CheckboxGroup.superclass.getErrors.apply(this, arguments);
|
|
if (!this.allowBlank) {
|
|
var a = true;
|
|
this.eachItem(function (c) {
|
|
if (c.checked) {
|
|
return(a = false)
|
|
}
|
|
});
|
|
if (a) {
|
|
b.push(this.blankText)
|
|
}
|
|
}
|
|
return b
|
|
}, isDirty:function () {
|
|
if (this.disabled || !this.rendered) {
|
|
return false
|
|
}
|
|
var a = false;
|
|
this.eachItem(function (b) {
|
|
if (b.isDirty()) {
|
|
a = true;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, setReadOnly:function (a) {
|
|
if (this.rendered) {
|
|
this.eachItem(function (b) {
|
|
b.setReadOnly(a)
|
|
})
|
|
}
|
|
this.readOnly = a
|
|
}, onDisable:function () {
|
|
this.eachItem(function (a) {
|
|
a.disable()
|
|
})
|
|
}, onEnable:function () {
|
|
this.eachItem(function (a) {
|
|
a.enable()
|
|
})
|
|
}, onResize:function (a, b) {
|
|
this.panel.setSize(a, b);
|
|
this.panel.doLayout()
|
|
}, reset:function () {
|
|
if (this.originalValue) {
|
|
this.eachItem(function (a) {
|
|
if (a.setValue) {
|
|
a.setValue(false);
|
|
a.originalValue = a.getValue()
|
|
}
|
|
});
|
|
this.resetOriginal = true;
|
|
this.setValue(this.originalValue);
|
|
delete this.resetOriginal
|
|
} else {
|
|
this.eachItem(function (a) {
|
|
if (a.reset) {
|
|
a.reset()
|
|
}
|
|
})
|
|
}
|
|
(function () {
|
|
this.clearInvalid()
|
|
}).defer(50, this)
|
|
}, setValue:function () {
|
|
if (this.rendered) {
|
|
this.onSetValue.apply(this, arguments)
|
|
} else {
|
|
this.buffered = true;
|
|
this.value = arguments
|
|
}
|
|
return this
|
|
}, onSetValue:function (d, c) {
|
|
if (arguments.length == 1) {
|
|
if (Ext.isArray(d)) {
|
|
Ext.each(d, function (h, e) {
|
|
if (Ext.isObject(h) && h.setValue) {
|
|
h.setValue(true);
|
|
if (this.resetOriginal === true) {
|
|
h.originalValue = h.getValue()
|
|
}
|
|
} else {
|
|
var g = this.items.itemAt(e);
|
|
if (g) {
|
|
g.setValue(h)
|
|
}
|
|
}
|
|
}, this)
|
|
} else {
|
|
if (Ext.isObject(d)) {
|
|
for (var a in d) {
|
|
var b = this.getBox(a);
|
|
if (b) {
|
|
b.setValue(d[a])
|
|
}
|
|
}
|
|
} else {
|
|
this.setValueForItem(d)
|
|
}
|
|
}
|
|
} else {
|
|
var b = this.getBox(d);
|
|
if (b) {
|
|
b.setValue(c)
|
|
}
|
|
}
|
|
}, beforeDestroy:function () {
|
|
Ext.destroy(this.panel);
|
|
if (!this.rendered) {
|
|
Ext.destroy(this.items)
|
|
}
|
|
Ext.form.CheckboxGroup.superclass.beforeDestroy.call(this)
|
|
}, setValueForItem:function (a) {
|
|
a = String(a).split(",");
|
|
this.eachItem(function (b) {
|
|
if (a.indexOf(b.inputValue) > -1) {
|
|
b.setValue(true)
|
|
}
|
|
})
|
|
}, getBox:function (b) {
|
|
var a = null;
|
|
this.eachItem(function (c) {
|
|
if (b == c || c.dataIndex == b || c.id == b || c.getName() == b) {
|
|
a = c;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, getValue:function () {
|
|
var a = [];
|
|
this.eachItem(function (b) {
|
|
if (b.checked) {
|
|
a.push(b)
|
|
}
|
|
});
|
|
return a
|
|
}, eachItem:function (b, a) {
|
|
if (this.items && this.items.each) {
|
|
this.items.each(b, a || this)
|
|
}
|
|
}, getRawValue:Ext.emptyFn, setRawValue:Ext.emptyFn});
|
|
Ext.reg("checkboxgroup", Ext.form.CheckboxGroup);
|
|
Ext.form.CompositeField = Ext.extend(Ext.form.Field, {defaultMargins:"0 5 0 0", skipLastItemMargin:true, isComposite:true, combineErrors:true, labelConnector:", ", initComponent:function () {
|
|
var g = [], b = this.items, e;
|
|
for (var d = 0, c = b.length; d < c; d++) {
|
|
e = b[d];
|
|
if (!Ext.isEmpty(e.ref)) {
|
|
e.ref = "../" + e.ref
|
|
}
|
|
g.push(e.fieldLabel);
|
|
Ext.applyIf(e, this.defaults);
|
|
if (!(d == c - 1 && this.skipLastItemMargin)) {
|
|
Ext.applyIf(e, {margins:this.defaultMargins})
|
|
}
|
|
}
|
|
this.fieldLabel = this.fieldLabel || this.buildLabel(g);
|
|
this.fieldErrors = new Ext.util.MixedCollection(true, function (h) {
|
|
return h.field
|
|
});
|
|
this.fieldErrors.on({scope:this, add:this.updateInvalidMark, remove:this.updateInvalidMark, replace:this.updateInvalidMark});
|
|
Ext.form.CompositeField.superclass.initComponent.apply(this, arguments);
|
|
this.innerCt = new Ext.Container({layout:"hbox", items:this.items, cls:"x-form-composite", defaultMargins:"0 3 0 0", ownerCt:this});
|
|
this.innerCt.ownerCt = undefined;
|
|
var a = this.innerCt.findBy(function (h) {
|
|
return h.isFormField
|
|
}, this);
|
|
this.items = new Ext.util.MixedCollection();
|
|
this.items.addAll(a)
|
|
}, onRender:function (c, a) {
|
|
if (!this.el) {
|
|
var d = this.innerCt;
|
|
d.render(c);
|
|
this.el = d.getEl();
|
|
if (this.combineErrors) {
|
|
this.eachItem(function (e) {
|
|
Ext.apply(e, {markInvalid:this.onFieldMarkInvalid.createDelegate(this, [e], 0), clearInvalid:this.onFieldClearInvalid.createDelegate(this, [e], 0)})
|
|
})
|
|
}
|
|
var b = this.el.parent().parent().child("label", true);
|
|
if (b) {
|
|
b.setAttribute("for", this.items.items[0].id)
|
|
}
|
|
}
|
|
Ext.form.CompositeField.superclass.onRender.apply(this, arguments)
|
|
}, onFieldMarkInvalid:function (d, c) {
|
|
var b = d.getName(), a = {field:b, errorName:d.fieldLabel || b, error:c};
|
|
this.fieldErrors.replace(b, a);
|
|
if (!d.preventMark) {
|
|
d.el.addClass(d.invalidClass)
|
|
}
|
|
}, onFieldClearInvalid:function (a) {
|
|
this.fieldErrors.removeKey(a.getName());
|
|
a.el.removeClass(a.invalidClass)
|
|
}, updateInvalidMark:function () {
|
|
var a = Ext.isIE6 && Ext.isStrict;
|
|
if (this.fieldErrors.length == 0) {
|
|
this.clearInvalid();
|
|
if (a) {
|
|
this.clearInvalid.defer(50, this)
|
|
}
|
|
} else {
|
|
var b = this.buildCombinedErrorMessage(this.fieldErrors.items);
|
|
this.sortErrors();
|
|
this.markInvalid(b);
|
|
if (a) {
|
|
this.markInvalid(b)
|
|
}
|
|
}
|
|
}, validateValue:function (c, a) {
|
|
var b = true;
|
|
this.eachItem(function (d) {
|
|
if (!d.isValid(a)) {
|
|
b = false
|
|
}
|
|
});
|
|
return b
|
|
}, buildCombinedErrorMessage:function (e) {
|
|
var d = [], b;
|
|
for (var c = 0, a = e.length; c < a; c++) {
|
|
b = e[c];
|
|
d.push(String.format("{0}: {1}", b.errorName, b.error))
|
|
}
|
|
return d.join("<br />")
|
|
}, sortErrors:function () {
|
|
var a = this.items;
|
|
this.fieldErrors.sort("ASC", function (g, d) {
|
|
var c = function (b) {
|
|
return function (i) {
|
|
return i.getName() == b
|
|
}
|
|
};
|
|
var h = a.findIndexBy(c(g.field)), e = a.findIndexBy(c(d.field));
|
|
return h < e ? -1 : 1
|
|
})
|
|
}, reset:function () {
|
|
this.eachItem(function (a) {
|
|
a.reset()
|
|
});
|
|
(function () {
|
|
this.clearInvalid()
|
|
}).defer(50, this)
|
|
}, clearInvalidChildren:function () {
|
|
this.eachItem(function (a) {
|
|
a.clearInvalid()
|
|
})
|
|
}, buildLabel:function (a) {
|
|
return Ext.clean(a).join(this.labelConnector)
|
|
}, isDirty:function () {
|
|
if (this.disabled || !this.rendered) {
|
|
return false
|
|
}
|
|
var a = false;
|
|
this.eachItem(function (b) {
|
|
if (b.isDirty()) {
|
|
a = true;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, eachItem:function (b, a) {
|
|
if (this.items && this.items.each) {
|
|
this.items.each(b, a || this)
|
|
}
|
|
}, onResize:function (e, c, a, d) {
|
|
var b = this.innerCt;
|
|
if (this.rendered && b.rendered) {
|
|
b.setSize(e, c)
|
|
}
|
|
Ext.form.CompositeField.superclass.onResize.apply(this, arguments)
|
|
}, doLayout:function (c, b) {
|
|
if (this.rendered) {
|
|
var a = this.innerCt;
|
|
a.forceLayout = this.ownerCt.forceLayout;
|
|
a.doLayout(c, b)
|
|
}
|
|
}, beforeDestroy:function () {
|
|
Ext.destroy(this.innerCt);
|
|
Ext.form.CompositeField.superclass.beforeDestroy.call(this)
|
|
}, setReadOnly:function (a) {
|
|
if (a == undefined) {
|
|
a = true
|
|
}
|
|
a = !!a;
|
|
if (this.rendered) {
|
|
this.eachItem(function (b) {
|
|
b.setReadOnly(a)
|
|
})
|
|
}
|
|
this.readOnly = a
|
|
}, onShow:function () {
|
|
Ext.form.CompositeField.superclass.onShow.call(this);
|
|
this.doLayout()
|
|
}, onDisable:function () {
|
|
this.eachItem(function (a) {
|
|
a.disable()
|
|
})
|
|
}, onEnable:function () {
|
|
this.eachItem(function (a) {
|
|
a.enable()
|
|
})
|
|
}});
|
|
Ext.reg("compositefield", Ext.form.CompositeField);
|
|
Ext.form.Radio = Ext.extend(Ext.form.Checkbox, {inputType:"radio", markInvalid:Ext.emptyFn, clearInvalid:Ext.emptyFn, getGroupValue:function () {
|
|
var a = this.el.up("form") || Ext.getBody();
|
|
var b = a.child('input[name="' + this.el.dom.name + '"]:checked', true);
|
|
return b ? b.value : null
|
|
}, setValue:function (b) {
|
|
var a, d, c;
|
|
if (typeof b == "boolean") {
|
|
Ext.form.Radio.superclass.setValue.call(this, b)
|
|
} else {
|
|
if (this.rendered) {
|
|
a = this.getCheckEl();
|
|
c = a.child('input[name="' + this.el.dom.name + '"][value="' + b + '"]', true);
|
|
if (c) {
|
|
Ext.getCmp(c.id).setValue(true)
|
|
}
|
|
}
|
|
}
|
|
if (this.rendered && this.checked) {
|
|
a = a || this.getCheckEl();
|
|
d = this.getCheckEl().select('input[name="' + this.el.dom.name + '"]');
|
|
d.each(function (e) {
|
|
if (e.dom.id != this.id) {
|
|
Ext.getCmp(e.dom.id).setValue(false)
|
|
}
|
|
}, this)
|
|
}
|
|
return this
|
|
}, getCheckEl:function () {
|
|
if (this.inGroup) {
|
|
return this.el.up(".x-form-radio-group")
|
|
}
|
|
return this.el.up("form") || Ext.getBody()
|
|
}});
|
|
Ext.reg("radio", Ext.form.Radio);
|
|
Ext.form.RadioGroup = Ext.extend(Ext.form.CheckboxGroup, {allowBlank:true, blankText:"You must select one item in this group", defaultType:"radio", groupCls:"x-form-radio-group", getValue:function () {
|
|
var a = null;
|
|
this.eachItem(function (b) {
|
|
if (b.checked) {
|
|
a = b;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, onSetValue:function (c, b) {
|
|
if (arguments.length > 1) {
|
|
var a = this.getBox(c);
|
|
if (a) {
|
|
a.setValue(b);
|
|
if (a.checked) {
|
|
this.eachItem(function (d) {
|
|
if (d !== a) {
|
|
d.setValue(false)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
} else {
|
|
this.setValueForItem(c)
|
|
}
|
|
}, setValueForItem:function (a) {
|
|
a = String(a).split(",")[0];
|
|
this.eachItem(function (b) {
|
|
b.setValue(a == b.inputValue)
|
|
})
|
|
}, fireChecked:function () {
|
|
if (!this.checkTask) {
|
|
this.checkTask = new Ext.util.DelayedTask(this.bufferChecked, this)
|
|
}
|
|
this.checkTask.delay(10)
|
|
}, bufferChecked:function () {
|
|
var a = null;
|
|
this.eachItem(function (b) {
|
|
if (b.checked) {
|
|
a = b;
|
|
return false
|
|
}
|
|
});
|
|
this.fireEvent("change", this, a)
|
|
}, onDestroy:function () {
|
|
if (this.checkTask) {
|
|
this.checkTask.cancel();
|
|
this.checkTask = null
|
|
}
|
|
Ext.form.RadioGroup.superclass.onDestroy.call(this)
|
|
}});
|
|
Ext.reg("radiogroup", Ext.form.RadioGroup);
|
|
Ext.form.Hidden = Ext.extend(Ext.form.Field, {inputType:"hidden", shouldLayout:false, onRender:function () {
|
|
Ext.form.Hidden.superclass.onRender.apply(this, arguments)
|
|
}, initEvents:function () {
|
|
this.originalValue = this.getValue()
|
|
}, setSize:Ext.emptyFn, setWidth:Ext.emptyFn, setHeight:Ext.emptyFn, setPosition:Ext.emptyFn, setPagePosition:Ext.emptyFn, markInvalid:Ext.emptyFn, clearInvalid:Ext.emptyFn});
|
|
Ext.reg("hidden", Ext.form.Hidden);
|
|
Ext.form.BasicForm = Ext.extend(Ext.util.Observable, {constructor:function (b, a) {
|
|
Ext.apply(this, a);
|
|
if (Ext.isString(this.paramOrder)) {
|
|
this.paramOrder = this.paramOrder.split(/[\s,|]/)
|
|
}
|
|
this.items = new Ext.util.MixedCollection(false, function (c) {
|
|
return c.getItemId()
|
|
});
|
|
this.addEvents("beforeaction", "actionfailed", "actioncomplete");
|
|
if (b) {
|
|
this.initEl(b)
|
|
}
|
|
Ext.form.BasicForm.superclass.constructor.call(this)
|
|
}, timeout:30, paramOrder:undefined, paramsAsHash:false, waitTitle:"Please Wait...", activeAction:null, trackResetOnLoad:false, initEl:function (a) {
|
|
this.el = Ext.get(a);
|
|
this.id = this.el.id || Ext.id();
|
|
if (!this.standardSubmit) {
|
|
this.el.on("submit", this.onSubmit, this)
|
|
}
|
|
this.el.addClass("x-form")
|
|
}, getEl:function () {
|
|
return this.el
|
|
}, onSubmit:function (a) {
|
|
a.stopEvent()
|
|
}, destroy:function (a) {
|
|
if (a !== true) {
|
|
this.items.each(function (b) {
|
|
Ext.destroy(b)
|
|
});
|
|
Ext.destroy(this.el)
|
|
}
|
|
this.items.clear();
|
|
this.purgeListeners()
|
|
}, isValid:function () {
|
|
var a = true;
|
|
this.items.each(function (b) {
|
|
if (!b.validate()) {
|
|
a = false
|
|
}
|
|
});
|
|
return a
|
|
}, isDirty:function () {
|
|
var a = false;
|
|
this.items.each(function (b) {
|
|
if (b.isDirty()) {
|
|
a = true;
|
|
return false
|
|
}
|
|
});
|
|
return a
|
|
}, doAction:function (b, a) {
|
|
if (Ext.isString(b)) {
|
|
b = new Ext.form.Action.ACTION_TYPES[b](this, a)
|
|
}
|
|
if (this.fireEvent("beforeaction", this, b) !== false) {
|
|
this.beforeAction(b);
|
|
b.run.defer(100, b)
|
|
}
|
|
return this
|
|
}, submit:function (b) {
|
|
b = b || {};
|
|
if (this.standardSubmit) {
|
|
var a = b.clientValidation === false || this.isValid();
|
|
if (a) {
|
|
var c = this.el.dom;
|
|
if (this.url && Ext.isEmpty(c.action)) {
|
|
c.action = this.url
|
|
}
|
|
c.submit()
|
|
}
|
|
return a
|
|
}
|
|
var d = String.format("{0}submit", this.api ? "direct" : "");
|
|
this.doAction(d, b);
|
|
return this
|
|
}, load:function (a) {
|
|
var b = String.format("{0}load", this.api ? "direct" : "");
|
|
this.doAction(b, a);
|
|
return this
|
|
}, updateRecord:function (b) {
|
|
b.beginEdit();
|
|
var a = b.fields, d, c;
|
|
a.each(function (e) {
|
|
d = this.findField(e.name);
|
|
if (d) {
|
|
c = d.getValue();
|
|
if (Ext.type(c) !== false && c.getGroupValue) {
|
|
c = c.getGroupValue()
|
|
} else {
|
|
if (d.eachItem) {
|
|
c = [];
|
|
d.eachItem(function (g) {
|
|
c.push(g.getValue())
|
|
})
|
|
}
|
|
}
|
|
b.set(e.name, c)
|
|
}
|
|
}, this);
|
|
b.endEdit();
|
|
return this
|
|
}, loadRecord:function (a) {
|
|
this.setValues(a.data);
|
|
return this
|
|
}, beforeAction:function (a) {
|
|
this.items.each(function (c) {
|
|
if (c.isFormField && c.syncValue) {
|
|
c.syncValue()
|
|
}
|
|
});
|
|
var b = a.options;
|
|
if (b.waitMsg) {
|
|
if (this.waitMsgTarget === true) {
|
|
this.el.mask(b.waitMsg, "x-mask-loading")
|
|
} else {
|
|
if (this.waitMsgTarget) {
|
|
this.waitMsgTarget = Ext.get(this.waitMsgTarget);
|
|
this.waitMsgTarget.mask(b.waitMsg, "x-mask-loading")
|
|
} else {
|
|
Ext.MessageBox.wait(b.waitMsg, b.waitTitle || this.waitTitle)
|
|
}
|
|
}
|
|
}
|
|
}, afterAction:function (a, c) {
|
|
this.activeAction = null;
|
|
var b = a.options;
|
|
if (b.waitMsg) {
|
|
if (this.waitMsgTarget === true) {
|
|
this.el.unmask()
|
|
} else {
|
|
if (this.waitMsgTarget) {
|
|
this.waitMsgTarget.unmask()
|
|
} else {
|
|
Ext.MessageBox.updateProgress(1);
|
|
Ext.MessageBox.hide()
|
|
}
|
|
}
|
|
}
|
|
if (c) {
|
|
if (b.reset) {
|
|
this.reset()
|
|
}
|
|
Ext.callback(b.success, b.scope, [this, a]);
|
|
this.fireEvent("actioncomplete", this, a)
|
|
} else {
|
|
Ext.callback(b.failure, b.scope, [this, a]);
|
|
this.fireEvent("actionfailed", this, a)
|
|
}
|
|
}, findField:function (c) {
|
|
var b = this.items.get(c);
|
|
if (!Ext.isObject(b)) {
|
|
var a = function (d) {
|
|
if (d.isFormField) {
|
|
if (d.dataIndex == c || d.id == c || d.getName() == c) {
|
|
b = d;
|
|
return false
|
|
} else {
|
|
if (d.isComposite) {
|
|
return d.items.each(a)
|
|
} else {
|
|
if (d instanceof Ext.form.CheckboxGroup && d.rendered) {
|
|
return d.eachItem(a)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.items.each(a)
|
|
}
|
|
return b || null
|
|
}, markInvalid:function (h) {
|
|
if (Ext.isArray(h)) {
|
|
for (var c = 0, a = h.length; c < a; c++) {
|
|
var b = h[c];
|
|
var d = this.findField(b.id);
|
|
if (d) {
|
|
d.markInvalid(b.msg)
|
|
}
|
|
}
|
|
} else {
|
|
var e, g;
|
|
for (g in h) {
|
|
if (!Ext.isFunction(h[g]) && (e = this.findField(g))) {
|
|
e.markInvalid(h[g])
|
|
}
|
|
}
|
|
}
|
|
return this
|
|
}, setValues:function (c) {
|
|
if (Ext.isArray(c)) {
|
|
for (var d = 0, a = c.length; d < a; d++) {
|
|
var b = c[d];
|
|
var e = this.findField(b.id);
|
|
if (e) {
|
|
e.setValue(b.value);
|
|
if (this.trackResetOnLoad) {
|
|
e.originalValue = e.getValue()
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var g, h;
|
|
for (h in c) {
|
|
if (!Ext.isFunction(c[h]) && (g = this.findField(h))) {
|
|
g.setValue(c[h]);
|
|
if (this.trackResetOnLoad) {
|
|
g.originalValue = g.getValue()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return this
|
|
}, getValues:function (b) {
|
|
var a = Ext.lib.Ajax.serializeForm(this.el.dom);
|
|
if (b === true) {
|
|
return a
|
|
}
|
|
return Ext.urlDecode(a)
|
|
}, getFieldValues:function (a) {
|
|
var d = {}, e, b, c;
|
|
this.items.each(function (g) {
|
|
if (!g.disabled && (a !== true || g.isDirty())) {
|
|
e = g.getName();
|
|
b = d[e];
|
|
c = g.getValue();
|
|
if (Ext.isDefined(b)) {
|
|
if (Ext.isArray(b)) {
|
|
d[e].push(c)
|
|
} else {
|
|
d[e] = [b, c]
|
|
}
|
|
} else {
|
|
d[e] = c
|
|
}
|
|
}
|
|
});
|
|
return d
|
|
}, clearInvalid:function () {
|
|
this.items.each(function (a) {
|
|
a.clearInvalid()
|
|
});
|
|
return this
|
|
}, reset:function () {
|
|
this.items.each(function (a) {
|
|
a.reset()
|
|
});
|
|
return this
|
|
}, add:function () {
|
|
this.items.addAll(Array.prototype.slice.call(arguments, 0));
|
|
return this
|
|
}, remove:function (a) {
|
|
this.items.remove(a);
|
|
return this
|
|
}, cleanDestroyed:function () {
|
|
this.items.filterBy(
|
|
function (a) {
|
|
return !!a.isDestroyed
|
|
}).each(this.remove, this)
|
|
}, render:function () {
|
|
this.items.each(function (a) {
|
|
if (a.isFormField && !a.rendered && document.getElementById(a.id)) {
|
|
a.applyToMarkup(a.id)
|
|
}
|
|
});
|
|
return this
|
|
}, applyToFields:function (a) {
|
|
this.items.each(function (b) {
|
|
Ext.apply(b, a)
|
|
});
|
|
return this
|
|
}, applyIfToFields:function (a) {
|
|
this.items.each(function (b) {
|
|
Ext.applyIf(b, a)
|
|
});
|
|
return this
|
|
}, callFieldMethod:function (b, a) {
|
|
a = a || [];
|
|
this.items.each(function (c) {
|
|
if (Ext.isFunction(c[b])) {
|
|
c[b].apply(c, a)
|
|
}
|
|
});
|
|
return this
|
|
}});
|
|
Ext.BasicForm = Ext.form.BasicForm;
|
|
Ext.FormPanel = Ext.extend(Ext.Panel, {minButtonWidth:75, labelAlign:"left", monitorValid:false, monitorPoll:200, layout:"form", initComponent:function () {
|
|
this.form = this.createForm();
|
|
Ext.FormPanel.superclass.initComponent.call(this);
|
|
this.bodyCfg = {tag:"form", cls:this.baseCls + "-body", method:this.method || "POST", id:this.formId || Ext.id()};
|
|
if (this.fileUpload) {
|
|
this.bodyCfg.enctype = "multipart/form-data"
|
|
}
|
|
this.initItems();
|
|
this.addEvents("clientvalidation");
|
|
this.relayEvents(this.form, ["beforeaction", "actionfailed", "actioncomplete"])
|
|
}, createForm:function () {
|
|
var a = Ext.applyIf({listeners:{}}, this.initialConfig);
|
|
return new Ext.form.BasicForm(null, a)
|
|
}, initFields:function () {
|
|
var c = this.form;
|
|
var a = this;
|
|
var b = function (d) {
|
|
if (a.isField(d)) {
|
|
c.add(d)
|
|
} else {
|
|
if (d.findBy && d != a) {
|
|
a.applySettings(d);
|
|
if (d.items && d.items.each) {
|
|
d.items.each(b, this)
|
|
}
|
|
}
|
|
}
|
|
};
|
|
this.items.each(b, this)
|
|
}, applySettings:function (b) {
|
|
var a = b.ownerCt;
|
|
Ext.applyIf(b, {labelAlign:a.labelAlign, labelWidth:a.labelWidth, itemCls:a.itemCls})
|
|
}, getLayoutTarget:function () {
|
|
return this.form.el
|
|
}, getForm:function () {
|
|
return this.form
|
|
}, onRender:function (b, a) {
|
|
this.initFields();
|
|
Ext.FormPanel.superclass.onRender.call(this, b, a);
|
|
this.form.initEl(this.body)
|
|
}, beforeDestroy:function () {
|
|
this.stopMonitoring();
|
|
this.form.destroy(true);
|
|
Ext.FormPanel.superclass.beforeDestroy.call(this)
|
|
}, isField:function (a) {
|
|
return !!a.setValue && !!a.getValue && !!a.markInvalid && !!a.clearInvalid
|
|
}, initEvents:function () {
|
|
Ext.FormPanel.superclass.initEvents.call(this);
|
|
this.on({scope:this, add:this.onAddEvent, remove:this.onRemoveEvent});
|
|
if (this.monitorValid) {
|
|
this.startMonitoring()
|
|
}
|
|
}, onAdd:function (a) {
|
|
Ext.FormPanel.superclass.onAdd.call(this, a);
|
|
this.processAdd(a)
|
|
}, onAddEvent:function (a, b) {
|
|
if (a !== this) {
|
|
this.processAdd(b)
|
|
}
|
|
}, processAdd:function (a) {
|
|
if (this.isField(a)) {
|
|
this.form.add(a)
|
|
} else {
|
|
if (a.findBy) {
|
|
this.applySettings(a);
|
|
this.form.add.apply(this.form, a.findBy(this.isField))
|
|
}
|
|
}
|
|
}, onRemove:function (a) {
|
|
Ext.FormPanel.superclass.onRemove.call(this, a);
|
|
this.processRemove(a)
|
|
}, onRemoveEvent:function (a, b) {
|
|
if (a !== this) {
|
|
this.processRemove(b)
|
|
}
|
|
}, processRemove:function (a) {
|
|
if (!this.destroying) {
|
|
if (this.isField(a)) {
|
|
this.form.remove(a)
|
|
} else {
|
|
if (a.findBy) {
|
|
Ext.each(a.findBy(this.isField), this.form.remove, this.form);
|
|
this.form.cleanDestroyed()
|
|
}
|
|
}
|
|
}
|
|
}, startMonitoring:function () {
|
|
if (!this.validTask) {
|
|
this.validTask = new Ext.util.TaskRunner();
|
|
this.validTask.start({run:this.bindHandler, interval:this.monitorPoll || 200, scope:this})
|
|
}
|
|
}, stopMonitoring:function () {
|
|
if (this.validTask) {
|
|
this.validTask.stopAll();
|
|
this.validTask = null
|
|
}
|
|
}, load:function () {
|
|
this.form.load.apply(this.form, arguments)
|
|
}, onDisable:function () {
|
|
Ext.FormPanel.superclass.onDisable.call(this);
|
|
if (this.form) {
|
|
this.form.items.each(function () {
|
|
this.disable()
|
|
})
|
|
}
|
|
}, onEnable:function () {
|
|
Ext.FormPanel.superclass.onEnable.call(this);
|
|
if (this.form) {
|
|
this.form.items.each(function () {
|
|
this.enable()
|
|
})
|
|
}
|
|
}, bindHandler:function () {
|
|
var e = true;
|
|
this.form.items.each(function (g) {
|
|
if (!g.isValid(true)) {
|
|
e = false;
|
|
return false
|
|
}
|
|
});
|
|
if (this.fbar) {
|
|
var b = this.fbar.items.items;
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
var c = b[d];
|
|
if (c.formBind === true && c.disabled === e) {
|
|
c.setDisabled(!e)
|
|
}
|
|
}
|
|
}
|
|
this.fireEvent("clientvalidation", this, e)
|
|
}});
|
|
Ext.reg("form", Ext.FormPanel);
|
|
Ext.form.FormPanel = Ext.FormPanel;
|
|
Ext.form.FieldSet = Ext.extend(Ext.Panel, {baseCls:"x-fieldset", layout:"form", animCollapse:false, onRender:function (b, a) {
|
|
if (!this.el) {
|
|
this.el = document.createElement("fieldset");
|
|
this.el.id = this.id;
|
|
if (this.title || this.header || this.checkboxToggle) {
|
|
this.el.appendChild(document.createElement("legend")).className = this.baseCls + "-header"
|
|
}
|
|
}
|
|
Ext.form.FieldSet.superclass.onRender.call(this, b, a);
|
|
if (this.checkboxToggle) {
|
|
var c = typeof this.checkboxToggle == "object" ? this.checkboxToggle : {tag:"input", type:"checkbox", name:this.checkboxName || this.id + "-checkbox"};
|
|
this.checkbox = this.header.insertFirst(c);
|
|
this.checkbox.dom.checked = !this.collapsed;
|
|
this.mon(this.checkbox, "click", this.onCheckClick, this)
|
|
}
|
|
}, onCollapse:function (a, b) {
|
|
if (this.checkbox) {
|
|
this.checkbox.dom.checked = false
|
|
}
|
|
Ext.form.FieldSet.superclass.onCollapse.call(this, a, b)
|
|
}, onExpand:function (a, b) {
|
|
if (this.checkbox) {
|
|
this.checkbox.dom.checked = true
|
|
}
|
|
Ext.form.FieldSet.superclass.onExpand.call(this, a, b)
|
|
}, onCheckClick:function () {
|
|
this[this.checkbox.dom.checked ? "expand" : "collapse"]()
|
|
}});
|
|
Ext.reg("fieldset", Ext.form.FieldSet);
|
|
Ext.form.HtmlEditor = Ext.extend(Ext.form.Field, {enableFormat:true, enableFontSize:true, enableColors:true, enableAlignments:true, enableLists:true, enableSourceEdit:true, enableLinks:true, enableFont:true, createLinkText:"Please enter the URL for the link:", defaultLinkValue:"http://", fontFamilies:["Arial", "Courier New", "Tahoma", "Times New Roman", "Verdana"], defaultFont:"tahoma", defaultValue:(Ext.isOpera || Ext.isIE6) ? " " : "​", actionMode:"wrap", validationEvent:false, deferHeight:true, initialized:false, activated:false, sourceEditMode:false, onFocus:Ext.emptyFn, iframePad:3, hideMode:"offsets", defaultAutoCreate:{tag:"textarea", style:"width:500px;height:300px;", autocomplete:"off"}, initComponent:function () {
|
|
this.addEvents("initialize", "activate", "beforesync", "beforepush", "sync", "push", "editmodechange");
|
|
Ext.form.HtmlEditor.superclass.initComponent.call(this)
|
|
}, createFontOptions:function () {
|
|
var d = [], b = this.fontFamilies, c, g;
|
|
for (var e = 0, a = b.length; e < a; e++) {
|
|
c = b[e];
|
|
g = c.toLowerCase();
|
|
d.push('<option value="', g, '" style="font-family:', c, ';"', (this.defaultFont == g ? ' selected="true">' : ">"), c, "</option>")
|
|
}
|
|
return d.join("")
|
|
}, createToolbar:function (e) {
|
|
var c = [];
|
|
var a = Ext.QuickTips && Ext.QuickTips.isEnabled();
|
|
|
|
function d(j, h, i) {
|
|
return{itemId:j, cls:"x-btn-icon", iconCls:"x-edit-" + j, enableToggle:h !== false, scope:e, handler:i || e.relayBtnCmd, clickEvent:"mousedown", tooltip:a ? e.buttonTips[j] || undefined : undefined, overflowText:e.buttonTips[j].title || undefined, tabIndex:-1}
|
|
}
|
|
|
|
if (this.enableFont && !Ext.isSafari2) {
|
|
var g = new Ext.Toolbar.Item({autoEl:{tag:"select", cls:"x-font-select", html:this.createFontOptions()}});
|
|
c.push(g, "-")
|
|
}
|
|
if (this.enableFormat) {
|
|
c.push(d("bold"), d("italic"), d("underline"))
|
|
}
|
|
if (this.enableFontSize) {
|
|
c.push("-", d("increasefontsize", false, this.adjustFont), d("decreasefontsize", false, this.adjustFont))
|
|
}
|
|
if (this.enableColors) {
|
|
c.push("-", {itemId:"forecolor", cls:"x-btn-icon", iconCls:"x-edit-forecolor", clickEvent:"mousedown", tooltip:a ? e.buttonTips.forecolor || undefined : undefined, tabIndex:-1, menu:new Ext.menu.ColorMenu({allowReselect:true, focus:Ext.emptyFn, value:"000000", plain:true, listeners:{scope:this, select:function (i, h) {
|
|
this.execCmd("forecolor", Ext.isWebKit || Ext.isIE ? "#" + h : h);
|
|
this.deferFocus()
|
|
}}, clickEvent:"mousedown"})}, {itemId:"backcolor", cls:"x-btn-icon", iconCls:"x-edit-backcolor", clickEvent:"mousedown", tooltip:a ? e.buttonTips.backcolor || undefined : undefined, tabIndex:-1, menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn, value:"FFFFFF", plain:true, allowReselect:true, listeners:{scope:this, select:function (i, h) {
|
|
if (Ext.isGecko) {
|
|
this.execCmd("useCSS", false);
|
|
this.execCmd("hilitecolor", h);
|
|
this.execCmd("useCSS", true);
|
|
this.deferFocus()
|
|
} else {
|
|
this.execCmd(Ext.isOpera ? "hilitecolor" : "backcolor", Ext.isWebKit || Ext.isIE ? "#" + h : h);
|
|
this.deferFocus()
|
|
}
|
|
}}, clickEvent:"mousedown"})})
|
|
}
|
|
if (this.enableAlignments) {
|
|
c.push("-", d("justifyleft"), d("justifycenter"), d("justifyright"))
|
|
}
|
|
if (!Ext.isSafari2) {
|
|
if (this.enableLinks) {
|
|
c.push("-", d("createlink", false, this.createLink))
|
|
}
|
|
if (this.enableLists) {
|
|
c.push("-", d("insertorderedlist"), d("insertunorderedlist"))
|
|
}
|
|
if (this.enableSourceEdit) {
|
|
c.push("-", d("sourceedit", true, function (h) {
|
|
this.toggleSourceEdit(!this.sourceEditMode)
|
|
}))
|
|
}
|
|
}
|
|
var b = new Ext.Toolbar({renderTo:this.wrap.dom.firstChild, items:c});
|
|
if (g) {
|
|
this.fontSelect = g.el;
|
|
this.mon(this.fontSelect, "change", function () {
|
|
var h = this.fontSelect.dom.value;
|
|
this.relayCmd("fontname", h);
|
|
this.deferFocus()
|
|
}, this)
|
|
}
|
|
this.mon(b.el, "click", function (h) {
|
|
h.preventDefault()
|
|
});
|
|
this.tb = b;
|
|
this.tb.doLayout()
|
|
}, onDisable:function () {
|
|
this.wrap.mask();
|
|
Ext.form.HtmlEditor.superclass.onDisable.call(this)
|
|
}, onEnable:function () {
|
|
this.wrap.unmask();
|
|
Ext.form.HtmlEditor.superclass.onEnable.call(this)
|
|
}, setReadOnly:function (b) {
|
|
Ext.form.HtmlEditor.superclass.setReadOnly.call(this, b);
|
|
if (this.initialized) {
|
|
if (Ext.isIE) {
|
|
this.getEditorBody().contentEditable = !b
|
|
} else {
|
|
this.setDesignMode(!b)
|
|
}
|
|
var a = this.getEditorBody();
|
|
if (a) {
|
|
a.style.cursor = this.readOnly ? "default" : "text"
|
|
}
|
|
this.disableItems(b)
|
|
}
|
|
}, getDocMarkup:function () {
|
|
var a = Ext.fly(this.iframe).getHeight() - this.iframePad * 2;
|
|
return String.format('<html><head><style type="text/css">body{border: 0; margin: 0; padding: {0}px; height: {1}px; cursor: text}</style></head><body></body></html>', this.iframePad, a)
|
|
}, getEditorBody:function () {
|
|
var a = this.getDoc();
|
|
return a.body || a.documentElement
|
|
}, getDoc:function () {
|
|
return Ext.isIE ? this.getWin().document : (this.iframe.contentDocument || this.getWin().document)
|
|
}, getWin:function () {
|
|
return Ext.isIE ? this.iframe.contentWindow : window.frames[this.iframe.name]
|
|
}, onRender:function (b, a) {
|
|
Ext.form.HtmlEditor.superclass.onRender.call(this, b, a);
|
|
this.el.dom.style.border = "0 none";
|
|
this.el.dom.setAttribute("tabIndex", -1);
|
|
this.el.addClass("x-hidden");
|
|
if (Ext.isIE) {
|
|
this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")
|
|
}
|
|
this.wrap = this.el.wrap({cls:"x-html-editor-wrap", cn:{cls:"x-html-editor-tb"}});
|
|
this.createToolbar(this);
|
|
this.disableItems(true);
|
|
this.tb.doLayout();
|
|
this.createIFrame();
|
|
if (!this.width) {
|
|
var c = this.el.getSize();
|
|
this.setSize(c.width, this.height || c.height)
|
|
}
|
|
this.resizeEl = this.positionEl = this.wrap
|
|
}, createIFrame:function () {
|
|
var a = document.createElement("iframe");
|
|
a.name = Ext.id();
|
|
a.frameBorder = "0";
|
|
a.style.overflow = "auto";
|
|
a.src = Ext.SSL_SECURE_URL;
|
|
this.wrap.dom.appendChild(a);
|
|
this.iframe = a;
|
|
this.monitorTask = Ext.TaskMgr.start({run:this.checkDesignMode, scope:this, interval:100})
|
|
}, initFrame:function () {
|
|
Ext.TaskMgr.stop(this.monitorTask);
|
|
var b = this.getDoc();
|
|
this.win = this.getWin();
|
|
b.open();
|
|
b.write(this.getDocMarkup());
|
|
b.close();
|
|
var a = {run:function () {
|
|
var c = this.getDoc();
|
|
if (c.body || c.readyState == "complete") {
|
|
Ext.TaskMgr.stop(a);
|
|
this.setDesignMode(true);
|
|
this.initEditor.defer(10, this)
|
|
}
|
|
}, interval:10, duration:10000, scope:this};
|
|
Ext.TaskMgr.start(a)
|
|
}, checkDesignMode:function () {
|
|
if (this.wrap && this.wrap.dom.offsetWidth) {
|
|
var a = this.getDoc();
|
|
if (!a) {
|
|
return
|
|
}
|
|
if (!a.editorInitialized || this.getDesignMode() != "on") {
|
|
this.initFrame()
|
|
}
|
|
}
|
|
}, setDesignMode:function (b) {
|
|
var a = this.getDoc();
|
|
if (a) {
|
|
if (this.readOnly) {
|
|
b = false
|
|
}
|
|
a.designMode = (/on|true/i).test(String(b).toLowerCase()) ? "on" : "off"
|
|
}
|
|
}, getDesignMode:function () {
|
|
var a = this.getDoc();
|
|
if (!a) {
|
|
return""
|
|
}
|
|
return String(a.designMode).toLowerCase()
|
|
}, disableItems:function (a) {
|
|
if (this.fontSelect) {
|
|
this.fontSelect.dom.disabled = a
|
|
}
|
|
this.tb.items.each(function (b) {
|
|
if (b.getItemId() != "sourceedit") {
|
|
b.setDisabled(a)
|
|
}
|
|
})
|
|
}, onResize:function (b, c) {
|
|
Ext.form.HtmlEditor.superclass.onResize.apply(this, arguments);
|
|
if (this.el && this.iframe) {
|
|
if (Ext.isNumber(b)) {
|
|
var e = b - this.wrap.getFrameWidth("lr");
|
|
this.el.setWidth(e);
|
|
this.tb.setWidth(e);
|
|
this.iframe.style.width = Math.max(e, 0) + "px"
|
|
}
|
|
if (Ext.isNumber(c)) {
|
|
var a = c - this.wrap.getFrameWidth("tb") - this.tb.el.getHeight();
|
|
this.el.setHeight(a);
|
|
this.iframe.style.height = Math.max(a, 0) + "px";
|
|
var d = this.getEditorBody();
|
|
if (d) {
|
|
d.style.height = Math.max((a - (this.iframePad * 2)), 0) + "px"
|
|
}
|
|
}
|
|
}
|
|
}, toggleSourceEdit:function (b) {
|
|
var d, a;
|
|
if (b === undefined) {
|
|
b = !this.sourceEditMode
|
|
}
|
|
this.sourceEditMode = b === true;
|
|
var c = this.tb.getComponent("sourceedit");
|
|
if (c.pressed !== this.sourceEditMode) {
|
|
c.toggle(this.sourceEditMode);
|
|
if (!c.xtbHidden) {
|
|
return
|
|
}
|
|
}
|
|
if (this.sourceEditMode) {
|
|
this.previousSize = this.getSize();
|
|
d = Ext.get(this.iframe).getHeight();
|
|
this.disableItems(true);
|
|
this.syncValue();
|
|
this.iframe.className = "x-hidden";
|
|
this.el.removeClass("x-hidden");
|
|
this.el.dom.removeAttribute("tabIndex");
|
|
this.el.focus();
|
|
this.el.dom.style.height = d + "px"
|
|
} else {
|
|
a = parseInt(this.el.dom.style.height, 10);
|
|
if (this.initialized) {
|
|
this.disableItems(this.readOnly)
|
|
}
|
|
this.pushValue();
|
|
this.iframe.className = "";
|
|
this.el.addClass("x-hidden");
|
|
this.el.dom.setAttribute("tabIndex", -1);
|
|
this.deferFocus();
|
|
this.setSize(this.previousSize);
|
|
delete this.previousSize;
|
|
this.iframe.style.height = a + "px"
|
|
}
|
|
this.fireEvent("editmodechange", this, this.sourceEditMode)
|
|
}, createLink:function () {
|
|
var a = prompt(this.createLinkText, this.defaultLinkValue);
|
|
if (a && a != "http://") {
|
|
this.relayCmd("createlink", a)
|
|
}
|
|
}, initEvents:function () {
|
|
this.originalValue = this.getValue()
|
|
}, markInvalid:Ext.emptyFn, clearInvalid:Ext.emptyFn, setValue:function (a) {
|
|
Ext.form.HtmlEditor.superclass.setValue.call(this, a);
|
|
this.pushValue();
|
|
return this
|
|
}, cleanHtml:function (a) {
|
|
a = String(a);
|
|
if (Ext.isWebKit) {
|
|
a = a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, "")
|
|
}
|
|
if (a.charCodeAt(0) == this.defaultValue.replace(/\D/g, "")) {
|
|
a = a.substring(1)
|
|
}
|
|
return a
|
|
}, syncValue:function () {
|
|
if (this.initialized) {
|
|
var d = this.getEditorBody();
|
|
var c = d.innerHTML;
|
|
if (Ext.isWebKit) {
|
|
var b = d.getAttribute("style");
|
|
var a = b.match(/text-align:(.*?);/i);
|
|
if (a && a[1]) {
|
|
c = '<div style="' + a[0] + '">' + c + "</div>"
|
|
}
|
|
}
|
|
c = this.cleanHtml(c);
|
|
if (this.fireEvent("beforesync", this, c) !== false) {
|
|
this.el.dom.value = c;
|
|
this.fireEvent("sync", this, c)
|
|
}
|
|
}
|
|
}, getValue:function () {
|
|
this[this.sourceEditMode ? "pushValue" : "syncValue"]();
|
|
return Ext.form.HtmlEditor.superclass.getValue.call(this)
|
|
}, pushValue:function () {
|
|
if (this.initialized) {
|
|
var a = this.el.dom.value;
|
|
if (!this.activated && a.length < 1) {
|
|
a = this.defaultValue
|
|
}
|
|
if (this.fireEvent("beforepush", this, a) !== false) {
|
|
this.getEditorBody().innerHTML = a;
|
|
if (Ext.isGecko) {
|
|
this.setDesignMode(false);
|
|
this.setDesignMode(true)
|
|
}
|
|
this.fireEvent("push", this, a)
|
|
}
|
|
}
|
|
}, deferFocus:function () {
|
|
this.focus.defer(10, this)
|
|
}, focus:function () {
|
|
if (this.win && !this.sourceEditMode) {
|
|
this.win.focus()
|
|
} else {
|
|
this.el.focus()
|
|
}
|
|
}, initEditor:function () {
|
|
try {
|
|
var c = this.getEditorBody(), a = this.el.getStyles("font-size", "font-family", "background-image", "background-repeat", "background-color", "color"), g, b;
|
|
a["background-attachment"] = "fixed";
|
|
c.bgProperties = "fixed";
|
|
Ext.DomHelper.applyStyles(c, a);
|
|
g = this.getDoc();
|
|
if (g) {
|
|
try {
|
|
Ext.EventManager.removeAll(g)
|
|
} catch (d) {
|
|
}
|
|
}
|
|
b = this.onEditorEvent.createDelegate(this);
|
|
Ext.EventManager.on(g, {mousedown:b, dblclick:b, click:b, keyup:b, buffer:100});
|
|
if (Ext.isGecko) {
|
|
Ext.EventManager.on(g, "keypress", this.applyCommand, this)
|
|
}
|
|
if (Ext.isIE || Ext.isWebKit || Ext.isOpera) {
|
|
Ext.EventManager.on(g, "keydown", this.fixKeys, this)
|
|
}
|
|
g.editorInitialized = true;
|
|
this.initialized = true;
|
|
this.pushValue();
|
|
this.setReadOnly(this.readOnly);
|
|
this.fireEvent("initialize", this)
|
|
} catch (d) {
|
|
}
|
|
}, beforeDestroy:function () {
|
|
if (this.monitorTask) {
|
|
Ext.TaskMgr.stop(this.monitorTask)
|
|
}
|
|
if (this.rendered) {
|
|
Ext.destroy(this.tb);
|
|
var b = this.getDoc();
|
|
if (b) {
|
|
try {
|
|
Ext.EventManager.removeAll(b);
|
|
for (var c in b) {
|
|
delete b[c]
|
|
}
|
|
} catch (a) {
|
|
}
|
|
}
|
|
if (this.wrap) {
|
|
this.wrap.dom.innerHTML = "";
|
|
this.wrap.remove()
|
|
}
|
|
}
|
|
Ext.form.HtmlEditor.superclass.beforeDestroy.call(this)
|
|
}, onFirstFocus:function () {
|
|
this.activated = true;
|
|
this.disableItems(this.readOnly);
|
|
if (Ext.isGecko) {
|
|
this.win.focus();
|
|
var a = this.win.getSelection();
|
|
if (!a.focusNode || a.focusNode.nodeType != 3) {
|
|
var b = a.getRangeAt(0);
|
|
b.selectNodeContents(this.getEditorBody());
|
|
b.collapse(true);
|
|
this.deferFocus()
|
|
}
|
|
try {
|
|
this.execCmd("useCSS", true);
|
|
this.execCmd("styleWithCSS", false)
|
|
} catch (c) {
|
|
}
|
|
}
|
|
this.fireEvent("activate", this)
|
|
}, adjustFont:function (b) {
|
|
var d = b.getItemId() == "increasefontsize" ? 1 : -1, c = this.getDoc(), a = parseInt(c.queryCommandValue("FontSize") || 2, 10);
|
|
if ((Ext.isSafari && !Ext.isSafari2) || Ext.isChrome || Ext.isAir) {
|
|
if (a <= 10) {
|
|
a = 1 + d
|
|
} else {
|
|
if (a <= 13) {
|
|
a = 2 + d
|
|
} else {
|
|
if (a <= 16) {
|
|
a = 3 + d
|
|
} else {
|
|
if (a <= 18) {
|
|
a = 4 + d
|
|
} else {
|
|
if (a <= 24) {
|
|
a = 5 + d
|
|
} else {
|
|
a = 6 + d
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
a = a.constrain(1, 6)
|
|
} else {
|
|
if (Ext.isSafari) {
|
|
d *= 2
|
|
}
|
|
a = Math.max(1, a + d) + (Ext.isSafari ? "px" : 0)
|
|
}
|
|
this.execCmd("FontSize", a)
|
|
}, onEditorEvent:function (a) {
|
|
this.updateToolbar()
|
|
}, updateToolbar:function () {
|
|
if (this.readOnly) {
|
|
return
|
|
}
|
|
if (!this.activated) {
|
|
this.onFirstFocus();
|
|
return
|
|
}
|
|
var b = this.tb.items.map, c = this.getDoc();
|
|
if (this.enableFont && !Ext.isSafari2) {
|
|
var a = (c.queryCommandValue("FontName") || this.defaultFont).toLowerCase();
|
|
if (a != this.fontSelect.dom.value) {
|
|
this.fontSelect.dom.value = a
|
|
}
|
|
}
|
|
if (this.enableFormat) {
|
|
b.bold.toggle(c.queryCommandState("bold"));
|
|
b.italic.toggle(c.queryCommandState("italic"));
|
|
b.underline.toggle(c.queryCommandState("underline"))
|
|
}
|
|
if (this.enableAlignments) {
|
|
b.justifyleft.toggle(c.queryCommandState("justifyleft"));
|
|
b.justifycenter.toggle(c.queryCommandState("justifycenter"));
|
|
b.justifyright.toggle(c.queryCommandState("justifyright"))
|
|
}
|
|
if (!Ext.isSafari2 && this.enableLists) {
|
|
b.insertorderedlist.toggle(c.queryCommandState("insertorderedlist"));
|
|
b.insertunorderedlist.toggle(c.queryCommandState("insertunorderedlist"))
|
|
}
|
|
Ext.menu.MenuMgr.hideAll();
|
|
this.syncValue()
|
|
}, relayBtnCmd:function (a) {
|
|
this.relayCmd(a.getItemId())
|
|
}, relayCmd:function (b, a) {
|
|
(function () {
|
|
this.focus();
|
|
this.execCmd(b, a);
|
|
this.updateToolbar()
|
|
}).defer(10, this)
|
|
}, execCmd:function (b, a) {
|
|
var c = this.getDoc();
|
|
c.execCommand(b, false, a === undefined ? null : a);
|
|
this.syncValue()
|
|
}, applyCommand:function (b) {
|
|
if (b.ctrlKey) {
|
|
var d = b.getCharCode(), a;
|
|
if (d > 0) {
|
|
d = String.fromCharCode(d);
|
|
switch (d) {
|
|
case"b":
|
|
a = "bold";
|
|
break;
|
|
case"i":
|
|
a = "italic";
|
|
break;
|
|
case"u":
|
|
a = "underline";
|
|
break
|
|
}
|
|
if (a) {
|
|
this.win.focus();
|
|
this.execCmd(a);
|
|
this.deferFocus();
|
|
b.preventDefault()
|
|
}
|
|
}
|
|
}
|
|
}, insertAtCursor:function (c) {
|
|
if (!this.activated) {
|
|
return
|
|
}
|
|
if (Ext.isIE) {
|
|
this.win.focus();
|
|
var b = this.getDoc(), a = b.selection.createRange();
|
|
if (a) {
|
|
a.pasteHTML(c);
|
|
this.syncValue();
|
|
this.deferFocus()
|
|
}
|
|
} else {
|
|
this.win.focus();
|
|
this.execCmd("InsertHTML", c);
|
|
this.deferFocus()
|
|
}
|
|
}, fixKeys:function () {
|
|
if (Ext.isIE) {
|
|
return function (g) {
|
|
var a = g.getKey(), d = this.getDoc(), b;
|
|
if (a == g.TAB) {
|
|
g.stopEvent();
|
|
b = d.selection.createRange();
|
|
if (b) {
|
|
b.collapse(true);
|
|
b.pasteHTML(" ");
|
|
this.deferFocus()
|
|
}
|
|
} else {
|
|
if (a == g.ENTER) {
|
|
b = d.selection.createRange();
|
|
if (b) {
|
|
var c = b.parentElement();
|
|
if (!c || c.tagName.toLowerCase() != "li") {
|
|
g.stopEvent();
|
|
b.pasteHTML("<br />");
|
|
b.collapse(false);
|
|
b.select()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (Ext.isOpera) {
|
|
return function (b) {
|
|
var a = b.getKey();
|
|
if (a == b.TAB) {
|
|
b.stopEvent();
|
|
this.win.focus();
|
|
this.execCmd("InsertHTML", " ");
|
|
this.deferFocus()
|
|
}
|
|
}
|
|
} else {
|
|
if (Ext.isWebKit) {
|
|
return function (b) {
|
|
var a = b.getKey();
|
|
if (a == b.TAB) {
|
|
b.stopEvent();
|
|
this.execCmd("InsertText", "\t");
|
|
this.deferFocus()
|
|
} else {
|
|
if (a == b.ENTER) {
|
|
b.stopEvent();
|
|
this.execCmd("InsertHtml", "<br /><br />");
|
|
this.deferFocus()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}(), getToolbar:function () {
|
|
return this.tb
|
|
}, buttonTips:{bold:{title:"Bold (Ctrl+B)", text:"Make the selected text bold.", cls:"x-html-editor-tip"}, italic:{title:"Italic (Ctrl+I)", text:"Make the selected text italic.", cls:"x-html-editor-tip"}, underline:{title:"Underline (Ctrl+U)", text:"Underline the selected text.", cls:"x-html-editor-tip"}, increasefontsize:{title:"Grow Text", text:"Increase the font size.", cls:"x-html-editor-tip"}, decreasefontsize:{title:"Shrink Text", text:"Decrease the font size.", cls:"x-html-editor-tip"}, backcolor:{title:"Text Highlight Color", text:"Change the background color of the selected text.", cls:"x-html-editor-tip"}, forecolor:{title:"Font Color", text:"Change the color of the selected text.", cls:"x-html-editor-tip"}, justifyleft:{title:"Align Text Left", text:"Align text to the left.", cls:"x-html-editor-tip"}, justifycenter:{title:"Center Text", text:"Center text in the editor.", cls:"x-html-editor-tip"}, justifyright:{title:"Align Text Right", text:"Align text to the right.", cls:"x-html-editor-tip"}, insertunorderedlist:{title:"Bullet List", text:"Start a bulleted list.", cls:"x-html-editor-tip"}, insertorderedlist:{title:"Numbered List", text:"Start a numbered list.", cls:"x-html-editor-tip"}, createlink:{title:"Hyperlink", text:"Make the selected text a hyperlink.", cls:"x-html-editor-tip"}, sourceedit:{title:"Source Edit", text:"Switch to source editing mode.", cls:"x-html-editor-tip"}}});
|
|
Ext.reg("htmleditor", Ext.form.HtmlEditor);
|
|
Ext.form.TimeField = Ext.extend(Ext.form.ComboBox, {minValue:undefined, maxValue:undefined, minText:"The time in this field must be equal to or after {0}", maxText:"The time in this field must be equal to or before {0}", invalidText:"{0} is not a valid time", format:"g:i A", altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A", increment:15, mode:"local", triggerAction:"all", typeAhead:false, initDate:"1/1/2008", initDateFormat:"j/n/Y", initComponent:function () {
|
|
if (Ext.isDefined(this.minValue)) {
|
|
this.setMinValue(this.minValue, true)
|
|
}
|
|
if (Ext.isDefined(this.maxValue)) {
|
|
this.setMaxValue(this.maxValue, true)
|
|
}
|
|
if (!this.store) {
|
|
this.generateStore(true)
|
|
}
|
|
Ext.form.TimeField.superclass.initComponent.call(this)
|
|
}, setMinValue:function (b, a) {
|
|
this.setLimit(b, true, a);
|
|
return this
|
|
}, setMaxValue:function (b, a) {
|
|
this.setLimit(b, false, a);
|
|
return this
|
|
}, generateStore:function (b) {
|
|
var c = this.minValue || new Date(this.initDate).clearTime(), a = this.maxValue || new Date(this.initDate).clearTime().add("mi", (24 * 60) - 1), d = [];
|
|
while (c <= a) {
|
|
d.push(c.dateFormat(this.format));
|
|
c = c.add("mi", this.increment)
|
|
}
|
|
this.bindStore(d, b)
|
|
}, setLimit:function (b, g, a) {
|
|
var e;
|
|
if (Ext.isString(b)) {
|
|
e = this.parseDate(b)
|
|
} else {
|
|
if (Ext.isDate(b)) {
|
|
e = b
|
|
}
|
|
}
|
|
if (e) {
|
|
var c = new Date(this.initDate).clearTime();
|
|
c.setHours(e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds());
|
|
this[g ? "minValue" : "maxValue"] = c;
|
|
if (!a) {
|
|
this.generateStore()
|
|
}
|
|
}
|
|
}, getValue:function () {
|
|
var a = Ext.form.TimeField.superclass.getValue.call(this);
|
|
return this.formatDate(this.parseDate(a)) || ""
|
|
}, setValue:function (a) {
|
|
return Ext.form.TimeField.superclass.setValue.call(this, this.formatDate(this.parseDate(a)))
|
|
}, validateValue:Ext.form.DateField.prototype.validateValue, formatDate:Ext.form.DateField.prototype.formatDate, parseDate:function (h) {
|
|
if (!h || Ext.isDate(h)) {
|
|
return h
|
|
}
|
|
var j = this.initDate + " ", g = this.initDateFormat + " ", b = Date.parseDate(j + h, g + this.format), c = this.altFormats;
|
|
if (!b && c) {
|
|
if (!this.altFormatsArray) {
|
|
this.altFormatsArray = c.split("|")
|
|
}
|
|
for (var e = 0, d = this.altFormatsArray, a = d.length; e < a && !b; e++) {
|
|
b = Date.parseDate(j + h, g + d[e])
|
|
}
|
|
}
|
|
return b
|
|
}});
|
|
Ext.reg("timefield", Ext.form.TimeField);
|
|
Ext.form.SliderField = Ext.extend(Ext.form.Field, {useTips:true, tipText:null, actionMode:"wrap", initComponent:function () {
|
|
var b = Ext.copyTo({id:this.id + "-slider"}, this.initialConfig, ["vertical", "minValue", "maxValue", "decimalPrecision", "keyIncrement", "increment", "clickToChange", "animate"]);
|
|
if (this.useTips) {
|
|
var a = this.tipText ? {getText:this.tipText} : {};
|
|
b.plugins = [new Ext.slider.Tip(a)]
|
|
}
|
|
this.slider = new Ext.Slider(b);
|
|
Ext.form.SliderField.superclass.initComponent.call(this)
|
|
}, onRender:function (b, a) {
|
|
this.autoCreate = {id:this.id, name:this.name, type:"hidden", tag:"input"};
|
|
Ext.form.SliderField.superclass.onRender.call(this, b, a);
|
|
this.wrap = this.el.wrap({cls:"x-form-field-wrap"});
|
|
this.resizeEl = this.positionEl = this.wrap;
|
|
this.slider.render(this.wrap)
|
|
}, onResize:function (b, c, d, a) {
|
|
Ext.form.SliderField.superclass.onResize.call(this, b, c, d, a);
|
|
this.slider.setSize(b, c)
|
|
}, initEvents:function () {
|
|
Ext.form.SliderField.superclass.initEvents.call(this);
|
|
this.slider.on("change", this.onChange, this)
|
|
}, onChange:function (b, a) {
|
|
this.setValue(a, undefined, true)
|
|
}, onEnable:function () {
|
|
Ext.form.SliderField.superclass.onEnable.call(this);
|
|
this.slider.enable()
|
|
}, onDisable:function () {
|
|
Ext.form.SliderField.superclass.onDisable.call(this);
|
|
this.slider.disable()
|
|
}, beforeDestroy:function () {
|
|
Ext.destroy(this.slider);
|
|
Ext.form.SliderField.superclass.beforeDestroy.call(this)
|
|
}, alignErrorIcon:function () {
|
|
this.errorIcon.alignTo(this.slider.el, "tl-tr", [2, 0])
|
|
}, setMinValue:function (a) {
|
|
this.slider.setMinValue(a);
|
|
return this
|
|
}, setMaxValue:function (a) {
|
|
this.slider.setMaxValue(a);
|
|
return this
|
|
}, setValue:function (c, b, a) {
|
|
if (!a) {
|
|
this.slider.setValue(c, b)
|
|
}
|
|
return Ext.form.SliderField.superclass.setValue.call(this, this.slider.getValue())
|
|
}, getValue:function () {
|
|
return this.slider.getValue()
|
|
}});
|
|
Ext.reg("sliderfield", Ext.form.SliderField);
|
|
Ext.form.Label = Ext.extend(Ext.BoxComponent, {onRender:function (b, a) {
|
|
if (!this.el) {
|
|
this.el = document.createElement("label");
|
|
this.el.id = this.getId();
|
|
this.el.innerHTML = this.text ? Ext.util.Format.htmlEncode(this.text) : (this.html || "");
|
|
if (this.forId) {
|
|
this.el.setAttribute("for", this.forId)
|
|
}
|
|
}
|
|
Ext.form.Label.superclass.onRender.call(this, b, a)
|
|
}, setText:function (a, b) {
|
|
var c = b === false;
|
|
this[!c ? "text" : "html"] = a;
|
|
delete this[c ? "text" : "html"];
|
|
if (this.rendered) {
|
|
this.el.dom.innerHTML = b !== false ? Ext.util.Format.htmlEncode(a) : a
|
|
}
|
|
return this
|
|
}});
|
|
Ext.reg("label", Ext.form.Label);
|
|
Ext.form.Action = function (b, a) {
|
|
this.form = b;
|
|
this.options = a || {}
|
|
};
|
|
Ext.form.Action.CLIENT_INVALID = "client";
|
|
Ext.form.Action.SERVER_INVALID = "server";
|
|
Ext.form.Action.CONNECT_FAILURE = "connect";
|
|
Ext.form.Action.LOAD_FAILURE = "load";
|
|
Ext.form.Action.prototype = {type:"default", run:function (a) {
|
|
}, success:function (a) {
|
|
}, handleResponse:function (a) {
|
|
}, failure:function (a) {
|
|
this.response = a;
|
|
this.failureType = Ext.form.Action.CONNECT_FAILURE;
|
|
this.form.afterAction(this, false)
|
|
}, processResponse:function (a) {
|
|
this.response = a;
|
|
if (!a.responseText && !a.responseXML) {
|
|
return true
|
|
}
|
|
this.result = this.handleResponse(a);
|
|
return this.result
|
|
}, decodeResponse:function (a) {
|
|
try {
|
|
return Ext.decode(a.responseText)
|
|
} catch (b) {
|
|
return false
|
|
}
|
|
}, getUrl:function (c) {
|
|
var a = this.options.url || this.form.url || this.form.el.dom.action;
|
|
if (c) {
|
|
var b = this.getParams();
|
|
if (b) {
|
|
a = Ext.urlAppend(a, b)
|
|
}
|
|
}
|
|
return a
|
|
}, getMethod:function () {
|
|
return(this.options.method || this.form.method || this.form.el.dom.method || "POST").toUpperCase()
|
|
}, getParams:function () {
|
|
var a = this.form.baseParams;
|
|
var b = this.options.params;
|
|
if (b) {
|
|
if (typeof b == "object") {
|
|
b = Ext.urlEncode(Ext.applyIf(b, a))
|
|
} else {
|
|
if (typeof b == "string" && a) {
|
|
b += "&" + Ext.urlEncode(a)
|
|
}
|
|
}
|
|
} else {
|
|
if (a) {
|
|
b = Ext.urlEncode(a)
|
|
}
|
|
}
|
|
return b
|
|
}, createCallback:function (a) {
|
|
var a = a || {};
|
|
return{success:this.success, failure:this.failure, scope:this, timeout:(a.timeout * 1000) || (this.form.timeout * 1000), upload:this.form.fileUpload ? this.success : undefined}
|
|
}};
|
|
Ext.form.Action.Submit = function (b, a) {
|
|
Ext.form.Action.Submit.superclass.constructor.call(this, b, a)
|
|
};
|
|
Ext.extend(Ext.form.Action.Submit, Ext.form.Action, {type:"submit", run:function () {
|
|
var e = this.options, g = this.getMethod(), d = g == "GET";
|
|
if (e.clientValidation === false || this.form.isValid()) {
|
|
if (e.submitEmptyText === false) {
|
|
var a = this.form.items, c = [], b = function (h) {
|
|
if (h.el.getValue() == h.emptyText) {
|
|
c.push(h);
|
|
h.el.dom.value = ""
|
|
}
|
|
if (h.isComposite && h.rendered) {
|
|
h.items.each(b)
|
|
}
|
|
};
|
|
a.each(b)
|
|
}
|
|
Ext.Ajax.request(Ext.apply(this.createCallback(e), {form:this.form.el.dom, url:this.getUrl(d), method:g, headers:e.headers, params:!d ? this.getParams() : null, isUpload:this.form.fileUpload}));
|
|
if (e.submitEmptyText === false) {
|
|
Ext.each(c, function (h) {
|
|
if (h.applyEmptyText) {
|
|
h.applyEmptyText()
|
|
}
|
|
})
|
|
}
|
|
} else {
|
|
if (e.clientValidation !== false) {
|
|
this.failureType = Ext.form.Action.CLIENT_INVALID;
|
|
this.form.afterAction(this, false)
|
|
}
|
|
}
|
|
}, success:function (b) {
|
|
var a = this.processResponse(b);
|
|
if (a === true || a.success) {
|
|
this.form.afterAction(this, true);
|
|
return
|
|
}
|
|
if (a.errors) {
|
|
this.form.markInvalid(a.errors)
|
|
}
|
|
this.failureType = Ext.form.Action.SERVER_INVALID;
|
|
this.form.afterAction(this, false)
|
|
}, handleResponse:function (c) {
|
|
if (this.form.errorReader) {
|
|
var b = this.form.errorReader.read(c);
|
|
var g = [];
|
|
if (b.records) {
|
|
for (var d = 0, a = b.records.length; d < a; d++) {
|
|
var e = b.records[d];
|
|
g[d] = e.data
|
|
}
|
|
}
|
|
if (g.length < 1) {
|
|
g = null
|
|
}
|
|
return{success:b.success, errors:g}
|
|
}
|
|
return this.decodeResponse(c)
|
|
}});
|
|
Ext.form.Action.Load = function (b, a) {
|
|
Ext.form.Action.Load.superclass.constructor.call(this, b, a);
|
|
this.reader = this.form.reader
|
|
};
|
|
Ext.extend(Ext.form.Action.Load, Ext.form.Action, {type:"load", run:function () {
|
|
Ext.Ajax.request(Ext.apply(this.createCallback(this.options), {method:this.getMethod(), url:this.getUrl(false), headers:this.options.headers, params:this.getParams()}))
|
|
}, success:function (b) {
|
|
var a = this.processResponse(b);
|
|
if (a === true || !a.success || !a.data) {
|
|
this.failureType = Ext.form.Action.LOAD_FAILURE;
|
|
this.form.afterAction(this, false);
|
|
return
|
|
}
|
|
this.form.clearInvalid();
|
|
this.form.setValues(a.data);
|
|
this.form.afterAction(this, true)
|
|
}, handleResponse:function (b) {
|
|
if (this.form.reader) {
|
|
var a = this.form.reader.read(b);
|
|
var c = a.records && a.records[0] ? a.records[0].data : null;
|
|
return{success:a.success, data:c}
|
|
}
|
|
return this.decodeResponse(b)
|
|
}});
|
|
Ext.form.Action.DirectLoad = Ext.extend(Ext.form.Action.Load, {constructor:function (b, a) {
|
|
Ext.form.Action.DirectLoad.superclass.constructor.call(this, b, a)
|
|
}, type:"directload", run:function () {
|
|
var a = this.getParams();
|
|
a.push(this.success, this);
|
|
this.form.api.load.apply(window, a)
|
|
}, getParams:function () {
|
|
var c = [], h = {};
|
|
var e = this.form.baseParams;
|
|
var g = this.options.params;
|
|
Ext.apply(h, g, e);
|
|
var b = this.form.paramOrder;
|
|
if (b) {
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
c.push(h[b[d]])
|
|
}
|
|
} else {
|
|
if (this.form.paramsAsHash) {
|
|
c.push(h)
|
|
}
|
|
}
|
|
return c
|
|
}, processResponse:function (a) {
|
|
this.result = a;
|
|
return a
|
|
}, success:function (a, b) {
|
|
if (b.type == Ext.Direct.exceptions.SERVER) {
|
|
a = {}
|
|
}
|
|
Ext.form.Action.DirectLoad.superclass.success.call(this, a)
|
|
}});
|
|
Ext.form.Action.DirectSubmit = Ext.extend(Ext.form.Action.Submit, {constructor:function (b, a) {
|
|
Ext.form.Action.DirectSubmit.superclass.constructor.call(this, b, a)
|
|
}, type:"directsubmit", run:function () {
|
|
var a = this.options;
|
|
if (a.clientValidation === false || this.form.isValid()) {
|
|
this.success.params = this.getParams();
|
|
this.form.api.submit(this.form.el.dom, this.success, this)
|
|
} else {
|
|
if (a.clientValidation !== false) {
|
|
this.failureType = Ext.form.Action.CLIENT_INVALID;
|
|
this.form.afterAction(this, false)
|
|
}
|
|
}
|
|
}, getParams:function () {
|
|
var c = {};
|
|
var a = this.form.baseParams;
|
|
var b = this.options.params;
|
|
Ext.apply(c, b, a);
|
|
return c
|
|
}, processResponse:function (a) {
|
|
this.result = a;
|
|
return a
|
|
}, success:function (a, b) {
|
|
if (b.type == Ext.Direct.exceptions.SERVER) {
|
|
a = {}
|
|
}
|
|
Ext.form.Action.DirectSubmit.superclass.success.call(this, a)
|
|
}});
|
|
Ext.form.Action.ACTION_TYPES = {load:Ext.form.Action.Load, submit:Ext.form.Action.Submit, directload:Ext.form.Action.DirectLoad, directsubmit:Ext.form.Action.DirectSubmit};
|
|
Ext.form.VTypes = function () {
|
|
var c = /^[a-zA-Z_]+$/, d = /^[a-zA-Z0-9_]+$/, b = /^(\w+)([\-+.\'][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/, a = /(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
|
|
return{email:function (e) {
|
|
return b.test(e)
|
|
}, emailText:'This field should be an e-mail address in the format "user@example.com"', emailMask:/[a-z0-9_\.\-\+\'@]/i, url:function (e) {
|
|
return a.test(e)
|
|
}, urlText:'This field should be a URL in the format "http://www.example.com"', alpha:function (e) {
|
|
return c.test(e)
|
|
}, alphaText:"This field should only contain letters and _", alphaMask:/[a-z_]/i, alphanum:function (e) {
|
|
return d.test(e)
|
|
}, alphanumText:"This field should only contain letters, numbers and _", alphanumMask:/[a-z0-9_]/i}
|
|
}();
|
|
Ext.grid.GridPanel = Ext.extend(Ext.Panel, {autoExpandColumn:false, autoExpandMax:1000, autoExpandMin:50, columnLines:false, ddText:"{0} selected row{1}", deferRowRender:true, enableColumnHide:true, enableColumnMove:true, enableDragDrop:false, enableHdMenu:true, loadMask:false, minColumnWidth:25, stripeRows:false, trackMouseOver:true, stateEvents:["columnmove", "columnresize", "sortchange", "groupchange"], view:null, bubbleEvents:[], rendered:false, viewReady:false, initComponent:function () {
|
|
Ext.grid.GridPanel.superclass.initComponent.call(this);
|
|
if (this.columnLines) {
|
|
this.cls = (this.cls || "") + " x-grid-with-col-lines"
|
|
}
|
|
this.autoScroll = false;
|
|
this.autoWidth = false;
|
|
if (Ext.isArray(this.columns)) {
|
|
this.colModel = new Ext.grid.ColumnModel(this.columns);
|
|
delete this.columns
|
|
}
|
|
if (this.ds) {
|
|
this.store = this.ds;
|
|
delete this.ds
|
|
}
|
|
if (this.cm) {
|
|
this.colModel = this.cm;
|
|
delete this.cm
|
|
}
|
|
if (this.sm) {
|
|
this.selModel = this.sm;
|
|
delete this.sm
|
|
}
|
|
this.store = Ext.StoreMgr.lookup(this.store);
|
|
this.addEvents("click", "dblclick", "contextmenu", "mousedown", "mouseup", "mouseover", "mouseout", "keypress", "keydown", "cellmousedown", "rowmousedown", "headermousedown", "groupmousedown", "rowbodymousedown", "containermousedown", "cellclick", "celldblclick", "rowclick", "rowdblclick", "headerclick", "headerdblclick", "groupclick", "groupdblclick", "containerclick", "containerdblclick", "rowbodyclick", "rowbodydblclick", "rowcontextmenu", "cellcontextmenu", "headercontextmenu", "groupcontextmenu", "containercontextmenu", "rowbodycontextmenu", "bodyscroll", "columnresize", "columnmove", "sortchange", "groupchange", "reconfigure", "viewready")
|
|
}, onRender:function (d, a) {
|
|
Ext.grid.GridPanel.superclass.onRender.apply(this, arguments);
|
|
var e = this.getGridEl();
|
|
this.el.addClass("x-grid-panel");
|
|
this.mon(e, {scope:this, mousedown:this.onMouseDown, click:this.onClick, dblclick:this.onDblClick, contextmenu:this.onContextMenu});
|
|
this.relayEvents(e, ["mousedown", "mouseup", "mouseover", "mouseout", "keypress", "keydown"]);
|
|
var b = this.getView();
|
|
b.init(this);
|
|
b.render();
|
|
this.getSelectionModel().init(this)
|
|
}, initEvents:function () {
|
|
Ext.grid.GridPanel.superclass.initEvents.call(this);
|
|
if (this.loadMask) {
|
|
this.loadMask = new Ext.LoadMask(this.bwrap, Ext.apply({store:this.store}, this.loadMask))
|
|
}
|
|
}, initStateEvents:function () {
|
|
Ext.grid.GridPanel.superclass.initStateEvents.call(this);
|
|
this.mon(this.colModel, "hiddenchange", this.saveState, this, {delay:100})
|
|
}, applyState:function (a) {
|
|
var k = this.colModel, g = a.columns, j = this.store, m, h, l;
|
|
if (g) {
|
|
for (var d = 0, e = g.length; d < e; d++) {
|
|
m = g[d];
|
|
h = k.getColumnById(m.id);
|
|
if (h) {
|
|
l = k.getIndexById(m.id);
|
|
k.setState(l, {hidden:m.hidden, width:m.width, sortable:m.sortable});
|
|
if (l != d) {
|
|
k.moveColumn(l, d)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (j) {
|
|
m = a.sort;
|
|
if (m) {
|
|
j[j.remoteSort ? "setDefaultSort" : "sort"](m.field, m.direction)
|
|
}
|
|
m = a.group;
|
|
if (j.groupBy) {
|
|
if (m) {
|
|
j.groupBy(m)
|
|
} else {
|
|
j.clearGrouping()
|
|
}
|
|
}
|
|
}
|
|
var b = Ext.apply({}, a);
|
|
delete b.columns;
|
|
delete b.sort;
|
|
Ext.grid.GridPanel.superclass.applyState.call(this, b)
|
|
}, getState:function () {
|
|
var g = {columns:[]}, b = this.store, e, a;
|
|
for (var d = 0, h; (h = this.colModel.config[d]); d++) {
|
|
g.columns[d] = {id:h.id, width:h.width};
|
|
if (h.hidden) {
|
|
g.columns[d].hidden = true
|
|
}
|
|
if (h.sortable) {
|
|
g.columns[d].sortable = true
|
|
}
|
|
}
|
|
if (b) {
|
|
e = b.getSortState();
|
|
if (e) {
|
|
g.sort = e
|
|
}
|
|
if (b.getGroupState) {
|
|
a = b.getGroupState();
|
|
if (a) {
|
|
g.group = a
|
|
}
|
|
}
|
|
}
|
|
return g
|
|
}, afterRender:function () {
|
|
Ext.grid.GridPanel.superclass.afterRender.call(this);
|
|
var a = this.view;
|
|
this.on("bodyresize", a.layout, a);
|
|
a.layout(true);
|
|
if (this.deferRowRender) {
|
|
if (!this.deferRowRenderTask) {
|
|
this.deferRowRenderTask = new Ext.util.DelayedTask(a.afterRender, this.view)
|
|
}
|
|
this.deferRowRenderTask.delay(10)
|
|
} else {
|
|
a.afterRender()
|
|
}
|
|
this.viewReady = true
|
|
}, reconfigure:function (a, b) {
|
|
var c = this.rendered;
|
|
if (c) {
|
|
if (this.loadMask) {
|
|
this.loadMask.destroy();
|
|
this.loadMask = new Ext.LoadMask(this.bwrap, Ext.apply({}, {store:a}, this.initialConfig.loadMask))
|
|
}
|
|
}
|
|
if (this.view) {
|
|
this.view.initData(a, b)
|
|
}
|
|
this.store = a;
|
|
this.colModel = b;
|
|
if (c) {
|
|
this.view.refresh(true)
|
|
}
|
|
this.fireEvent("reconfigure", this, a, b)
|
|
}, onDestroy:function () {
|
|
if (this.deferRowRenderTask && this.deferRowRenderTask.cancel) {
|
|
this.deferRowRenderTask.cancel()
|
|
}
|
|
if (this.rendered) {
|
|
Ext.destroy(this.view, this.loadMask)
|
|
} else {
|
|
if (this.store && this.store.autoDestroy) {
|
|
this.store.destroy()
|
|
}
|
|
}
|
|
Ext.destroy(this.colModel, this.selModel);
|
|
this.store = this.selModel = this.colModel = this.view = this.loadMask = null;
|
|
Ext.grid.GridPanel.superclass.onDestroy.call(this)
|
|
}, processEvent:function (a, b) {
|
|
this.view.processEvent(a, b)
|
|
}, onClick:function (a) {
|
|
this.processEvent("click", a)
|
|
}, onMouseDown:function (a) {
|
|
this.processEvent("mousedown", a)
|
|
}, onContextMenu:function (b, a) {
|
|
this.processEvent("contextmenu", b)
|
|
}, onDblClick:function (a) {
|
|
this.processEvent("dblclick", a)
|
|
}, walkCells:function (k, c, b, e, j) {
|
|
var i = this.colModel, g = i.getColumnCount(), a = this.store, h = a.getCount(), d = true;
|
|
if (b < 0) {
|
|
if (c < 0) {
|
|
k--;
|
|
d = false
|
|
}
|
|
while (k >= 0) {
|
|
if (!d) {
|
|
c = g - 1
|
|
}
|
|
d = false;
|
|
while (c >= 0) {
|
|
if (e.call(j || this, k, c, i) === true) {
|
|
return[k, c]
|
|
}
|
|
c--
|
|
}
|
|
k--
|
|
}
|
|
} else {
|
|
if (c >= g) {
|
|
k++;
|
|
d = false
|
|
}
|
|
while (k < h) {
|
|
if (!d) {
|
|
c = 0
|
|
}
|
|
d = false;
|
|
while (c < g) {
|
|
if (e.call(j || this, k, c, i) === true) {
|
|
return[k, c]
|
|
}
|
|
c++
|
|
}
|
|
k++
|
|
}
|
|
}
|
|
return null
|
|
}, getGridEl:function () {
|
|
return this.body
|
|
}, stopEditing:Ext.emptyFn, getSelectionModel:function () {
|
|
if (!this.selModel) {
|
|
this.selModel = new Ext.grid.RowSelectionModel(this.disableSelection ? {selectRow:Ext.emptyFn} : null)
|
|
}
|
|
return this.selModel
|
|
}, getStore:function () {
|
|
return this.store
|
|
}, getColumnModel:function () {
|
|
return this.colModel
|
|
}, getView:function () {
|
|
if (!this.view) {
|
|
this.view = new Ext.grid.GridView(this.viewConfig)
|
|
}
|
|
return this.view
|
|
}, getDragDropText:function () {
|
|
var a = this.selModel.getCount();
|
|
return String.format(this.ddText, a, a == 1 ? "" : "s")
|
|
}});
|
|
Ext.reg("grid", Ext.grid.GridPanel);
|
|
Ext.grid.PivotGrid = Ext.extend(Ext.grid.GridPanel, {aggregator:"sum", renderer:undefined, initComponent:function () {
|
|
Ext.grid.PivotGrid.superclass.initComponent.apply(this, arguments);
|
|
this.initAxes();
|
|
this.enableColumnResize = false;
|
|
this.viewConfig = Ext.apply(this.viewConfig || {}, {forceFit:true});
|
|
this.colModel = new Ext.grid.ColumnModel({})
|
|
}, getAggregator:function () {
|
|
if (typeof this.aggregator == "string") {
|
|
return Ext.grid.PivotAggregatorMgr.types[this.aggregator]
|
|
} else {
|
|
return this.aggregator
|
|
}
|
|
}, setAggregator:function (a) {
|
|
this.aggregator = a
|
|
}, setMeasure:function (a) {
|
|
this.measure = a
|
|
}, setLeftAxis:function (b, a) {
|
|
this.leftAxis = b;
|
|
if (a) {
|
|
this.view.refresh()
|
|
}
|
|
}, setTopAxis:function (b, a) {
|
|
this.topAxis = b;
|
|
if (a) {
|
|
this.view.refresh()
|
|
}
|
|
}, initAxes:function () {
|
|
var a = Ext.grid.PivotAxis;
|
|
if (!(this.leftAxis instanceof a)) {
|
|
this.setLeftAxis(new a({orientation:"vertical", dimensions:this.leftAxis || [], store:this.store}))
|
|
}
|
|
if (!(this.topAxis instanceof a)) {
|
|
this.setTopAxis(new a({orientation:"horizontal", dimensions:this.topAxis || [], store:this.store}))
|
|
}
|
|
}, extractData:function () {
|
|
var c = this.store.data.items, s = c.length, q = [], h, g, e, d;
|
|
if (s == 0) {
|
|
return[]
|
|
}
|
|
var l = this.leftAxis.getTuples(), o = l.length, m = this.topAxis.getTuples(), a = m.length, b = this.getAggregator();
|
|
for (g = 0; g < s; g++) {
|
|
h = c[g];
|
|
for (e = 0; e < o; e++) {
|
|
q[e] = q[e] || [];
|
|
if (l[e].matcher(h) === true) {
|
|
for (d = 0; d < a; d++) {
|
|
q[e][d] = q[e][d] || [];
|
|
if (m[d].matcher(h)) {
|
|
q[e][d].push(h)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var n = q.length, p, r;
|
|
for (g = 0; g < n; g++) {
|
|
r = q[g];
|
|
p = r.length;
|
|
for (e = 0; e < p; e++) {
|
|
q[g][e] = b(q[g][e], this.measure)
|
|
}
|
|
}
|
|
return q
|
|
}, getView:function () {
|
|
if (!this.view) {
|
|
this.view = new Ext.grid.PivotGridView(this.viewConfig)
|
|
}
|
|
return this.view
|
|
}});
|
|
Ext.reg("pivotgrid", Ext.grid.PivotGrid);
|
|
Ext.grid.PivotAggregatorMgr = new Ext.AbstractManager();
|
|
Ext.grid.PivotAggregatorMgr.registerType("sum", function (a, c) {
|
|
var e = a.length, d = 0, b;
|
|
for (b = 0; b < e; b++) {
|
|
d += a[b].get(c)
|
|
}
|
|
return d
|
|
});
|
|
Ext.grid.PivotAggregatorMgr.registerType("avg", function (a, c) {
|
|
var e = a.length, d = 0, b;
|
|
for (b = 0; b < e; b++) {
|
|
d += a[b].get(c)
|
|
}
|
|
return(d / e) || "n/a"
|
|
});
|
|
Ext.grid.PivotAggregatorMgr.registerType("min", function (a, c) {
|
|
var e = [], d = a.length, b;
|
|
for (b = 0; b < d; b++) {
|
|
e.push(a[b].get(c))
|
|
}
|
|
return Math.min.apply(this, e) || "n/a"
|
|
});
|
|
Ext.grid.PivotAggregatorMgr.registerType("max", function (a, c) {
|
|
var e = [], d = a.length, b;
|
|
for (b = 0; b < d; b++) {
|
|
e.push(a[b].get(c))
|
|
}
|
|
return Math.max.apply(this, e) || "n/a"
|
|
});
|
|
Ext.grid.PivotAggregatorMgr.registerType("count", function (a, b) {
|
|
return a.length
|
|
});
|
|
Ext.grid.GridView = Ext.extend(Ext.util.Observable, {deferEmptyText:true, scrollOffset:undefined, autoFill:false, forceFit:false, sortClasses:["sort-asc", "sort-desc"], sortAscText:"Sort Ascending", sortDescText:"Sort Descending", columnsText:"Columns", selectedRowClass:"x-grid3-row-selected", borderWidth:2, tdClass:"x-grid3-cell", hdCls:"x-grid3-hd", markDirty:true, cellSelectorDepth:4, rowSelectorDepth:10, rowBodySelectorDepth:10, cellSelector:"td.x-grid3-cell", rowSelector:"div.x-grid3-row", rowBodySelector:"div.x-grid3-row-body", firstRowCls:"x-grid3-row-first", lastRowCls:"x-grid3-row-last", rowClsRe:/(?:^|\s+)x-grid3-row-(first|last|alt)(?:\s+|$)/g, headerMenuOpenCls:"x-grid3-hd-menu-open", rowOverCls:"x-grid3-row-over", constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
this.addEvents("beforerowremoved", "beforerowsinserted", "beforerefresh", "rowremoved", "rowsinserted", "rowupdated", "refresh");
|
|
Ext.grid.GridView.superclass.constructor.call(this)
|
|
}, masterTpl:new Ext.Template('<div class="x-grid3" hidefocus="true">', '<div class="x-grid3-viewport">', '<div class="x-grid3-header">', '<div class="x-grid3-header-inner">', '<div class="x-grid3-header-offset" style="{ostyle}">{header}</div>', "</div>", '<div class="x-clear"></div>', "</div>", '<div class="x-grid3-scroller">', '<div class="x-grid3-body" style="{bstyle}">{body}</div>', '<a href="#" class="x-grid3-focus" tabIndex="-1"></a>', "</div>", "</div>", '<div class="x-grid3-resize-marker"> </div>', '<div class="x-grid3-resize-proxy"> </div>', "</div>"), headerTpl:new Ext.Template('<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">', "<thead>", '<tr class="x-grid3-hd-row">{cells}</tr>', "</thead>", "</table>"), bodyTpl:new Ext.Template("{rows}"), cellTpl:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>', '<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>', "</td>"), initTemplates:function () {
|
|
var c = this.templates || {}, d, b, g = new Ext.Template('<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id} {css}" style="{style}">', '<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">', this.grid.enableHdMenu ? '<a class="x-grid3-hd-btn" href="#"></a>' : "", "{value}", '<img alt="" class="x-grid3-sort-icon" src="', Ext.BLANK_IMAGE_URL, '" />', "</div>", "</td>"), a = ['<tr class="x-grid3-row-body-tr" style="{bodyStyle}">', '<td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on">', '<div class="x-grid3-row-body">{body}</div>', "</td>", "</tr>"].join(""), e = ['<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">', "<tbody>", "<tr>{cells}</tr>", this.enableRowBody ? a : "", "</tbody>", "</table>"].join("");
|
|
Ext.applyIf(c, {hcell:g, cell:this.cellTpl, body:this.bodyTpl, header:this.headerTpl, master:this.masterTpl, row:new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}">' + e + "</div>"), rowInner:new Ext.Template(e)});
|
|
for (b in c) {
|
|
d = c[b];
|
|
if (d && Ext.isFunction(d.compile) && !d.compiled) {
|
|
d.disableFormats = true;
|
|
d.compile()
|
|
}
|
|
}
|
|
this.templates = c;
|
|
this.colRe = new RegExp("x-grid3-td-([^\\s]+)", "")
|
|
}, fly:function (a) {
|
|
if (!this._flyweight) {
|
|
this._flyweight = new Ext.Element.Flyweight(document.body)
|
|
}
|
|
this._flyweight.dom = a;
|
|
return this._flyweight
|
|
}, getEditorParent:function () {
|
|
return this.scroller.dom
|
|
}, initElements:function () {
|
|
var b = Ext.Element, d = Ext.get(this.grid.getGridEl().dom.firstChild), e = new b(d.child("div.x-grid3-viewport")), c = new b(e.child("div.x-grid3-header")), a = new b(e.child("div.x-grid3-scroller"));
|
|
if (this.grid.hideHeaders) {
|
|
c.setDisplayed(false)
|
|
}
|
|
if (this.forceFit) {
|
|
a.setStyle("overflow-x", "hidden")
|
|
}
|
|
Ext.apply(this, {el:d, mainWrap:e, scroller:a, mainHd:c, innerHd:c.child("div.x-grid3-header-inner").dom, mainBody:new b(b.fly(a).child("div.x-grid3-body")), focusEl:new b(b.fly(a).child("a")), resizeMarker:new b(d.child("div.x-grid3-resize-marker")), resizeProxy:new b(d.child("div.x-grid3-resize-proxy"))});
|
|
this.focusEl.swallowEvent("click", true)
|
|
}, getRows:function () {
|
|
return this.hasRows() ? this.mainBody.dom.childNodes : []
|
|
}, findCell:function (a) {
|
|
if (!a) {
|
|
return false
|
|
}
|
|
return this.fly(a).findParent(this.cellSelector, this.cellSelectorDepth)
|
|
}, findCellIndex:function (d, c) {
|
|
var b = this.findCell(d), a;
|
|
if (b) {
|
|
a = this.fly(b).hasClass(c);
|
|
if (!c || a) {
|
|
return this.getCellIndex(b)
|
|
}
|
|
}
|
|
return false
|
|
}, getCellIndex:function (b) {
|
|
if (b) {
|
|
var a = b.className.match(this.colRe);
|
|
if (a && a[1]) {
|
|
return this.cm.getIndexById(a[1])
|
|
}
|
|
}
|
|
return false
|
|
}, findHeaderCell:function (b) {
|
|
var a = this.findCell(b);
|
|
return a && this.fly(a).hasClass(this.hdCls) ? a : null
|
|
}, findHeaderIndex:function (a) {
|
|
return this.findCellIndex(a, this.hdCls)
|
|
}, findRow:function (a) {
|
|
if (!a) {
|
|
return false
|
|
}
|
|
return this.fly(a).findParent(this.rowSelector, this.rowSelectorDepth)
|
|
}, findRowIndex:function (a) {
|
|
var b = this.findRow(a);
|
|
return b ? b.rowIndex : false
|
|
}, findRowBody:function (a) {
|
|
if (!a) {
|
|
return false
|
|
}
|
|
return this.fly(a).findParent(this.rowBodySelector, this.rowBodySelectorDepth)
|
|
}, getRow:function (a) {
|
|
return this.getRows()[a]
|
|
}, getCell:function (b, a) {
|
|
return Ext.fly(this.getRow(b)).query(this.cellSelector)[a]
|
|
}, getHeaderCell:function (a) {
|
|
return this.mainHd.dom.getElementsByTagName("td")[a]
|
|
}, addRowClass:function (b, a) {
|
|
var c = this.getRow(b);
|
|
if (c) {
|
|
this.fly(c).addClass(a)
|
|
}
|
|
}, removeRowClass:function (c, a) {
|
|
var b = this.getRow(c);
|
|
if (b) {
|
|
this.fly(b).removeClass(a)
|
|
}
|
|
}, removeRow:function (a) {
|
|
Ext.removeNode(this.getRow(a));
|
|
this.syncFocusEl(a)
|
|
}, removeRows:function (c, a) {
|
|
var b = this.mainBody.dom, d;
|
|
for (d = c; d <= a; d++) {
|
|
Ext.removeNode(b.childNodes[c])
|
|
}
|
|
this.syncFocusEl(c)
|
|
}, getScrollState:function () {
|
|
var a = this.scroller.dom;
|
|
return{left:a.scrollLeft, top:a.scrollTop}
|
|
}, restoreScroll:function (a) {
|
|
var b = this.scroller.dom;
|
|
b.scrollLeft = a.left;
|
|
b.scrollTop = a.top
|
|
}, scrollToTop:function () {
|
|
var a = this.scroller.dom;
|
|
a.scrollTop = 0;
|
|
a.scrollLeft = 0
|
|
}, syncScroll:function () {
|
|
this.syncHeaderScroll();
|
|
var a = this.scroller.dom;
|
|
this.grid.fireEvent("bodyscroll", a.scrollLeft, a.scrollTop)
|
|
}, syncHeaderScroll:function () {
|
|
var a = this.innerHd, b = this.scroller.dom.scrollLeft;
|
|
a.scrollLeft = b;
|
|
a.scrollLeft = b
|
|
}, updateSortIcon:function (d, c) {
|
|
var a = this.sortClasses, b = a[c == "DESC" ? 1 : 0], e = this.mainHd.select("td").removeClass(a);
|
|
e.item(d).addClass(b)
|
|
}, updateAllColumnWidths:function () {
|
|
var e = this.getTotalWidth(), k = this.cm.getColumnCount(), m = this.getRows(), g = m.length, b = [], l, a, h, d, c;
|
|
for (d = 0; d < k; d++) {
|
|
b[d] = this.getColumnWidth(d);
|
|
this.getHeaderCell(d).style.width = b[d]
|
|
}
|
|
this.updateHeaderWidth();
|
|
for (d = 0; d < g; d++) {
|
|
l = m[d];
|
|
l.style.width = e;
|
|
a = l.firstChild;
|
|
if (a) {
|
|
a.style.width = e;
|
|
h = a.rows[0];
|
|
for (c = 0; c < k; c++) {
|
|
h.childNodes[c].style.width = b[c]
|
|
}
|
|
}
|
|
}
|
|
this.onAllColumnWidthsUpdated(b, e)
|
|
}, updateColumnWidth:function (d, b) {
|
|
var c = this.getColumnWidth(d), j = this.getTotalWidth(), h = this.getHeaderCell(d), a = this.getRows(), e = a.length, l, g, k;
|
|
this.updateHeaderWidth();
|
|
h.style.width = c;
|
|
for (g = 0; g < e; g++) {
|
|
l = a[g];
|
|
k = l.firstChild;
|
|
l.style.width = j;
|
|
if (k) {
|
|
k.style.width = j;
|
|
k.rows[0].childNodes[d].style.width = c
|
|
}
|
|
}
|
|
this.onColumnWidthUpdated(d, c, j)
|
|
}, updateColumnHidden:function (b, j) {
|
|
var h = this.getTotalWidth(), k = j ? "none" : "", g = this.getHeaderCell(b), a = this.getRows(), d = a.length, l, c, e;
|
|
this.updateHeaderWidth();
|
|
g.style.display = k;
|
|
for (e = 0; e < d; e++) {
|
|
l = a[e];
|
|
l.style.width = h;
|
|
c = l.firstChild;
|
|
if (c) {
|
|
c.style.width = h;
|
|
c.rows[0].childNodes[b].style.display = k
|
|
}
|
|
}
|
|
this.onColumnHiddenUpdated(b, j, h);
|
|
delete this.lastViewWidth;
|
|
this.layout()
|
|
}, doRender:function (d, v, m, a, r, t) {
|
|
var h = this.templates, c = h.cell, y = h.row, o = r - 1, b = "width:" + this.getTotalWidth() + ";", k = [], l = [], n = {tstyle:b}, q = {}, w = v.length, x, g, e, u, s, p;
|
|
for (s = 0; s < w; s++) {
|
|
e = v[s];
|
|
l = [];
|
|
p = s + a;
|
|
for (u = 0; u < r; u++) {
|
|
g = d[u];
|
|
q.id = g.id;
|
|
q.css = u === 0 ? "x-grid3-cell-first " : (u == o ? "x-grid3-cell-last " : "");
|
|
q.attr = q.cellAttr = "";
|
|
q.style = g.style;
|
|
q.value = g.renderer.call(g.scope, e.data[g.name], q, e, p, u, m);
|
|
if (Ext.isEmpty(q.value)) {
|
|
q.value = " "
|
|
}
|
|
if (this.markDirty && e.dirty && typeof e.modified[g.name] != "undefined") {
|
|
q.css += " x-grid3-dirty-cell"
|
|
}
|
|
l[l.length] = c.apply(q)
|
|
}
|
|
x = [];
|
|
if (t && ((p + 1) % 2 === 0)) {
|
|
x[0] = "x-grid3-row-alt"
|
|
}
|
|
if (e.dirty) {
|
|
x[1] = " x-grid3-dirty-row"
|
|
}
|
|
n.cols = r;
|
|
if (this.getRowClass) {
|
|
x[2] = this.getRowClass(e, p, n, m)
|
|
}
|
|
n.alt = x.join(" ");
|
|
n.cells = l.join("");
|
|
k[k.length] = y.apply(n)
|
|
}
|
|
return k.join("")
|
|
}, processRows:function (a, g) {
|
|
if (!this.ds || this.ds.getCount() < 1) {
|
|
return
|
|
}
|
|
var d = this.getRows(), c = d.length, e, b;
|
|
g = g || !this.grid.stripeRows;
|
|
a = a || 0;
|
|
for (b = 0; b < c; b++) {
|
|
e = d[b];
|
|
if (e) {
|
|
e.rowIndex = b;
|
|
if (!g) {
|
|
e.className = e.className.replace(this.rowClsRe, " ");
|
|
if ((b + 1) % 2 === 0) {
|
|
e.className += " x-grid3-row-alt"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (a === 0) {
|
|
Ext.fly(d[0]).addClass(this.firstRowCls)
|
|
}
|
|
Ext.fly(d[c - 1]).addClass(this.lastRowCls)
|
|
}, afterRender:function () {
|
|
if (!this.ds || !this.cm) {
|
|
return
|
|
}
|
|
this.mainBody.dom.innerHTML = this.renderBody() || " ";
|
|
this.processRows(0, true);
|
|
if (this.deferEmptyText !== true) {
|
|
this.applyEmptyText()
|
|
}
|
|
this.grid.fireEvent("viewready", this.grid)
|
|
}, afterRenderUI:function () {
|
|
var a = this.grid;
|
|
this.initElements();
|
|
Ext.fly(this.innerHd).on("click", this.handleHdDown, this);
|
|
this.mainHd.on({scope:this, mouseover:this.handleHdOver, mouseout:this.handleHdOut, mousemove:this.handleHdMove});
|
|
this.scroller.on("scroll", this.syncScroll, this);
|
|
if (a.enableColumnResize !== false) {
|
|
this.splitZone = new Ext.grid.GridView.SplitDragZone(a, this.mainHd.dom)
|
|
}
|
|
if (a.enableColumnMove) {
|
|
this.columnDrag = new Ext.grid.GridView.ColumnDragZone(a, this.innerHd);
|
|
this.columnDrop = new Ext.grid.HeaderDropZone(a, this.mainHd.dom)
|
|
}
|
|
if (a.enableHdMenu !== false) {
|
|
this.hmenu = new Ext.menu.Menu({id:a.id + "-hctx"});
|
|
this.hmenu.add({itemId:"asc", text:this.sortAscText, cls:"xg-hmenu-sort-asc"}, {itemId:"desc", text:this.sortDescText, cls:"xg-hmenu-sort-desc"});
|
|
if (a.enableColumnHide !== false) {
|
|
this.colMenu = new Ext.menu.Menu({id:a.id + "-hcols-menu"});
|
|
this.colMenu.on({scope:this, beforeshow:this.beforeColMenuShow, itemclick:this.handleHdMenuClick});
|
|
this.hmenu.add("-", {itemId:"columns", hideOnClick:false, text:this.columnsText, menu:this.colMenu, iconCls:"x-cols-icon"})
|
|
}
|
|
this.hmenu.on("itemclick", this.handleHdMenuClick, this)
|
|
}
|
|
if (a.trackMouseOver) {
|
|
this.mainBody.on({scope:this, mouseover:this.onRowOver, mouseout:this.onRowOut})
|
|
}
|
|
if (a.enableDragDrop || a.enableDrag) {
|
|
this.dragZone = new Ext.grid.GridDragZone(a, {ddGroup:a.ddGroup || "GridDD"})
|
|
}
|
|
this.updateHeaderSortState()
|
|
}, renderUI:function () {
|
|
var a = this.templates;
|
|
return a.master.apply({body:a.body.apply({rows:" "}), header:this.renderHeaders(), ostyle:"width:" + this.getOffsetWidth() + ";", bstyle:"width:" + this.getTotalWidth() + ";"})
|
|
}, processEvent:function (b, h) {
|
|
var i = h.getTarget(), a = this.grid, d = this.findHeaderIndex(i), k, j, c, g;
|
|
a.fireEvent(b, h);
|
|
if (d !== false) {
|
|
a.fireEvent("header" + b, a, d, h)
|
|
} else {
|
|
k = this.findRowIndex(i);
|
|
if (k !== false) {
|
|
j = this.findCellIndex(i);
|
|
if (j !== false) {
|
|
c = a.colModel.getColumnAt(j);
|
|
if (a.fireEvent("cell" + b, a, k, j, h) !== false) {
|
|
if (!c || (c.processEvent && (c.processEvent(b, h, a, k, j) !== false))) {
|
|
a.fireEvent("row" + b, a, k, h)
|
|
}
|
|
}
|
|
} else {
|
|
if (a.fireEvent("row" + b, a, k, h) !== false) {
|
|
(g = this.findRowBody(i)) && a.fireEvent("rowbody" + b, a, k, h)
|
|
}
|
|
}
|
|
} else {
|
|
a.fireEvent("container" + b, a, h)
|
|
}
|
|
}
|
|
}, layout:function (j) {
|
|
if (!this.mainBody) {
|
|
return
|
|
}
|
|
var a = this.grid, d = a.getGridEl(), c = d.getSize(true), i = c.width, b = c.height, h = this.scroller, g, e, k;
|
|
if (i < 20 || b < 20) {
|
|
return
|
|
}
|
|
if (a.autoHeight) {
|
|
g = h.dom.style;
|
|
g.overflow = "visible";
|
|
if (Ext.isWebKit) {
|
|
g.position = "static"
|
|
}
|
|
} else {
|
|
this.el.setSize(i, b);
|
|
e = this.mainHd.getHeight();
|
|
k = b - e;
|
|
h.setSize(i, k);
|
|
if (this.innerHd) {
|
|
this.innerHd.style.width = (i) + "px"
|
|
}
|
|
}
|
|
if (this.forceFit || (j === true && this.autoFill)) {
|
|
if (this.lastViewWidth != i) {
|
|
this.fitColumns(false, false);
|
|
this.lastViewWidth = i
|
|
}
|
|
} else {
|
|
this.autoExpand();
|
|
this.syncHeaderScroll()
|
|
}
|
|
this.onLayout(i, k)
|
|
}, onLayout:function (a, b) {
|
|
}, onColumnWidthUpdated:function (c, a, b) {
|
|
}, onAllColumnWidthsUpdated:function (a, b) {
|
|
}, onColumnHiddenUpdated:function (b, c, a) {
|
|
}, updateColumnText:function (a, b) {
|
|
}, afterMove:function (a) {
|
|
}, init:function (a) {
|
|
this.grid = a;
|
|
this.initTemplates();
|
|
this.initData(a.store, a.colModel);
|
|
this.initUI(a)
|
|
}, getColumnId:function (a) {
|
|
return this.cm.getColumnId(a)
|
|
}, getOffsetWidth:function () {
|
|
return(this.cm.getTotalWidth() + this.getScrollOffset()) + "px"
|
|
}, getScrollOffset:function () {
|
|
return Ext.num(this.scrollOffset, Ext.getScrollBarWidth())
|
|
}, renderHeaders:function () {
|
|
var e = this.cm, g = this.templates, a = g.hcell, d = {}, h = e.getColumnCount(), j = h - 1, k = [], c, b;
|
|
for (c = 0; c < h; c++) {
|
|
if (c == 0) {
|
|
b = "x-grid3-cell-first "
|
|
} else {
|
|
b = c == j ? "x-grid3-cell-last " : ""
|
|
}
|
|
d = {id:e.getColumnId(c), value:e.getColumnHeader(c) || "", style:this.getColumnStyle(c, true), css:b, tooltip:this.getColumnTooltip(c)};
|
|
if (e.config[c].align == "right") {
|
|
d.istyle = "padding-right: 16px;"
|
|
} else {
|
|
delete d.istyle
|
|
}
|
|
k[c] = a.apply(d)
|
|
}
|
|
return g.header.apply({cells:k.join(""), tstyle:String.format("width: {0};", this.getTotalWidth())})
|
|
}, getColumnTooltip:function (a) {
|
|
var b = this.cm.getColumnTooltip(a);
|
|
if (b) {
|
|
if (Ext.QuickTips.isEnabled()) {
|
|
return'ext:qtip="' + b + '"'
|
|
} else {
|
|
return'title="' + b + '"'
|
|
}
|
|
}
|
|
return""
|
|
}, beforeUpdate:function () {
|
|
this.grid.stopEditing(true)
|
|
}, updateHeaders:function () {
|
|
this.innerHd.firstChild.innerHTML = this.renderHeaders();
|
|
this.updateHeaderWidth(false)
|
|
}, updateHeaderWidth:function (c) {
|
|
var b = this.innerHd.firstChild, a = this.getTotalWidth();
|
|
b.style.width = this.getOffsetWidth();
|
|
b.firstChild.style.width = a;
|
|
if (c !== false) {
|
|
this.mainBody.dom.style.width = a
|
|
}
|
|
}, focusRow:function (a) {
|
|
this.focusCell(a, 0, false)
|
|
}, focusCell:function (d, b, c) {
|
|
this.syncFocusEl(this.ensureVisible(d, b, c));
|
|
var a = this.focusEl;
|
|
if (Ext.isGecko) {
|
|
a.focus()
|
|
} else {
|
|
a.focus.defer(1, a)
|
|
}
|
|
}, resolveCell:function (h, d, g) {
|
|
if (!Ext.isNumber(h)) {
|
|
h = h.rowIndex
|
|
}
|
|
if (!this.ds) {
|
|
return null
|
|
}
|
|
if (h < 0 || h >= this.ds.getCount()) {
|
|
return null
|
|
}
|
|
d = (d !== undefined ? d : 0);
|
|
var c = this.getRow(h), b = this.cm, e = b.getColumnCount(), a;
|
|
if (!(g === false && d === 0)) {
|
|
while (d < e && b.isHidden(d)) {
|
|
d++
|
|
}
|
|
a = this.getCell(h, d)
|
|
}
|
|
return{row:c, cell:a}
|
|
}, getResolvedXY:function (b) {
|
|
if (!b) {
|
|
return null
|
|
}
|
|
var a = b.cell, c = b.row;
|
|
if (a) {
|
|
return Ext.fly(a).getXY()
|
|
} else {
|
|
return[this.el.getX(), Ext.fly(c).getY()]
|
|
}
|
|
}, syncFocusEl:function (d, a, c) {
|
|
var b = d;
|
|
if (!Ext.isArray(b)) {
|
|
d = Math.min(d, Math.max(0, this.getRows().length - 1));
|
|
if (isNaN(d)) {
|
|
return
|
|
}
|
|
b = this.getResolvedXY(this.resolveCell(d, a, c))
|
|
}
|
|
this.focusEl.setXY(b || this.scroller.getXY())
|
|
}, ensureVisible:function (t, g, e) {
|
|
var r = this.resolveCell(t, g, e);
|
|
if (!r || !r.row) {
|
|
return null
|
|
}
|
|
var k = r.row, h = r.cell, n = this.scroller.dom, d = k, s = 0, o = this.el.dom;
|
|
while (d && d != o) {
|
|
s += d.offsetTop;
|
|
d = d.offsetParent
|
|
}
|
|
s -= this.mainHd.dom.offsetHeight;
|
|
o = parseInt(n.scrollTop, 10);
|
|
var q = s + k.offsetHeight, a = n.clientHeight, m = o + a;
|
|
if (s < o) {
|
|
n.scrollTop = s
|
|
} else {
|
|
if (q > m) {
|
|
n.scrollTop = q - a
|
|
}
|
|
}
|
|
if (e !== false) {
|
|
var l = parseInt(h.offsetLeft, 10), j = l + h.offsetWidth, i = parseInt(n.scrollLeft, 10), b = i + n.clientWidth;
|
|
if (l < i) {
|
|
n.scrollLeft = l
|
|
} else {
|
|
if (j > b) {
|
|
n.scrollLeft = j - n.clientWidth
|
|
}
|
|
}
|
|
}
|
|
return this.getResolvedXY(r)
|
|
}, insertRows:function (a, i, e, h) {
|
|
var d = a.getCount() - 1;
|
|
if (!h && i === 0 && e >= d) {
|
|
this.fireEvent("beforerowsinserted", this, i, e);
|
|
this.refresh();
|
|
this.fireEvent("rowsinserted", this, i, e)
|
|
} else {
|
|
if (!h) {
|
|
this.fireEvent("beforerowsinserted", this, i, e)
|
|
}
|
|
var b = this.renderRows(i, e), g = this.getRow(i);
|
|
if (g) {
|
|
if (i === 0) {
|
|
Ext.fly(this.getRow(0)).removeClass(this.firstRowCls)
|
|
}
|
|
Ext.DomHelper.insertHtml("beforeBegin", g, b)
|
|
} else {
|
|
var c = this.getRow(d - 1);
|
|
if (c) {
|
|
Ext.fly(c).removeClass(this.lastRowCls)
|
|
}
|
|
Ext.DomHelper.insertHtml("beforeEnd", this.mainBody.dom, b)
|
|
}
|
|
if (!h) {
|
|
this.processRows(i);
|
|
this.fireEvent("rowsinserted", this, i, e)
|
|
} else {
|
|
if (i === 0 || i >= d) {
|
|
Ext.fly(this.getRow(i)).addClass(i === 0 ? this.firstRowCls : this.lastRowCls)
|
|
}
|
|
}
|
|
}
|
|
this.syncFocusEl(i)
|
|
}, deleteRows:function (a, c, b) {
|
|
if (a.getRowCount() < 1) {
|
|
this.refresh()
|
|
} else {
|
|
this.fireEvent("beforerowsdeleted", this, c, b);
|
|
this.removeRows(c, b);
|
|
this.processRows(c);
|
|
this.fireEvent("rowsdeleted", this, c, b)
|
|
}
|
|
}, getColumnStyle:function (b, d) {
|
|
var a = this.cm, g = a.config, c = d ? "" : g[b].css || "", e = g[b].align;
|
|
c += String.format("width: {0};", this.getColumnWidth(b));
|
|
if (a.isHidden(b)) {
|
|
c += "display: none; "
|
|
}
|
|
if (e) {
|
|
c += String.format("text-align: {0};", e)
|
|
}
|
|
return c
|
|
}, getColumnWidth:function (b) {
|
|
var c = this.cm.getColumnWidth(b), a = this.borderWidth;
|
|
if (Ext.isNumber(c)) {
|
|
if (Ext.isBorderBox || (Ext.isWebKit && !Ext.isSafari2)) {
|
|
return c + "px"
|
|
} else {
|
|
return Math.max(c - a, 0) + "px"
|
|
}
|
|
} else {
|
|
return c
|
|
}
|
|
}, getTotalWidth:function () {
|
|
return this.cm.getTotalWidth() + "px"
|
|
}, fitColumns:function (g, j, h) {
|
|
var a = this.grid, l = this.cm, s = l.getTotalWidth(false), q = this.getGridInnerWidth(), r = q - s, c = [], o = 0, n = 0, u, d, p;
|
|
if (q < 20 || r === 0) {
|
|
return false
|
|
}
|
|
var e = l.getColumnCount(true), m = l.getColumnCount(false), b = e - (Ext.isNumber(h) ? 1 : 0);
|
|
if (b === 0) {
|
|
b = 1;
|
|
h = undefined
|
|
}
|
|
for (p = 0; p < m; p++) {
|
|
if (!l.isFixed(p) && p !== h) {
|
|
u = l.getColumnWidth(p);
|
|
c.push(p, u);
|
|
if (!l.isHidden(p)) {
|
|
o = p;
|
|
n += u
|
|
}
|
|
}
|
|
}
|
|
d = (q - l.getTotalWidth()) / n;
|
|
while (c.length) {
|
|
u = c.pop();
|
|
p = c.pop();
|
|
l.setColumnWidth(p, Math.max(a.minColumnWidth, Math.floor(u + u * d)), true)
|
|
}
|
|
s = l.getTotalWidth(false);
|
|
if (s > q) {
|
|
var t = (b == e) ? o : h, k = Math.max(1, l.getColumnWidth(t) - (s - q));
|
|
l.setColumnWidth(t, k, true)
|
|
}
|
|
if (g !== true) {
|
|
this.updateAllColumnWidths()
|
|
}
|
|
return true
|
|
}, autoExpand:function (k) {
|
|
var a = this.grid, i = this.cm, e = this.getGridInnerWidth(), c = i.getTotalWidth(false), g = a.autoExpandColumn;
|
|
if (!this.userResized && g) {
|
|
if (e != c) {
|
|
var j = i.getIndexById(g), b = i.getColumnWidth(j), h = e - c + b, d = Math.min(Math.max(h, a.autoExpandMin), a.autoExpandMax);
|
|
if (b != d) {
|
|
i.setColumnWidth(j, d, true);
|
|
if (k !== true) {
|
|
this.updateColumnWidth(j, d)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, getGridInnerWidth:function () {
|
|
return this.grid.getGridEl().getWidth(true) - this.getScrollOffset()
|
|
}, getColumnData:function () {
|
|
var e = [], c = this.cm, g = c.getColumnCount(), a = this.ds.fields, d, b;
|
|
for (d = 0; d < g; d++) {
|
|
b = c.getDataIndex(d);
|
|
e[d] = {name:Ext.isDefined(b) ? b : (a.get(d) ? a.get(d).name : undefined), renderer:c.getRenderer(d), scope:c.getRendererScope(d), id:c.getColumnId(d), style:this.getColumnStyle(d)}
|
|
}
|
|
return e
|
|
}, renderRows:function (i, c) {
|
|
var a = this.grid, g = a.store, j = a.stripeRows, e = a.colModel, h = e.getColumnCount(), d = g.getCount(), b;
|
|
if (d < 1) {
|
|
return""
|
|
}
|
|
i = i || 0;
|
|
c = Ext.isDefined(c) ? c : d - 1;
|
|
b = g.getRange(i, c);
|
|
return this.doRender(this.getColumnData(), b, g, i, h, j)
|
|
}, renderBody:function () {
|
|
var a = this.renderRows() || " ";
|
|
return this.templates.body.apply({rows:a})
|
|
}, refreshRow:function (g) {
|
|
var l = this.ds, m = this.cm.getColumnCount(), c = this.getColumnData(), n = m - 1, p = ["x-grid3-row"], e = {tstyle:String.format("width: {0};", this.getTotalWidth())}, a = [], k = this.templates.cell, j, q, b, o, h, d;
|
|
if (Ext.isNumber(g)) {
|
|
j = g;
|
|
g = l.getAt(j)
|
|
} else {
|
|
j = l.indexOf(g)
|
|
}
|
|
if (!g || j < 0) {
|
|
return
|
|
}
|
|
for (d = 0; d < m; d++) {
|
|
b = c[d];
|
|
if (d == 0) {
|
|
h = "x-grid3-cell-first"
|
|
} else {
|
|
h = (d == n) ? "x-grid3-cell-last " : ""
|
|
}
|
|
o = {id:b.id, style:b.style, css:h, attr:"", cellAttr:""};
|
|
o.value = b.renderer.call(b.scope, g.data[b.name], o, g, j, d, l);
|
|
if (Ext.isEmpty(o.value)) {
|
|
o.value = " "
|
|
}
|
|
if (this.markDirty && g.dirty && typeof g.modified[b.name] != "undefined") {
|
|
o.css += " x-grid3-dirty-cell"
|
|
}
|
|
a[d] = k.apply(o)
|
|
}
|
|
q = this.getRow(j);
|
|
q.className = "";
|
|
if (this.grid.stripeRows && ((j + 1) % 2 === 0)) {
|
|
p.push("x-grid3-row-alt")
|
|
}
|
|
if (this.getRowClass) {
|
|
e.cols = m;
|
|
p.push(this.getRowClass(g, j, e, l))
|
|
}
|
|
this.fly(q).addClass(p).setStyle(e.tstyle);
|
|
e.cells = a.join("");
|
|
q.innerHTML = this.templates.rowInner.apply(e);
|
|
this.fireEvent("rowupdated", this, j, g)
|
|
}, refresh:function (b) {
|
|
this.fireEvent("beforerefresh", this);
|
|
this.grid.stopEditing(true);
|
|
var a = this.renderBody();
|
|
this.mainBody.update(a).setWidth(this.getTotalWidth());
|
|
if (b === true) {
|
|
this.updateHeaders();
|
|
this.updateHeaderSortState()
|
|
}
|
|
this.processRows(0, true);
|
|
this.layout();
|
|
this.applyEmptyText();
|
|
this.fireEvent("refresh", this)
|
|
}, applyEmptyText:function () {
|
|
if (this.emptyText && !this.hasRows()) {
|
|
this.mainBody.update('<div class="x-grid-empty">' + this.emptyText + "</div>")
|
|
}
|
|
}, updateHeaderSortState:function () {
|
|
var b = this.ds.getSortState();
|
|
if (!b) {
|
|
return
|
|
}
|
|
if (!this.sortState || (this.sortState.field != b.field || this.sortState.direction != b.direction)) {
|
|
this.grid.fireEvent("sortchange", this.grid, b)
|
|
}
|
|
this.sortState = b;
|
|
var c = this.cm.findColumnIndex(b.field);
|
|
if (c != -1) {
|
|
var a = b.direction;
|
|
this.updateSortIcon(c, a)
|
|
}
|
|
}, clearHeaderSortState:function () {
|
|
if (!this.sortState) {
|
|
return
|
|
}
|
|
this.grid.fireEvent("sortchange", this.grid, null);
|
|
this.mainHd.select("td").removeClass(this.sortClasses);
|
|
delete this.sortState
|
|
}, destroy:function () {
|
|
var j = this, a = j.grid, d = a.getGridEl(), i = j.dragZone, g = j.splitZone, h = j.columnDrag, e = j.columnDrop, k = j.scrollToTopTask, c, b;
|
|
if (k && k.cancel) {
|
|
k.cancel()
|
|
}
|
|
Ext.destroyMembers(j, "colMenu", "hmenu");
|
|
j.initData(null, null);
|
|
j.purgeListeners();
|
|
Ext.fly(j.innerHd).un("click", j.handleHdDown, j);
|
|
if (a.enableColumnMove) {
|
|
c = h.dragData;
|
|
b = h.proxy;
|
|
Ext.destroy(h.el, b.ghost, b.el, e.el, e.proxyTop, e.proxyBottom, c.ddel, c.header);
|
|
if (b.anim) {
|
|
Ext.destroy(b.anim)
|
|
}
|
|
delete b.ghost;
|
|
delete c.ddel;
|
|
delete c.header;
|
|
h.destroy();
|
|
delete Ext.dd.DDM.locationCache[h.id];
|
|
delete h._domRef;
|
|
delete e.proxyTop;
|
|
delete e.proxyBottom;
|
|
e.destroy();
|
|
delete Ext.dd.DDM.locationCache["gridHeader" + d.id];
|
|
delete e._domRef;
|
|
delete Ext.dd.DDM.ids[e.ddGroup]
|
|
}
|
|
if (g) {
|
|
g.destroy();
|
|
delete g._domRef;
|
|
delete Ext.dd.DDM.ids["gridSplitters" + d.id]
|
|
}
|
|
Ext.fly(j.innerHd).removeAllListeners();
|
|
Ext.removeNode(j.innerHd);
|
|
delete j.innerHd;
|
|
Ext.destroy(j.el, j.mainWrap, j.mainHd, j.scroller, j.mainBody, j.focusEl, j.resizeMarker, j.resizeProxy, j.activeHdBtn, j._flyweight, i, g);
|
|
delete a.container;
|
|
if (i) {
|
|
i.destroy()
|
|
}
|
|
Ext.dd.DDM.currentTarget = null;
|
|
delete Ext.dd.DDM.locationCache[d.id];
|
|
Ext.EventManager.removeResizeListener(j.onWindowResize, j)
|
|
}, onDenyColumnHide:function () {
|
|
}, render:function () {
|
|
if (this.autoFill) {
|
|
var a = this.grid.ownerCt;
|
|
if (a && a.getLayout()) {
|
|
a.on("afterlayout", function () {
|
|
this.fitColumns(true, true);
|
|
this.updateHeaders();
|
|
this.updateHeaderSortState()
|
|
}, this, {single:true})
|
|
}
|
|
} else {
|
|
if (this.forceFit) {
|
|
this.fitColumns(true, false)
|
|
} else {
|
|
if (this.grid.autoExpandColumn) {
|
|
this.autoExpand(true)
|
|
}
|
|
}
|
|
}
|
|
this.grid.getGridEl().dom.innerHTML = this.renderUI();
|
|
this.afterRenderUI()
|
|
}, initData:function (a, e) {
|
|
var b = this;
|
|
if (b.ds) {
|
|
var d = b.ds;
|
|
d.un("add", b.onAdd, b);
|
|
d.un("load", b.onLoad, b);
|
|
d.un("clear", b.onClear, b);
|
|
d.un("remove", b.onRemove, b);
|
|
d.un("update", b.onUpdate, b);
|
|
d.un("datachanged", b.onDataChange, b);
|
|
if (d !== a && d.autoDestroy) {
|
|
d.destroy()
|
|
}
|
|
}
|
|
if (a) {
|
|
a.on({scope:b, load:b.onLoad, add:b.onAdd, remove:b.onRemove, update:b.onUpdate, clear:b.onClear, datachanged:b.onDataChange})
|
|
}
|
|
if (b.cm) {
|
|
var c = b.cm;
|
|
c.un("configchange", b.onColConfigChange, b);
|
|
c.un("widthchange", b.onColWidthChange, b);
|
|
c.un("headerchange", b.onHeaderChange, b);
|
|
c.un("hiddenchange", b.onHiddenChange, b);
|
|
c.un("columnmoved", b.onColumnMove, b)
|
|
}
|
|
if (e) {
|
|
delete b.lastViewWidth;
|
|
e.on({scope:b, configchange:b.onColConfigChange, widthchange:b.onColWidthChange, headerchange:b.onHeaderChange, hiddenchange:b.onHiddenChange, columnmoved:b.onColumnMove})
|
|
}
|
|
b.ds = a;
|
|
b.cm = e
|
|
}, onDataChange:function () {
|
|
this.refresh(true);
|
|
this.updateHeaderSortState();
|
|
this.syncFocusEl(0)
|
|
}, onClear:function () {
|
|
this.refresh();
|
|
this.syncFocusEl(0)
|
|
}, onUpdate:function (b, a) {
|
|
this.refreshRow(a)
|
|
}, onAdd:function (b, a, c) {
|
|
this.insertRows(b, c, c + (a.length - 1))
|
|
}, onRemove:function (b, a, c, d) {
|
|
if (d !== true) {
|
|
this.fireEvent("beforerowremoved", this, c, a)
|
|
}
|
|
this.removeRow(c);
|
|
if (d !== true) {
|
|
this.processRows(c);
|
|
this.applyEmptyText();
|
|
this.fireEvent("rowremoved", this, c, a)
|
|
}
|
|
}, onLoad:function () {
|
|
if (Ext.isGecko) {
|
|
if (!this.scrollToTopTask) {
|
|
this.scrollToTopTask = new Ext.util.DelayedTask(this.scrollToTop, this)
|
|
}
|
|
this.scrollToTopTask.delay(1)
|
|
} else {
|
|
this.scrollToTop()
|
|
}
|
|
}, onColWidthChange:function (a, b, c) {
|
|
this.updateColumnWidth(b, c)
|
|
}, onHeaderChange:function (a, b, c) {
|
|
this.updateHeaders()
|
|
}, onHiddenChange:function (a, b, c) {
|
|
this.updateColumnHidden(b, c)
|
|
}, onColumnMove:function (a, c, b) {
|
|
this.indexMap = null;
|
|
this.refresh(true);
|
|
this.restoreScroll(this.getScrollState());
|
|
this.afterMove(b);
|
|
this.grid.fireEvent("columnmove", c, b)
|
|
}, onColConfigChange:function () {
|
|
delete this.lastViewWidth;
|
|
this.indexMap = null;
|
|
this.refresh(true)
|
|
}, initUI:function (a) {
|
|
a.on("headerclick", this.onHeaderClick, this)
|
|
}, initEvents:Ext.emptyFn, onHeaderClick:function (b, a) {
|
|
if (this.headersDisabled || !this.cm.isSortable(a)) {
|
|
return
|
|
}
|
|
b.stopEditing(true);
|
|
b.store.sort(this.cm.getDataIndex(a))
|
|
}, onRowOver:function (b, a) {
|
|
var c = this.findRowIndex(a);
|
|
if (c !== false) {
|
|
this.addRowClass(c, this.rowOverCls)
|
|
}
|
|
}, onRowOut:function (b, a) {
|
|
var c = this.findRowIndex(a);
|
|
if (c !== false && !b.within(this.getRow(c), true)) {
|
|
this.removeRowClass(c, this.rowOverCls)
|
|
}
|
|
}, onRowSelect:function (a) {
|
|
this.addRowClass(a, this.selectedRowClass)
|
|
}, onRowDeselect:function (a) {
|
|
this.removeRowClass(a, this.selectedRowClass)
|
|
}, onCellSelect:function (c, b) {
|
|
var a = this.getCell(c, b);
|
|
if (a) {
|
|
this.fly(a).addClass("x-grid3-cell-selected")
|
|
}
|
|
}, onCellDeselect:function (c, b) {
|
|
var a = this.getCell(c, b);
|
|
if (a) {
|
|
this.fly(a).removeClass("x-grid3-cell-selected")
|
|
}
|
|
}, handleWheel:function (a) {
|
|
a.stopPropagation()
|
|
}, onColumnSplitterMoved:function (a, b) {
|
|
this.userResized = true;
|
|
this.grid.colModel.setColumnWidth(a, b, true);
|
|
if (this.forceFit) {
|
|
this.fitColumns(true, false, a);
|
|
this.updateAllColumnWidths()
|
|
} else {
|
|
this.updateColumnWidth(a, b);
|
|
this.syncHeaderScroll()
|
|
}
|
|
this.grid.fireEvent("columnresize", a, b)
|
|
}, beforeColMenuShow:function () {
|
|
var b = this.cm, d = b.getColumnCount(), a = this.colMenu, c;
|
|
a.removeAll();
|
|
for (c = 0; c < d; c++) {
|
|
if (b.config[c].hideable !== false) {
|
|
a.add(new Ext.menu.CheckItem({text:b.getColumnHeader(c), itemId:"col-" + b.getColumnId(c), checked:!b.isHidden(c), disabled:b.config[c].hideable === false, hideOnClick:false}))
|
|
}
|
|
}
|
|
}, handleHdMenuClick:function (c) {
|
|
var a = this.ds, b = this.cm.getDataIndex(this.hdCtxIndex);
|
|
switch (c.getItemId()) {
|
|
case"asc":
|
|
a.sort(b, "ASC");
|
|
break;
|
|
case"desc":
|
|
a.sort(b, "DESC");
|
|
break;
|
|
default:
|
|
this.handleHdMenuClickDefault(c)
|
|
}
|
|
return true
|
|
}, handleHdMenuClickDefault:function (c) {
|
|
var b = this.cm, d = c.getItemId(), a = b.getIndexById(d.substr(4));
|
|
if (a != -1) {
|
|
if (c.checked && b.getColumnsBy(this.isHideableColumn, this).length <= 1) {
|
|
this.onDenyColumnHide();
|
|
return
|
|
}
|
|
b.setHidden(a, c.checked)
|
|
}
|
|
}, handleHdDown:function (i, j) {
|
|
if (Ext.fly(j).hasClass("x-grid3-hd-btn")) {
|
|
i.stopEvent();
|
|
var k = this.cm, g = this.findHeaderCell(j), h = this.getCellIndex(g), d = k.isSortable(h), c = this.hmenu, b = c.items, a = this.headerMenuOpenCls;
|
|
this.hdCtxIndex = h;
|
|
Ext.fly(g).addClass(a);
|
|
b.get("asc").setDisabled(!d);
|
|
b.get("desc").setDisabled(!d);
|
|
c.on("hide", function () {
|
|
Ext.fly(g).removeClass(a)
|
|
}, this, {single:true});
|
|
c.show(j, "tl-bl?")
|
|
}
|
|
}, handleHdMove:function (k) {
|
|
var i = this.findHeaderCell(this.activeHdRef);
|
|
if (i && !this.headersDisabled) {
|
|
var l = this.splitHandleWidth || 5, j = this.activeHdRegion, p = i.style, m = this.cm, o = "", g = k.getPageX();
|
|
if (this.grid.enableColumnResize !== false) {
|
|
var a = this.activeHdIndex, b = this.getPreviousVisible(a), n = m.isResizable(a), c = b && m.isResizable(b), d = g - j.left <= l, h = j.right - g <= (!this.activeHdBtn ? l : 2);
|
|
if (d && c) {
|
|
o = Ext.isAir ? "move" : Ext.isWebKit ? "e-resize" : "col-resize"
|
|
} else {
|
|
if (h && n) {
|
|
o = Ext.isAir ? "move" : Ext.isWebKit ? "w-resize" : "col-resize"
|
|
}
|
|
}
|
|
}
|
|
p.cursor = o
|
|
}
|
|
}, getPreviousVisible:function (a) {
|
|
while (a > 0) {
|
|
if (!this.cm.isHidden(a - 1)) {
|
|
return a
|
|
}
|
|
a--
|
|
}
|
|
return undefined
|
|
}, handleHdOver:function (c, b) {
|
|
var d = this.findHeaderCell(b);
|
|
if (d && !this.headersDisabled) {
|
|
var a = this.fly(d);
|
|
this.activeHdRef = b;
|
|
this.activeHdIndex = this.getCellIndex(d);
|
|
this.activeHdRegion = a.getRegion();
|
|
if (!this.isMenuDisabled(this.activeHdIndex, a)) {
|
|
a.addClass("x-grid3-hd-over");
|
|
this.activeHdBtn = a.child(".x-grid3-hd-btn");
|
|
if (this.activeHdBtn) {
|
|
this.activeHdBtn.dom.style.height = (d.firstChild.offsetHeight - 1) + "px"
|
|
}
|
|
}
|
|
}
|
|
}, handleHdOut:function (b, a) {
|
|
var c = this.findHeaderCell(a);
|
|
if (c && (!Ext.isIE || !b.within(c, true))) {
|
|
this.activeHdRef = null;
|
|
this.fly(c).removeClass("x-grid3-hd-over");
|
|
c.style.cursor = ""
|
|
}
|
|
}, isMenuDisabled:function (a, b) {
|
|
return this.cm.isMenuDisabled(a)
|
|
}, hasRows:function () {
|
|
var a = this.mainBody.dom.firstChild;
|
|
return a && a.nodeType == 1 && a.className != "x-grid-empty"
|
|
}, isHideableColumn:function (a) {
|
|
return !a.hidden
|
|
}, bind:function (a, b) {
|
|
this.initData(a, b)
|
|
}});
|
|
Ext.grid.GridView.SplitDragZone = Ext.extend(Ext.dd.DDProxy, {constructor:function (a, b) {
|
|
this.grid = a;
|
|
this.view = a.getView();
|
|
this.marker = this.view.resizeMarker;
|
|
this.proxy = this.view.resizeProxy;
|
|
Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this, b, "gridSplitters" + this.grid.getGridEl().id, {dragElId:Ext.id(this.proxy.dom), resizeFrame:false});
|
|
this.scroll = false;
|
|
this.hw = this.view.splitHandleWidth || 5
|
|
}, b4StartDrag:function (a, e) {
|
|
this.dragHeadersDisabled = this.view.headersDisabled;
|
|
this.view.headersDisabled = true;
|
|
var d = this.view.mainWrap.getHeight();
|
|
this.marker.setHeight(d);
|
|
this.marker.show();
|
|
this.marker.alignTo(this.view.getHeaderCell(this.cellIndex), "tl-tl", [-2, 0]);
|
|
this.proxy.setHeight(d);
|
|
var b = this.cm.getColumnWidth(this.cellIndex), c = Math.max(b - this.grid.minColumnWidth, 0);
|
|
this.resetConstraints();
|
|
this.setXConstraint(c, 1000);
|
|
this.setYConstraint(0, 0);
|
|
this.minX = a - c;
|
|
this.maxX = a + 1000;
|
|
this.startPos = a;
|
|
Ext.dd.DDProxy.prototype.b4StartDrag.call(this, a, e)
|
|
}, allowHeaderDrag:function (a) {
|
|
return true
|
|
}, handleMouseDown:function (a) {
|
|
var h = this.view.findHeaderCell(a.getTarget());
|
|
if (h && this.allowHeaderDrag(a)) {
|
|
var k = this.view.fly(h).getXY(), c = k[0], i = a.getXY(), b = i[0], g = h.offsetWidth, d = false;
|
|
if ((b - c) <= this.hw) {
|
|
d = -1
|
|
} else {
|
|
if ((c + g) - b <= this.hw) {
|
|
d = 0
|
|
}
|
|
}
|
|
if (d !== false) {
|
|
this.cm = this.grid.colModel;
|
|
var j = this.view.getCellIndex(h);
|
|
if (d == -1) {
|
|
if (j + d < 0) {
|
|
return
|
|
}
|
|
while (this.cm.isHidden(j + d)) {
|
|
--d;
|
|
if (j + d < 0) {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
this.cellIndex = j + d;
|
|
this.split = h.dom;
|
|
if (this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)) {
|
|
Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this, arguments)
|
|
}
|
|
} else {
|
|
if (this.view.columnDrag) {
|
|
this.view.columnDrag.callHandleMouseDown(a)
|
|
}
|
|
}
|
|
}
|
|
}, endDrag:function (g) {
|
|
this.marker.hide();
|
|
var a = this.view, c = Math.max(this.minX, g.getPageX()), d = c - this.startPos, b = this.dragHeadersDisabled;
|
|
a.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex) + d);
|
|
setTimeout(function () {
|
|
a.headersDisabled = b
|
|
}, 50)
|
|
}, autoOffset:function () {
|
|
this.setDelta(0, 0)
|
|
}});
|
|
Ext.grid.PivotGridView = Ext.extend(Ext.grid.GridView, {colHeaderCellCls:"grid-hd-group-cell", title:"", getColumnHeaders:function () {
|
|
return this.grid.topAxis.buildHeaders()
|
|
}, getRowHeaders:function () {
|
|
return this.grid.leftAxis.buildHeaders()
|
|
}, renderRows:function (a, t) {
|
|
var b = this.grid, o = b.extractData(), p = o.length, g = this.templates, s = b.renderer, h = typeof s == "function", w = this.getCellCls, n = typeof w == "function", d = g.cell, x = g.row, k = [], q = {}, c = "width:" + this.getGridInnerWidth() + "px;", l, r, e, v, m;
|
|
a = a || 0;
|
|
t = Ext.isDefined(t) ? t : p - 1;
|
|
for (v = 0; v < p; v++) {
|
|
m = o[v];
|
|
r = m.length;
|
|
l = [];
|
|
for (var u = 0; u < r; u++) {
|
|
q.id = v + "-" + u;
|
|
q.css = u === 0 ? "x-grid3-cell-first " : (u == (r - 1) ? "x-grid3-cell-last " : "");
|
|
q.attr = q.cellAttr = "";
|
|
q.value = m[u];
|
|
if (Ext.isEmpty(q.value)) {
|
|
q.value = " "
|
|
}
|
|
if (h) {
|
|
q.value = s(q.value)
|
|
}
|
|
if (n) {
|
|
q.css += w(q.value) + " "
|
|
}
|
|
l[l.length] = d.apply(q)
|
|
}
|
|
k[k.length] = x.apply({tstyle:c, cols:r, cells:l.join(""), alt:""})
|
|
}
|
|
return k.join("")
|
|
}, masterTpl:new Ext.Template('<div class="x-grid3 x-pivotgrid" hidefocus="true">', '<div class="x-grid3-viewport">', '<div class="x-grid3-header">', '<div class="x-grid3-header-title"><span>{title}</span></div>', '<div class="x-grid3-header-inner">', '<div class="x-grid3-header-offset" style="{ostyle}"></div>', "</div>", '<div class="x-clear"></div>', "</div>", '<div class="x-grid3-scroller">', '<div class="x-grid3-row-headers"></div>', '<div class="x-grid3-body" style="{bstyle}">{body}</div>', '<a href="#" class="x-grid3-focus" tabIndex="-1"></a>', "</div>", "</div>", '<div class="x-grid3-resize-marker"> </div>', '<div class="x-grid3-resize-proxy"> </div>', "</div>"), initTemplates:function () {
|
|
Ext.grid.PivotGridView.superclass.initTemplates.apply(this, arguments);
|
|
var a = this.templates || {};
|
|
if (!a.gcell) {
|
|
a.gcell = new Ext.XTemplate('<td class="x-grid3-hd x-grid3-gcell x-grid3-td-{id} ux-grid-hd-group-row-{row} ' + this.colHeaderCellCls + '" style="{style}">', '<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">', this.grid.enableHdMenu ? '<a class="x-grid3-hd-btn" href="#"></a>' : "", "{value}", "</div>", "</td>")
|
|
}
|
|
this.templates = a;
|
|
this.hrowRe = new RegExp("ux-grid-hd-group-row-(\\d+)", "")
|
|
}, initElements:function () {
|
|
Ext.grid.PivotGridView.superclass.initElements.apply(this, arguments);
|
|
this.rowHeadersEl = new Ext.Element(this.scroller.child("div.x-grid3-row-headers"));
|
|
this.headerTitleEl = new Ext.Element(this.mainHd.child("div.x-grid3-header-title"))
|
|
}, getGridInnerWidth:function () {
|
|
var a = Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this, arguments);
|
|
return a - this.getTotalRowHeaderWidth()
|
|
}, getTotalRowHeaderWidth:function () {
|
|
var d = this.getRowHeaders(), c = d.length, b = 0, a;
|
|
for (a = 0; a < c; a++) {
|
|
b += d[a].width
|
|
}
|
|
return b
|
|
}, getTotalColumnHeaderHeight:function () {
|
|
return this.getColumnHeaders().length * 21
|
|
}, getCellIndex:function (b) {
|
|
if (b) {
|
|
var a = b.className.match(this.colRe), c;
|
|
if (a && (c = a[1])) {
|
|
return parseInt(c.split("-")[1], 10)
|
|
}
|
|
}
|
|
return false
|
|
}, renderUI:function () {
|
|
var b = this.templates, a = this.getGridInnerWidth();
|
|
return b.master.apply({body:b.body.apply({rows:" "}), ostyle:"width:" + a + "px", bstyle:"width:" + a + "px"})
|
|
}, onLayout:function (b, a) {
|
|
Ext.grid.PivotGridView.superclass.onLayout.apply(this, arguments);
|
|
var b = this.getGridInnerWidth();
|
|
this.resizeColumnHeaders(b);
|
|
this.resizeAllRows(b)
|
|
}, refresh:function (b) {
|
|
this.fireEvent("beforerefresh", this);
|
|
this.grid.stopEditing(true);
|
|
var a = this.renderBody();
|
|
this.mainBody.update(a).setWidth(this.getGridInnerWidth());
|
|
if (b === true) {
|
|
this.updateHeaders();
|
|
this.updateHeaderSortState()
|
|
}
|
|
this.processRows(0, true);
|
|
this.layout();
|
|
this.applyEmptyText();
|
|
this.fireEvent("refresh", this)
|
|
}, renderHeaders:Ext.emptyFn, fitColumns:Ext.emptyFn, resizeColumnHeaders:function (b) {
|
|
var a = this.grid.topAxis;
|
|
if (a.rendered) {
|
|
a.el.setWidth(b)
|
|
}
|
|
}, resizeRowHeaders:function () {
|
|
var a = this.getTotalRowHeaderWidth(), b = String.format("margin-left: {0}px;", a);
|
|
this.rowHeadersEl.setWidth(a);
|
|
this.mainBody.applyStyles(b);
|
|
Ext.fly(this.innerHd).applyStyles(b);
|
|
this.headerTitleEl.setWidth(a);
|
|
this.headerTitleEl.setHeight(this.getTotalColumnHeaderHeight())
|
|
}, resizeAllRows:function (b) {
|
|
var d = this.getRows(), c = d.length, a;
|
|
for (a = 0; a < c; a++) {
|
|
Ext.fly(d[a]).setWidth(b);
|
|
Ext.fly(d[a]).child("table").setWidth(b)
|
|
}
|
|
}, updateHeaders:function () {
|
|
this.renderGroupRowHeaders();
|
|
this.renderGroupColumnHeaders()
|
|
}, renderGroupRowHeaders:function () {
|
|
var a = this.grid.leftAxis;
|
|
this.resizeRowHeaders();
|
|
a.rendered = false;
|
|
a.render(this.rowHeadersEl);
|
|
this.setTitle(this.title)
|
|
}, setTitle:function (a) {
|
|
this.headerTitleEl.child("span").dom.innerHTML = a
|
|
}, renderGroupColumnHeaders:function () {
|
|
var a = this.grid.topAxis;
|
|
a.rendered = false;
|
|
a.render(this.innerHd.firstChild)
|
|
}, isMenuDisabled:function (a, b) {
|
|
return true
|
|
}});
|
|
Ext.grid.PivotAxis = Ext.extend(Ext.Component, {orientation:"horizontal", defaultHeaderWidth:80, paddingWidth:7, setDimensions:function (a) {
|
|
this.dimensions = a
|
|
}, onRender:function (b, a) {
|
|
var c = this.orientation == "horizontal" ? this.renderHorizontalRows() : this.renderVerticalRows();
|
|
this.el = Ext.DomHelper.overwrite(b.dom, {tag:"table", cn:c}, true)
|
|
}, renderHorizontalRows:function () {
|
|
var k = this.buildHeaders(), a = k.length, g = [], c, h, e, d, b;
|
|
for (d = 0; d < a; d++) {
|
|
c = [];
|
|
h = k[d].items;
|
|
e = h.length;
|
|
for (b = 0; b < e; b++) {
|
|
c.push({tag:"td", html:h[b].header, colspan:h[b].span})
|
|
}
|
|
g[d] = {tag:"tr", cn:c}
|
|
}
|
|
return g
|
|
}, renderVerticalRows:function () {
|
|
var b = this.buildHeaders(), k = b.length, a = [], m = [], h, c, l, g, e, d;
|
|
for (e = 0; e < k; e++) {
|
|
c = b[e];
|
|
g = c.width || 80;
|
|
h = c.items.length;
|
|
for (d = 0; d < h; d++) {
|
|
l = c.items[d];
|
|
a[l.start] = a[l.start] || [];
|
|
a[l.start].push({tag:"td", html:l.header, rowspan:l.span, width:Ext.isBorderBox ? g : g - this.paddingWidth})
|
|
}
|
|
}
|
|
h = a.length;
|
|
for (e = 0; e < h; e++) {
|
|
m[e] = {tag:"tr", cn:a[e]}
|
|
}
|
|
return m
|
|
}, getTuples:function () {
|
|
var b = new Ext.data.Store({});
|
|
b.data = this.store.data.clone();
|
|
b.fields = this.store.fields;
|
|
var l = [], a = this.dimensions, c = a.length, j;
|
|
for (j = 0; j < c; j++) {
|
|
l.push({field:a[j].dataIndex, direction:a[j].direction || "ASC"})
|
|
}
|
|
b.sort(l);
|
|
var e = b.data.items, n = [], k = [], o, h, d, g, m;
|
|
c = e.length;
|
|
for (j = 0; j < c; j++) {
|
|
d = this.getRecordInfo(e[j]);
|
|
g = d.data;
|
|
h = "";
|
|
for (m in g) {
|
|
h += g[m] + "---"
|
|
}
|
|
if (n.indexOf(h) == -1) {
|
|
n.push(h);
|
|
k.push(d)
|
|
}
|
|
}
|
|
b.destroy();
|
|
return k
|
|
}, getRecordInfo:function (a) {
|
|
var e = this.dimensions, d = e.length, h = {}, j, c, b;
|
|
for (b = 0; b < d; b++) {
|
|
j = e[b];
|
|
c = j.dataIndex;
|
|
h[c] = a.get(c)
|
|
}
|
|
var g = function (i) {
|
|
return function (k) {
|
|
for (var l in i) {
|
|
if (k.get(l) != i[l]) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
};
|
|
return{data:h, matcher:g(h)}
|
|
}, buildHeaders:function () {
|
|
var l = this.getTuples(), m = l.length, a = this.dimensions, e, r = a.length, c = [], o, s, n, q, p, b, k, h, g, d;
|
|
for (g = 0; g < r; g++) {
|
|
e = a[g];
|
|
s = [];
|
|
p = 0;
|
|
b = 0;
|
|
for (d = 0; d < m; d++) {
|
|
o = l[d];
|
|
k = d == (m - 1);
|
|
n = o.data[e.dataIndex];
|
|
h = q != undefined && q != n;
|
|
if (g > 0 && d > 0) {
|
|
h = h || o.data[a[g - 1].dataIndex] != l[d - 1].data[a[g - 1].dataIndex]
|
|
}
|
|
if (h) {
|
|
s.push({header:q, span:p, start:b});
|
|
b += p;
|
|
p = 0
|
|
}
|
|
if (k) {
|
|
s.push({header:n, span:p + 1, start:b});
|
|
b += p;
|
|
p = 0
|
|
}
|
|
q = n;
|
|
p++
|
|
}
|
|
c.push({items:s, width:e.width || this.defaultHeaderWidth});
|
|
q = undefined
|
|
}
|
|
return c
|
|
}});
|
|
Ext.grid.HeaderDragZone = Ext.extend(Ext.dd.DragZone, {maxDragWidth:120, constructor:function (a, c, b) {
|
|
this.grid = a;
|
|
this.view = a.getView();
|
|
this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
|
|
Ext.grid.HeaderDragZone.superclass.constructor.call(this, c);
|
|
if (b) {
|
|
this.setHandleElId(Ext.id(c));
|
|
this.setOuterHandleElId(Ext.id(b))
|
|
}
|
|
this.scroll = false
|
|
}, getDragData:function (c) {
|
|
var a = Ext.lib.Event.getTarget(c), b = this.view.findHeaderCell(a);
|
|
if (b) {
|
|
return{ddel:b.firstChild, header:b}
|
|
}
|
|
return false
|
|
}, onInitDrag:function (a) {
|
|
this.dragHeadersDisabled = this.view.headersDisabled;
|
|
this.view.headersDisabled = true;
|
|
var b = this.dragData.ddel.cloneNode(true);
|
|
b.id = Ext.id();
|
|
b.style.width = Math.min(this.dragData.header.offsetWidth, this.maxDragWidth) + "px";
|
|
this.proxy.update(b);
|
|
return true
|
|
}, afterValidDrop:function () {
|
|
this.completeDrop()
|
|
}, afterInvalidDrop:function () {
|
|
this.completeDrop()
|
|
}, completeDrop:function () {
|
|
var a = this.view, b = this.dragHeadersDisabled;
|
|
setTimeout(function () {
|
|
a.headersDisabled = b
|
|
}, 50)
|
|
}});
|
|
Ext.grid.HeaderDropZone = Ext.extend(Ext.dd.DropZone, {proxyOffsets:[-4, -9], fly:Ext.Element.fly, constructor:function (a, c, b) {
|
|
this.grid = a;
|
|
this.view = a.getView();
|
|
this.proxyTop = Ext.DomHelper.append(document.body, {cls:"col-move-top", html:" "}, true);
|
|
this.proxyBottom = Ext.DomHelper.append(document.body, {cls:"col-move-bottom", html:" "}, true);
|
|
this.proxyTop.hide = this.proxyBottom.hide = function () {
|
|
this.setLeftTop(-100, -100);
|
|
this.setStyle("visibility", "hidden")
|
|
};
|
|
this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
|
|
Ext.grid.HeaderDropZone.superclass.constructor.call(this, a.getGridEl().dom)
|
|
}, getTargetFromEvent:function (c) {
|
|
var a = Ext.lib.Event.getTarget(c), b = this.view.findCellIndex(a);
|
|
if (b !== false) {
|
|
return this.view.getHeaderCell(b)
|
|
}
|
|
}, nextVisible:function (c) {
|
|
var b = this.view, a = this.grid.colModel;
|
|
c = c.nextSibling;
|
|
while (c) {
|
|
if (!a.isHidden(b.getCellIndex(c))) {
|
|
return c
|
|
}
|
|
c = c.nextSibling
|
|
}
|
|
return null
|
|
}, prevVisible:function (c) {
|
|
var b = this.view, a = this.grid.colModel;
|
|
c = c.prevSibling;
|
|
while (c) {
|
|
if (!a.isHidden(b.getCellIndex(c))) {
|
|
return c
|
|
}
|
|
c = c.prevSibling
|
|
}
|
|
return null
|
|
}, positionIndicator:function (d, k, j) {
|
|
var a = Ext.lib.Event.getPageX(j), g = Ext.lib.Dom.getRegion(k.firstChild), c, i, b = g.top + this.proxyOffsets[1];
|
|
if ((g.right - a) <= (g.right - g.left) / 2) {
|
|
c = g.right + this.view.borderWidth;
|
|
i = "after"
|
|
} else {
|
|
c = g.left;
|
|
i = "before"
|
|
}
|
|
if (this.grid.colModel.isFixed(this.view.getCellIndex(k))) {
|
|
return false
|
|
}
|
|
c += this.proxyOffsets[0];
|
|
this.proxyTop.setLeftTop(c, b);
|
|
this.proxyTop.show();
|
|
if (!this.bottomOffset) {
|
|
this.bottomOffset = this.view.mainHd.getHeight()
|
|
}
|
|
this.proxyBottom.setLeftTop(c, b + this.proxyTop.dom.offsetHeight + this.bottomOffset);
|
|
this.proxyBottom.show();
|
|
return i
|
|
}, onNodeEnter:function (d, a, c, b) {
|
|
if (b.header != d) {
|
|
this.positionIndicator(b.header, d, c)
|
|
}
|
|
}, onNodeOver:function (g, b, d, c) {
|
|
var a = false;
|
|
if (c.header != g) {
|
|
a = this.positionIndicator(c.header, g, d)
|
|
}
|
|
if (!a) {
|
|
this.proxyTop.hide();
|
|
this.proxyBottom.hide()
|
|
}
|
|
return a ? this.dropAllowed : this.dropNotAllowed
|
|
}, onNodeOut:function (d, a, c, b) {
|
|
this.proxyTop.hide();
|
|
this.proxyBottom.hide()
|
|
}, onNodeDrop:function (b, m, g, c) {
|
|
var d = c.header;
|
|
if (d != b) {
|
|
var k = this.grid.colModel, j = Ext.lib.Event.getPageX(g), a = Ext.lib.Dom.getRegion(b.firstChild), o = (a.right - j) <= ((a.right - a.left) / 2) ? "after" : "before", i = this.view.getCellIndex(d), l = this.view.getCellIndex(b);
|
|
if (o == "after") {
|
|
l++
|
|
}
|
|
if (i < l) {
|
|
l--
|
|
}
|
|
k.moveColumn(i, l);
|
|
return true
|
|
}
|
|
return false
|
|
}});
|
|
Ext.grid.GridView.ColumnDragZone = Ext.extend(Ext.grid.HeaderDragZone, {constructor:function (a, b) {
|
|
Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this, a, b, null);
|
|
this.proxy.el.addClass("x-grid3-col-dd")
|
|
}, handleMouseDown:function (a) {
|
|
}, callHandleMouseDown:function (a) {
|
|
Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this, a)
|
|
}});
|
|
Ext.grid.SplitDragZone = Ext.extend(Ext.dd.DDProxy, {fly:Ext.Element.fly, constructor:function (a, c, b) {
|
|
this.grid = a;
|
|
this.view = a.getView();
|
|
this.proxy = this.view.resizeProxy;
|
|
Ext.grid.SplitDragZone.superclass.constructor.call(this, c, "gridSplitters" + this.grid.getGridEl().id, {dragElId:Ext.id(this.proxy.dom), resizeFrame:false});
|
|
this.setHandleElId(Ext.id(c));
|
|
this.setOuterHandleElId(Ext.id(b));
|
|
this.scroll = false
|
|
}, b4StartDrag:function (a, d) {
|
|
this.view.headersDisabled = true;
|
|
this.proxy.setHeight(this.view.mainWrap.getHeight());
|
|
var b = this.cm.getColumnWidth(this.cellIndex);
|
|
var c = Math.max(b - this.grid.minColumnWidth, 0);
|
|
this.resetConstraints();
|
|
this.setXConstraint(c, 1000);
|
|
this.setYConstraint(0, 0);
|
|
this.minX = a - c;
|
|
this.maxX = a + 1000;
|
|
this.startPos = a;
|
|
Ext.dd.DDProxy.prototype.b4StartDrag.call(this, a, d)
|
|
}, handleMouseDown:function (c) {
|
|
var b = Ext.EventObject.setEvent(c);
|
|
var a = this.fly(b.getTarget());
|
|
if (a.hasClass("x-grid-split")) {
|
|
this.cellIndex = this.view.getCellIndex(a.dom);
|
|
this.split = a.dom;
|
|
this.cm = this.grid.colModel;
|
|
if (this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)) {
|
|
Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments)
|
|
}
|
|
}
|
|
}, endDrag:function (c) {
|
|
this.view.headersDisabled = false;
|
|
var a = Math.max(this.minX, Ext.lib.Event.getPageX(c));
|
|
var b = a - this.startPos;
|
|
this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex) + b)
|
|
}, autoOffset:function () {
|
|
this.setDelta(0, 0)
|
|
}});
|
|
Ext.grid.GridDragZone = function (b, a) {
|
|
this.view = b.getView();
|
|
Ext.grid.GridDragZone.superclass.constructor.call(this, this.view.mainBody.dom, a);
|
|
this.scroll = false;
|
|
this.grid = b;
|
|
this.ddel = document.createElement("div");
|
|
this.ddel.className = "x-grid-dd-wrap"
|
|
};
|
|
Ext.extend(Ext.grid.GridDragZone, Ext.dd.DragZone, {ddGroup:"GridDD", getDragData:function (b) {
|
|
var a = Ext.lib.Event.getTarget(b);
|
|
var d = this.view.findRowIndex(a);
|
|
if (d !== false) {
|
|
var c = this.grid.selModel;
|
|
if (!c.isSelected(d) || b.hasModifier()) {
|
|
c.handleMouseDown(this.grid, d, b)
|
|
}
|
|
return{grid:this.grid, ddel:this.ddel, rowIndex:d, selections:c.getSelections()}
|
|
}
|
|
return false
|
|
}, onInitDrag:function (b) {
|
|
var a = this.dragData;
|
|
this.ddel.innerHTML = this.grid.getDragDropText();
|
|
this.proxy.update(this.ddel)
|
|
}, afterRepair:function () {
|
|
this.dragging = false
|
|
}, getRepairXY:function (b, a) {
|
|
return false
|
|
}, onEndDrag:function (a, b) {
|
|
}, onValidDrop:function (a, b, c) {
|
|
this.hideProxy()
|
|
}, beforeInvalidDrop:function (a, b) {
|
|
}});
|
|
Ext.grid.ColumnModel = Ext.extend(Ext.util.Observable, {defaultWidth:100, defaultSortable:false, constructor:function (a) {
|
|
if (a.columns) {
|
|
Ext.apply(this, a);
|
|
this.setConfig(a.columns, true)
|
|
} else {
|
|
this.setConfig(a, true)
|
|
}
|
|
this.addEvents("widthchange", "headerchange", "hiddenchange", "columnmoved", "configchange");
|
|
Ext.grid.ColumnModel.superclass.constructor.call(this)
|
|
}, getColumnId:function (a) {
|
|
return this.config[a].id
|
|
}, getColumnAt:function (a) {
|
|
return this.config[a]
|
|
}, setConfig:function (d, b) {
|
|
var e, h, a;
|
|
if (!b) {
|
|
delete this.totalWidth;
|
|
for (e = 0, a = this.config.length; e < a; e++) {
|
|
h = this.config[e];
|
|
if (h.setEditor) {
|
|
h.setEditor(null)
|
|
}
|
|
}
|
|
}
|
|
this.defaults = Ext.apply({width:this.defaultWidth, sortable:this.defaultSortable}, this.defaults);
|
|
this.config = d;
|
|
this.lookup = {};
|
|
for (e = 0, a = d.length; e < a; e++) {
|
|
h = Ext.applyIf(d[e], this.defaults);
|
|
if (Ext.isEmpty(h.id)) {
|
|
h.id = e
|
|
}
|
|
if (!h.isColumn) {
|
|
var g = Ext.grid.Column.types[h.xtype || "gridcolumn"];
|
|
h = new g(h);
|
|
d[e] = h
|
|
}
|
|
this.lookup[h.id] = h
|
|
}
|
|
if (!b) {
|
|
this.fireEvent("configchange", this)
|
|
}
|
|
}, getColumnById:function (a) {
|
|
return this.lookup[a]
|
|
}, getIndexById:function (c) {
|
|
for (var b = 0, a = this.config.length; b < a; b++) {
|
|
if (this.config[b].id == c) {
|
|
return b
|
|
}
|
|
}
|
|
return -1
|
|
}, moveColumn:function (e, b) {
|
|
var a = this.config, d = a[e];
|
|
a.splice(e, 1);
|
|
a.splice(b, 0, d);
|
|
this.dataMap = null;
|
|
this.fireEvent("columnmoved", this, e, b)
|
|
}, getColumnCount:function (b) {
|
|
var d = this.config.length, e = 0, a;
|
|
if (b === true) {
|
|
for (a = 0; a < d; a++) {
|
|
if (!this.isHidden(a)) {
|
|
e++
|
|
}
|
|
}
|
|
return e
|
|
}
|
|
return d
|
|
}, getColumnsBy:function (g, e) {
|
|
var b = this.config, h = b.length, a = [], d, j;
|
|
for (d = 0; d < h; d++) {
|
|
j = b[d];
|
|
if (g.call(e || this, j, d) === true) {
|
|
a[a.length] = j
|
|
}
|
|
}
|
|
return a
|
|
}, isSortable:function (a) {
|
|
return !!this.config[a].sortable
|
|
}, isMenuDisabled:function (a) {
|
|
return !!this.config[a].menuDisabled
|
|
}, getRenderer:function (a) {
|
|
return this.config[a].renderer || Ext.grid.ColumnModel.defaultRenderer
|
|
}, getRendererScope:function (a) {
|
|
return this.config[a].scope
|
|
}, setRenderer:function (a, b) {
|
|
this.config[a].renderer = b
|
|
}, getColumnWidth:function (a) {
|
|
var b = this.config[a].width;
|
|
if (typeof b != "number") {
|
|
b = this.defaultWidth
|
|
}
|
|
return b
|
|
}, setColumnWidth:function (b, c, a) {
|
|
this.config[b].width = c;
|
|
this.totalWidth = null;
|
|
if (!a) {
|
|
this.fireEvent("widthchange", this, b, c)
|
|
}
|
|
}, getTotalWidth:function (b) {
|
|
if (!this.totalWidth) {
|
|
this.totalWidth = 0;
|
|
for (var c = 0, a = this.config.length; c < a; c++) {
|
|
if (b || !this.isHidden(c)) {
|
|
this.totalWidth += this.getColumnWidth(c)
|
|
}
|
|
}
|
|
}
|
|
return this.totalWidth
|
|
}, getColumnHeader:function (a) {
|
|
return this.config[a].header
|
|
}, setColumnHeader:function (a, b) {
|
|
this.config[a].header = b;
|
|
this.fireEvent("headerchange", this, a, b)
|
|
}, getColumnTooltip:function (a) {
|
|
return this.config[a].tooltip
|
|
}, setColumnTooltip:function (a, b) {
|
|
this.config[a].tooltip = b
|
|
}, getDataIndex:function (a) {
|
|
return this.config[a].dataIndex
|
|
}, setDataIndex:function (a, b) {
|
|
this.config[a].dataIndex = b
|
|
}, findColumnIndex:function (d) {
|
|
var e = this.config;
|
|
for (var b = 0, a = e.length; b < a; b++) {
|
|
if (e[b].dataIndex == d) {
|
|
return b
|
|
}
|
|
}
|
|
return -1
|
|
}, isCellEditable:function (b, e) {
|
|
var d = this.config[b], a = d.editable;
|
|
return !!(a || (!Ext.isDefined(a) && d.editor))
|
|
}, getCellEditor:function (a, b) {
|
|
return this.config[a].getCellEditor(b)
|
|
}, setEditable:function (a, b) {
|
|
this.config[a].editable = b
|
|
}, isHidden:function (a) {
|
|
return !!this.config[a].hidden
|
|
}, isFixed:function (a) {
|
|
return !!this.config[a].fixed
|
|
}, isResizable:function (a) {
|
|
return a >= 0 && this.config[a].resizable !== false && this.config[a].fixed !== true
|
|
}, setHidden:function (a, b) {
|
|
var d = this.config[a];
|
|
if (d.hidden !== b) {
|
|
d.hidden = b;
|
|
this.totalWidth = null;
|
|
this.fireEvent("hiddenchange", this, a, b)
|
|
}
|
|
}, setEditor:function (a, b) {
|
|
this.config[a].setEditor(b)
|
|
}, destroy:function () {
|
|
var b = this.config.length, a = 0;
|
|
for (; a < b; a++) {
|
|
this.config[a].destroy()
|
|
}
|
|
delete this.config;
|
|
delete this.lookup;
|
|
this.purgeListeners()
|
|
}, setState:function (a, b) {
|
|
b = Ext.applyIf(b, this.defaults);
|
|
Ext.apply(this.config[a], b)
|
|
}});
|
|
Ext.grid.ColumnModel.defaultRenderer = function (a) {
|
|
if (typeof a == "string" && a.length < 1) {
|
|
return" "
|
|
}
|
|
return a
|
|
};
|
|
Ext.grid.AbstractSelectionModel = Ext.extend(Ext.util.Observable, {constructor:function () {
|
|
this.locked = false;
|
|
Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)
|
|
}, init:function (a) {
|
|
this.grid = a;
|
|
if (this.lockOnInit) {
|
|
delete this.lockOnInit;
|
|
this.locked = false;
|
|
this.lock()
|
|
}
|
|
this.initEvents()
|
|
}, lock:function () {
|
|
if (!this.locked) {
|
|
this.locked = true;
|
|
var a = this.grid;
|
|
if (a) {
|
|
a.getView().on({scope:this, beforerefresh:this.sortUnLock, refresh:this.sortLock})
|
|
} else {
|
|
this.lockOnInit = true
|
|
}
|
|
}
|
|
}, sortLock:function () {
|
|
this.locked = true
|
|
}, sortUnLock:function () {
|
|
this.locked = false
|
|
}, unlock:function () {
|
|
if (this.locked) {
|
|
this.locked = false;
|
|
var a = this.grid, b;
|
|
if (a) {
|
|
b = a.getView();
|
|
b.un("beforerefresh", this.sortUnLock, this);
|
|
b.un("refresh", this.sortLock, this)
|
|
} else {
|
|
delete this.lockOnInit
|
|
}
|
|
}
|
|
}, isLocked:function () {
|
|
return this.locked
|
|
}, destroy:function () {
|
|
this.unlock();
|
|
this.purgeListeners()
|
|
}});
|
|
Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, {singleSelect:false, constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
this.selections = new Ext.util.MixedCollection(false, function (b) {
|
|
return b.id
|
|
});
|
|
this.last = false;
|
|
this.lastActive = false;
|
|
this.addEvents("selectionchange", "beforerowselect", "rowselect", "rowdeselect");
|
|
Ext.grid.RowSelectionModel.superclass.constructor.call(this)
|
|
}, initEvents:function () {
|
|
if (!this.grid.enableDragDrop && !this.grid.enableDrag) {
|
|
this.grid.on("rowmousedown", this.handleMouseDown, this)
|
|
}
|
|
this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), {up:this.onKeyPress, down:this.onKeyPress, scope:this});
|
|
this.grid.getView().on({scope:this, refresh:this.onRefresh, rowupdated:this.onRowUpdated, rowremoved:this.onRemove})
|
|
}, onKeyPress:function (g, b) {
|
|
var a = b == "up", h = a ? "selectPrevious" : "selectNext", d = a ? -1 : 1, c;
|
|
if (!g.shiftKey || this.singleSelect) {
|
|
this[h](false)
|
|
} else {
|
|
if (this.last !== false && this.lastActive !== false) {
|
|
c = this.last;
|
|
this.selectRange(this.last, this.lastActive + d);
|
|
this.grid.getView().focusRow(this.lastActive);
|
|
if (c !== false) {
|
|
this.last = c
|
|
}
|
|
} else {
|
|
this.selectFirstRow()
|
|
}
|
|
}
|
|
}, onRefresh:function () {
|
|
var g = this.grid.store, d = this.getSelections(), c = 0, a = d.length, b, e;
|
|
this.silent = true;
|
|
this.clearSelections(true);
|
|
for (; c < a; c++) {
|
|
e = d[c];
|
|
if ((b = g.indexOfId(e.id)) != -1) {
|
|
this.selectRow(b, true)
|
|
}
|
|
}
|
|
if (d.length != this.selections.getCount()) {
|
|
this.fireEvent("selectionchange", this)
|
|
}
|
|
this.silent = false
|
|
}, onRemove:function (a, b, c) {
|
|
if (this.selections.remove(c) !== false) {
|
|
this.fireEvent("selectionchange", this)
|
|
}
|
|
}, onRowUpdated:function (a, b, c) {
|
|
if (this.isSelected(c)) {
|
|
a.onRowSelect(b)
|
|
}
|
|
}, selectRecords:function (b, e) {
|
|
if (!e) {
|
|
this.clearSelections()
|
|
}
|
|
var d = this.grid.store, c = 0, a = b.length;
|
|
for (; c < a; c++) {
|
|
this.selectRow(d.indexOf(b[c]), true)
|
|
}
|
|
}, getCount:function () {
|
|
return this.selections.length
|
|
}, selectFirstRow:function () {
|
|
this.selectRow(0)
|
|
}, selectLastRow:function (a) {
|
|
this.selectRow(this.grid.store.getCount() - 1, a)
|
|
}, selectNext:function (a) {
|
|
if (this.hasNext()) {
|
|
this.selectRow(this.last + 1, a);
|
|
this.grid.getView().focusRow(this.last);
|
|
return true
|
|
}
|
|
return false
|
|
}, selectPrevious:function (a) {
|
|
if (this.hasPrevious()) {
|
|
this.selectRow(this.last - 1, a);
|
|
this.grid.getView().focusRow(this.last);
|
|
return true
|
|
}
|
|
return false
|
|
}, hasNext:function () {
|
|
return this.last !== false && (this.last + 1) < this.grid.store.getCount()
|
|
}, hasPrevious:function () {
|
|
return !!this.last
|
|
}, getSelections:function () {
|
|
return[].concat(this.selections.items)
|
|
}, getSelected:function () {
|
|
return this.selections.itemAt(0)
|
|
}, each:function (e, d) {
|
|
var c = this.getSelections(), b = 0, a = c.length;
|
|
for (; b < a; b++) {
|
|
if (e.call(d || this, c[b], b) === false) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}, clearSelections:function (a) {
|
|
if (this.isLocked()) {
|
|
return
|
|
}
|
|
if (a !== true) {
|
|
var c = this.grid.store, b = this.selections;
|
|
b.each(function (d) {
|
|
this.deselectRow(c.indexOfId(d.id))
|
|
}, this);
|
|
b.clear()
|
|
} else {
|
|
this.selections.clear()
|
|
}
|
|
this.last = false
|
|
}, selectAll:function () {
|
|
if (this.isLocked()) {
|
|
return
|
|
}
|
|
this.selections.clear();
|
|
for (var b = 0, a = this.grid.store.getCount(); b < a; b++) {
|
|
this.selectRow(b, true)
|
|
}
|
|
}, hasSelection:function () {
|
|
return this.selections.length > 0
|
|
}, isSelected:function (a) {
|
|
var b = Ext.isNumber(a) ? this.grid.store.getAt(a) : a;
|
|
return(b && this.selections.key(b.id) ? true : false)
|
|
}, isIdSelected:function (a) {
|
|
return(this.selections.key(a) ? true : false)
|
|
}, handleMouseDown:function (d, i, h) {
|
|
if (h.button !== 0 || this.isLocked()) {
|
|
return
|
|
}
|
|
var a = this.grid.getView();
|
|
if (h.shiftKey && !this.singleSelect && this.last !== false) {
|
|
var c = this.last;
|
|
this.selectRange(c, i, h.ctrlKey);
|
|
this.last = c;
|
|
a.focusRow(i)
|
|
} else {
|
|
var b = this.isSelected(i);
|
|
if (h.ctrlKey && b) {
|
|
this.deselectRow(i)
|
|
} else {
|
|
if (!b || this.getCount() > 1) {
|
|
this.selectRow(i, h.ctrlKey || h.shiftKey);
|
|
a.focusRow(i)
|
|
}
|
|
}
|
|
}
|
|
}, selectRows:function (c, d) {
|
|
if (!d) {
|
|
this.clearSelections()
|
|
}
|
|
for (var b = 0, a = c.length; b < a; b++) {
|
|
this.selectRow(c[b], true)
|
|
}
|
|
}, selectRange:function (b, a, d) {
|
|
var c;
|
|
if (this.isLocked()) {
|
|
return
|
|
}
|
|
if (!d) {
|
|
this.clearSelections()
|
|
}
|
|
if (b <= a) {
|
|
for (c = b; c <= a; c++) {
|
|
this.selectRow(c, true)
|
|
}
|
|
} else {
|
|
for (c = b; c >= a; c--) {
|
|
this.selectRow(c, true)
|
|
}
|
|
}
|
|
}, deselectRange:function (c, b, a) {
|
|
if (this.isLocked()) {
|
|
return
|
|
}
|
|
for (var d = c; d <= b; d++) {
|
|
this.deselectRow(d, a)
|
|
}
|
|
}, selectRow:function (b, d, a) {
|
|
if (this.isLocked() || (b < 0 || b >= this.grid.store.getCount()) || (d && this.isSelected(b))) {
|
|
return
|
|
}
|
|
var c = this.grid.store.getAt(b);
|
|
if (c && this.fireEvent("beforerowselect", this, b, d, c) !== false) {
|
|
if (!d || this.singleSelect) {
|
|
this.clearSelections()
|
|
}
|
|
this.selections.add(c);
|
|
this.last = this.lastActive = b;
|
|
if (!a) {
|
|
this.grid.getView().onRowSelect(b)
|
|
}
|
|
if (!this.silent) {
|
|
this.fireEvent("rowselect", this, b, c);
|
|
this.fireEvent("selectionchange", this)
|
|
}
|
|
}
|
|
}, deselectRow:function (b, a) {
|
|
if (this.isLocked()) {
|
|
return
|
|
}
|
|
if (this.last == b) {
|
|
this.last = false
|
|
}
|
|
if (this.lastActive == b) {
|
|
this.lastActive = false
|
|
}
|
|
var c = this.grid.store.getAt(b);
|
|
if (c) {
|
|
this.selections.remove(c);
|
|
if (!a) {
|
|
this.grid.getView().onRowDeselect(b)
|
|
}
|
|
this.fireEvent("rowdeselect", this, b, c);
|
|
this.fireEvent("selectionchange", this)
|
|
}
|
|
}, acceptsNav:function (c, b, a) {
|
|
return !a.isHidden(b) && a.isCellEditable(b, c)
|
|
}, onEditorKey:function (n, l) {
|
|
var d = l.getKey(), h, i = this.grid, p = i.lastEdit, j = i.activeEditor, b = l.shiftKey, o, p, a, m;
|
|
if (d == l.TAB) {
|
|
l.stopEvent();
|
|
j.completeEdit();
|
|
if (b) {
|
|
h = i.walkCells(j.row, j.col - 1, -1, this.acceptsNav, this)
|
|
} else {
|
|
h = i.walkCells(j.row, j.col + 1, 1, this.acceptsNav, this)
|
|
}
|
|
} else {
|
|
if (d == l.ENTER) {
|
|
if (this.moveEditorOnEnter !== false) {
|
|
if (b) {
|
|
h = i.walkCells(p.row - 1, p.col, -1, this.acceptsNav, this)
|
|
} else {
|
|
h = i.walkCells(p.row + 1, p.col, 1, this.acceptsNav, this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (h) {
|
|
a = h[0];
|
|
m = h[1];
|
|
this.onEditorSelect(a, p.row);
|
|
if (i.isEditor && i.editing) {
|
|
o = i.activeEditor;
|
|
if (o && o.field.triggerBlur) {
|
|
o.field.triggerBlur()
|
|
}
|
|
}
|
|
i.startEditing(a, m)
|
|
}
|
|
}, onEditorSelect:function (b, a) {
|
|
if (a != b) {
|
|
this.selectRow(b)
|
|
}
|
|
}, destroy:function () {
|
|
Ext.destroy(this.rowNav);
|
|
this.rowNav = null;
|
|
Ext.grid.RowSelectionModel.superclass.destroy.call(this)
|
|
}});
|
|
Ext.grid.Column = Ext.extend(Ext.util.Observable, {isColumn:true, constructor:function (b) {
|
|
Ext.apply(this, b);
|
|
if (Ext.isString(this.renderer)) {
|
|
this.renderer = Ext.util.Format[this.renderer]
|
|
} else {
|
|
if (Ext.isObject(this.renderer)) {
|
|
this.scope = this.renderer.scope;
|
|
this.renderer = this.renderer.fn
|
|
}
|
|
}
|
|
if (!this.scope) {
|
|
this.scope = this
|
|
}
|
|
var a = this.editor;
|
|
delete this.editor;
|
|
this.setEditor(a);
|
|
this.addEvents("click", "contextmenu", "dblclick", "mousedown");
|
|
Ext.grid.Column.superclass.constructor.call(this)
|
|
}, processEvent:function (b, d, c, g, a) {
|
|
return this.fireEvent(b, this, c, g, d)
|
|
}, destroy:function () {
|
|
if (this.setEditor) {
|
|
this.setEditor(null)
|
|
}
|
|
this.purgeListeners()
|
|
}, renderer:function (a) {
|
|
return a
|
|
}, getEditor:function (a) {
|
|
return this.editable !== false ? this.editor : null
|
|
}, setEditor:function (b) {
|
|
var a = this.editor;
|
|
if (a) {
|
|
if (a.gridEditor) {
|
|
a.gridEditor.destroy();
|
|
delete a.gridEditor
|
|
} else {
|
|
a.destroy()
|
|
}
|
|
}
|
|
this.editor = null;
|
|
if (b) {
|
|
if (!b.isXType) {
|
|
b = Ext.create(b, "textfield")
|
|
}
|
|
this.editor = b
|
|
}
|
|
}, getCellEditor:function (b) {
|
|
var a = this.getEditor(b);
|
|
if (a) {
|
|
if (!a.startEdit) {
|
|
if (!a.gridEditor) {
|
|
a.gridEditor = new Ext.grid.GridEditor(a)
|
|
}
|
|
a = a.gridEditor
|
|
}
|
|
}
|
|
return a
|
|
}});
|
|
Ext.grid.BooleanColumn = Ext.extend(Ext.grid.Column, {trueText:"true", falseText:"false", undefinedText:" ", constructor:function (a) {
|
|
Ext.grid.BooleanColumn.superclass.constructor.call(this, a);
|
|
var c = this.trueText, d = this.falseText, b = this.undefinedText;
|
|
this.renderer = function (e) {
|
|
if (e === undefined) {
|
|
return b
|
|
}
|
|
if (!e || e === "false") {
|
|
return d
|
|
}
|
|
return c
|
|
}
|
|
}});
|
|
Ext.grid.NumberColumn = Ext.extend(Ext.grid.Column, {format:"0,000.00", constructor:function (a) {
|
|
Ext.grid.NumberColumn.superclass.constructor.call(this, a);
|
|
this.renderer = Ext.util.Format.numberRenderer(this.format)
|
|
}});
|
|
Ext.grid.DateColumn = Ext.extend(Ext.grid.Column, {format:"m/d/Y", constructor:function (a) {
|
|
Ext.grid.DateColumn.superclass.constructor.call(this, a);
|
|
this.renderer = Ext.util.Format.dateRenderer(this.format)
|
|
}});
|
|
Ext.grid.TemplateColumn = Ext.extend(Ext.grid.Column, {constructor:function (a) {
|
|
Ext.grid.TemplateColumn.superclass.constructor.call(this, a);
|
|
var b = (!Ext.isPrimitive(this.tpl) && this.tpl.compile) ? this.tpl : new Ext.XTemplate(this.tpl);
|
|
this.renderer = function (d, e, c) {
|
|
return b.apply(c.data)
|
|
};
|
|
this.tpl = b
|
|
}});
|
|
Ext.grid.ActionColumn = Ext.extend(Ext.grid.Column, {header:" ", actionIdRe:/x-action-col-(\d+)/, altText:"", constructor:function (b) {
|
|
var g = this, c = b.items || (g.items = [g]), a = c.length, d, e;
|
|
Ext.grid.ActionColumn.superclass.constructor.call(g, b);
|
|
g.renderer = function (h, i) {
|
|
h = Ext.isFunction(b.renderer) ? b.renderer.apply(this, arguments) || "" : "";
|
|
i.css += " x-action-col-cell";
|
|
for (d = 0; d < a; d++) {
|
|
e = c[d];
|
|
h += '<img alt="' + (e.altText || g.altText) + '" src="' + (e.icon || Ext.BLANK_IMAGE_URL) + '" class="x-action-col-icon x-action-col-' + String(d) + " " + (e.iconCls || "") + " " + (Ext.isFunction(e.getClass) ? e.getClass.apply(e.scope || this.scope || this, arguments) : "") + '"' + ((e.tooltip) ? ' ext:qtip="' + e.tooltip + '"' : "") + " />"
|
|
}
|
|
return h
|
|
}
|
|
}, destroy:function () {
|
|
delete this.items;
|
|
delete this.renderer;
|
|
return Ext.grid.ActionColumn.superclass.destroy.apply(this, arguments)
|
|
}, processEvent:function (c, i, d, j, b) {
|
|
var a = i.getTarget().className.match(this.actionIdRe), h, g;
|
|
if (a && (h = this.items[parseInt(a[1], 10)])) {
|
|
if (c == "click") {
|
|
(g = h.handler || this.handler) && g.call(h.scope || this.scope || this, d, j, b, h, i)
|
|
} else {
|
|
if ((c == "mousedown") && (h.stopSelection !== false)) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return Ext.grid.ActionColumn.superclass.processEvent.apply(this, arguments)
|
|
}});
|
|
Ext.grid.Column.types = {gridcolumn:Ext.grid.Column, booleancolumn:Ext.grid.BooleanColumn, numbercolumn:Ext.grid.NumberColumn, datecolumn:Ext.grid.DateColumn, templatecolumn:Ext.grid.TemplateColumn, actioncolumn:Ext.grid.ActionColumn};
|
|
Ext.grid.RowNumberer = Ext.extend(Object, {header:"", width:23, sortable:false, constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
if (this.rowspan) {
|
|
this.renderer = this.renderer.createDelegate(this)
|
|
}
|
|
}, fixed:true, hideable:false, menuDisabled:true, dataIndex:"", id:"numberer", rowspan:undefined, renderer:function (b, c, a, d) {
|
|
if (this.rowspan) {
|
|
c.cellAttr = 'rowspan="' + this.rowspan + '"'
|
|
}
|
|
return d + 1
|
|
}});
|
|
Ext.grid.CheckboxSelectionModel = Ext.extend(Ext.grid.RowSelectionModel, {header:'<div class="x-grid3-hd-checker"> </div>', width:20, sortable:false, menuDisabled:true, fixed:true, hideable:false, dataIndex:"", id:"checker", isColumn:true, constructor:function () {
|
|
Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this, arguments);
|
|
if (this.checkOnly) {
|
|
this.handleMouseDown = Ext.emptyFn
|
|
}
|
|
}, initEvents:function () {
|
|
Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);
|
|
this.grid.on("render", function () {
|
|
Ext.fly(this.grid.getView().innerHd).on("mousedown", this.onHdMouseDown, this)
|
|
}, this)
|
|
}, processEvent:function (b, d, c, g, a) {
|
|
if (b == "mousedown") {
|
|
this.onMouseDown(d, d.getTarget());
|
|
return false
|
|
} else {
|
|
return Ext.grid.Column.prototype.processEvent.apply(this, arguments)
|
|
}
|
|
}, onMouseDown:function (c, b) {
|
|
if (c.button === 0 && b.className == "x-grid3-row-checker") {
|
|
c.stopEvent();
|
|
var d = c.getTarget(".x-grid3-row");
|
|
if (d) {
|
|
var a = d.rowIndex;
|
|
if (this.isSelected(a)) {
|
|
this.deselectRow(a)
|
|
} else {
|
|
this.selectRow(a, true);
|
|
this.grid.getView().focusRow(a)
|
|
}
|
|
}
|
|
}
|
|
}, onHdMouseDown:function (c, a) {
|
|
if (a.className == "x-grid3-hd-checker") {
|
|
c.stopEvent();
|
|
var b = Ext.fly(a.parentNode);
|
|
var d = b.hasClass("x-grid3-hd-checker-on");
|
|
if (d) {
|
|
b.removeClass("x-grid3-hd-checker-on");
|
|
this.clearSelections()
|
|
} else {
|
|
b.addClass("x-grid3-hd-checker-on");
|
|
this.selectAll()
|
|
}
|
|
}
|
|
}, renderer:function (b, c, a) {
|
|
return'<div class="x-grid3-row-checker"> </div>'
|
|
}, onEditorSelect:function (b, a) {
|
|
if (a != b && !this.checkOnly) {
|
|
this.selectRow(b)
|
|
}
|
|
}});
|
|
Ext.grid.CellSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, {constructor:function (a) {
|
|
Ext.apply(this, a);
|
|
this.selection = null;
|
|
this.addEvents("beforecellselect", "cellselect", "selectionchange");
|
|
Ext.grid.CellSelectionModel.superclass.constructor.call(this)
|
|
}, initEvents:function () {
|
|
this.grid.on("cellmousedown", this.handleMouseDown, this);
|
|
this.grid.on(Ext.EventManager.getKeyEvent(), this.handleKeyDown, this);
|
|
this.grid.getView().on({scope:this, refresh:this.onViewChange, rowupdated:this.onRowUpdated, beforerowremoved:this.clearSelections, beforerowsinserted:this.clearSelections});
|
|
if (this.grid.isEditor) {
|
|
this.grid.on("beforeedit", this.beforeEdit, this)
|
|
}
|
|
}, beforeEdit:function (a) {
|
|
this.select(a.row, a.column, false, true, a.record)
|
|
}, onRowUpdated:function (a, b, c) {
|
|
if (this.selection && this.selection.record == c) {
|
|
a.onCellSelect(b, this.selection.cell[1])
|
|
}
|
|
}, onViewChange:function () {
|
|
this.clearSelections(true)
|
|
}, getSelectedCell:function () {
|
|
return this.selection ? this.selection.cell : null
|
|
}, clearSelections:function (b) {
|
|
var a = this.selection;
|
|
if (a) {
|
|
if (b !== true) {
|
|
this.grid.view.onCellDeselect(a.cell[0], a.cell[1])
|
|
}
|
|
this.selection = null;
|
|
this.fireEvent("selectionchange", this, null)
|
|
}
|
|
}, hasSelection:function () {
|
|
return this.selection ? true : false
|
|
}, handleMouseDown:function (b, d, a, c) {
|
|
if (c.button !== 0 || this.isLocked()) {
|
|
return
|
|
}
|
|
this.select(d, a)
|
|
}, select:function (g, c, b, e, d) {
|
|
if (this.fireEvent("beforecellselect", this, g, c) !== false) {
|
|
this.clearSelections();
|
|
d = d || this.grid.store.getAt(g);
|
|
this.selection = {record:d, cell:[g, c]};
|
|
if (!b) {
|
|
var a = this.grid.getView();
|
|
a.onCellSelect(g, c);
|
|
if (e !== true) {
|
|
a.focusCell(g, c)
|
|
}
|
|
}
|
|
this.fireEvent("cellselect", this, g, c);
|
|
this.fireEvent("selectionchange", this, this.selection)
|
|
}
|
|
}, isSelectable:function (c, b, a) {
|
|
return !a.isHidden(b)
|
|
}, onEditorKey:function (b, a) {
|
|
if (a.getKey() == a.TAB) {
|
|
this.handleKeyDown(a)
|
|
}
|
|
}, handleKeyDown:function (j) {
|
|
if (!j.isNavKeyPress()) {
|
|
return
|
|
}
|
|
var d = j.getKey(), i = this.grid, p = this.selection, b = this, m = function (g, c, e) {
|
|
return i.walkCells(g, c, e, i.isEditor && i.editing ? b.acceptsNav : b.isSelectable, b)
|
|
}, o, h, a, l, n;
|
|
switch (d) {
|
|
case j.ESC:
|
|
case j.PAGE_UP:
|
|
case j.PAGE_DOWN:
|
|
break;
|
|
default:
|
|
j.stopEvent();
|
|
break
|
|
}
|
|
if (!p) {
|
|
o = m(0, 0, 1);
|
|
if (o) {
|
|
this.select(o[0], o[1])
|
|
}
|
|
return
|
|
}
|
|
o = p.cell;
|
|
a = o[0];
|
|
l = o[1];
|
|
switch (d) {
|
|
case j.TAB:
|
|
if (j.shiftKey) {
|
|
h = m(a, l - 1, -1)
|
|
} else {
|
|
h = m(a, l + 1, 1)
|
|
}
|
|
break;
|
|
case j.DOWN:
|
|
h = m(a + 1, l, 1);
|
|
break;
|
|
case j.UP:
|
|
h = m(a - 1, l, -1);
|
|
break;
|
|
case j.RIGHT:
|
|
h = m(a, l + 1, 1);
|
|
break;
|
|
case j.LEFT:
|
|
h = m(a, l - 1, -1);
|
|
break;
|
|
case j.ENTER:
|
|
if (i.isEditor && !i.editing) {
|
|
i.startEditing(a, l);
|
|
return
|
|
}
|
|
break
|
|
}
|
|
if (h) {
|
|
a = h[0];
|
|
l = h[1];
|
|
this.select(a, l);
|
|
if (i.isEditor && i.editing) {
|
|
n = i.activeEditor;
|
|
if (n && n.field.triggerBlur) {
|
|
n.field.triggerBlur()
|
|
}
|
|
i.startEditing(a, l)
|
|
}
|
|
}
|
|
}, acceptsNav:function (c, b, a) {
|
|
return !a.isHidden(b) && a.isCellEditable(b, c)
|
|
}});
|
|
Ext.grid.EditorGridPanel = Ext.extend(Ext.grid.GridPanel, {clicksToEdit:2, forceValidation:false, isEditor:true, detectEdit:false, autoEncode:false, trackMouseOver:false, initComponent:function () {
|
|
Ext.grid.EditorGridPanel.superclass.initComponent.call(this);
|
|
if (!this.selModel) {
|
|
this.selModel = new Ext.grid.CellSelectionModel()
|
|
}
|
|
this.activeEditor = null;
|
|
this.addEvents("beforeedit", "afteredit", "validateedit")
|
|
}, initEvents:function () {
|
|
Ext.grid.EditorGridPanel.superclass.initEvents.call(this);
|
|
this.getGridEl().on("mousewheel", this.stopEditing.createDelegate(this, [true]), this);
|
|
this.on("columnresize", this.stopEditing, this, [true]);
|
|
if (this.clicksToEdit == 1) {
|
|
this.on("cellclick", this.onCellDblClick, this)
|
|
} else {
|
|
var a = this.getView();
|
|
if (this.clicksToEdit == "auto" && a.mainBody) {
|
|
a.mainBody.on("mousedown", this.onAutoEditClick, this)
|
|
}
|
|
this.on("celldblclick", this.onCellDblClick, this)
|
|
}
|
|
}, onResize:function () {
|
|
Ext.grid.EditorGridPanel.superclass.onResize.apply(this, arguments);
|
|
var a = this.activeEditor;
|
|
if (this.editing && a) {
|
|
a.realign(true)
|
|
}
|
|
}, onCellDblClick:function (b, c, a) {
|
|
this.startEditing(c, a)
|
|
}, onAutoEditClick:function (c, b) {
|
|
if (c.button !== 0) {
|
|
return
|
|
}
|
|
var g = this.view.findRowIndex(b), a = this.view.findCellIndex(b);
|
|
if (g !== false && a !== false) {
|
|
this.stopEditing();
|
|
if (this.selModel.getSelectedCell) {
|
|
var d = this.selModel.getSelectedCell();
|
|
if (d && d[0] === g && d[1] === a) {
|
|
this.startEditing(g, a)
|
|
}
|
|
} else {
|
|
if (this.selModel.isSelected(g)) {
|
|
this.startEditing(g, a)
|
|
}
|
|
}
|
|
}
|
|
}, onEditComplete:function (b, d, a) {
|
|
this.editing = false;
|
|
this.lastActiveEditor = this.activeEditor;
|
|
this.activeEditor = null;
|
|
var c = b.record, h = this.colModel.getDataIndex(b.col);
|
|
d = this.postEditValue(d, a, c, h);
|
|
if (this.forceValidation === true || String(d) !== String(a)) {
|
|
var g = {grid:this, record:c, field:h, originalValue:a, value:d, row:b.row, column:b.col, cancel:false};
|
|
if (this.fireEvent("validateedit", g) !== false && !g.cancel && String(d) !== String(a)) {
|
|
c.set(h, g.value);
|
|
delete g.cancel;
|
|
this.fireEvent("afteredit", g)
|
|
}
|
|
}
|
|
this.view.focusCell(b.row, b.col)
|
|
}, startEditing:function (i, c) {
|
|
this.stopEditing();
|
|
if (this.colModel.isCellEditable(c, i)) {
|
|
this.view.ensureVisible(i, c, true);
|
|
var d = this.store.getAt(i), h = this.colModel.getDataIndex(c), g = {grid:this, record:d, field:h, value:d.data[h], row:i, column:c, cancel:false};
|
|
if (this.fireEvent("beforeedit", g) !== false && !g.cancel) {
|
|
this.editing = true;
|
|
var b = this.colModel.getCellEditor(c, i);
|
|
if (!b) {
|
|
return
|
|
}
|
|
if (!b.rendered) {
|
|
b.parentEl = this.view.getEditorParent(b);
|
|
b.on({scope:this, render:{fn:function (e) {
|
|
e.field.focus(false, true)
|
|
}, single:true, scope:this}, specialkey:function (k, j) {
|
|
this.getSelectionModel().onEditorKey(k, j)
|
|
}, complete:this.onEditComplete, canceledit:this.stopEditing.createDelegate(this, [true])})
|
|
}
|
|
Ext.apply(b, {row:i, col:c, record:d});
|
|
this.lastEdit = {row:i, col:c};
|
|
this.activeEditor = b;
|
|
b.selectSameEditor = (this.activeEditor == this.lastActiveEditor);
|
|
var a = this.preEditValue(d, h);
|
|
b.startEdit(this.view.getCell(i, c).firstChild, Ext.isDefined(a) ? a : "");
|
|
(function () {
|
|
delete b.selectSameEditor
|
|
}).defer(50)
|
|
}
|
|
}
|
|
}, preEditValue:function (a, c) {
|
|
var b = a.data[c];
|
|
return this.autoEncode && Ext.isString(b) ? Ext.util.Format.htmlDecode(b) : b
|
|
}, postEditValue:function (c, a, b, d) {
|
|
return this.autoEncode && Ext.isString(c) ? Ext.util.Format.htmlEncode(c) : c
|
|
}, stopEditing:function (b) {
|
|
if (this.editing) {
|
|
var a = this.lastActiveEditor = this.activeEditor;
|
|
if (a) {
|
|
a[b === true ? "cancelEdit" : "completeEdit"]();
|
|
this.view.focusCell(a.row, a.col)
|
|
}
|
|
this.activeEditor = null
|
|
}
|
|
this.editing = false
|
|
}});
|
|
Ext.reg("editorgrid", Ext.grid.EditorGridPanel);
|
|
Ext.grid.GridEditor = function (b, a) {
|
|
Ext.grid.GridEditor.superclass.constructor.call(this, b, a);
|
|
b.monitorTab = false
|
|
};
|
|
Ext.extend(Ext.grid.GridEditor, Ext.Editor, {alignment:"tl-tl", autoSize:"width", hideEl:false, cls:"x-small-editor x-grid-editor", shim:false, shadow:false});
|
|
Ext.grid.PropertyRecord = Ext.data.Record.create([
|
|
{name:"name", type:"string"},
|
|
"value"
|
|
]);
|
|
Ext.grid.PropertyStore = Ext.extend(Ext.util.Observable, {constructor:function (a, b) {
|
|
this.grid = a;
|
|
this.store = new Ext.data.Store({recordType:Ext.grid.PropertyRecord});
|
|
this.store.on("update", this.onUpdate, this);
|
|
if (b) {
|
|
this.setSource(b)
|
|
}
|
|
Ext.grid.PropertyStore.superclass.constructor.call(this)
|
|
}, setSource:function (c) {
|
|
this.source = c;
|
|
this.store.removeAll();
|
|
var b = [];
|
|
for (var a in c) {
|
|
if (this.isEditableValue(c[a])) {
|
|
b.push(new Ext.grid.PropertyRecord({name:a, value:c[a]}, a))
|
|
}
|
|
}
|
|
this.store.loadRecords({records:b}, {}, true)
|
|
}, onUpdate:function (e, a, d) {
|
|
if (d == Ext.data.Record.EDIT) {
|
|
var b = a.data.value;
|
|
var c = a.modified.value;
|
|
if (this.grid.fireEvent("beforepropertychange", this.source, a.id, b, c) !== false) {
|
|
this.source[a.id] = b;
|
|
a.commit();
|
|
this.grid.fireEvent("propertychange", this.source, a.id, b, c)
|
|
} else {
|
|
a.reject()
|
|
}
|
|
}
|
|
}, getProperty:function (a) {
|
|
return this.store.getAt(a)
|
|
}, isEditableValue:function (a) {
|
|
return Ext.isPrimitive(a) || Ext.isDate(a)
|
|
}, setValue:function (d, c, a) {
|
|
var b = this.getRec(d);
|
|
if (b) {
|
|
b.set("value", c);
|
|
this.source[d] = c
|
|
} else {
|
|
if (a) {
|
|
this.source[d] = c;
|
|
b = new Ext.grid.PropertyRecord({name:d, value:c}, d);
|
|
this.store.add(b)
|
|
}
|
|
}
|
|
}, remove:function (b) {
|
|
var a = this.getRec(b);
|
|
if (a) {
|
|
this.store.remove(a);
|
|
delete this.source[b]
|
|
}
|
|
}, getRec:function (a) {
|
|
return this.store.getById(a)
|
|
}, getSource:function () {
|
|
return this.source
|
|
}});
|
|
Ext.grid.PropertyColumnModel = Ext.extend(Ext.grid.ColumnModel, {nameText:"Name", valueText:"Value", dateFormat:"m/j/Y", trueText:"true", falseText:"false", constructor:function (c, b) {
|
|
var d = Ext.grid, e = Ext.form;
|
|
this.grid = c;
|
|
d.PropertyColumnModel.superclass.constructor.call(this, [
|
|
{header:this.nameText, width:50, sortable:true, dataIndex:"name", id:"name", menuDisabled:true},
|
|
{header:this.valueText, width:50, resizable:false, dataIndex:"value", id:"value", menuDisabled:true}
|
|
]);
|
|
this.store = b;
|
|
var a = new e.Field({autoCreate:{tag:"select", children:[
|
|
{tag:"option", value:"true", html:this.trueText},
|
|
{tag:"option", value:"false", html:this.falseText}
|
|
]}, getValue:function () {
|
|
return this.el.dom.value == "true"
|
|
}});
|
|
this.editors = {date:new d.GridEditor(new e.DateField({selectOnFocus:true})), string:new d.GridEditor(new e.TextField({selectOnFocus:true})), number:new d.GridEditor(new e.NumberField({selectOnFocus:true, style:"text-align:left;"})), "boolean":new d.GridEditor(a, {autoSize:"both"})};
|
|
this.renderCellDelegate = this.renderCell.createDelegate(this);
|
|
this.renderPropDelegate = this.renderProp.createDelegate(this)
|
|
}, renderDate:function (a) {
|
|
return a.dateFormat(this.dateFormat)
|
|
}, renderBool:function (a) {
|
|
return this[a ? "trueText" : "falseText"]
|
|
}, isCellEditable:function (a, b) {
|
|
return a == 1
|
|
}, getRenderer:function (a) {
|
|
return a == 1 ? this.renderCellDelegate : this.renderPropDelegate
|
|
}, renderProp:function (a) {
|
|
return this.getPropertyName(a)
|
|
}, renderCell:function (d, b, c) {
|
|
var a = this.grid.customRenderers[c.get("name")];
|
|
if (a) {
|
|
return a.apply(this, arguments)
|
|
}
|
|
var e = d;
|
|
if (Ext.isDate(d)) {
|
|
e = this.renderDate(d)
|
|
} else {
|
|
if (typeof d == "boolean") {
|
|
e = this.renderBool(d)
|
|
}
|
|
}
|
|
return Ext.util.Format.htmlEncode(e)
|
|
}, getPropertyName:function (b) {
|
|
var a = this.grid.propertyNames;
|
|
return a && a[b] ? a[b] : b
|
|
}, getCellEditor:function (a, e) {
|
|
var b = this.store.getProperty(e), d = b.data.name, c = b.data.value;
|
|
if (this.grid.customEditors[d]) {
|
|
return this.grid.customEditors[d]
|
|
}
|
|
if (Ext.isDate(c)) {
|
|
return this.editors.date
|
|
} else {
|
|
if (typeof c == "number") {
|
|
return this.editors.number
|
|
} else {
|
|
if (typeof c == "boolean") {
|
|
return this.editors["boolean"]
|
|
} else {
|
|
return this.editors.string
|
|
}
|
|
}
|
|
}
|
|
}, destroy:function () {
|
|
Ext.grid.PropertyColumnModel.superclass.destroy.call(this);
|
|
this.destroyEditors(this.editors);
|
|
this.destroyEditors(this.grid.customEditors)
|
|
}, destroyEditors:function (b) {
|
|
for (var a in b) {
|
|
Ext.destroy(b[a])
|
|
}
|
|
}});
|
|
Ext.grid.PropertyGrid = Ext.extend(Ext.grid.EditorGridPanel, {enableColumnMove:false, stripeRows:false, trackMouseOver:false, clicksToEdit:1, enableHdMenu:false, viewConfig:{forceFit:true}, initComponent:function () {
|
|
this.customRenderers = this.customRenderers || {};
|
|
this.customEditors = this.customEditors || {};
|
|
this.lastEditRow = null;
|
|
var b = new Ext.grid.PropertyStore(this);
|
|
this.propStore = b;
|
|
var a = new Ext.grid.PropertyColumnModel(this, b);
|
|
b.store.sort("name", "ASC");
|
|
this.addEvents("beforepropertychange", "propertychange");
|
|
this.cm = a;
|
|
this.ds = b.store;
|
|
Ext.grid.PropertyGrid.superclass.initComponent.call(this);
|
|
this.mon(this.selModel, "beforecellselect", function (e, d, c) {
|
|
if (c === 0) {
|
|
this.startEditing.defer(200, this, [d, 1]);
|
|
return false
|
|
}
|
|
}, this)
|
|
}, onRender:function () {
|
|
Ext.grid.PropertyGrid.superclass.onRender.apply(this, arguments);
|
|
this.getGridEl().addClass("x-props-grid")
|
|
}, afterRender:function () {
|
|
Ext.grid.PropertyGrid.superclass.afterRender.apply(this, arguments);
|
|
if (this.source) {
|
|
this.setSource(this.source)
|
|
}
|
|
}, setSource:function (a) {
|
|
this.propStore.setSource(a)
|
|
}, getSource:function () {
|
|
return this.propStore.getSource()
|
|
}, setProperty:function (c, b, a) {
|
|
this.propStore.setValue(c, b, a)
|
|
}, removeProperty:function (a) {
|
|
this.propStore.remove(a)
|
|
}});
|
|
Ext.reg("propertygrid", Ext.grid.PropertyGrid);
|
|
Ext.grid.GroupingView = Ext.extend(Ext.grid.GridView, {groupByText:"Group By This Field", showGroupsText:"Show in Groups", hideGroupedColumn:false, showGroupName:true, startCollapsed:false, enableGrouping:true, enableGroupingMenu:true, enableNoGroups:true, emptyGroupText:"(None)", ignoreAdd:false, groupTextTpl:"{text}", groupMode:"value", cancelEditOnToggle:true, initTemplates:function () {
|
|
Ext.grid.GroupingView.superclass.initTemplates.call(this);
|
|
this.state = {};
|
|
var a = this.grid.getSelectionModel();
|
|
a.on(a.selectRow ? "beforerowselect" : "beforecellselect", this.onBeforeRowSelect, this);
|
|
if (!this.startGroup) {
|
|
this.startGroup = new Ext.XTemplate('<div id="{groupId}" class="x-grid-group {cls}">', '<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">', this.groupTextTpl, "</div></div>", '<div id="{groupId}-bd" class="x-grid-group-body">')
|
|
}
|
|
this.startGroup.compile();
|
|
if (!this.endGroup) {
|
|
this.endGroup = "</div></div>"
|
|
}
|
|
}, findGroup:function (a) {
|
|
return Ext.fly(a).up(".x-grid-group", this.mainBody.dom)
|
|
}, getGroups:function () {
|
|
return this.hasRows() ? this.mainBody.dom.childNodes : []
|
|
}, onAdd:function (d, a, b) {
|
|
if (this.canGroup() && !this.ignoreAdd) {
|
|
var c = this.getScrollState();
|
|
this.fireEvent("beforerowsinserted", d, b, b + (a.length - 1));
|
|
this.refresh();
|
|
this.restoreScroll(c);
|
|
this.fireEvent("rowsinserted", d, b, b + (a.length - 1))
|
|
} else {
|
|
if (!this.canGroup()) {
|
|
Ext.grid.GroupingView.superclass.onAdd.apply(this, arguments)
|
|
}
|
|
}
|
|
}, onRemove:function (e, a, b, d) {
|
|
Ext.grid.GroupingView.superclass.onRemove.apply(this, arguments);
|
|
var c = document.getElementById(a._groupId);
|
|
if (c && c.childNodes[1].childNodes.length < 1) {
|
|
Ext.removeNode(c)
|
|
}
|
|
this.applyEmptyText()
|
|
}, refreshRow:function (a) {
|
|
if (this.ds.getCount() == 1) {
|
|
this.refresh()
|
|
} else {
|
|
this.isUpdating = true;
|
|
Ext.grid.GroupingView.superclass.refreshRow.apply(this, arguments);
|
|
this.isUpdating = false
|
|
}
|
|
}, beforeMenuShow:function () {
|
|
var c, a = this.hmenu.items, b = this.cm.config[this.hdCtxIndex].groupable === false;
|
|
if ((c = a.get("groupBy"))) {
|
|
c.setDisabled(b)
|
|
}
|
|
if ((c = a.get("showGroups"))) {
|
|
c.setDisabled(b);
|
|
c.setChecked(this.canGroup(), true)
|
|
}
|
|
}, renderUI:function () {
|
|
var a = Ext.grid.GroupingView.superclass.renderUI.call(this);
|
|
if (this.enableGroupingMenu && this.hmenu) {
|
|
this.hmenu.add("-", {itemId:"groupBy", text:this.groupByText, handler:this.onGroupByClick, scope:this, iconCls:"x-group-by-icon"});
|
|
if (this.enableNoGroups) {
|
|
this.hmenu.add({itemId:"showGroups", text:this.showGroupsText, checked:true, checkHandler:this.onShowGroupsClick, scope:this})
|
|
}
|
|
this.hmenu.on("beforeshow", this.beforeMenuShow, this)
|
|
}
|
|
return a
|
|
}, processEvent:function (b, i) {
|
|
Ext.grid.GroupingView.superclass.processEvent.call(this, b, i);
|
|
var h = i.getTarget(".x-grid-group-hd", this.mainBody);
|
|
if (h) {
|
|
var g = this.getGroupField(), d = this.getPrefix(g), a = h.id.substring(d.length), c = new RegExp("gp-" + Ext.escapeRe(g) + "--hd");
|
|
a = a.substr(0, a.length - 3);
|
|
if (a || c.test(h.id)) {
|
|
this.grid.fireEvent("group" + b, this.grid, g, a, i)
|
|
}
|
|
if (b == "mousedown" && i.button == 0) {
|
|
this.toggleGroup(h.parentNode)
|
|
}
|
|
}
|
|
}, onGroupByClick:function () {
|
|
var a = this.grid;
|
|
this.enableGrouping = true;
|
|
a.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));
|
|
a.fireEvent("groupchange", a, a.store.getGroupState());
|
|
this.beforeMenuShow();
|
|
this.refresh()
|
|
}, onShowGroupsClick:function (a, b) {
|
|
this.enableGrouping = b;
|
|
if (b) {
|
|
this.onGroupByClick()
|
|
} else {
|
|
this.grid.store.clearGrouping();
|
|
this.grid.fireEvent("groupchange", this, null)
|
|
}
|
|
}, toggleRowIndex:function (c, a) {
|
|
if (!this.canGroup()) {
|
|
return
|
|
}
|
|
var b = this.getRow(c);
|
|
if (b) {
|
|
this.toggleGroup(this.findGroup(b), a)
|
|
}
|
|
}, toggleGroup:function (c, b) {
|
|
var a = Ext.get(c), d = Ext.util.Format.htmlEncode(a.id);
|
|
b = Ext.isDefined(b) ? b : a.hasClass("x-grid-group-collapsed");
|
|
if (this.state[d] !== b) {
|
|
if (this.cancelEditOnToggle !== false) {
|
|
this.grid.stopEditing(true)
|
|
}
|
|
this.state[d] = b;
|
|
a[b ? "removeClass" : "addClass"]("x-grid-group-collapsed")
|
|
}
|
|
}, toggleAllGroups:function (c) {
|
|
var b = this.getGroups();
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
this.toggleGroup(b[d], c)
|
|
}
|
|
}, expandAllGroups:function () {
|
|
this.toggleAllGroups(true)
|
|
}, collapseAllGroups:function () {
|
|
this.toggleAllGroups(false)
|
|
}, getGroup:function (a, e, i, j, b, h) {
|
|
var c = this.cm.config[b], d = i ? i.call(c.scope, a, {}, e, j, b, h) : String(a);
|
|
if (d === "" || d === " ") {
|
|
d = c.emptyGroupText || this.emptyGroupText
|
|
}
|
|
return d
|
|
}, getGroupField:function () {
|
|
return this.grid.store.getGroupState()
|
|
}, afterRender:function () {
|
|
if (!this.ds || !this.cm) {
|
|
return
|
|
}
|
|
Ext.grid.GroupingView.superclass.afterRender.call(this);
|
|
if (this.grid.deferRowRender) {
|
|
this.updateGroupWidths()
|
|
}
|
|
}, afterRenderUI:function () {
|
|
Ext.grid.GroupingView.superclass.afterRenderUI.call(this);
|
|
if (this.enableGroupingMenu && this.hmenu) {
|
|
this.hmenu.add("-", {itemId:"groupBy", text:this.groupByText, handler:this.onGroupByClick, scope:this, iconCls:"x-group-by-icon"});
|
|
if (this.enableNoGroups) {
|
|
this.hmenu.add({itemId:"showGroups", text:this.showGroupsText, checked:true, checkHandler:this.onShowGroupsClick, scope:this})
|
|
}
|
|
this.hmenu.on("beforeshow", this.beforeMenuShow, this)
|
|
}
|
|
}, renderRows:function () {
|
|
var a = this.getGroupField();
|
|
var e = !!a;
|
|
if (this.hideGroupedColumn) {
|
|
var b = this.cm.findColumnIndex(a), d = Ext.isDefined(this.lastGroupField);
|
|
if (!e && d) {
|
|
this.mainBody.update("");
|
|
this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField), false);
|
|
delete this.lastGroupField
|
|
} else {
|
|
if (e && !d) {
|
|
this.lastGroupField = a;
|
|
this.cm.setHidden(b, true)
|
|
} else {
|
|
if (e && d && a !== this.lastGroupField) {
|
|
this.mainBody.update("");
|
|
var c = this.cm.findColumnIndex(this.lastGroupField);
|
|
this.cm.setHidden(c, false);
|
|
this.lastGroupField = a;
|
|
this.cm.setHidden(b, true)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return Ext.grid.GroupingView.superclass.renderRows.apply(this, arguments)
|
|
}, doRender:function (c, h, q, a, p, s) {
|
|
if (h.length < 1) {
|
|
return""
|
|
}
|
|
if (!this.canGroup() || this.isUpdating) {
|
|
return Ext.grid.GroupingView.superclass.doRender.apply(this, arguments)
|
|
}
|
|
var z = this.getGroupField(), o = this.cm.findColumnIndex(z), w, j = "width:" + this.getTotalWidth() + ";", e = this.cm.config[o], b = e.groupRenderer || e.renderer, t = this.showGroupName ? (e.groupName || e.header) + ": " : "", y = [], l, u, v, n;
|
|
for (u = 0, v = h.length; u < v; u++) {
|
|
var k = a + u, m = h[u], d = m.data[z];
|
|
w = this.getGroup(d, m, b, k, o, q);
|
|
if (!l || l.group != w) {
|
|
n = this.constructId(d, z, o);
|
|
this.state[n] = !(Ext.isDefined(this.state[n]) ? !this.state[n] : this.startCollapsed);
|
|
l = {group:w, gvalue:d, text:t + w, groupId:n, startRow:k, rs:[m], cls:this.state[n] ? "" : "x-grid-group-collapsed", style:j};
|
|
y.push(l)
|
|
} else {
|
|
l.rs.push(m)
|
|
}
|
|
m._groupId = n
|
|
}
|
|
var x = [];
|
|
for (u = 0, v = y.length; u < v; u++) {
|
|
w = y[u];
|
|
this.doGroupStart(x, w, c, q, p);
|
|
x[x.length] = Ext.grid.GroupingView.superclass.doRender.call(this, c, w.rs, q, w.startRow, p, s);
|
|
this.doGroupEnd(x, w, c, q, p)
|
|
}
|
|
return x.join("")
|
|
}, getGroupId:function (a) {
|
|
var b = this.getGroupField();
|
|
return this.constructId(a, b, this.cm.findColumnIndex(b))
|
|
}, constructId:function (c, e, a) {
|
|
var b = this.cm.config[a], d = b.groupRenderer || b.renderer, g = (this.groupMode == "value") ? c : this.getGroup(c, {data:{}}, d, 0, a, this.ds);
|
|
return this.getPrefix(e) + Ext.util.Format.htmlEncode(g)
|
|
}, canGroup:function () {
|
|
return this.enableGrouping && !!this.getGroupField()
|
|
}, getPrefix:function (a) {
|
|
return this.grid.getGridEl().id + "-gp-" + a + "-"
|
|
}, doGroupStart:function (a, d, b, e, c) {
|
|
a[a.length] = this.startGroup.apply(d)
|
|
}, doGroupEnd:function (a, d, b, e, c) {
|
|
a[a.length] = this.endGroup
|
|
}, getRows:function () {
|
|
if (!this.canGroup()) {
|
|
return Ext.grid.GroupingView.superclass.getRows.call(this)
|
|
}
|
|
var k = [], c = this.getGroups(), h, e = 0, a = c.length, d, b;
|
|
for (; e < a; ++e) {
|
|
h = c[e].childNodes[1];
|
|
if (h) {
|
|
h = h.childNodes;
|
|
for (d = 0, b = h.length; d < b; ++d) {
|
|
k[k.length] = h[d]
|
|
}
|
|
}
|
|
}
|
|
return k
|
|
}, updateGroupWidths:function () {
|
|
if (!this.canGroup() || !this.hasRows()) {
|
|
return
|
|
}
|
|
var c = Math.max(this.cm.getTotalWidth(), this.el.dom.offsetWidth - this.getScrollOffset()) + "px";
|
|
var b = this.getGroups();
|
|
for (var d = 0, a = b.length; d < a; d++) {
|
|
b[d].firstChild.style.width = c
|
|
}
|
|
}, onColumnWidthUpdated:function (c, a, b) {
|
|
Ext.grid.GroupingView.superclass.onColumnWidthUpdated.call(this, c, a, b);
|
|
this.updateGroupWidths()
|
|
}, onAllColumnWidthsUpdated:function (a, b) {
|
|
Ext.grid.GroupingView.superclass.onAllColumnWidthsUpdated.call(this, a, b);
|
|
this.updateGroupWidths()
|
|
}, onColumnHiddenUpdated:function (b, c, a) {
|
|
Ext.grid.GroupingView.superclass.onColumnHiddenUpdated.call(this, b, c, a);
|
|
this.updateGroupWidths()
|
|
}, onLayout:function () {
|
|
this.updateGroupWidths()
|
|
}, onBeforeRowSelect:function (b, a) {
|
|
this.toggleRowIndex(a, true)
|
|
}});
|
|
Ext.grid.GroupingView.GROUP_ID = 1000; |