blob: fdda4f572a9d4721d8ad38dd0b18811cac8c6fed [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
function Config() {
Resource.apply(this, Array.prototype.slice.call(arguments));
this.restype = 'config';
}
Config.prototype = new Resource();
var resource = new Config();
var cfgvartimeout = null;
var nocfgvarupdates = 1;
var newcfgvarid = 15000001;
var newsubimageid = 15000001;
function addNewResource(title) {
dijit.byId('addeditdlg').set('title', title);
dijit.byId('addeditbtn').set('label', title);
dojo.removeClass('configvariables', 'hidden');
dojo.addClass('editcfgvardiv', 'hidden');
dojo.byId('editresid').value = 0;
configSetType();
dijit.byId('type').set('disabled', false);
dijit.byId('name').reset();
dijit.byId('owner').reset();
dijit.byId('optionalchk').reset();
dijit.byId('subimageid').reset();
var newdata = {
identifier: 'id',
label: 'name',
items: []
}
var newstore = new dojo.data.ItemFileWriteStore({data: newdata});
newstore.comparatorMap = {'name': caselessSort};
subimagegrid.setStore(newstore);
dijit.byId('vlanid').reset();
resetCfgVarFields();
dojo.byId('data').value = '';
dojo.byId('addeditdlgerrmsg').innerHTML = '';
var vardata = {identifier: 'id', label: 'name', items: []};
newstore = new dojo.data.ItemFileWriteStore({data: vardata});
var oldstore = configvariablegrid.store;
configvariablegrid.setStore(newstore);
delete oldstore;
dijit.byId('addeditdlg').show();
}
function inlineEditResourceCB(data, ioArgs) {
if(data.items.status == 'success') {
dojo.byId('saveresourcecont').value = data.items.cont;
dijit.byId('addeditdlg').set('title', data.items.title);
dijit.byId('addeditbtn').set('label', 'Save Changes');
dojo.byId('editresid').value = data.items.resid;
dijit.byId('type').set('value', data.items.data.configtypeid);
dijit.byId('type').set('disabled', true);
configSetType();
dijit.byId('name').set('value', data.items.data.name);
dijit.byId('owner').set('value', data.items.data.owner);
var vars = data.items.data.variables;
if(data.items.data.optional == 0)
dijit.byId('optionalchk').set('checked', false);
else
dijit.byId('optionalchk').set('checked', true);
if(data.items.data.configtype == 'Cluster') {
nocfgvarupdates = 1;
var vardata = {identifier: 'id', label: 'name', items: vars};
var newstore = new dojo.data.ItemFileWriteStore({data: vardata});
newstore.comparatorMap = {'name': caselessSort};
var oldstore = subimagegrid.store;
subimagegrid.setStore(newstore);
if(subimagegrid.selection.selectedIndex >= 0)
subimagegrid.selection.setSelected(subimagegrid.selection.selectedIndex, false);
subimagegrid.selection.lastindex = -1;
subimagegrid.setQuery({deleted: '0'});
setTimeout(function() {subimagegrid.update();}, 1);
delete oldstore;
}
else if(data.items.data.configtype == 'VLAN') {
nocfgvarupdates = 1;
dijit.byId('vlanid').set('value', data.items.data.data);
}
else {
nocfgvarupdates = 0;
dojo.byId('data').value = data.items.data.data;
resetCfgVarFields();
var vardata = {identifier: 'id', label: 'name', items: vars};
var newstore = new dojo.data.ItemFileWriteStore({data: vardata});
var oldstore = configvariablegrid.store;
configvariablegrid.setStore(newstore);
if(configvariablegrid.selection.selectedIndex >= 0)
configvariablegrid.selection.setSelected(configvariablegrid.selection.selectedIndex, false);
configvariablegrid.selection.lastindex = -1;
setTimeout(function() {configvariablegrid.update();}, 1);
delete oldstore;
}
dijit.byId('addeditdlg').show();
}
else if(data.items.status == 'noaccess') {
alert('Access denied to edit this item');
}
}
function saveResource() {
if(! updateConfigVariable())
return;
var submitbtn = dijit.byId('addeditbtn');
var errobj = dojo.byId('addeditdlgerrmsg');
if(! checkValidatedObj('name', errobj))
return;
/*if(! dijit.byId('owner')._hasBeenBlurred && dijit.byId('owner').get('value') == '') {
dijit.byId('owner')._hasBeenBlurred = true;
dijit.byId('owner').validate();
submitbtn.set('disabled', true);
setTimeout(function() {
saveResource();
submitbtn.set('disabled', false);
}, 1000);
return;
}*/
if(ownerchecking) {
submitbtn.set('disabled', true);
setTimeout(function() {
saveResource();
submitbtn.set('disabled', false);
}, 1000);
return;
}
if(! checkValidatedObj('owner', errobj))
return;
if(dojo.byId('editresid').value == 0)
var data = {continuation: dojo.byId('addresourcecont').value};
else
var data = {continuation: dojo.byId('saveresourcecont').value};
var type = dijit.byId('type').get('displayedValue');
if(! dojo.hasClass('configdatadiv', 'hidden')) {
if(dojo.byId('data').value == '') {
var typename = dojo.byId('datalabel').innerHTML;
errobj.innerHTML = typename + ' cannot be empty';
return;
}
data['data'] = dojo.byId('data').value;
data['configvariables'] = serializeConfigVars();
}
if(type == 'Cluster') {
data['subimages'] = serializeConfigSubimages();
if(data['subimages'] == '') {
errobj.innerHTML = 'No subimages assigned';
return;
}
}
else if(type == 'VLAN') {
if(! checkValidatedObj('vlanid', errobj))
return;
data['vlanid'] = dijit.byId('vlanid').get('value');
}
data['typeid'] = dijit.byId('type').get('value');
data['name'] = dijit.byId('name').get('value');
data['owner'] = dijit.byId('owner').get('value');
if(dijit.byId('optionalchk').checked)
data['optional'] = 1;
else
data['optional'] = 0;
submitbtn.set('disabled', true);
RPCwrapper(data, saveResourceCB, 1);
}
function saveResourceCB(data, ioArgs) {
if(data.items.status == 'error') {
if(data.items.msg == 'cannot be empty')
data.items.msg = dojo.byId('datalabel').innerHTML + ' cannot be empty';
dojo.byId('addeditdlgerrmsg').innerHTML = data.items.msg;
dijit.byId('addeditbtn').set('disabled', false);
return;
}
else if(data.items.status == 'success') {
if(data.items.action == 'add') {
resourcegrid.store.newItem(data.items.item);
resourcegrid.sort();
}
else {
resourcegrid.store.fetch({
query: {id: data.items.data.id},
onItem: function(item) {
resourcegrid.store.setValue(item, 'name', data.items.data.name);
resourcegrid.store.setValue(item, 'owner', data.items.data.owner);
resourcegrid.store.setValue(item, 'data', data.items.data.data);
resourcegrid.store.setValue(item, 'optional', data.items.data.optional);
},
onComplete: function(items, result) {
// when call resourcegrid.sort directly, the table contents disappear; not sure why
setTimeout(function() {resourcegrid.sort();}, 10);
}
});
}
dijit.byId('type').reset();
dijit.byId('name').reset();
dijit.byId('owner').reset();
dijit.byId('optionalchk').reset();
dijit.byId('subimageid').reset();
dijit.byId('vlanid').reset();
dojo.byId('data').value = '';
dojo.byId('addeditdlgerrmsg').innerHTML = '';
dijit.byId('addeditdlg').hide();
setTimeout(function() {dijit.byId('addeditbtn').set('disabled', false);}, 250);
}
}
// --------------------------------------
function resetCfgVarFields() {
dojo.byId('varid').value = '';
dijit.byId('varname').reset();
dijit.byId('varidentifier').reset();
dijit.byId('cfgvartype').reset();
setCfgVarType(1);
resetCfgVarTypeValues();
dijit.byId('varrequired').reset();
dijit.byId('varask').reset();
dojo.addClass('editcfgvardiv', 'hidden');
}
function resetCfgVarTypeValues() {
var options = dijit.byId('cfgvartype').options;
for(var i = 0; i < options.length; i++)
dijit.byId('vartype' + options[i].label).reset();
}
function setCfgVarType(noupdate) {
if(typeof noupdate === 'undefined')
noupdate = 0;
var type = dijit.byId('cfgvartype').get('displayedValue');
var options = dijit.byId('cfgvartype').options;
for(var i = 0; i < options.length; i++) {
var t = options[i].label;
dojo.addClass('vartype' + t + 'span', 'hidden');
}
dojo.removeClass('vartype' + type + 'span', 'hidden');
if(noupdate)
return;
updateConfigVariable();
}
function configVarAllowSelection(row) {
if(row == configvariablegrid.selection.lastindex)
return true;
if(! updateConfigVariable()) {
setTimeout(function() {
configvariablegrid.selection.setSelected(configvariablegrid.selection.lastindex, true);
}, 1);
return false;
}
}
function configVarSelected(row) {
if(! updateConfigVariable())
return;
dojo.removeClass('editcfgvardiv', 'hidden');
var item = configvariablegrid.getItem(row);
if(! item)
return;
nocfgvarupdates = 1;
if(item.deleted == 1) {
dojo.addClass('editcfgvardiv', 'hidden');
dojo.removeClass('undeletecfgvardiv', 'hidden');
}
else {
dojo.addClass('undeletecfgvardiv', 'hidden');
dojo.removeClass('editcfgvardiv', 'hidden');
}
dijit.byId('deletecfgvarbtn').set('disabled', false);
dojo.byId('varid').value = item.id;
dijit.byId('varname').set('value', item.name);
dijit.byId('varidentifier').set('value', item.identifier);
resetCfgVarTypeValues();
dijit.byId('cfgvartype').set('value', parseInt(item.datatypeid));
var type = dijit.byId('cfgvartype').get('displayedValue');
if(type == 'text')
dijit.byId('vartypetext').set('value', new String(item.defaultvalue));
else
dijit.byId('vartype' + type).set('value', item.defaultvalue);
setCfgVarType();
if(item.required == 1)
dijit.byId('varrequired').set('checked', true);
else
dijit.byId('varrequired').set('checked', false);
if(item.ask == 1)
dijit.byId('varask').set('checked', true);
else
dijit.byId('varask').set('checked', false);
configvariablegrid.selection.lastindex = row;
nocfgvarupdates = 0;
}
function addCfgSubimage() {
var min = new dijit.form.NumberSpinner({
value: 1,
smallDelta: 1,
constraints: {min: 1, max: 5000, places: 0},
style: 'width: 40px'
});
var item = {id: newsubimageid,
imageid: dijit.byId('subimageid').get('value'),
name: dijit.byId('subimageid').get('displayedValue'),
min: 1,
max: 1,
deleted: '0'};
subimagegrid.store.newItem(item);
subimagegrid.sort();
setTimeout(function() {
if(subimagegrid.selection.selectedIndex >= 0)
subimagegrid.selection.setSelected(subimagegrid.selection.selectedIndex, false);
// TODO fix problem of another row being highlighted due to being the focused row
for(var i = 0, last = subimagegrid.rowCount; i < last; i++) {
if((subimagegrid.getItem(i)) && subimagegrid.getItem(i).id == newsubimageid) {
subimagegrid.selection.setSelected(i, true);
break;
}
}
newsubimageid++;
subimagegrid.scrollToRow(subimagegrid.selection.selectedIndex);
subimagegrid.update();
}, 1);
}
function removeSubimages() {
var items = subimagegrid.selection.getSelected();
for(var i = 0; i < items.length; i++) {
subimagegrid.store.fetch({
query: {id: items[i].id[0]},
onItem: function(item) {
subimagegrid.store.setValue(item, 'deleted', '1');
}
});
}
subimagegrid.selection.clear();
subimagegrid.sort();
}
function addNewConfigVar() {
if(! updateConfigVariable()) {
return;
}
var item = {id: newcfgvarid,
name: 'new variable',
identifier: '',
datatypeid: '1',
defaultvalue: 0,
required: 0,
ask: 1,
deleted: 0,
configid: dojo.byId('editresid').value};
configvariablegrid.store.newItem(item);
configvariablegrid.sort();
setTimeout(function() {
if(configvariablegrid.selection.selectedIndex >= 0)
configvariablegrid.selection.setSelected(configvariablegrid.selection.selectedIndex, false);
// TODO fix problem of another row being highlighted due to being the focused row
for(var i = 0, last = configvariablegrid.rowCount; i < last; i++) {
if((configvariablegrid.getItem(i)) && configvariablegrid.getItem(i).id == newcfgvarid) {
configvariablegrid.selection.setSelected(i, true);
break;
}
}
newcfgvarid++;
configvariablegrid.scrollToRow(configvariablegrid.selection.selectedIndex);
configvariablegrid.update();
}, 1);
}
function updateConfigVariable() {
if(nocfgvarupdates)
return 1;
if(dojo.hasClass('editcfgvardiv', 'hidden'))
return 1;
var varid = dojo.byId('varid').value;
if(varid == '')
return 1;
if(! checkValidatedObj('varname', null))
return 0;
if(! checkValidatedObj('varidentifier', null))
return 0;
var name = dijit.byId('varname').get('value');
var identifier = dijit.byId('varidentifier').get('value');
var type = dijit.byId('cfgvartype').get('displayedValue');
var typeid = dijit.byId('cfgvartype').get('value');
if(type == 'bool') {
var defaultvalue = dijit.byId('vartypebool').get('value');
}
else if(type == 'text') {
var defaultvalue = dijit.byId('vartypetext').get('value');
}
else {
if(! checkValidatedObj('vartype' + type, null))
return 0;
var defaultvalue = dijit.byId('vartype' + type).get('value');
}
if(dijit.byId('varrequired').get('checked'))
var required = 1;
else
var required = 0;
if(dijit.byId('varask').get('checked'))
var ask = 1;
else
var ask = 0;
configvariablegrid.store.fetch({
query: {id: varid},
onItem: function(item) {
var store = configvariablegrid.store;
store.setValue(item, 'name', name);
store.setValue(item, 'identifier', identifier);
store.setValue(item, 'datatypeid', typeid);
store.setValue(item, 'defaultvalue', defaultvalue);
store.setValue(item, 'required', required);
store.setValue(item, 'ask', ask);
}
});
return 1;
}
function delayedUpdateConfigVariable() {
clearTimeout(cfgvartimeout);
cfgvartimeout = setTimeout(updateConfigVariable, 1000);
}
function deleteConfigVariable() {
if(dojo.byId('varid').value == '')
return;
dojo.addClass('editcfgvardiv', 'hidden');
dojo.removeClass('undeletecfgvardiv', 'hidden');
configvariablegrid.store.fetch({
query: {id: dojo.byId('varid').value},
onItem: function(item) {
var store = configvariablegrid.store;
store.setValue(item, 'deleted', 1);
}
});
}
function undeleteConfigVariable() {
if(dojo.byId('varid').value == '')
return;
var node = configvariablegrid.views.views[0].getCellNode(configvariablegrid.selection.selectedIndex, 0);
dojo.removeClass(node, 'strikethrough');
dojo.addClass('undeletecfgvardiv', 'hidden');
dojo.removeClass('editcfgvardiv', 'hidden');
configvariablegrid.store.fetch({
query: {id: dojo.byId('varid').value},
onItem: function(item) {
var store = configvariablegrid.store;
store.setValue(item, 'deleted', 0);
}
});
}
function configVarListStyle(row) {
var item = configvariablegrid.getItem(row.index);
if(item) {
var deleted = configvariablegrid.store.getValue(item, 'deleted');
if(deleted == 1)
row.customClasses += ' strikethrough';
}
configvariablegrid.focus.styleRow(row);
configvariablegrid.edit.styleRow(row);
}
function addStrikethrough() {
var node = configvariablegrid.views.views[0].getCellNode(configvariablegrid.selection.selectedIndex, 0);
dojo.addClass(node, 'strikethrough');
}
function serializeConfigVars() {
var cfgvars = [];
var tmp = configvariablegrid.store._getItemsArray();
for(var i = 0; i < tmp.length; i++) {
if(tmp[i]['deleted'] == 1 && tmp[i]['id'] > 15000000)
continue;
var myvar = '';
myvar = '"' + tmp[i]['id'];
myvar += '":{"id":"' + tmp[i]['id'];
myvar += '","name":"' + tmp[i]['name'];
myvar += '","identifier":"' + tmp[i]['identifier'];
myvar += '","datatypeid":"' + tmp[i]['datatypeid'];
var datatype = getCfgVarType(tmp[i]['datatypeid']);
if(datatype == 'text')
myvar += '","defaultvalue":"' + tmp[i]['defaultvalue'][0].replace(/\n/g, '\\n');
else
myvar += '","defaultvalue":"' + tmp[i]['defaultvalue'];
myvar += '","required":"' + tmp[i]['required'];
myvar += '","ask":"' + tmp[i]['ask'];
myvar += '","deleted":"' + tmp[i]['deleted'];
myvar += '"}';
cfgvars.push(myvar);
}
var all = cfgvars.join(',');
return '{"items":{' + all + '}}';
}
function serializeConfigSubimages() {
var subimages = [];
var tmp = subimagegrid.store._getItemsArray();
if(tmp.length == 0)
return '';
for(var i = 0; i < tmp.length; i++) {
if(tmp[i]['deleted'] == 1 && tmp[i]['id'] > 15000000)
continue;
var myvar = '';
myvar = '"' + tmp[i]['id'];
myvar += '":{"id":"' + tmp[i]['id'];
myvar += '","imageid":"' + tmp[i]['imageid'];
myvar += '","min":"' + tmp[i]['min'];
myvar += '","max":"' + tmp[i]['max'];
myvar += '","deleted":"' + tmp[i]['deleted'];
myvar += '"}';
subimages.push(myvar);
}
var all = subimages.join(',');
return '{"items":{' + all + '}}';
}
function getCfgVarType(id) {
var options = dijit.byId('cfgvartype').options;
for(var i = 0; i < options.length; i++) {
if(options[i].value == id)
return options[i].label;
}
}
function configSetType() {
var type = dijit.byId('type').get('displayedValue');
dojo.removeClass('configdatadiv', 'hidden');
dojo.removeClass('configvariables', 'hidden');
dojo.addClass('subimageextradiv', 'hidden');
dojo.addClass('vlanextradiv', 'hidden');
dojo.byId('datalabel').innerHTML = type;
if(type == 'Cluster') { // TODO - might need to be updated
dojo.addClass('configdatadiv', 'hidden');
dojo.addClass('configvariables', 'hidden');
dojo.removeClass('subimageextradiv', 'hidden');
dojo.addClass('vlanextradiv', 'hidden');
}
else if(type == 'VLAN') {
dojo.addClass('configdatadiv', 'hidden');
dojo.addClass('configvariables', 'hidden');
dojo.addClass('subimageextradiv', 'hidden');
dojo.removeClass('vlanextradiv', 'hidden');
}
recenterDijitDialog('addeditdlg');
}
function fmtConfigMapDeleteBtn(configmapid, rowIndex) {
var btn = new dijit.form.Button({
label: 'Delete',
onClick: function() {
deleteConfigMapping(configmapid);
}
});
btn._destroyOnRemove = true;
return btn;
}
function fmtConfigMapEditBtn(configmapid, rowIndex) {
var btn = new dijit.form.Button({
label: 'Edit',
onClick: function() {
editConfigMapping(configmapid);
}
});
btn._destroyOnRemove = true;
return btn;
}
function deleteConfigMapping(configmapid) {
var data = {configmapid: configmapid,
continuation: dojo.byId('deletecfgmapcont').value};
RPCwrapper(data, deleteConfigMappingCB, 1);
}
function deleteConfigMappingCB(data, ioArgs) {
// TODO handle errors
if(data.items.status == 'success') {
dojo.byId('delcfgmapdlgcontent').innerHTML = data.items.html;
dojo.byId('submitdeletecfgmapcont').value = data.items.cont;
dijit.byId('delcfgmapdlg').show();
}
else if(data.items.status == 'notfound') {
alert("Error occurred: Config mapping not found");
}
}
function submitDeleteConfigMapping() {
var data = {continuation: dojo.byId('submitdeletecfgmapcont').value};
RPCwrapper(data, submitDeleteConfigMappingCB, 1);
}
function submitDeleteConfigMappingCB(data, ioArgs) {
// TODO handle errors
if(data.items.status == 'success') {
dijit.byId('delcfgmapdlg').hide();
dojo.byId('delcfgmapdlgcontent').innerHTML = '';
dojo.byId('submitdeletecfgmapcont').value = '';
configmapgrid.store.fetch({
query: {id: data.items.configmapid},
onItem: function(item) {
configmapgrid.store.deleteItem(item);
}
});
}
}
function editConfigMapping(configmapid) {
dojo.byId('editcfgmapid').value = configmapid;
var data = {configmapid: configmapid,
continuation: dojo.byId('editcfgmapcont').value};
RPCwrapper(data, editConfigMappingCB, 1);
}
function editConfigMappingCB(data, ioArgs) {
dojo.byId('savecfgmapcont').value = data.items.cont;
dijit.byId('addeditcfgmapdlg').set('title', 'Edit Config Mapping');
dijit.byId('addeditcfgmapbtn').set('label', 'Save Changes');
dijit.byId('config')._lastValueReported = data.items.data.configid;
dijit.byId('config').set('value', data.items.data.configid, false);
if(data.items.data.configtype == 'Cluster')
dijit.byId('maptype').setStore(maptypestore, '', {query: {clusterok: '1'}});
else
dijit.byId('maptype').setStore(maptypestore, '', {query: {id: '*'}});
dijit.byId('maptype').set('value', data.items.data.configmaptypeid);
dijit.byId('affil').set('value', data.items.data.affiliationid);
dijit.byId('stage').set('value', data.items.data.stageid);
if(data.items.data.prettyconfigmaptype == 'Image')
dijit.byId('image').set('value', data.items.data.subid);
else if(data.items.data.prettyconfigmaptype == 'OS Type')
dijit.byId('ostype').set('value', data.items.data.subid);
else if(data.items.data.prettyconfigmaptype == 'OS')
dijit.byId('os').set('value', data.items.data.subid);
else if(data.items.data.prettyconfigmaptype == 'Config')
dijit.byId('mapconfig').set('value', data.items.data.subid);
else if(data.items.data.prettyconfigmaptype == 'Subimage')
dijit.byId('configsubimage').set('value', data.items.data.subid);
else if(data.items.data.prettyconfigmaptype == 'Management Node')
dijit.byId('managementnode').set('value', data.items.data.subid);
editConfigMapSetMapType();
dijit.byId('addeditcfgmapdlg').show();
}
function configMapSetConfig() {
var id = dijit.byId('config').get('value');
mapconfigliststore.fetch({
query: {id: id},
onItem: function(item) {
if(item.stage[0] === null)
dojo.removeClass('stagediv', 'hidden');
else
dojo.addClass('stagediv', 'hidden');
dojo.byId('mapconfigtype').innerHTML = item.configtype;
var queryobj = dijit.byId('maptype').params.query;
if(item.configtype == 'Cluster') {
//if(typeof queryobj.clusterid === 'undefined')
dijit.byId('maptype').setStore(maptypestore, '', {query: {clusterok: '1'}});
}
else {
//if(typeof queryobj.id === 'undefined')
dijit.byId('maptype').setStore(maptypestore, '', {query: {id: '*'}});
}
}
});
}
function editConfigMapSetMapType() {
var maptype = dijit.byId('maptype').get('displayedValue');
dojo.addClass('imagetypediv', 'hidden');
dojo.addClass('ostypediv', 'hidden');
dojo.addClass('osdiv', 'hidden');
dojo.addClass('configdiv', 'hidden');
dojo.addClass('configsubimagediv', 'hidden');
dojo.addClass('managementnodediv', 'hidden');
if(maptype == 'Image')
dojo.removeClass('imagetypediv', 'hidden');
else if(maptype == 'OS Type')
dojo.removeClass('ostypediv', 'hidden');
else if(maptype == 'OS')
dojo.removeClass('osdiv', 'hidden');
else if(maptype == 'Config')
dojo.removeClass('configdiv', 'hidden');
else if(maptype == 'Subimage')
dojo.removeClass('configsubimagediv', 'hidden');
else if(maptype == 'Management Node')
dojo.removeClass('managementnodediv', 'hidden');
}
function addConfigMapping() {
dojo.byId('editcfgmapid').value = 0;
dijit.byId('addeditcfgmapdlg').set('title', 'Add Config Mapping');
dijit.byId('addeditcfgmapbtn').set('label', 'Add Config Mapping');
resetConfigMappingFields();
editConfigMapSetMapType();
dijit.byId('addeditcfgmapdlg').show();
}
function saveConfigMapping() {
var errobj = dojo.byId('addeditcfgmapdlgerrmsg');
if(! checkValidatedObj('config', errobj))
return;
var maptype = dijit.byId('maptype').get('displayedValue');
if((maptype == 'Image' && ! checkValidatedObj('image', errobj)) ||
(maptype == 'OS Type' && ! checkValidatedObj('ostype', errobj)) ||
(maptype == 'OS' && ! checkValidatedObj('os', errobj)) ||
(maptype == 'Config' && ! checkValidatedObj('mapconfig', errobj)) ||
(maptype == 'Subimage' && ! checkValidatedObj('configsubimage', errobj)) ||
(maptype == 'Management Node' && ! checkValidatedObj('managementnode', errobj)))
return;
if(! checkValidatedObj('affil', errobj) ||
! checkValidatedObj('stage', errobj))
return;
var data = {configmapid: dojo.byId('editcfgmapid').value,
configid: dijit.byId('config').get('value'),
maptypeid: dijit.byId('maptype').get('value'),
affiliationid: dijit.byId('affil').get('value'),
stageid: dijit.byId('stage').get('value')};
if(dijit.byId('addeditcfgmapbtn').get('label') == 'Add Config Mapping')
data.continuation = dojo.byId('addcfgmapcont').value;
else
data.continuation = dojo.byId('savecfgmapcont').value;
if(maptype == 'Image')
data.subid = dijit.byId('image').get('value');
else if(maptype == 'OS Type')
data.subid = dijit.byId('ostype').get('value');
else if(maptype == 'OS')
data.subid = dijit.byId('os').get('value');
else if(maptype == 'Config')
data.subid = dijit.byId('mapconfig').get('value');
else if(maptype == 'Subimage')
data.subid = dijit.byId('configsubimage').get('value');
else if(maptype == 'Management Node')
data.subid = dijit.byId('managementnode').get('value');
dijit.byId('addeditcfgmapbtn').set('disabled', true);
RPCwrapper(data, saveConfigMappingCB, 1);
}
function saveConfigMappingCB(data, ioArgs) {
if(data.items.status == 'error') {
dojo.byId('addeditcfgmapdlgerrmsg').innerHTML = data.items.msg;
dijit.byId('addeditcfgmapbtn').set('disabled', false);
}
else if(data.items.status == 'success') {
if(data.items.action == 'add') {
configmapgrid.store.newItem(data.items.item);
configmapgrid.sort();
}
else {
configmapgrid.store.fetch({
query: {id: data.items.data.id},
onItem: function(item) {
for(var key in data.items.data) {
if(key == 'id')
continue;
configmapgrid.store.setValue(item, key, data.items.data[key]);
}
},
onComplete: function(items, result) {
// when call resourcegrid.sort directly, the table contents disappear; not sure why
setTimeout(function() {configmapgrid.sort();}, 10);
}
});
}
dijit.byId('addeditcfgmapdlg').hide();
resetConfigMappingFields();
setTimeout(function() {dijit.byId('addeditcfgmapbtn').set('disabled', false)}, 250);
}
}
function resetConfigMappingFields() {
dijit.byId('config').reset();
dijit.byId('maptype').reset();
dijit.byId('image').reset();
dijit.byId('ostype').reset();
dijit.byId('os').reset();
dijit.byId('mapconfig').reset();
dijit.byId('configsubimage').reset();
dijit.byId('managementnode').reset();
dijit.byId('affil').reset();
dijit.byId('stage').reset();
dojo.byId('addeditcfgmapdlgerrmsg').innerHTML = '';
}