#set ($artifacts_title = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.title")) #set ($artifact_description = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.description")) #set ($artifact_type = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.type")) #set ($artifact_project = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.project")) #set ($artifact_status = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.status")) #set ($artifact_action = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.action")) #set ($artifact_name = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.name")) #set ($artifact_promote_text = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.promote")) #set ($artifact_delete_title = $CommonFunctions.displayTermFromResourceBundle($currentUserId,"Demand","demand.artifact.delete.title")) #set ($artifact_delete_message = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.delete.message")) #set ($artifact_cannot_delete_text = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.cannot.delete")) #set ($artifact_validation_text = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.validation")) #set ($warningmsg = $CommonFunctions.displayTermFromResourceBundle($currentUserId,"Demand","demandquestions.warning")) #set ($create_new_Item = $CommonFunctions.displayTermFromResourceBundle($currentUserId,"Demand","demandtable.createNewItem")) #set ($artifact_add_tooltip = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.add.tooltip")) #set ($artifact_delete_tooltip = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "Demand", "demand.artifact.delete.tooltip")) var NEW_PROJECT_STR = '$create_new_Item'; demandTable.artifactsTabDisable = function(){ addButton.disable(); deleteButton.disable(); projectEditor.disable(); typeEditor.disable(); nameEditor.disable(); descEditor.disable(); } demandTable.artifactsTabEnable = function(){ #if($canManageDemandItems) addButton.enable(); deleteButton.enable(); #end projectEditor.enable(); typeEditor.enable(); nameEditor.enable(); descEditor.enable(); } demandTable.artifactRec = Ext.data.Record.create( [ {name: 'artifactId'}, {name: 'name', sortType: 'asUCString'}, {name: 'description', sortType: 'asUCString'}, {name: 'typeId'}, {name: 'typeName', sortType: 'asUCString'}, {name: 'projectId'}, {name: 'projectName', sortType: 'asUCString'}, {name: 'requirementId'}, {name: 'promoteTime'}, {name: 'flag'}, {name: 'status', sortType: 'asUCString'} ]); demandTable.projectsDS = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'ajax2/Gemini?action=project.web.ajax.GetTrackedProjectsAction' }), reader: new Ext.data.JsonReader( {}, [ {name: 'projectId'}, {name: 'projectName'} ]) }); demandTable.artifactsDS = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'ajax2/Gemini?action=demand.web.ajax.GetDemandArtifactsAction' }), reader: new Ext.data.JsonReader( {}, demandTable.artifactRec ), sortInfo:{field: 'name', direction: "DESC"} }); demandTable.isArtifactsTabValid = function () { demandTable.artifactsGridCtrl.stopEditing(); var valid = true; var count = 0; for (var i = 0; i < demandTable.artifactsDS.getCount() ; i++) { artifact = demandTable.artifactsDS.getAt(i); if (artifact.get('name').replace(/^\s+|\s+$/g, '') == '') { valid = false; count = i; break; } } if (!valid) { demandTable.artifactsGridCtrl.startEditing( count, 0 ); } return valid; } var addButton = new Ext.Toolbar.Button({ text:'$table_add_text', tooltip:'$artifact_add_tooltip', id:'addArtifact', #if (!$canManageDemandItems) disabled: true, #end iconCls:'add' }); addButton.on('click', function() { var records = new Array(1); records[0] = new demandTable.artifactRec({ artifactId : '', name: '', description: '', typeId: '', typeName: '', projectId: '', projectName: '', status: '' }); demandTable.artifactsDS.add(records); demandTable.artifactsGridCtrl.startEditing( demandTable.artifactsDS.getCount()-1, 0 ); }); var deleteButton = new Ext.Toolbar.Button({ text:'$table_delete_text', tooltip:'$artifact_delete_tooltip', #if (!$canManageDemandItems) disabled: true, #end iconCls:'remove' }); deleteButton.on('click', function() { demandTable.artifactsGridCtrl.stopEditing(); demandTable.artifactsDS.commitChanges(); var selected = demandTable.artifactsGridCtrl.getSelectionModel().getSelections(); if (selected) { Ext.MessageBox.show({ title: '$artifact_delete_title', msg:'$artifact_delete_message', buttons: Ext.MessageBox.YESNO, icon: Ext.MessageBox.QUESTION, fn: function(btn){ if( btn == "yes"){ for (var i = 0; i < selected.length; i++) { // do not allow delete for promoted artifact var requirementId = selected[i].get( 'requirementId' ); if (requirementId == null || requirementId == '') { demandTable.artifactsDS.remove( selected[i] ); } else { var message = selected[i].get( 'name' ) + " $artifact_cannot_delete_text"; //CR#2666: Inserted extra ' ' between name and delete_text Ext.MessageBox.show({ title: '$warningmsg', msg: message, buttons: Ext.MessageBox.OK }); } } } } }); } }); //Fix CR# 3958: Remove the options for Change Request, Task, Test Case and General from the drop down as they are not supported yet #set ($type3 = $CommonFunctions.displayTermFromResourceBundle($currentUserId,"Demand","demand.artifact.000000000003")) #set ($type4 = $CommonFunctions.displayTermFromResourceBundle($currentUserId,"Demand","demand.artifact.000000000004")) //Fix CR# 3958: remove the options from this variable Ext.gemini.types = [ ['000000000003', '$type3' ], ['000000000004', '$type4' ] ]; var nameEditor = new Ext.form.TextField({ allowBlank: false, selectOnFocus: true, maxLength: $DemandArtifactMetaInfo.getColumnWidth("Name") }); var descEditor = new Ext.form.TextArea({ allowBlank: true, selectOnFocus: true, maxLength: $DemandArtifactMetaInfo.getColumnWidth("Description") }); var typeEditor = new Ext.form.ComboBox({ hiddenName: 'typeName', hiddenId: 'typeId', store: new Ext.data.SimpleStore({ fields: ['typeId', 'typeName'], data : Ext.gemini.types }), valueField: 'typeId', displayField: 'typeName', typeAhead: true, mode: 'local', triggerAction: 'all', listClass: 'x-combo-list-small', editable: false, selectOnFocus: true, grow: false, resizable: false, allowBlank: true }); var projectEditor = new Ext.form.ComboBox({ hiddenName:'projectName', hiddenId:'projectId', store: demandTable.projectsDS, valueField: 'projectId', displayField: 'projectName', typeAhead: true, mode: 'local', listClass: 'x-combo-list-small', triggerAction: 'all', editable: false, selectOnFocus: true, grow: false, resizable: false, allowBlank: true }); var R_NEW_PROJECT = Ext.data.Record.create([{name: 'projectId'}, {name: 'projectName'}]); var NEW_PROJECT = new R_NEW_PROJECT({projectId: '-9999', //Keep it -9999 only, extJS blows when used longer than that projectName: NEW_PROJECT_STR}); demandTable.projectsDS.insert(0, NEW_PROJECT); projectEditor.on('focus', function(object, record){ var selections = demandTable.artifactsGridCtrl.selModel.getSelections(); if(selections.length == 1){ var record = selections[0]; newProject = demandTable.projectsDS.query( 'projectId', '-9999' ); if(record.get('typeId')== '000000000003' && newProject.getCount() < 1){ demandTable.projectsDS.insert(0, NEW_PROJECT); } else if (record.get('typeId') != '000000000003' && newProject.getCount() > 0){ demandTable.projectsDS.remove(NEW_PROJECT); } } }); demandTable.artifactsGridCtrl = new Ext.grid.EditorGridPanel({ ds: demandTable.artifactsDS, cm: new Ext.grid.ColumnModel([ {id: 'artifactId', header: '$artifact_name', width: 120, sortable: true, dataIndex: 'name', editor: nameEditor, renderer: this.containerName3 }, {header: '$artifact_description', width: 172, sortable: true, dataIndex: 'description', editor: descEditor, renderer: function(value, metadata, record){ return g_encoder.unescapeBT(value); }}, {id: 'typeId', header: '$artifact_type', width: 90, sortable: true, dataIndex: 'typeId', renderer: function (value, metadata, record) { var result = ''; for (var i = 0; i < Ext.gemini.types.length; i++) { if (value == Ext.gemini.types[i][0]) { result = Ext.gemini.types[i][1]; record.set( 'typeId', value ); break; } } return result; }, editor: typeEditor}, {id:'projectId', header: '$artifact_project', width: 109, sortable: true, dataIndex: 'projectName', renderer: function (value, metadata, record) { if(value == ''){ return ''; } var records = demandTable.projectsDS.query( 'projectId', value ); if (records && records.getCount() > 0) { record.set( 'projectId', value ); return records.first().get( 'projectName' ); } else { return value; } }, editor: projectEditor}, {header: '$artifact_action', width: 60, sortable: false, renderer: this.containerName2 }, {header: '$artifact_status', width: 60, sortable: true, dataIndex: 'status', renderer: function (value, metadata, record) { var artifactId = record.get( 'artifactId' ); var projectId = record.get( 'projectId' ); var typeId = record.get( 'typeId' ); var tooltip = value; var title = value; return "