LGS/lib/Entries.js

67 lines
2.0 KiB
JavaScript

var Entries = Entries || function(head, body) {
this.head_element = head; // DOM element for head
this.element = body; // DOM element for row
this.entries_head = document.createElement('div');
this.entries_head.className = 'row';
this.head_element.appendChild(this.entries_head);
this.entries_row = document.createElement('div');
this.entries_row.className = 'row';
this.last = document.createElement('div');
this.last.className = 'cell';
this.last.id = 'last';
this.entries_row.appendChild(this.last);
this.element.appendChild(this.entries_row);
this.entries = []
this.entry_count = 0;
};
Entries.prototype.clear = function() {
for (var i = this.entries.length-1; i >= 0; i--) {
this.entries[i].destroy();
}
this.entries = [];
};
Entries.prototype.addEntry = function(index) {
index = this.entries.length;
var entry = new EEntry(this, index);
this.entries_row.insertBefore(entry.element, this.last);
this.entries[index] = entry;
};
Entries.prototype.removeEntry = function(index) {
if (index <= 1 || index > this.entries.length) return;
var entry = this.entries[index];
this.entries.splice(index, 1);
for (var i = 0; i <= this.entries.lenth; i++) {
this.entries[i].index = i;
}
entry.destroy();
};
var EEntry = EEntry || function(parent, index) {
var self = this;
this.parent = parent;
this.index = index;
this.element = document.createElement('div');
this.element.className = 'cell';
this.input = document.createElement('input');
if (this.index == 0) this.input.placeholder = '01-12';
this.input.addEventListener('input', function(e) {
var event = document.createEvent('HTMLEvents');
event.initEvent('headinput', true, true);
event.entry_index = self.index;
event.entry = self;
self.parent.element.dispatchEvent(event);
});
this.element.appendChild(this.input);
};
EEntry.prototype.destroy = function() {
this.element.parentNode.removeChild(this.element);
};