Merged PetitTetonApps with the website now that the deployment server always uses SSL. Used the Apps more recent implementation of NodeJS/Express.
This commit is contained in:
106
public/admin/categoryEditor.html
Normal file
106
public/admin/categoryEditor.html
Normal file
@@ -0,0 +1,106 @@
|
||||
<div id="categoryEditor" class="page">
|
||||
<h1>Categories</h1>
|
||||
<table id="categoryTree" class="editorTable">
|
||||
<colgroup>
|
||||
<col style="width: 1*; min-width: 400px;"></col>
|
||||
<col style="width: 30px;"></col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr><th>Name</th><th>Visible</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr> <td></td> <td></td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<runonce>
|
||||
$.ajax({url: "/GetMeasures", dataType: 'json', cache: false, success: function(data, textStatus, jqXHR) {
|
||||
var measures = data;
|
||||
var colgroup = $('#categoryTree colgroup');
|
||||
var theadtr = $('#categoryTree thead tr');
|
||||
var bodytr = $('#categoryTree body tr');
|
||||
|
||||
//Add a column per measure.
|
||||
for(var i = 0; i < measures.length; i++) {
|
||||
var measure = measures[i];
|
||||
|
||||
if(measure.visible) {
|
||||
colgroup.append('<col style="width: 30px;"></col>');
|
||||
theadtr.append('<th><image class="headerIcon" src="/images/' + measure.image + '"/></th>');
|
||||
bodytr.append('<td></td>');
|
||||
}
|
||||
}
|
||||
|
||||
//Setup the tree table.
|
||||
$("#categoryTree").fancytree({
|
||||
extensions: ["table"],
|
||||
|
||||
table: {
|
||||
indentation: 20, // indent 20px per node level
|
||||
nodeColumnIdx: 0
|
||||
},
|
||||
|
||||
renderColumns: function(event, data) {
|
||||
var node = data.node, $tdList = $(node.tr).find(">td");
|
||||
|
||||
//$tdList.eq(0).text(node.name);
|
||||
$tdList.eq(1).html("<input type='checkbox' name='visible' value='" + node.visible + "'>");
|
||||
//$tdList.eq(2).text(node.data.counts);
|
||||
|
||||
if(node.data.type == 'Item') {
|
||||
for(var i = 0; i < measures.length; i++) {
|
||||
var measure = measures[i];
|
||||
|
||||
if(measure.id in node.data.counts) {
|
||||
$tdList.eq(2+i).text("X");
|
||||
}
|
||||
else {
|
||||
$tdList.eq(2+i).text("_");
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
source: {
|
||||
url: "/GetCategories",
|
||||
cache: false
|
||||
},
|
||||
|
||||
lazyLoad: function(event, data) {
|
||||
var node = data.node.data;
|
||||
|
||||
if(node.type == 'Category') {
|
||||
data.result = {
|
||||
url: "/GetSubcategories",
|
||||
data: {id: node.id}
|
||||
}
|
||||
}
|
||||
else if(node.type == 'Subcategory') {
|
||||
data.result = {
|
||||
url: "/GetItems",
|
||||
data: {id: node.id}
|
||||
}
|
||||
}
|
||||
else {
|
||||
data.result = [];
|
||||
}
|
||||
},
|
||||
|
||||
postProcess: function(event, data) {
|
||||
var nodes = data.response;
|
||||
|
||||
for(var i = 0; i < nodes.length; i++) {
|
||||
nodes[i].key = (data.node != null ? data.node.key + "/" : "") + nodes[i].id;
|
||||
nodes[i].title = nodes[i].name;
|
||||
nodes[i].cache = false;
|
||||
nodes[i].type = data.node.data.type == null ? "Category" : data.node.data.type == 'Category' ? "Subcategory" : "Item";
|
||||
nodes[i].lazy = nodes[i].folder = nodes[i].type != 'Item';
|
||||
//check(data.node);
|
||||
}
|
||||
}
|
||||
});
|
||||
}, fail: function(jqXHR, textStatus, errorThrown) {
|
||||
//TODO:
|
||||
alert("Get measures failed.");
|
||||
}});
|
||||
</runonce>
|
||||
Reference in New Issue
Block a user