| /* |
| * 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 Resource() { |
| this.restype = 'resource'; |
| } |
| |
| Resource.prototype.DeleteBtn = function(rscid, rowIndex) { |
| var rowdata = this.grid.getItem(rowIndex); |
| if(! ('deleted' in rowdata) || rowdata.deleted == '0') |
| var label = _('Delete'); |
| else |
| var label = _('Undelete'); |
| var btn = new dijit.form.Button({ |
| label: label, |
| onClick: function() { |
| toggleDeleteResource(rscid); |
| } |
| }); |
| btn._destroyOnRemove = true; |
| return btn; |
| } |
| |
| Resource.prototype.EditBtn = function(rscid, rowIndex) { |
| var rowdata = this.grid.getItem(rowIndex); |
| if(! ('deleted' in rowdata) || rowdata.deleted == '0') |
| var disable = false; |
| else |
| var disable = true; |
| var btn = new dijit.form.Button({ |
| label: _('Edit'), |
| disabled: disable, |
| onClick: function() { |
| editResource(rscid); |
| } |
| }); |
| btn._destroyOnRemove = true; |
| return btn; |
| } |
| |
| Resource.prototype.colformatter = function(value, rowIndex, obj) { |
| return value; |
| } |
| |
| Resource.prototype.GridFilter = function() { |
| var name = '.*'; |
| if(dijit.byId('namefilter') && dijit.byId('namefilter').get('value').length) |
| name += dijit.byId('namefilter').get('value') + '.*'; |
| if(! dijit.byId('showdeleted')) { |
| resourcegrid.setQuery({name: new RegExp(name, 'i')}); |
| return; |
| } |
| if(dijit.byId('showdeleted').get('value')) |
| var deleted = '*'; |
| else |
| var deleted = '0'; |
| resourcegrid.setQuery({name: new RegExp(name, 'i'), |
| deleted: deleted}); |
| } |
| |
| Resource.prototype.addRemItem = function(contid, objid1, objid2) { |
| // TODO check for selection on other tabs and update if needed |
| var obj = dojo.byId(objid1); |
| var id = obj.options[obj.selectedIndex].value; |
| |
| obj = window[objid2]; |
| var items = obj.selection.getSelected(); |
| var listids = ""; |
| for(var i = 0; i < items.length; i++) { |
| listids = listids + ',' + items[i].id; |
| } |
| if(listids == "") |
| return; |
| document.body.style.cursor = 'wait'; |
| var data = {continuation: dojo.byId(contid).value, |
| listids: listids, |
| id: id}; |
| RPCwrapper(data, this.addRemItemCB, 1); |
| } |
| |
| Resource.prototype.addRemItemCB = function(data, ioArgs) { |
| if(data.items.status == 'success') { |
| window[data.items.inselobj].selection.clear(); |
| window[data.items.outselobj].selection.clear(); |
| var store = window[data.items.inselobj].store; |
| store.fetch({query: {id:new RegExp(data.items.regids)}, |
| onItem: function(item, request) { |
| if(item.inout[0] == 0) |
| store.setValue(item, 'inout', 1); |
| else |
| store.setValue(item, 'inout', 0); |
| }, |
| onComplete: function(item, request) { |
| setTimeout(function() { |
| // TODO maintain scroll position |
| window[data.items.inselobj].setQuery({inout: 1}); |
| window[data.items.outselobj].setQuery({inout: 0}); |
| }, 1); |
| } |
| }); |
| } |
| else if(data.items.status == 'noaccess') { |
| alert(_('You do not have access to the submitted resource or group')); |
| } |
| document.body.style.cursor = 'default'; |
| } |
| |
| Resource.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); |
| else |
| resourcegrid.layout.setColumnVisibility(i, false); |
| break; |
| } |
| } |
| this.updateFieldCookie(field, obj.checked); |
| } |
| |
| Resource.prototype.updateFieldCookie = function(field, selected) { |
| var data = dojo.cookie(this.restype + 'selfields'); |
| if(typeof data === 'undefined') { |
| if(selected) |
| dojo.cookie(this.restype + 'selfields', field + ':1', {expires: 365}); |
| else |
| dojo.cookie(this.restype + 'selfields', field + ':0', {expires: 365}); |
| } |
| else { |
| var items = data.split('|'); |
| for(var i = 0; i < items.length; i++) { |
| var pair = items[i].split(':'); |
| if(pair[0] == field) { |
| if(selected) |
| items[i] = field + ':1'; |
| else |
| items[i] = field + ':0'; |
| break; |
| } |
| } |
| if(i == items.length) { |
| if(selected) |
| items.push(field + ':1'); |
| else |
| items.push(field + ':0'); |
| } |
| data = items.join('|'); |
| dojo.cookie(this.restype + 'selfields', data, {expires: 365}); |
| } |
| } |
| |
| Resource.prototype.nocasesort = function(a, b) { |
| var al = a.toLowerCase(); |
| var bl = b.toLowerCase(); |
| if(al < bl) |
| return -1; |
| if(bl < al) |
| return 1; |
| return 0; |
| } |
| |
| var resource = new Resource(); |
| |
| var timeout = null; |
| var ownervalid = false; |
| var ownerchecking = false; |
| |
| var resourcetogroupsdata = { |
| identifier: 'id', |
| label: 'name', |
| items: [{id: 1, name: 'foo1'},{id:2,name:'foo2'}] |
| } |
| |
| var grouptoresourcesdata = { |
| identifier: 'id', |
| label: 'name', |
| items: [] |
| } |
| |
| var mapbyresgroupdata = { |
| identifier: 'id', |
| label: 'name', |
| items: [] |
| } |
| |
| var mapbymaptogroupdata = { |
| identifier: 'id', |
| label: 'name', |
| items: [] |
| } |
| |
| var resourcetogroupsstore; |
| var grouptoresourcesstore; |
| var mapbyresgroupstore; |
| var mapbymaptogroupstore; |
| |
| function initViewResources() { |
| if(typeof resourcestore === 'undefined') { |
| setTimeout(initViewResources, 100); |
| return; |
| } |
| if(! resourcestore.comparatorMap) { |
| resourcestore.comparatorMap = {}; |
| } |
| resourcestore.comparatorMap['name'] = resource.nocasesort; |
| setTimeout(function() {resourcegrid.sort();}, 100); |
| } |
| |
| function toggleCmapFieldDisplay(obj, field) { |
| for(var i in configmapgrid.layout.cells) { |
| if(configmapgrid.layout.cells[i].field == field) { |
| if(obj.checked) |
| configmapgrid.layout.setColumnVisibility(i, true); |
| else |
| configmapgrid.layout.setColumnVisibility(i, false); |
| break; |
| } |
| } |
| } |
| |
| function toggleDeleteResource(rscid) { |
| var data = {continuation: dojo.byId('deleteresourcecont').value, |
| rscid: rscid}; |
| RPCwrapper(data, toggleDeleteResourceCB, 1); |
| } |
| |
| function toggleDeleteResourceCB(data, ioArgs) { |
| if(data.items.status == 'success') { |
| dijit.byId('toggleDeleteDialog').set('title', data.items.title); |
| dojo.byId('toggleDeleteHeading').innerHTML = data.items.title; |
| dojo.byId('toggleDeleteQuestion').innerHTML = data.items.question; |
| dojo.byId('toggleDeleteBtn').innerHTML = data.items.btntxt; |
| var txt = '<table>'; |
| for(var i = 0; i < data.items.fields.length; i++) { |
| var item = data.items.fields[i]; |
| txt += '<tr><th align="right">' |
| txt += item.name |
| + ':</th><td>' |
| + resource.colformatter(item.value, '', item) |
| + '</td></tr>'; |
| } |
| txt += '</table>'; |
| dojo.byId('confdelrescontent').innerHTML = txt + data.items.html; |
| dojo.byId('submitdeletecont').value = data.items.cont; |
| dijit.byId('toggleDeleteDialog').show(); |
| } |
| else if(data.items.status == 'noaccess') { |
| alert(data.items.msg); |
| } |
| else if(data.items.status == 'inuse') { |
| var btn = new dijit.form.Button({ |
| label: 'Close' |
| }); |
| var div = document.createElement('DIV'); |
| div.style = 'text-align: center;'; |
| var dlg = new dijit.Dialog({ |
| id: 'resourceinusedlg', |
| title: _('Resource In Use'), |
| content: data.items.msg, |
| style: 'width: 400px;', |
| autofocus: false, |
| hide: function() {this.destroy();} |
| }); |
| div.appendChild(btn.domNode); |
| dlg.containerNode.appendChild(div); |
| dojo.connect(btn, "onClick", function () {dlg.destroy();}); |
| dlg.show(); |
| } |
| } |
| |
| function submitToggleDeleteResource() { |
| var data = {continuation: dojo.byId('submitdeletecont').value}; |
| RPCwrapper(data, submitToggleDeleteResourceCB, 1); |
| } |
| |
| function submitToggleDeleteResourceCB(data, ioArgs) { |
| if(data.items.status == 'error') { |
| alert(_('Problem encountered while attempting to delete resource. Please contact a system administrator.')); |
| return; |
| } |
| else if(data.items.status == 'success') { |
| resourcegrid.store.fetch({query: {id: data.items.rscid}, onComplete: |
| function(items, request) { |
| if(! dijit.byId('showdeleted')) { |
| resourcestore.deleteItem(items[0]); |
| } |
| else { |
| var newval = (parseInt(items[0]['deleted']) + 1) % 2; |
| resourcestore.setValue(items[0], 'deleted', newval); |
| } |
| resourcegrid.update(); |
| // TODO maintain scroll position |
| resource.GridFilter(); |
| } |
| }); |
| clearHideConfirmDelete(); |
| } |
| } |
| |
| function editResource(rscid) { |
| var data = {continuation: dojo.byId('editresourcecont').value, |
| inline: 0, |
| rscid: rscid}; |
| data['inline'] = 1; |
| RPCwrapper(data, inlineEditResourceCB, 1); |
| } |
| |
| function checkFirstAdd() { |
| if(typeof resourcegrid !== 'undefined') |
| return; |
| window.location.href = dojo.byId('reloadpageurl').value; |
| } |
| |
| function caselessSort(a, b) { |
| return a.toLowerCase().localeCompare(b.toLowerCase()); |
| } |
| |
| function clearHideConfirmDelete() { |
| dijit.byId('toggleDeleteDialog').hide(); |
| dojo.byId('confdelrescontent').innerHTML = ''; |
| } |
| |
| /*function finishUnselect(id) { |
| var obj = dijit.byId(id); |
| for(var i = 0; i < obj.options.length; i++) { |
| if(obj.options[i].selected) |
| return; |
| } |
| dojo.query("[widgetid='" + id + "'] > div > div").forEach( |
| function(node, index, nodelist) { |
| dojo.removeClass(node, 'dojoxMultiSelectSelectedOption'); |
| } |
| ); |
| }*/ |
| |
| function editGroupMapInit() { |
| // getImagesButton getGroupsButton getMapCompGroupsButton getMapImgGroupsButton |
| if(dijit.byId('groupbyresourcediv')) |
| populateLists('resources', 'ingroups', 'inresourcename', 'outresourcename', 'resgroupinggroupscont'); |
| if(dijit.byId('groupbygroupdiv')) |
| populateLists('resgroups', 'inresources', 'ingroupname', 'outgroupname', 'resgroupingresourcescont'); |
| if(dojo.byId('domapping').value == '1') { |
| if(dijit.byId('mapbyresgroupdiv')) |
| populateLists('groups', 'inmapgroups', 'inmapgroupname', 'outmapgroupname', 'mapbyresgroupcont'); |
| if(dijit.byId('mapbymaptogroupdiv')) |
| populateLists('maptogroups', 'inmaptogroups', 'inmaptogroupname', 'outmaptogroupname', 'mapbymaptogroupcont'); |
| } |
| } |
| |
| function populateLists(selobj, inselobj, intitle, outtitle, cont) { |
| document.body.style.cursor = 'wait'; |
| if(! (inselobj in window)) { |
| setTimeout(function() { |
| populateLists(selobj, inselobj, intitle, outtitle, cont); |
| }, 100); |
| return; |
| } |
| var obj = dojo.byId(selobj); |
| var id = obj.options[obj.selectedIndex].value; |
| var resname = obj.options[obj.selectedIndex].text; |
| |
| dojo.byId(intitle).innerHTML = resname; |
| dojo.byId(outtitle).innerHTML = resname; |
| |
| var data = {continuation: dojo.byId(cont).value, |
| id: id}; |
| RPCwrapper(data, populateListsCB, 1); |
| } |
| |
| function populateListsCB(data, ioArgs) { |
| if(data.items.status == 'noaccess') { |
| document.body.style.cursor = 'default'; |
| alert(_('You do not have access to the submitted resource or group')); |
| return; |
| } |
| var oldstore = window[data.items.intitle].store; |
| var items = data.items.items; |
| var newdata = { |
| identifier: 'id', |
| label: 'name', |
| items: data.items.items |
| } |
| var newstore = new dojo.data.ItemFileWriteStore({data: newdata}); |
| if(! newstore.comparatorMap) |
| newstore.comparatorMap = {}; |
| newstore.comparatorMap['name'] = resource.nocasesort; |
| window[data.items.intitle].selection.clear(); |
| window[data.items.outtitle].selection.clear(); |
| window[data.items.intitle].setStore(newstore); |
| window[data.items.outtitle].setStore(newstore); |
| window[data.items.intitle].setQuery({inout: 1}); |
| window[data.items.outtitle].setQuery({inout: 0}); |
| delete oldstore; |
| document.body.style.cursor = 'default'; |
| } |
| |
| function setOwnerChecking() { |
| ownerchecking = true; |
| } |
| |
| function checkOwner(val, constraints) { |
| if(! dijit.byId('owner')._hasBeenBlurred) |
| return true; |
| if(timeout != null) |
| clearTimeout(timeout); |
| timeout = setTimeout(checkOwner2, 700); |
| return ownervalid; |
| } |
| |
| function checkOwner2() { |
| ownerchecking = true; |
| var data = {user: dijit.byId('owner').textbox.value, |
| continuation: dojo.byId('valuseridcont').value}; |
| RPCwrapper(data, checkOwnerCB, 1); |
| } |
| |
| function checkOwnerCB(data, ioArgs) { |
| var obj = dijit.byId('owner'); |
| if(data.items.status && data.items.status == 'invalid') { |
| obj.attr('state', 'Error'); |
| obj._setStateClass(); |
| obj.displayMessage(obj.getErrorMessage('Unknown user')); |
| ownervalid = false; |
| } |
| else { |
| obj.attr('state', 'Normal'); |
| obj._setStateClass(); |
| obj.displayMessage(null); |
| ownervalid = true; |
| } |
| ownerchecking = false; |
| } |
| |
| |