Mortal
This commit is contained in:
128
log-viewer/files/js/dytem.js
Normal file
128
log-viewer/files/js/dytem.js
Normal file
@@ -0,0 +1,128 @@
|
||||
var Repeated, _base, _base2;
|
||||
|
||||
window.console || (window.console = {});
|
||||
|
||||
(_base = window.console).log || (_base.log = function() {});
|
||||
|
||||
(_base2 = window.console).error || (_base2.error = function() {});
|
||||
|
||||
window.Dytem = {
|
||||
init: function() {
|
||||
return Dytem.addChildrenField($("body"), null, Dytem);
|
||||
},
|
||||
assign: function(obj, elem) {
|
||||
var childElem, childObj, name, _i, _len, _results, _results2;
|
||||
elem || (elem = Dytem);
|
||||
if (typeof obj === "string") {
|
||||
return elem.text(obj);
|
||||
} else if (obj instanceof Array) {
|
||||
elem.clear();
|
||||
_results = [];
|
||||
for (_i = 0, _len = obj.length; _i < _len; _i++) {
|
||||
childObj = obj[_i];
|
||||
childElem = elem.append();
|
||||
_results.push(Dytem.assign(childObj, childElem));
|
||||
}
|
||||
return _results;
|
||||
} else {
|
||||
_results2 = [];
|
||||
for (name in obj) {
|
||||
childObj = obj[name];
|
||||
if (name === "text") {
|
||||
_results2.push(elem.text(childObj));
|
||||
} else if (name === "html") {
|
||||
_results2.push(elem.html(childObj));
|
||||
} else if (elem[name]) {
|
||||
_results2.push(Dytem.assign(childObj, elem[name]));
|
||||
} else if (elem.attr) {
|
||||
_results2.push(elem.attr(name, childObj));
|
||||
} else {
|
||||
throw "unknown field: " + name;
|
||||
}
|
||||
}
|
||||
return _results2;
|
||||
}
|
||||
},
|
||||
addChildrenField: function(elem, prefix, target) {
|
||||
var _this = this;
|
||||
return elem.find("[id]").each(function(i, child) {
|
||||
var childId, escPrefix, name;
|
||||
childId = $(child).attr("id");
|
||||
if (prefix) $(child).removeAttr("id");
|
||||
escPrefix = prefix ? prefix.replace(/\./, "\\.") : "";
|
||||
if (childId.match(new RegExp("^" + escPrefix + "([^\\.]+)$"))) {
|
||||
name = RegExp.$1;
|
||||
if ($(child).hasClass("repeated")) {
|
||||
return target[name] = new Repeated(childId, $(child));
|
||||
} else {
|
||||
return target[name] = $(child);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Repeated = (function() {
|
||||
|
||||
function Repeated(__id, __placeholder) {
|
||||
this.__id = __id;
|
||||
this.__placeholder = __placeholder;
|
||||
this.__template = $(document.getElementById(this.__id));
|
||||
this.__elems = [];
|
||||
}
|
||||
|
||||
Repeated.prototype.append = function() {
|
||||
var lastElem, newElem;
|
||||
if (this.__elems.length > 0) {
|
||||
lastElem = this.__elems[this.__elems.length - 1];
|
||||
} else {
|
||||
lastElem = this.__placeholder;
|
||||
}
|
||||
newElem = this.__template.clone();
|
||||
newElem.removeAttr("id");
|
||||
Dytem.addChildrenField(newElem, "" + this.__id + ".", newElem);
|
||||
newElem.show();
|
||||
lastElem.after(newElem);
|
||||
this.__elems.push(newElem);
|
||||
return newElem;
|
||||
};
|
||||
|
||||
Repeated.prototype.at = function(idx) {
|
||||
return this.__elems[idx];
|
||||
};
|
||||
|
||||
Repeated.prototype.size = function() {
|
||||
return this.__elems.length;
|
||||
};
|
||||
|
||||
Repeated.prototype.resize = function(n) {
|
||||
var elem, i, _i, _len, _ref, _ref2, _ref3, _results;
|
||||
if (n < this.__elems.length) {
|
||||
_ref = this.__elems.slice(n);
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
elem = _ref[_i];
|
||||
elem.remove();
|
||||
}
|
||||
return ([].splice.apply(this.__elems, [n, 9e9].concat(_ref2 = [])), _ref2);
|
||||
} else if (n > this.__elems.length) {
|
||||
_results = [];
|
||||
for (i = _ref3 = this.__elems.length; _ref3 <= n ? i < n : i > n; _ref3 <= n ? i++ : i--) {
|
||||
_results.push(this.append());
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
};
|
||||
|
||||
Repeated.prototype.clear = function() {
|
||||
var elem, _i, _len, _ref;
|
||||
_ref = this.__elems;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
elem = _ref[_i];
|
||||
elem.remove();
|
||||
}
|
||||
return this.__elems = [];
|
||||
};
|
||||
|
||||
return Repeated;
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user