webgui/www/extras/yui-webgui/build/form/assetReportQuery.js

366 lines
12 KiB
JavaScript

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(first_row_error_msg);
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"));
};
});