| /* |
| * 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 Computer() { |
| Resource.apply(this, Array.prototype.slice.call(arguments)); |
| this.selids = []; |
| this.selectingall = false; |
| this.restype = 'computer'; |
| } |
| Computer.prototype = new Resource(); |
| |
| var filterstore; |
| var filtercbstores = {}; |
| var extrafiltergrid; |
| var savescroll = 0; |
| var editobj; |
| var addedit = 'edit'; |
| var lastselected = {blade: {provisioningid: '', stateid: ''}, |
| lab: {provisioningid: '', stateid: ''}, |
| virtualmachine: {provisioningid: '', stateid: ''}}; |
| var filterdelay; |
| |
| String.prototype.ucfirst = function() { |
| return this.charAt(0).toUpperCase() + this.slice(1); |
| } |
| |
| Computer.prototype.DeleteBtn = function(rscid, rowIndex) { |
| var rowdata = this.grid.getItem(rowIndex); |
| if(! ('deleted' in rowdata) || rowdata.deleted == '0') { |
| var id = 'chkb' + rowdata.id; |
| if(dojo.indexOf(resource.selids, id) != -1) |
| var checked = true; |
| else |
| var checked = false; |
| var cb = new dijit.form.CheckBox({ |
| id: id, |
| value: rowdata.id, |
| checked: checked, |
| onClick: selectRow |
| }); |
| cb._destroyOnRemove = true; |
| return cb; |
| } |
| // resource has deleted set |
| return ' '; |
| } |
| |
| Computer.prototype.EditBtn = function(rscid, rowIndex) { |
| var rowdata = this.grid.getItem(rowIndex); |
| if(! ('deleted' in rowdata) || rowdata.deleted == '0') { |
| var btn = new dijit.form.Button({ |
| label: 'Edit', |
| onClick: function() { |
| editResource(rscid); |
| } |
| }); |
| } |
| else { |
| var btn = new dijit.form.Button({ |
| label: 'Undelete', |
| onClick: function() { |
| toggleDeleteResource(rscid); |
| } |
| }); |
| } |
| btn._destroyOnRemove = true; |
| return btn; |
| } |
| |
| Computer.prototype.colformatter = function(value, rowIndex, obj) { |
| if(obj.field == 'state') { |
| if(value == 'failed') |
| return '<span class="rederrormsg">failed</span>'; |
| if(value == 'available') |
| return '<span class="ready">available</span>'; |
| if(value == 'reloading') |
| return '<span class="wait">reloading</span>'; |
| } |
| else if(obj.field == 'notes' && value) { |
| return value.replace('@', '<br>').replace(/\n/g, '<br>'); |
| } |
| else if(obj.field == 'deleted' || |
| obj.field == 'natenabled' || |
| obj.field == 'nathostenabled') { |
| if(value == "0") |
| return '<span class="rederrormsg">false</span>'; |
| if(value == "1") |
| return '<span class="ready">true</span>'; |
| } |
| return value; |
| } |
| |
| Computer.prototype.toggleResFieldDisplay = function(obj, field) { |
| for(var i in resourcegrid.layout.cells) { |
| if(resourcegrid.layout.cells[i].field == field) { |
| if(obj.checked) { |
| resourcegrid.layout.setColumnVisibility(i, true); |
| extrafiltergrid.layout.setColumnVisibility(i, true); |
| } |
| else { |
| resourcegrid.layout.setColumnVisibility(i, false); |
| extrafiltergrid.layout.setColumnVisibility(i, false); |
| delete resourcegrid.query[field]; |
| resourcegrid.setQuery(resourcegrid.query); |
| } |
| break; |
| } |
| } |
| this.updateFieldCookie(field, obj.checked); |
| } |
| |
| Computer.prototype.GridFilter = function() { |
| if(dijit.byId('showdeleted').get('value')) { |
| var width = '5.1em'; |
| var showdeleted = '*'; |
| } |
| else { |
| var width = '3em'; |
| var showdeleted = '0'; |
| } |
| resourcegrid.setCellWidth(1, width); |
| resourcegrid.layout.cells[1].view.update(); |
| extrafiltergrid.setCellWidth(1, width); |
| extrafiltergrid.layout.cells[1].view.update(); |
| |
| var query = resourcegrid.query; |
| query['deleted'] = showdeleted; |
| |
| resourcegrid.setQuery(query); |
| } |
| |
| function filterKeyDown(e) { |
| if(e.keyCode == dojo.keys.ENTER) { |
| dojo.stopEvent(e); |
| dijit.byId('ownercb').focus(); |
| var focusnext = 0; |
| var cells = extrafiltergrid.layout.cells; |
| for(var i = 2; i < cells.length; i++) { |
| if(focusnext && ! cells[i].hidden) { |
| dijit.byId(cells[i].field + 'cb').focus(); |
| focusnext = 2; |
| break; |
| } |
| if(cells[i].field + 'cb' == e.target.id) { |
| focusnext = 1; |
| continue; |
| } |
| } |
| if(focusnext == 1) |
| dijit.byId(cells[2].field + 'cb').focus(); |
| } |
| } |
| |
| Computer.prototype.Selection = function() { |
| // TODO this messes up when all rows have been selected with selectAllRows |
| // and then a row is unselected because this function only handles |
| // rendered rows |
| var sel = resourcegrid.selection.selected; |
| if(! resource.selectingall) { |
| dojo.forEach(resource.selids, function(id) { |
| if(dijit.byId(id)) |
| dijit.byId(id).set('checked', false); |
| }); |
| resource.selids = []; |
| } |
| for(var i = 0; i < sel.length; i++) { |
| if(sel[i]) { |
| var comp = resourcegrid.getItem(i); |
| if(! resource.selectingall) { |
| if(! parseInt(comp.deleted)) |
| resource.selids.push('chkb' + comp.id); |
| else |
| resourcegrid.selection.deselect(comp); |
| } |
| if(dijit.byId('chkb' + comp.id)) |
| dijit.byId('chkb' + comp.id).set('checked', true); |
| } |
| } |
| if(resource.selids.length != resourcegrid.rowCount) |
| dijit.byId('selectallchkb').set('checked', false); |
| else |
| dijit.byId('selectallchkb').set('checked', true); |
| } |
| |
| Computer.prototype.nocasesort = function(a, b) { |
| if(typeof a != 'string' && typeof b != 'string') |
| return 0; |
| if(typeof a != 'string') |
| return -1; |
| if(typeof b != 'string') |
| return 1; |
| var al = a.toLowerCase(); |
| var bl = b.toLowerCase(); |
| if(al.match(/[0-9]/) || |
| bl.match(/[0-9]/)) { |
| return resource.comparehostnames(al, bl); |
| } |
| if(al < bl) |
| return -1; |
| if(bl < al) |
| return 1; |
| return 0; |
| } |
| |
| Computer.prototype.ipsort = function(a, b) { |
| var aparts = a.split('.'); |
| var bparts = b.split('.'); |
| for(var i = 0; i < 4; i++) { |
| aparts[i] = parseInt(aparts[i]); |
| bparts[i] = parseInt(bparts[i]); |
| } |
| if(aparts[0] < bparts[0]) |
| return -1; |
| if(aparts[0] > bparts[0]) |
| return 1; |
| if(aparts[1] < bparts[1]) |
| return -1; |
| if(aparts[1] > bparts[1]) |
| return 1; |
| if(aparts[2] < bparts[2]) |
| return -1; |
| if(aparts[2] > bparts[2]) |
| return 1; |
| if(aparts[3] < bparts[3]) |
| return -1; |
| if(aparts[3] > bparts[3]) |
| return 1; |
| return 0; |
| } |
| |
| Computer.prototype.comparehostnames = function(a, b) { |
| // get hostname |
| var tmp = a.split('.'); |
| var h1 = tmp.shift(); |
| var letters1 = h1.replace(/([^a-zA-Z])/g, ''); |
| |
| tmp = b.split('.'); |
| var h2 = tmp.shift(); |
| var letters2 = h2.replace(/([^a-zA-Z])/g, ''); |
| |
| // if non-numeric part is different, return based on that |
| cmp = letters1.localeCompare(letters2); |
| if(cmp) |
| return cmp; |
| |
| // at this point, the only difference is in the numbers |
| var digits1 = h1.replace(/([^\d-])/g, ''); |
| var digits1Arr = digits1.split('-'); |
| var digits2 = h2.replace(/([^\d-])/g, ''); |
| var digits2Arr = digits2.split('-'); |
| |
| var len1 = digits1Arr.length; |
| var len2 = digits2Arr.length; |
| for(var i = 0; i < len1 && i < len2; i++) { |
| if(parseInt(digits1Arr[i]) < parseInt(digits2Arr[i])) |
| return -1; |
| else if(parseInt(digits1Arr[i]) > parseInt(digits2Arr[i])) |
| return 1; |
| } |
| |
| return 0; |
| } |
| |
| var resource = new Computer(); |
| |
| function initPage() { |
| if(dojo.byId('reloadpageurl')) |
| return; |
| document.body.style.cursor = 'wait'; |
| if(! ('resourcegrid' in window)) { |
| setTimeout(function() { |
| initPage(); |
| }, 100); |
| return; |
| } |
| else { |
| document.body.style.cursor = 'default'; |
| buildExtraFilters(); |
| |
| // set width of first column |
| resourcegrid.setCellWidth(0, '21px'); |
| resourcegrid.layout.cells[0].view.update(); |
| |
| // connect selection |
| dojo.connect(resourcegrid, 'onSelectionChanged', this, resource.Selection); |
| |
| // hide resource name filter |
| dojo.addClass('namefilter', 'hidden'); |
| |
| // connect scrolling stuff |
| dojo.connect(resourcegrid, 'postrender', setScroll); |
| dojo.connect(resourcegrid.views.views[0].scrollboxNode, 'onscroll', saveScroll); |
| |
| // select all computer groups |
| for(var i = 0; i < dojo.byId('filtercompgroups').options.length; i++) { |
| dojo.byId('filtercompgroups').options[i].selected = true; |
| } |
| |
| // confirm new nathost button |
| if(dijit.byId('newnathostid').options.length == 0) |
| dijit.byId('newnathostbtn').set('disabled', true); |
| |
| clearTimeout(filterdelay); |
| |
| if(! resourcestore.comparatorMap) { |
| resourcestore.comparatorMap = {}; |
| } |
| resourcestore.comparatorMap['ram'] = resource.nocasesort; |
| resourcestore.comparatorMap['procnumber'] = resource.nocasesort; |
| resourcestore.comparatorMap['procspeed'] = resource.nocasesort; |
| resourcestore.comparatorMap['network'] = resource.nocasesort; |
| resourcestore.comparatorMap['IPaddress'] = resource.ipsort; |
| resourcestore.comparatorMap['privateIPaddress'] = resource.ipsort; |
| resourcestore.comparatorMap['vmhost'] = resource.nocasesort; |
| |
| dojo.connect(resourcegrid, '_onFetchComplete', function() {dojo.byId('computercount').innerHTML = 'Computers in table: ' + resourcegrid.rowCount;}); |
| } |
| } |
| |
| function selectRow(e) { |
| var id = this.id.replace('chkb', ''); |
| if(this.checked) { |
| resource.selids.push(this.id); |
| resourcestore.fetchItemByIdentity({ |
| identity: id, |
| onItem: function(item, req) { |
| resourcegrid.selection.addToSelection(resourcegrid.getItemIndex(item)); |
| } |
| }); |
| } |
| else { |
| var index = resource.selids.indexOf(id); |
| if(index > -1) |
| resource.selids.splice(index, 1); |
| resourcestore.fetchItemByIdentity({ |
| identity: id, |
| onItem: function(item, req) { |
| resourcegrid.selection.deselect(resourcegrid.getItemIndex(item)); |
| } |
| }); |
| } |
| dojo.stopEvent(e); |
| } |
| |
| function selectAllRows() { |
| resourcestore.fetch({ |
| query: resourcegrid.query, |
| onComplete: function(items, request) { |
| resource.selectingall = true; |
| if(resource.selids.length) { |
| dojo.forEach(resource.selids, function(id) { |
| if(dijit.byId(id)) |
| dijit.byId(id).set('checked', false); |
| }); |
| resource.selids = []; |
| resourcegrid.selection.clear(); |
| dijit.byId('selectallchkb').set('checked', false); |
| } |
| else { |
| resource.selids = []; |
| dojo.forEach(items, function(item) { |
| if(! parseInt(item.deleted)) { |
| resource.selids.push('chkb' + item.id); |
| resourcegrid.selection.addToSelection(resourcegrid.getItemIndex(item)); |
| } |
| }) |
| dijit.byId('selectallchkb').set('checked', true); |
| } |
| resource.selectingall = false; |
| } |
| }); |
| } |
| |
| function buildExtraFilters() { |
| // create grid layout |
| var obj = {}; |
| var layout = []; |
| var cells = resourcegrid.layout.cells; |
| for(var i = 0; i < cells.length; i++) { |
| var litem = {}; |
| obj[cells[i].field] = ''; |
| litem['field'] = cells[i].field; |
| if(cells[i].field == 'id') |
| litem['name'] = ' '; |
| else |
| litem['name'] = cells[i].name; |
| litem['hidden'] = cells[i].hidden; |
| if(i == 0) |
| litem['width'] = '21px'; |
| else if(typeof cells[i].width != 'undefined') |
| litem['width'] = cells[i].width; |
| litem['editable'] = false; |
| if(i == 0) { |
| litem['formatter'] = function(value, index, item) { |
| var cb = new dijit.form.CheckBox({ |
| id: 'selectallchkb', |
| checked: false, |
| onClick: selectAllRows, |
| _destroyOnRemove: true |
| }); |
| return cb; |
| } |
| } |
| if(i == 1) { |
| litem['formatter'] = function(value, index, item) { |
| item.customStyles.push('background-color: #e8e8e8'); |
| item.customStyles.push('border: 1px solid black'); |
| item.customStyles.push('text-align: center'); |
| return '<span id=\"applyextrafilters\">Apply</span>'; |
| } |
| } |
| else if(i > 1) { |
| litem['formatter'] = function(value, index, item) { |
| if(dijit.byId(item.field + 'cb')) |
| return dijit.byId(item.field + 'cb'); |
| if(item.field in filtercbstores) |
| var store = filtercbstores[item.field]; |
| else |
| var store = dojo.data.ItemFileReadStore({}); |
| var cb = new dijit.form.ComboBox({ |
| selectOnClick: true, |
| store: store, |
| id: item.field + "cb", |
| required: false, |
| query: {id: '*'}, |
| onChange: applyExtraFilters, |
| field: item.field, |
| queryExpr: '*${0}*', |
| autoComplete: false, |
| labelFunc: cbformatter, |
| labelType: 'html', |
| searchAttr: 'value', |
| fetchProperties: {sort: [{attribute:"value"}]} |
| }); |
| if(typeof item.width != 'undefined') { |
| if(item.width.match(/px/)) |
| var newwidth = (parseInt(item.width) - 11) + 'px'; |
| else |
| var newwidth = (parseInt(item.width) - 0.6) + 'em'; |
| cb.set('style', {width: newwidth}); |
| } |
| else if(typeof item.unitWidth != 'undefined') { |
| if(item.unitWidth.match(/px/)) |
| var newwidth = (parseInt(item.unitWidth) - 11) + 'px'; |
| else |
| var newwidth = (parseInt(item.unitWidth) - 0.6) + 'em'; |
| cb.set('style', {width: newwidth}); |
| } |
| return cb; |
| }; |
| } |
| layout.push(litem); |
| } |
| var data = {items: [obj]}; |
| filterstore = new dojo.data.ItemFileReadStore({data: data}); |
| extrafiltergrid = new dojox.grid.DataGrid({ |
| query: {name: '*'}, |
| store: filterstore, |
| structure: layout, |
| canSort: function() {return false;}, |
| onCellClick: combofocus, |
| autoWidth: true |
| }, document.createElement('div')); |
| dojo.byId('extrafiltersdiv').appendChild(extrafiltergrid.domNode); |
| extrafiltergrid.startup(); |
| var cells = extrafiltergrid.layout.cells; |
| for(var i = 2; i < cells.length; i++) { |
| dojo.connect(dijit.byId(cells[i].field + 'cb'), 'onKeyDown', null, filterKeyDown); |
| } |
| |
| // create stores for comboboxes |
| resourcestore.fetch({ |
| onComplete: function(items, request) { |
| var data = {}; |
| var seen = {}; |
| var cells = resourcegrid.layout.cells; |
| dojo.forEach(items, function(item) { |
| for(var i = 0; i < cells.length; i++) { |
| if(cells[i].field == 'id') |
| continue; |
| var field = cells[i].field; |
| if(! (field in seen)) { |
| seen[field] = []; |
| data[field] = []; |
| } |
| if(dojo.indexOf(seen[field], item[field]) == -1) { |
| seen[field].push(item[field].toString()); |
| data[field].push({id: item.id.toString(), value: item[cells[i].field].toString()}); |
| } |
| } |
| }); |
| for(var i = 0; i < cells.length; i++) { |
| if(cells[i].field == 'id') |
| continue; |
| var field = cells[i].field; |
| var store = new dojo.data.ItemFileReadStore({data: {identifier:'id', label:'value', items: data[field]}}); |
| filtercbstores[field] = store; |
| dijit.byId(field + 'cb').set('store', store); |
| } |
| } |
| }); |
| } |
| |
| function cbformatter(item, store) { |
| var comp = new Computer(); |
| return comp.colformatter(store.getValue(item, 'value'), '', this); |
| } |
| |
| function combofocus(obj) { |
| if(dijit.byId(obj.cell.field + "cb")) |
| dijit.byId(obj.cell.field + "cb").focus(); |
| } |
| |
| function applyExtraFilters(value) { |
| delete resourcegrid.query[this.field]; |
| value = value.replace('(', '\\('); |
| value = value.replace(')', '\\)'); |
| if(this.field == 'state' && value == 'inuse') |
| resourcegrid.query[this.field] = value; |
| else if(value != '') |
| resourcegrid.query[this.field] = new RegExp('.*' + value + '.*', 'i'); |
| resourcegrid.setQuery(resourcegrid.query); |
| |
| dojo.byId('computercount').innerHTML = 'Computers in table: ' + resourcegrid.rowCount; |
| |
| var savelist = resource.selids; |
| resourcegrid.selection.clear(); |
| var newselids = []; |
| for(var i = 0; i < resourcegrid.rowCount; i++) { |
| var row = resourcegrid.getItem(i); |
| if(! row) |
| continue; |
| var id = 'chkb' + row.id; |
| if(dojo.indexOf(savelist, id) != -1) { |
| newselids.push(id); |
| resourcegrid.selection.addToSelection(resourcegrid.getItemIndex(row)); |
| dijit.byId(id).set('checked', true); |
| } |
| } |
| resourcegrid.selids = newselids; |
| } |
| |
| function addNewResource(title) { |
| if(dijit.byId('scheduleid').options.length == 0) { |
| dijit.byId('noschedulenoadd').show(); |
| return; |
| } |
| dijit.byId('mode').set('value', 'single'); |
| addedit = 'add'; |
| resetEditResource(); |
| dijit.byId('type').reset(); |
| selectType(); |
| dijit.byId('addeditdlg').set('title', title); |
| dijit.byId('addeditbtn').set('label', title); |
| dojo.byId('editresid').value = 0; |
| dojo.removeClass('singlemultiplediv', 'hidden'); |
| dojo.addClass('notesspan', 'hidden'); |
| dojo.addClass('vmprofilespan', 'hidden'); |
| dojo.addClass('curimgspan', 'hidden'); |
| dojo.addClass('compidspan', 'hidden'); |
| dijit.byId('nathostid').set('disabled', true); |
| dijit.byId('nathostenabled').set('checked', false); |
| dijit.byId('natpublicipaddress').set('disabled', true); |
| dijit.byId('natinternalipaddress').set('disabled', true); |
| dijit.byId('addeditdlg').show(); |
| } |
| |
| function toggleSingleMultiple() { |
| if(dijit.byId('mode').get('value') == 'single') |
| toggleAddSingle(); |
| else |
| toggleAddMultiple(); |
| } |
| |
| function toggleAddSingle() { |
| dojo.addClass('multiplenotediv', 'hidden'); |
| dojo.addClass('startenddiv', 'hidden'); |
| dojo.addClass('multiipmacdiv', 'hidden'); |
| dojo.removeClass('singleipmacdiv', 'hidden'); |
| dojo.removeClass('nathost', 'hidden'); |
| dijit.byId('name').set('regExp', '^([a-zA-Z0-9_][-a-zA-Z0-9_\.]{1,35})$'); |
| dijit.byId('addeditbtn').setLabel('Add Computer'); |
| recenterDijitDialog('addeditdlg'); |
| } |
| |
| function toggleAddMultiple() { |
| dojo.removeClass('multiplenotediv', 'hidden'); |
| dojo.removeClass('startenddiv', 'hidden'); |
| dojo.removeClass('multiipmacdiv', 'hidden'); |
| dojo.addClass('singleipmacdiv', 'hidden'); |
| dojo.addClass('nathost', 'hidden'); |
| dijit.byId('name').set('regExp', '^([a-zA-Z0-9_%][-a-zA-Z0-9_\.%]{1,35})$'); |
| dijit.byId('addeditbtn').setLabel('Add Computers'); |
| recenterDijitDialog('addeditdlg'); |
| } |
| |
| function toggleNAT(chkid, selid) { |
| if(dijit.byId(chkid).checked) { |
| dijit.byId(selid).set('disabled', false); |
| } |
| else { |
| dijit.byId(selid).set('disabled', true); |
| } |
| if(chkid == 'natenabled' && |
| dijit.byId(chkid).checked && |
| dijit.byId('nathostenabled').checked) { |
| dijit.byId('nathostenabled').set('checked', false); |
| } |
| } |
| |
| function toggleNAThost() { |
| if(dijit.byId('nathostenabled').checked) { |
| if(dijit.byId('natenabled').checked) |
| dijit.byId('natenabled').set('checked', false); |
| dijit.byId('natpublicipaddress').set('disabled', false); |
| dijit.byId('natinternalipaddress').set('disabled', false); |
| } |
| else { |
| dijit.byId('natpublicipaddress').set('disabled', true); |
| dijit.byId('natinternalipaddress').set('disabled', true); |
| } |
| } |
| |
| function inlineEditResourceCB(data, ioArgs) { |
| dojo.addClass('singlemultiplediv', 'hidden'); |
| toggleAddSingle(); |
| if(data.items.status == 'success') { |
| addedit = 'edit'; |
| editobj = data.items.data; |
| dojo.addClass('cancelvmhostinuseokdiv', 'hidden'); |
| if(data.items.showcancel) { |
| dojo.removeClass('cancelvmhostinusediv', 'hidden'); |
| dojo.byId('tohostcancelcont').value = data.items.tohostcancelcont; |
| if(data.items.tohostfuture) { |
| dojo.addClass('tohostnowspan', 'hidden'); |
| dojo.removeClass('tohostfuturespan', 'hidden'); |
| dojo.byId('tohostfuturetimespan').innerHTML = data.items.tohoststart; |
| } |
| else { |
| dojo.removeClass('tohostnowspan', 'hidden'); |
| dojo.addClass('tohostfuturespan', 'hidden'); |
| } |
| } |
| else { |
| dojo.addClass('cancelvmhostinusediv', 'hidden'); |
| } |
| dijit.byId('type').set('value', data.items.data.type); |
| selectType(); |
| dijit.byId('provisioningid').set('value', data.items.data.provisioningid); |
| selectProvisioning(); |
| lastselected[data.items.data.type]['provisioningid'] = data.items.data.provisioningid; |
| dijit.byId('stateid').set('value', data.items.data.stateid); |
| lastselected[data.items.data.type]['stateid'] = data.items.data.stateid; |
| dojo.byId('saveresourcecont').value = data.items.cont; |
| dijit.byId('addeditdlg').set('title', data.items.title); |
| dijit.byId('addeditbtn').set('label', 'Save Changes'); |
| dijit.byId('addeditbtn').set('disabled', false); |
| dojo.byId('editresid').value = data.items.resid; |
| dijit.byId('name').set('value', data.items.data.hostname); |
| dijit.byId('owner').set('value', data.items.data.owner); |
| dijit.byId('ipaddress').set('value', data.items.data.IPaddress); |
| dijit.byId('privateipaddress').set('value', data.items.data.privateIPaddress); |
| dijit.byId('publicmac').set('value', data.items.data.eth1macaddress); |
| dijit.byId('privatemac').set('value', data.items.data.eth0macaddress); |
| if('notes' in data.items.data && data.items.data.notes) { |
| if(data.items.data.notes.match(/@/)) |
| dijit.byId('notes').set('value', data.items.data.notes.split('@')[1]); |
| else |
| dijit.byId('notes').set('value', data.items.data.notes); |
| } |
| dijit.byId('vmprofileid').set('value', data.items.data.vmprofileid); |
| dijit.byId('platformid').set('value', data.items.data.platformid); |
| dijit.byId('scheduleid').set('value', data.items.data.scheduleid); |
| dojo.byId('curimg').innerHTML = data.items.data.currentimg; |
| dijit.byId('ram').set('value', data.items.data.ram); |
| dijit.byId('cores').set('value', data.items.data.procnumber); |
| dijit.byId('procspeed').set('value', data.items.data.procspeed); |
| dijit.byId('network').set('value', data.items.data.network); |
| dijit.byId('predictivemoduleid').set('value', data.items.data.predictivemoduleid); |
| dojo.byId('compid').innerHTML = data.items.data.id; |
| dijit.byId('location').set('value', data.items.data.location); |
| if(data.items.data.natenabled == 1) { |
| dijit.byId('natenabled').set('checked', true); |
| dijit.byId('nathostid').set('disabled', false); |
| dijit.byId('nathostid').set('value', data.items.data.nathostid); |
| } |
| else { |
| dijit.byId('natenabled').set('checked', false); |
| dijit.byId('nathostid').set('disabled', true); |
| } |
| if(data.items.data.nathostenabled == 1) { |
| dijit.byId('nathostenabled').set('checked', true); |
| dijit.byId('natpublicipaddress').set('disabled', false); |
| dijit.byId('natinternalipaddress').set('disabled', false); |
| dijit.byId('natpublicipaddress').set('value', data.items.data.natpublicIPaddress); |
| dijit.byId('natinternalipaddress').set('value', data.items.data.natinternalIPaddress); |
| } |
| else { |
| dijit.byId('nathostenabled').set('checked', false); |
| dijit.byId('natpublicipaddress').set('disabled', true); |
| dijit.byId('natinternalipaddress').set('disabled', true); |
| dijit.byId('natpublicipaddress').set('value', ''); |
| dijit.byId('natinternalipaddress').set('value', ''); |
| } |
| dojo.byId('addeditdlgerrmsg').innerHTML = ''; |
| dijit.byId('addeditdlg').show(); |
| } |
| else if(data.items.status == 'noaccess') { |
| alert('Access denied to edit this item'); |
| } |
| } |
| |
| function selectType() { |
| var type = dijit.byId('type').get('value'); |
| var obj = dijit.byId('provisioningid'); |
| obj.options = []; |
| dojo.forEach(options[type]['provisioning'], function(prov) { |
| obj.addOption(prov); |
| }); |
| dijit.byId('provisioningid').set('value', lastselected[type]['provisioningid']); |
| var obj = dijit.byId('stateid'); |
| obj.options = []; |
| if(addedit == 'edit') { |
| if(type == 'virtualmachine' && parseInt(editobj.vmhostid) > 0 && |
| editobj.state != 'available') |
| obj.addOption({value: '2', label: 'available'}); |
| obj.addOption({value: editobj.stateid, label: editobj.state}); |
| } |
| dojo.forEach(options[type]['states'], function(state) { |
| if(addedit == 'edit' && state.value == editobj.stateid) |
| return; |
| if(addedit == 'add' && state.label == 'vmhostinuse' && |
| dijit.byId('provisioningid').attr('displayedValue') != 'None') |
| return; |
| obj.addOption({value: state.value, label: state.label}); |
| }); |
| dijit.byId('stateid').set('value', lastselected[type]['stateid']); |
| if(type == 'blade' && |
| dijit.byId('provisioningid').attr('displayedValue') == 'None' && |
| dijit.byId('stateid').attr('displayedValue') == 'vmhostinuse') |
| dojo.removeClass('vmprofilespan', 'hidden'); |
| else if(dijit.byId('stateid').attr('displayedValue') != 'vmhostinuse') |
| dojo.addClass('vmprofilespan', 'hidden'); |
| if(addedit == 'edit' && dijit.byId('stateid').attr('displayedValue') == 'maintenance') |
| dojo.removeClass('notesspan', 'hidden'); |
| else |
| dojo.addClass('notesspan', 'hidden'); |
| } |
| |
| function selectProvisioning() { |
| lastselected[dijit.byId('type').get('value')]['provisioningid'] = dijit.byId('provisioningid').get('value'); |
| var obj = dijit.byId('stateid'); |
| obj.options = []; |
| if(addedit == 'edit') { |
| if(dijit.byId('type').get('value') == 'virtualmachine' && |
| parseInt(editobj.vmhostid) > 0 && |
| editobj.state != 'available') |
| obj.addOption({value: '2', label: 'available'}); |
| var addedexisting = false; |
| } |
| dojo.forEach(options[dijit.byId('type').get('value')]['states'], function(state) { |
| if(((dijit.byId('type').get('value') == 'blade' && |
| dijit.byId('provisioningid').attr('displayedValue') == 'None') || |
| (addedit == 'add' && dijit.byId('type').get('value') == 'virtualmachine')) && |
| state.label == 'available') |
| return; |
| if(addedit == 'add' && state.label == 'vmhostinuse' && |
| dijit.byId('provisioningid').attr('displayedValue') != 'None') |
| return; |
| if(addedit == 'edit' && state.value == editobj.stateid) |
| addedexisting = true; |
| obj.addOption({value: state.value, label: state.label}); |
| }); |
| if(addedit == 'edit' && ! addedexisting) |
| obj.addOption({value: editobj.stateid, label: editobj.state}); |
| dijit.byId('stateid').set('value', lastselected[dijit.byId('type').get('value')]['stateid']); |
| } |
| |
| function selectState() { |
| lastselected[dijit.byId('type').get('value')]['stateid'] = dijit.byId('stateid').get('value'); |
| if(dijit.byId('type').get('value') == 'blade' && |
| dijit.byId('stateid').attr('displayedValue') == 'vmhostinuse') |
| dojo.removeClass('vmprofilespan', 'hidden'); |
| else if(dijit.byId('stateid').attr('displayedValue') != 'vmhostinuse') |
| dojo.addClass('vmprofilespan', 'hidden'); |
| if(addedit == 'edit' && dijit.byId('stateid').attr('displayedValue') == 'maintenance') |
| dojo.removeClass('notesspan', 'hidden'); |
| else |
| dojo.addClass('notesspan', 'hidden'); |
| } |
| |
| function resetEditResource() { |
| var fields = ['name', 'owner', 'type', 'ipaddress', 'privateipaddress', |
| 'publicmac', 'privatemac', 'provisioningid', 'stateid', |
| 'vmprofileid', 'platformid', 'scheduleid', 'ram', 'cores', |
| 'procspeed', 'network', 'location', 'startnum', 'endnum', |
| 'startpubipaddress', 'endpubipaddress', 'startprivipaddress', |
| 'endprivipaddress', 'startmac', 'notes', 'predictivemoduleid', |
| 'natpublicipaddress', 'natinternalipaddress']; |
| for(var i = 0; i < fields.length; i++) { |
| dijit.byId(fields[i]).reset(); |
| } |
| dojo.byId('curimg').innerHTML = ''; |
| dojo.byId('compid').innerHTML = ''; |
| dojo.byId('addeditdlgerrmsg').innerHTML = ''; |
| dojo.removeClass('notesspan', 'hidden'); |
| dojo.removeClass('vmprofilespan', 'hidden'); |
| dojo.removeClass('curimgspan', 'hidden'); |
| dojo.removeClass('compidspan', 'hidden'); |
| dijit.byId('natenabled').set('checked', false); |
| dijit.byId('nathostid').set('disabled', true); |
| } |
| |
| function saveResource() { |
| var errobj = dojo.byId('addeditdlgerrmsg'); |
| if(addedit == 'edit' || dijit.byId('mode').get('value') == 'single') |
| var fields = ['name', 'owner', 'ipaddress', 'privateipaddress', 'publicmac', |
| 'privatemac', 'ram', 'cores', 'procspeed', 'location', |
| 'natpublicipaddress', 'natinternalipaddress']; |
| else |
| var fields = ['name', 'startnum', 'endnum', 'owner', 'startpubipaddress', |
| 'endpubipaddress', 'startprivipaddress', 'endprivipaddress', |
| 'startmac', 'ram', 'cores', 'procspeed', 'location', |
| 'natpublicipaddress', 'natinternalipaddress']; |
| for(var i = 0; i < fields.length; i++) { |
| if(! checkValidatedObj(fields[i], errobj)) |
| return; |
| } |
| |
| if(addedit == 'add') |
| var data = {continuation: dojo.byId('addresourcecont').value}; |
| else |
| var data = {continuation: dojo.byId('saveresourcecont').value}; |
| |
| if(addedit == 'edit' && dijit.byId('stateid').attr('displayedValue') == 'maintenance') { |
| if(! dijit.byId('notes').get('value').match(/^([-a-zA-Z0-9_\. ,#\(\)=\+:;]{0,5000})$/)) { |
| errobj.innerHTML = "Maintenance reason can be up to 5000 characters long and may only<br>contain letters, numbers, spaces and these characters: - , . _ # ( ) = + : ;"; |
| return; |
| } |
| else |
| data['notes'] = dijit.byId('notes').get('value'); |
| } |
| else |
| data['notes'] = ''; |
| |
| for(var i = 0; i < fields.length; i++) { |
| data[fields[i]] = dijit.byId(fields[i]).get('value'); |
| } |
| data['type'] = dijit.byId('type').get('value'); |
| data['provisioningid'] = dijit.byId('provisioningid').get('value'); |
| data['stateid'] = dijit.byId('stateid').get('value'); |
| data['vmprofileid'] = dijit.byId('vmprofileid').get('value'); |
| data['platformid'] = dijit.byId('platformid').get('value'); |
| data['scheduleid'] = dijit.byId('scheduleid').get('value'); |
| data['network'] = dijit.byId('network').get('value'); |
| data['predictivemoduleid'] = dijit.byId('predictivemoduleid').get('value'); |
| data['natenabled'] = dijit.byId('natenabled').get('value'); |
| if(data['natenabled'] == 1) |
| data['nathostid'] = dijit.byId('nathostid').get('value'); |
| else { |
| data['natenabled'] = 0; |
| data['nathostid'] = 0; |
| } |
| data['nathostenabled'] = dijit.byId('nathostenabled').get('value'); |
| if(data['nathostenabled'] == 1) { |
| if(data['natenabled'] == 1) { |
| errobj.innerHTML = "Connect Using NAT and Use as NAT Host cannot both be checked"; |
| return; |
| } |
| } |
| else |
| data['nathostenabled'] = 0; |
| data['addmode'] = dijit.byId('mode').get('value'); |
| |
| dijit.byId('addeditbtn').set('disabled', true); |
| RPCwrapper(data, saveResourceCB, 1); |
| } |
| |
| function saveResourceCB(data, ioArgs) { |
| if(data.items.status == 'error') { |
| dojo.byId('addeditdlgerrmsg').innerHTML = '<br>' + data.items.msg; |
| dijit.byId('addeditbtn').set('disabled', false); |
| } |
| else if(data.items.status == 'adderror') { |
| alert(data.items.errormsg); |
| } |
| else if(data.items.status == 'success') { |
| if(data.items.action == 'add') { |
| if(data.items.addmode == 'single') { |
| if(typeof resourcegrid !== 'undefined') { |
| resourcegrid.store.newItem(data.items.data); |
| resourcegrid.sort(); |
| if(data.items.data.nathostenabled) { |
| dijit.byId('nathostid').addOption({label: data.items.data.hostname, value: data.items.data.nathostenabledid}); |
| dijit.byId('newnathostid').addOption({label: data.items.data.hostname, value: data.items.data.nathostenabledid}); |
| dijit.byId('newnathostbtn').set('disabled', false); |
| } |
| } |
| dojo.forEach(dijit.findWidgets(dojo.byId('groupdlgcontent')), function(w) { |
| w.destroyRecursive(); |
| }); |
| if(data.items.nogroups == 0) { |
| dojo.byId('groupdlgcontent').innerHTML = data.items.groupingHTML; |
| AJdojoCreate('groupdlgcontent'); |
| dojo.byId('resources').value = data.items.data.id; |
| populateLists('resources', 'ingroups', 'inresourcename', 'outresourcename', 'resgroupinggroupscont'); |
| dijit.byId('groupdlg').show(); |
| dijit.byId('groupingnote').show(); |
| } |
| } |
| else { |
| if(typeof resourcegrid !== 'undefined') { |
| for(var i = 0; i < data.items.data.length; i++) { |
| resourcegrid.store.newItem(data.items.data[i]); |
| } |
| resourcegrid.sort(); |
| } |
| dojo.forEach(dijit.findWidgets(dojo.byId('groupdlgcontent')), function(w) { |
| w.destroyRecursive(); |
| }); |
| if(data.items.nogroups == 0) { |
| dojo.byId('groupdlgcontent').innerHTML = data.items.groupingHTML; |
| dojo.byId('groupbyresourcedesc').innerHTML = data.items.grouphelp; |
| dojo.addClass('groupbyresourcesel', 'hidden'); |
| AJdojoCreate('groupdlgcontent'); |
| dojo.byId('resources').value = data.items.data[0].id; |
| populateLists('resources', 'ingroups', 'inresourcename', 'outresourcename', 'resgroupinggroupscont'); |
| dojo.byId('inresourcename').innerHTML = 'new computer set'; |
| dojo.byId('outresourcename').innerHTML = 'new computer set'; |
| dojo.byId('addgrpcont').value = data.items.addcont; |
| dojo.byId('remgrpcont').value = data.items.remcont; |
| dijit.byId('groupdlg').show(); |
| dijit.byId('groupingnote').show(); |
| } |
| } |
| } |
| else { |
| resourcegrid.store.fetch({ |
| query: {id: data.items.data.id}, |
| onItem: function(item) { |
| var washost = resourcegrid.store.getValue(item, 'nathostenabled'); |
| resourcegrid.store.setValue(item, 'name', data.items.data.hostname); |
| resourcegrid.store.setValue(item, 'owner', data.items.data.owner); |
| resourcegrid.store.setValue(item, 'state', data.items.data.state); |
| resourcegrid.store.setValue(item, 'platform', data.items.data.platform); |
| resourcegrid.store.setValue(item, 'schedule', data.items.data.schedule); |
| resourcegrid.store.setValue(item, 'currentimg', data.items.data.currentimg); |
| resourcegrid.store.setValue(item, 'imagerevision', data.items.data.imagerevision); |
| resourcegrid.store.setValue(item, 'nextimg', data.items.data.nextimg); |
| resourcegrid.store.setValue(item, 'ram', data.items.data.ram); |
| resourcegrid.store.setValue(item, 'procnumber', data.items.data.procnumber); |
| resourcegrid.store.setValue(item, 'procspeed', data.items.data.procspeed); |
| resourcegrid.store.setValue(item, 'network', data.items.data.network); |
| resourcegrid.store.setValue(item, 'IPaddress', data.items.data.IPaddress); |
| resourcegrid.store.setValue(item, 'privateIPaddress', data.items.data.privateIPaddress); |
| resourcegrid.store.setValue(item, 'eth0macaddress', data.items.data.eth0macaddress); |
| resourcegrid.store.setValue(item, 'eth1macaddress', data.items.data.eth1macaddress); |
| resourcegrid.store.setValue(item, 'type', data.items.data.type); |
| resourcegrid.store.setValue(item, 'deleted', data.items.data.deleted); |
| resourcegrid.store.setValue(item, 'notes', data.items.data.notes); |
| resourcegrid.store.setValue(item, 'vmhost', data.items.data.vmhost); |
| resourcegrid.store.setValue(item, 'predictivemodule', data.items.data.predictivemodule); |
| resourcegrid.store.setValue(item, 'location', data.items.data.location); |
| resourcegrid.store.setValue(item, 'provisioning', data.items.data.provisioning); |
| resourcegrid.store.setValue(item, 'natenabled', data.items.data.natenabled); |
| resourcegrid.store.setValue(item, 'nathost', data.items.data.nathost); |
| resourcegrid.store.setValue(item, 'nathostenabled', data.items.data.nathostenabled); |
| resourcegrid.store.setValue(item, 'natpublicIPaddress', data.items.data.natpublicIPaddress); |
| resourcegrid.store.setValue(item, 'natinternalIPaddress', data.items.data.natinternalIPaddress); |
| if(data.items.data.nathostenabled) { |
| if(washost == 0) { |
| dijit.byId('nathostid').addOption({label: data.items.data.hostname, value: data.items.data.nathostenabledid}); |
| dijit.byId('newnathostid').addOption({label: data.items.data.hostname, value: data.items.data.nathostenabledid}); |
| dijit.byId('newnathostbtn').set('disabled', false); |
| } |
| } |
| else { |
| dijit.byId('nathostid').options.forEach( |
| function(node, index, nodelist) { |
| if(node.label == data.items.data.hostname) |
| dijit.byId('nathostid').removeOption({value: node.value}); |
| } |
| ); |
| dijit.byId('newnathostid').options.forEach( |
| function(node, index, nodelist) { |
| if(node.label == data.items.data.hostname) |
| dijit.byId('newnathostid').removeOption({value: node.value}); |
| if(dijit.byId('newnathostid').options.length == 0) |
| dijit.byId('newnathostbtn').set('disabled', true); |
| } |
| ); |
| } |
| }, |
| onComplete: function(items, result) { |
| // when call resourcegrid.sort directly, the table contents disappear; not sure why |
| setTimeout(function() {resourcegrid.sort();}, 10); |
| } |
| }); |
| } |
| dijit.byId('addeditdlg').hide(); |
| resetEditResource(); |
| if('promptuser' in data.items) { |
| dijit.byId('confirmactiondlg').set('title', data.items.title); |
| dijit.byId('submitactionbtn').setLabel(data.items.btntxt); |
| dojo.removeClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('actionmsg').set('content', data.items.msg); |
| dojo.byId('submitcont').value = data.items.cont; |
| dijit.byId('confirmactiondlg').show(); |
| } |
| else if('promptuserfail' in data.items) { |
| dijit.byId('confirmactiondlg').set('title', data.items.title); |
| dojo.addClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('cancelactionbtn').setLabel('Close'); |
| dijit.byId('actionmsg').set('content', data.items.msg); |
| dijit.byId('confirmactiondlg').show(); |
| } |
| else if('multirefresh' in data.items) { |
| refreshcompdata(data.items.multirefresh); |
| } |
| else |
| setTimeout(function() {dijit.byId('addeditbtn').set('disabled', false);}, 250); |
| } |
| } |
| |
| function cancelScheduledtovmhostinuse() { |
| var data = {continuation: dojo.byId('tohostcancelcont').value}; |
| RPCwrapper(data, cancelScheduledtovmhostinuseCB, 1); |
| } |
| |
| function cancelScheduledtovmhostinuseCB(data, ioArgs) { |
| if(data.items.status == 'success') { |
| dojo.byId('cancelvmhostinuseokdiv').innerHTML = data.items.msg; |
| dojo.addClass('cancelvmhostinusediv', 'hidden'); |
| dojo.removeClass('cancelvmhostinuseokdiv', 'hidden'); |
| } |
| else if(data.items.status == 'failed') { |
| dojo.byId('cancelvmhostinusediv').innerHTML = "An error was encountered that prevented the reservation to place this computer in the vmhostinuse state from being deleted."; |
| } |
| } |
| |
| function confirmReload() { |
| var data = {continuation: dojo.byId('reloadcont').value, |
| imageid: dijit.byId('reloadimageid').get('value')}; |
| confirmAction(data); |
| } |
| |
| function confirmDelete() { |
| var data = {continuation: dojo.byId('deletecont').value}; |
| confirmAction(data); |
| } |
| |
| function confirmStateChange() { |
| var data = {continuation: dojo.byId('statechangecont').value, |
| stateid: dijit.byId('newstateid').get('value')}; |
| confirmAction(data); |
| } |
| |
| function confirmScheduleChange() { |
| var data = {continuation: dojo.byId('schedulecont').value, |
| schid: dijit.byId('newscheduleid').get('value')}; |
| confirmAction(data); |
| } |
| |
| function confirmProvisioningChange() { |
| var data = {continuation: dojo.byId('provisioningchangecont').value, |
| provisioningid: dijit.byId('newprovisioningid').get('value')}; |
| confirmAction(data); |
| } |
| |
| function confirmPredictiveModuleChange() { |
| var data = {continuation: dojo.byId('predictivemodulechangecont').value, |
| predictivemoduleid: dijit.byId('newpredictivemoduleid').get('value')}; |
| confirmAction(data); |
| } |
| |
| function confirmNATchange() { |
| if(dijit.byId('newnathostid').options.length == 0) |
| return; |
| var data = {continuation: dojo.byId('natchangecont').value}; |
| if(dijit.byId('newnatenabled').get('value') == 1) { |
| data['natenabled'] = 1; |
| data['nathostid'] = dijit.byId('newnathostid').get('value'); |
| } |
| else { |
| data['natenabled'] = 0; |
| data['nathostid'] = 0; |
| } |
| confirmAction(data); |
| } |
| |
| function generateDHCPdata(type) { |
| var data = {continuation: dojo.byId(type + 'dhcpcont').value, |
| type: type}; |
| if(dijit.byId('mnprivipaddr')) |
| data['mnip'] = dijit.byId('mnprivipaddr').get('value'); |
| if(type == 'private') { |
| if(dojo.byId('preth0rdo').checked) |
| data['nic'] = 'eth0'; |
| else |
| data['nic'] = 'eth1'; |
| } |
| else { |
| if(dojo.byId('pueth0rdo').checked) |
| data['nic'] = 'eth0'; |
| else |
| data['nic'] = 'eth1'; |
| } |
| confirmAction(data); |
| } |
| |
| function hostsData() { |
| var data = {continuation: dojo.byId('hostsdatacont').value}; |
| confirmAction(data); |
| } |
| |
| function showReservations() { |
| var data = {continuation: dojo.byId('showreservationscont').value}; |
| confirmAction(data); |
| } |
| |
| function showReservationHistory() { |
| var compids = []; |
| dojo.forEach(resource.selids, function(id) { |
| compids.push(id.replace('chkb', '')); |
| }); |
| if(compids.length > 3) { |
| alert('Due to the load this can introduce on the database server, only a maximum of 3 computers can be selected for viewing Reservation History.'); |
| return; |
| } |
| var data = {continuation: dojo.byId('showreservationhistorycont').value}; |
| confirmAction(data); |
| } |
| |
| function confirmAction(data) { |
| dijit.popup.close(dijit.byId('actionmenu')); |
| var compids = []; |
| dojo.forEach(resource.selids, function(id) { |
| compids.push(id.replace('chkb', '')); |
| }); |
| if(compids.length == 0) { |
| alert('No computers selected'); |
| return; |
| } |
| data['compids[]'] = compids; |
| RPCwrapper(data, confirmActionCB, 1); |
| } |
| |
| function confirmActionCB(data, ioArgs) { |
| if(data.items.status == 'error') { |
| dijit.byId('confirmactiondlg').set('title', 'Error'); |
| dijit.byId('cancelactionbtn').setLabel('Close'); |
| dojo.addClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('actionmsg').set('content', data.items.errormsg); |
| dijit.byId('confirmactiondlg').show(); |
| } |
| else if(data.items.status == 'success') { |
| dijit.byId('confirmactiondlg').set('title', data.items.title); |
| dijit.byId('submitactionbtn').setLabel(data.items.btntxt); |
| dijit.byId('actionmsg').set('content', data.items.actionmsg); |
| //AJdojoCreate('actionmsg'); |
| if('complist' in data.items) |
| dojo.byId('complist').innerHTML = data.items.complist; |
| dojo.byId('submitcont').value = data.items.cont; |
| if('disablesubmit' in data.items && data.items.disablesubmit == 1) |
| dijit.byId('submitactionbtn').set('disabled', true); |
| dijit.byId('confirmactiondlg').show(); |
| } |
| else if(data.items.status == 'onestep') { |
| dijit.byId('confirmactiondlg').set('title', data.items.title); |
| dijit.byId('cancelactionbtn').setLabel('Close'); |
| dojo.addClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('actionmsg').set('content', data.items.actionmsg); |
| //AJdojoCreate('actionmsg'); |
| if('complist' in data.items) |
| dojo.byId('complist').innerHTML = data.items.complist; |
| dijit.byId('confirmactiondlg').show(); |
| } |
| } |
| |
| function cancelAction() { |
| dijit.byId('confirmactiondlg').hide(); |
| dijit.byId('confirmactiondlg').set('title', ''); |
| dijit.byId('actionmsg').set('content', ''); |
| dojo.byId('complist').innerHTML = ''; |
| dijit.byId('submitactionbtn').setLabel('Submit'); |
| dijit.byId('submitactionbtn').set('disabled', false); |
| dojo.removeClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('cancelactionbtn').setLabel('Cancel'); |
| } |
| |
| function submitAction() { |
| var data = {continuation: dojo.byId('submitcont').value}; |
| if(dijit.byId('utilnotes')) |
| data['notes'] = dijit.byId('utilnotes').get('value'); |
| if(dijit.byId('profileid')) |
| data['profileid'] = dijit.byId('profileid').get('value'); |
| if(dojo.byId('modedirect')) { |
| if(dojo.byId('modedirect').checked) |
| data['mode'] = 'direct'; |
| else |
| data['mode'] = 'reload'; |
| } |
| RPCwrapper(data, submitActionCB, 1); |
| } |
| |
| function submitActionCB(data, ioArgs) { |
| if(data.items.status == 'error') { |
| dijit.byId('confirmactiondlg').set('title', 'Error'); |
| dijit.byId('cancelactionbtn').setLabel('Close'); |
| dojo.addClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('actionmsg').set('content', data.items.errormsg); |
| dojo.byId('complist').innerHTML = ''; |
| dijit.byId('confirmactiondlg').show(); |
| return; |
| } |
| if(('clearselection' in data.items && data.items.clearselection == 1) || |
| (dijit.byId('statecb').value != '' && data.items.newstate != dijit.byId('statecb').value)) |
| resourcegrid.selection.clear(); |
| if('refreshcount' in data.items && parseInt(data.items.refreshcount) > 0) { |
| var cnt = parseInt(data.items.refreshcount) - 1; |
| refreshcompdata(cnt); |
| } |
| dijit.byId('confirmactiondlg').set('title', data.items.title); |
| dijit.byId('cancelactionbtn').setLabel('Close'); |
| dojo.addClass('submitactionbtnspan', 'hidden'); |
| dijit.byId('actionmsg').set('content', data.items.msg); |
| dojo.byId('complist').innerHTML = ''; |
| dojo.byId('submitcont').value = ''; |
| recenterDijitDialog('confirmactiondlg'); |
| } |
| |
| function refreshcompdata(refreshcount) { |
| var url = resourcestore.url; |
| resourcestore.close(); |
| resourcestore = new dojo.data.ItemFileWriteStore({url: url}); |
| resourcestore.comparatorMap = {name: resource.nocasesort, |
| procnumber: resource.nocasesort, |
| procspeed: resource.nocasesort, |
| network: resource.nocasesort, |
| ram: resource.nocasesort, |
| vmhost: resource.nocasesort, |
| IPaddress: resource.ipsort, |
| privateIPaddress: resource.ipsort}; |
| resourcestore.fetch(); |
| savescroll = resourcegrid.scrollTop; |
| resourcegrid.setStore(resourcestore, resourcegrid.query); |
| if(refreshcount) |
| setTimeout(function() {refreshcompdata(--refreshcount);}, 5000); |
| } |
| |
| function setScroll() { |
| if(savescroll != 0) |
| resourcegrid.scrollTo(savescroll); |
| } |
| |
| function saveScroll(scrollobj) { |
| if(resourcegrid.scrollTop != 0) |
| savescroll = 0; |
| } |
| |
| function delayedCompGroupFilterSelection() { |
| if(filterdelay) |
| clearTimeout(filterdelay); |
| filterdelay = setTimeout(compGroupFilterSelection, 1500); |
| } |
| |
| function compGroupFilterSelection() { |
| var selected = new Array(); |
| var selobj = dojo.byId('filtercompgroups'); |
| for(var i = 0; i < selobj.options.length; i++) { |
| if(selobj.options[i].selected) |
| selected.push(selobj.options[i].value); |
| } |
| var data = {groupids: selected.join(','), |
| continuation: dojo.byId('filtercompgroupscont').value}; |
| RPCwrapper(data, compGroupFilterSelectionCB, 1); |
| } |
| |
| function compGroupFilterSelectionCB(data, ioArgs) { |
| if(data.items.status == 'error') { |
| alert(data.items.errormsg); |
| return; |
| } |
| var query = resourcegrid.query; |
| query['id'] = new RegExp(data.items.regids); |
| |
| resourcegrid.setQuery(query); |
| |
| dojo.byId('computercount').innerHTML = 'Computers in table: ' + resourcegrid.rowCount; |
| } |