initial release of Asset Report asset allowing reports to be created using asset properties.
This commit is contained in:
parent
cb2bb75d23
commit
22da7c4114
10 changed files with 1405 additions and 0 deletions
363
www/extras/yui-webgui/build/form/assetReportQuery.js
vendored
Normal file
363
www/extras/yui-webgui/build/form/assetReportQuery.js
vendored
Normal file
|
|
@ -0,0 +1,363 @@
|
|||
var classArray = [];
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function addRow(row,ttbody,countId,data) {
|
||||
//Get the count
|
||||
var count = getCount(countId);
|
||||
|
||||
//Set default data
|
||||
if(data == null) data = {};
|
||||
|
||||
//Clone The Row
|
||||
var tr = row.cloneNode(true);
|
||||
|
||||
//Get the row type
|
||||
var rowType = getRowType(tr.id);
|
||||
|
||||
//Set the rowId
|
||||
tr.id = rowType + '_' + count;
|
||||
|
||||
//Reset Row Props
|
||||
var rowLen = tr.childNodes.length;
|
||||
for (var i = 0; i < rowLen; i++) {
|
||||
var td = tr.childNodes[i];
|
||||
if(td.nodeType != 1) continue;
|
||||
|
||||
var colLen = td.childNodes.length;
|
||||
for( var j = 0; j < colLen; j++) {
|
||||
var node = td.childNodes[j];
|
||||
if(node.nodeType != 1) continue;
|
||||
var result = node.name.match(/([a-zA-Z]+)_(\d+)/);
|
||||
if(result != null) {
|
||||
node.name = result[1] + "_" + count;
|
||||
node.id = result[1] + "_" + count + "_formId";
|
||||
var nodeValue = data[result[1]];
|
||||
var isSelect = node.type.indexOf("select") > -1
|
||||
if(nodeValue) {
|
||||
if(isSelect) {
|
||||
selectValue(node,nodeValue);
|
||||
}
|
||||
else if(node.type != "button") {
|
||||
node.value = nodeValue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(isSelect) {
|
||||
selectValue(node,"");
|
||||
}
|
||||
else if(node.type != "button") {
|
||||
node.value = "";
|
||||
}
|
||||
}
|
||||
if(result[1] == "deleteButton" || result[1] == "orderDelButton") {
|
||||
node.onclick = new Function('deleteRow(document.getElementById("' + rowType + '_' + count + '"),document.getElementById("' + ttbody.id + '"));');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ttbody.appendChild(tr);
|
||||
incrementCount(countId);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getPropCount() {
|
||||
return getCount("propCount_id");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getOrderCount() {
|
||||
return getCount("orderCount_id");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getCount(id) {
|
||||
var count = document.getElementById(id);
|
||||
return count.value;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getRowType(id) {
|
||||
var parts = id.split("_");
|
||||
return parts[0];
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function incrementCount(id) {
|
||||
var count = document.getElementById(id);
|
||||
var value = parseInt(count.value);
|
||||
value++;
|
||||
count.value = value;
|
||||
return value;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function incrementOrderCount() {
|
||||
return incrementCount("orderCount_id");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function incrementPropCount() {
|
||||
return incrementCount("propCount_id");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function deleteRow(row,ttbody) {
|
||||
var rowId = row.id;
|
||||
var rowType = getRowType(rowId);
|
||||
var row1 = rowType + "_1";
|
||||
if(rowId != row1) {
|
||||
ttbody.removeChild(row);
|
||||
return;
|
||||
}
|
||||
alert("The first row may not be deleted. Please adjust your query appropriately");
|
||||
return;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getClasses() {
|
||||
if(classArray.length > 0) {
|
||||
return classArray;
|
||||
}
|
||||
for (var key in classValues) {
|
||||
classArray.push(key);
|
||||
}
|
||||
classArray.sort();
|
||||
return classArray;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getClassValue() {
|
||||
var className = document.getElementById("className_formId");
|
||||
return className.value;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function getFirstChild(node) {
|
||||
var rowLen = node.childNodes.length;
|
||||
for (var i = 0; i < rowLen; i++) {
|
||||
if(node.childNodes[i].nodeType != 1) continue;
|
||||
return node.childNodes[i];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function loadClasses(selectBox) {
|
||||
var classes = getClasses();
|
||||
var value = "";
|
||||
if(dataValues.isNew != "true") {
|
||||
value = dataValues.className;
|
||||
}
|
||||
populateSelect(selectBox,classes,value);
|
||||
return;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function loadClassName (className) {
|
||||
//Delete Where Rows
|
||||
var propCount = getPropCount();
|
||||
for(var i = 2; i < propCount; i++) {
|
||||
var row = document.getElementById("row_" + i);
|
||||
if(row != null) {
|
||||
deleteRow(row,document.getElementById("whereBody"));
|
||||
}
|
||||
}
|
||||
//Delete Order Rows
|
||||
var orderCount = getOrderCount();
|
||||
for(var i = 2; i < orderCount; i++) {
|
||||
var row = document.getElementById("order_" + i);
|
||||
if(row != null) {
|
||||
deleteRow(row,document.getElementById("orderBody"));
|
||||
}
|
||||
}
|
||||
|
||||
//Load the new properties from the classes
|
||||
var propSel = document.getElementById("propSelect_1_formId");
|
||||
var orderSel = document.getElementById("orderSelect_1_formId");
|
||||
|
||||
emptySelect(propSel);
|
||||
emptySelect(orderSel);
|
||||
|
||||
var classValue = getClassValue();
|
||||
var propOpts = classValues[classValue];
|
||||
|
||||
populateSelect( propSel, propOpts, null, true );
|
||||
populateSelect( orderSel, propOpts, null, true );
|
||||
|
||||
//Reset the counts
|
||||
setCount("propCount_id",2);
|
||||
setCount("orderCount_id",2);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function loadWhereRows(tbody) {
|
||||
var propCount = getPropCount();
|
||||
//Change the names and ids of the default row
|
||||
var tr = getFirstChild(tbody);
|
||||
tr.id = "row_" + propCount;
|
||||
|
||||
var propSelect = document.getElementById("propSelect_formId");
|
||||
propSelect.name = "propSelect_" + propCount;
|
||||
propSelect.id = "propSelect_" + propCount + "_formId";
|
||||
var classValue = getClassValue();
|
||||
var propOpts = classValues[classValue];
|
||||
|
||||
var opSelect = document.getElementById("opSelect_formId");
|
||||
opSelect.name = "opSelect_" + propCount;
|
||||
opSelect.id = "opSelect_" + propCount + "_formId";
|
||||
|
||||
var valText = document.getElementById("valText_formId");
|
||||
valText.name = "valText_" + propCount;
|
||||
valText.id = "valText_" + propCount + "_formId";
|
||||
|
||||
var deleteButton = document.getElementById("deleteButton_formId");
|
||||
deleteButton.name = "deleteButton_" + propCount;
|
||||
deleteButton.id = "deleteButton_" + propCount + "_formId";
|
||||
deleteButton.onclick = new Function('deleteRow(document.getElementById("row_'+propCount+'"),document.getElementById("whereBody"));');
|
||||
|
||||
if(dataValues.isNew == "true") {
|
||||
// Build the default row
|
||||
populateSelect(propSelect,propOpts,null,true);
|
||||
incrementPropCount();
|
||||
}
|
||||
else {
|
||||
// Build existing rows
|
||||
var whereData = dataValues.where;
|
||||
//Handle case where user chooses no constraints.
|
||||
var whereValue = null;
|
||||
var selValue = null;
|
||||
var valValue = null;
|
||||
if(whereData[1] != null) {
|
||||
whereValue = whereData[1].propSelect;
|
||||
selValue = whereData[1].opSelect;
|
||||
valValue = whereData[1].valText;
|
||||
}
|
||||
//Populate the data
|
||||
populateSelect(propSelect,propOpts,whereValue,true);
|
||||
selectValue(opSelect,selValue);
|
||||
valText.value = valValue;
|
||||
|
||||
incrementPropCount();
|
||||
for (var key in whereData) {
|
||||
if(key > 1) {
|
||||
addRow(tr,tbody,"propCount_id",whereData[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function selectValue (list, value) {
|
||||
for ( var i = 0; i < list.options.length; i++ ) {
|
||||
if(list.options[i].value == value) {
|
||||
list.options[i].selected = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function loadOrder(tbody) {
|
||||
var orderCount = getOrderCount();
|
||||
//Change the names and ids of the default row
|
||||
var tr = getFirstChild(tbody);
|
||||
tr.id = "order_" + orderCount;
|
||||
|
||||
var orderSelect = document.getElementById("orderSelect_formId");
|
||||
orderSelect.name = "orderSelect_" + orderCount;
|
||||
orderSelect.id = "orderSelect_" + orderCount + "_formId";
|
||||
// Build the default row
|
||||
var classValue = getClassValue();
|
||||
var orderOpts = classValues[classValue];
|
||||
|
||||
var dirSelect = document.getElementById("dirSelect_formId");
|
||||
dirSelect.name = "dirSelect_" + orderCount;
|
||||
dirSelect.id = "dirSelect_" + orderCount + "_formId";
|
||||
|
||||
var deleteButton = document.getElementById("orderDelButton_formId");
|
||||
deleteButton.name = "orderDelButton_" + orderCount;
|
||||
deleteButton.id = "orderDelButton_" + orderCount + "_formId";
|
||||
deleteButton.onclick = new Function('deleteRow(document.getElementById("order_' + orderCount + '"),document.getElementById("orderBody"));');
|
||||
|
||||
if(dataValues.isNew == "true") {
|
||||
populateSelect(orderSelect,propOpts,null,true);
|
||||
incrementOrderCount();
|
||||
}
|
||||
else {
|
||||
// Build existing rows
|
||||
var orderData = dataValues.order;
|
||||
//Handle case where user chooses no order.
|
||||
var orderValue = null;
|
||||
var dirValue = null;
|
||||
if(orderData[1] != null) {
|
||||
orderValue = orderData[1].orderSelect;
|
||||
dirValue = orderData[1].dirSelect;
|
||||
}
|
||||
//Populate data
|
||||
populateSelect(orderSelect,orderOpts,orderValue,true);
|
||||
selectValue(dirSelect,dirValue);
|
||||
|
||||
incrementOrderCount();
|
||||
for (var key in orderData) {
|
||||
if(key > 1) {
|
||||
addRow(tr,tbody,"orderCount_id",orderData[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function populateSelect( list, data, value, isHash ) {
|
||||
if(isHash) {
|
||||
for ( var key in data ) {
|
||||
var opt = document.createElement("option");
|
||||
opt.setAttribute("value",key);
|
||||
if(key == value ) opt.setAttribute("selected",true);
|
||||
opt.appendChild(document.createTextNode(data[key]));
|
||||
list.appendChild(opt);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for ( var i = 0; i < data.length; i++ ) {
|
||||
var opt = document.createElement("option");
|
||||
opt.setAttribute("value",data[i]);
|
||||
if(data[i] == value ) opt.setAttribute("selected",true);
|
||||
opt.appendChild(document.createTextNode(data[i]));
|
||||
list.appendChild(opt);
|
||||
}
|
||||
}
|
||||
|
||||
//Fix IE Bug which causes dymamic repopulation to fail
|
||||
var newList = list;
|
||||
var col = list.parentNode;
|
||||
col.removeChild(list);
|
||||
col.appendChild(newList);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function emptySelect ( list ) {
|
||||
//Remove all options from list except first one
|
||||
while (list.options.length > 1) {
|
||||
var elem = list.options[1];
|
||||
list.removeChild(elem);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
function setCount(id,value) {
|
||||
var count = document.getElementById(id);
|
||||
count.value = value;
|
||||
}
|
||||
|
||||
|
||||
YAHOO.util.Event.onDOMReady( function () {
|
||||
loadClasses(document.getElementById("className_formId"));
|
||||
loadWhereRows(document.getElementById("whereBody"));
|
||||
loadOrder(document.getElementById("orderBody"));
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue