67 lines
2.0 KiB
JavaScript
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);
|
|
};
|