///
$(function () {
function tableLoader() {
var self = this;
self.hub = $.connection.dynamicDataTextHub;
self.buttonPick = function () {
if (this.innerHTML.indexOf("Loaded:") >= 0)
self.hub.client.buttonPicked(this.id);
else
self.hub.server.getTableHeader(this.innerHTML, this.id);
}
self.hub.client.buttonPicked = function (id) {
var obj = document.getElementById(id);
var i = obj.innerHTML.indexOf("Loaded:");
if (i >= 0)
{
var name = obj.innerHTML.substring(7);
var node = document.getElementById("DD_" + name);
if (node == null) node = parent.document.getElementById("DD_" + name);
var oTD = document.getElementById("TablesData");
try { oTD.parentNode.removeChild(node); }
catch (e) { oTD.removeChild(node); }
obj.innerHTML = name;
}
else
{
obj.innerHTML = "Loaded:" + obj.innerHTML;
}
}
self.addButtonAction = function () {
var pages = TablesSelect.getElementsByTagName("button");
for (var i=0;i";
});
self.addButtonAction();
}
self.hub.client.headerTableRetrieved = function (name, ID, itemsMap) {
var Obj = document.getElementById("TablesData");
var divP = document.createElement("div");
var divR = document.createElement("div");
var divTitle = document.createElement("div");
var winTable = document.createElement("table");
var winHead = document.createElement("thead");
var winBody = document.createElement("tbody");
var winFoot = document.createElement("tfoot");
divP.appendChild(divR);
divR.appendChild(divTitle);
winTable.appendChild(winHead);
winTable.appendChild(winBody);
winTable.appendChild(winFoot);
divR.appendChild(winTable);
divP.setAttribute("id", "DD_" + name);
divR.setAttribute("id", "DR_" + name);
divR.setAttribute("class", "resizable");
divTitle.innerText = name;
divTitle.setAttribute("style", "background:#b9cd6d;border: 1px solid #b9cd6d;color: #FFFFFF;font-weight: bold;cursor:move");
winBody.setAttribute("id", name + "_BODY");
Obj.appendChild(divP);
ko.utils.arrayForEach(itemsMap, function (list, index) {
var th = document.createElement("th");
th.innerText = list.columnName;
th.setAttribute("id", "TH_" + name + "_" + index);
winHead.appendChild(th);
});
self.hub.server.getTableData(name, ID);
}
self.hub.client.dataTableRetrieved = function (name, itemsMap) {
var Obj = document.getElementById(name + "_BODY");
ko.utils.arrayForEach(itemsMap, function (list, index) {
var row = Obj.insertRow(-1);
var wrap = list.substring(1);
wrap = wrap.substring(0, wrap.length - 1);
var data = wrap.split('|');
for (var i = 0; i < data.length; i++) {
var cell = row.insertCell(-1);
cell.innerHTML = data[i];
}
});
$("#DD_" + name).draggable();
applyResizable("DR_"+name);
self.hub.client.raiseError("Client Ready");
}
};
ko.bindingHandlers.dateString = {
init: function (element, valueAccessor) {
element.onchange = function () {
var value = valueAccessor(); // Get The [ observable ]
value(moment(element.value, 'DD-MMM-YYYY').toDate());
};
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = valueAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
if (valueUnwrapped) {
if (element.value!=null)
element.value = moment(valueUnwrapped).format('DD-MMM-YYYY');
else
element.innerHTML = moment(valueUnwrapped).format('DD-MMM-YYYY');
}
}
};
function applyResizable(key) {
$("#" + key)
.wrap('
')
.css({ 'overflow': 'hidden' })
.parent()
.css({
'display': 'inline-block',
'overflow': 'hidden',
'height': function () { return $('.resizable', this).height(); },
'width': function () { return $('.resizable', this).width(); },
'paddingBottom': '12px',
'paddingRight': '12px'
}).resizable()
.find('.resizable')
.css({
overflow: 'auto',
width: '100%',
height: '100%'
});
}
$(document).ready(function () {
var load = new tableLoader();
$.connection.hub.start(function () { load.init(); });
});
});