var TBLabels = { TAB_TITLE : "$TB_TAB_TITLE", PROJECT_COMBO : "$TB_PROJECT", RELEASE_COMBO : "$TB_RELEASE", SPRINT_COMBO : "$TB_SPRINT" } var teamboard = { viewPanel: null, // main view initialized: false, projectComboDS: null, projectCombobox: null, projectComboRec: null, projectComboboxLoaded: null, releaseComboDS: null, releaseCombobox: null, releaseComboRec: null, releaseComboboxLoaded: null, selectedRelease: null, sprintComboDS: null, sprintCombobox: null, sprintComboRec: null, sprintComboboxLoaded: null, selectedSprint: null, teamboardPanel: null, projChanged : false, // true when a project is selected. set to false in setSprintValue init : function() { Ext.QuickTips.init(); teamboard.createProjectToolbarCombo(); teamboard.createReleaseToolbarCombo(); teamboard.createSprintToolbarCombo(); taskDialog.init(); obstacleDialog.init(); teamboard.createViewPanel(); var viewPort = new Ext.Viewport({ layout:'fit', items:[teamboard.viewPanel], renderTo: document.body }); // fix for displaying 'Choose...' teamboard.projectCombobox.setValue(); teamboard.releaseCombobox.setValue(); teamboard.sprintCombobox.setValue(); teamboard.loadSettings(); }, createViewPanel : function() { var refreshButton = new Ext.Toolbar.Button({ text:'$REFRESH', tooltip:'$REFRESH_TITLE', iconCls:'refresh', handler : function() { teamboard.loadBoard(); } }); refreshButton.setDisabled(true); teamboard.refreshButton = refreshButton; var botmargin = (Ext.isIE) ? -14: 0; var controlPanel = new Ext.Panel({ region: 'north', bodyStyle: 'display: none', border: false, header: false, hideMode : 'offsets', frame : false, height : 1, tbar: [ new Ext.Toolbar.TextItem('' + TBLabels.PROJECT_COMBO + ':'), new Ext.Toolbar.Spacer(), new Ext.Toolbar.Spacer(), teamboard.projectCombobox, new Ext.Toolbar.Spacer(), new Ext.Toolbar.Spacer(), new Ext.Toolbar.TextItem('' + TBLabels.RELEASE_COMBO + ':'), new Ext.Toolbar.Spacer(), new Ext.Toolbar.Spacer(), teamboard.releaseCombobox, new Ext.Toolbar.Spacer(), new Ext.Toolbar.Spacer(), new Ext.Toolbar.TextItem('' + TBLabels.SPRINT_COMBO + ':'), new Ext.Toolbar.Spacer(), new Ext.Toolbar.Spacer(), teamboard.sprintCombobox, '->', refreshButton] }); teamboard.teamboardPanel = new Ext.Panel( { region: 'center', layout: 'fit', baseCls: 'board', autoScroll: true }); teamboard.viewPanel = new Ext.Panel ({ layout: 'border', items: [controlPanel, teamboard.teamboardPanel] }); }, createProjectToolbarCombo : function() { teamboard.projectComboRec = Ext.data.Record.create( [ { name:'id' }, { name:'name', sortType:'asUCString' } ]); // project toolbar combo ds teamboard.projectComboDS = new Ext.data.Store({ id : 0, proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=PROJECTLIST'}), reader: new Ext.data.JsonReader({id:'id'}, teamboard.projectComboRec), sortInfo:{field: 'name', direction: "ASC"} }); // project toolbar combo box teamboard.projectCombobox = new Ext.form.ComboBox({ autoCreate: {tag: "input", type: "combo", id: "teamBoardProjectCombo"}, tpl: '
{name}
', store : teamboard.projectComboDS, displayField :'name', valueField :'id', forceSelection : true, mode : 'local', emptyText :'$CHOOSE', selectOnFocus :true, width : 150, editable : false, triggerAction : 'all', listWidth: 185, listClass :'x-combo-list-small' , listeners : { select : onProjectSelect, loadexception: BxtUtil.lexHandler } }); function onProjectSelect(combo, rec, index) { document.location.href = '../common/application/itimpact/loadpagetbx.html?projectId=' + rec.get('id'); } }, createReleaseToolbarCombo : function() { teamboard.releaseComboRec = Ext.data.Record.create( [ { name:'id' }, { name:'name', sortType:'asUCString' } ]); // release toolbar combo ds teamboard.releaseComboDS = new Ext.data.Store({ id : 0, proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=RELEASELIST'}), reader: new Ext.data.JsonReader({id:'id'}, teamboard.releaseComboRec), sortInfo:{field: 'name', direction: "ASC"} }); // release toolbar combo box teamboard.releaseCombobox = new Ext.form.ComboBox({ autoCreate: {tag: "input", type: "combo", id: "teamBoardReleaseCombo"}, tpl: '
{name}
', store : teamboard.releaseComboDS, displayField :'name', valueField :'id', forceSelection : true, mode : 'local', emptyText :'$CHOOSE', selectOnFocus :true, width : 150, editable : false, triggerAction : 'all', listWidth: 185, listClass :'x-combo-list-small' , listeners : { select : onReleaseSelect, loadexception: BxtUtil.lexHandler } }); function onReleaseSelect(combo, rec, index) { teamboard.selectedRelease = rec.data.id; teamboard.selectedSprint = null; teamboard.sprintCombobox.clearValue(); teamboard.refreshButton.setDisabled(true); teamboard.loadSprintList(); teamboard.resetBoard(); } }, createSprintToolbarCombo : function() { teamboard.sprintComboRec = Ext.data.Record.create( [ { name:'id' }, { name:'name' } ]); // sprint toolbar combo ds teamboard.sprintComboDS = new Ext.data.Store({ id : 0, proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=SPRINTLIST'}), reader: new Ext.data.JsonReader({id:'id'}, teamboard.sprintComboRec) }); // sprint toolbar combo box teamboard.sprintCombobox = new Ext.form.ComboBox({ autoCreate: {tag: "input", type: "combo", id: "teamBoardSprintCombo"}, tpl: '
{name}
', store : teamboard.sprintComboDS, displayField :'name', valueField :'id', forceSelection : true, mode : 'local', emptyText :'$CHOOSE', selectOnFocus :true, width : 150, editable : false, triggerAction : 'all', listWidth: 185, listClass :'x-combo-list-small' , listeners : { select : onSprintSelect, loadexception: BxtUtil.lexHandler } }); function onSprintSelect(combo, rec, index) { teamboard.selectedSprint = rec.data.id; teamboard.loadBoard(); teamboard.temporarySprintPersist(); teamboard.refreshButton.setDisabled(false); } }, selectSprint :function (sprintid) { teamboard.sprintCombobox.setValue(sprintid); teamboard.loadBoard(); teamboard.selectedSprint = sprintid; teamboard.temporarySprintPersist(); teamboard.refreshButton.setDisabled(false); }, temporarySprintPersist : function() { Ext.Ajax.request({ url: 'pbv/PBVAsyncHandler?action=SAVE-USER-SETTINGS', params: {start:0, limit:25, userId:'$currentUserId', viewId:'$_FOCUS_TEAMBOARD_VIEW', keyId:'$_FOCUS_SPRINT_SELECTION', selection: teamboard.sprintCombobox.getValue()} }); }, // ----- project combo loading with user settings ----- loadProjectList : function() { teamboard.projectComboDS.load({ waitinMsg:'$LOADING', params:{start:0, limit: 30}, callback:teamboard.projectLoaded }); }, projectLoaded : function(rec, options, success) { if(!success) { BxtUtil.showErrorMsg('$PROJECT_LIST_LOAD_ERROR'); return; } if(rec.length == 1) { teamboard.setProjectValue(rec[0].get('id')); } else { teamboard.loadUserSettingsProject(); } }, loadSettings : function() { if(!teamboard.initialized) { teamboard.loadProjectList(); teamboard.initialized = true; } else { teamboard.loadUserSettingsProject(); } }, loadUserSettingsProject:function() { BxtUserSettings.load('$_FOCUS_TEAMBOARD_VIEW', '$_FOCUS_PROJECT_SELECTION', teamboard.setProjectSettingValue, null); }, setProjectSettingValue : function(response, options) { var r = Ext.decode(response.responseText); teamboard.setProjectValue(r.selection); }, setProjectValue : function(selection) { var ret = BxtUserSettings.setComboboxValue(teamboard.projectCombobox, selection); if( ret == BxtUserSettings.cbNEW) { teamboard.releaseCombobox.clearValue(); teamboard.loadReleaseList(); } else if( ret == BxtUserSettings.cbSET) { teamboard.loadUserSettingsRelease(); } }, // ----- release combo loading with user settings ----- loadReleaseList : function() { var pId = teamboard.projectCombobox.getValue(); if ( pId != '') { teamboard.releaseComboDS.load({ waitMsg:'$LOADING', params:{start:0, limit:25, projectid: pId, userId:'$currentUserId', viewId:'$_FOCUS_TEAMBOARD_VIEW', keyId:'$_FOCUS_PROJECT_SELECTION', selection: pId }, callback: teamboard.updaterdlgReleaseComboDS }); } }, updaterdlgReleaseComboDS : function(rec, options, success) { if(success) { if(rec.length == 1) { teamboard.setReleaseValue(rec[0].get('id')); } else if(rec.length < 1) { teamboard.selectedRelease = null; teamboard.sprintCombobox.clearValue(); teamboard.sprintComboDS.removeAll(); teamboard.releaseCombobox.setValue(); teamboard.refreshButton.setDisabled(true); teamboard.resetBoard(); } else { teamboard.loadUserSettingsRelease(); } } else { BxtUtil.showErrorMsg('$RELEASE_LIST_LOAD_ERROR'); } }, loadUserSettingsRelease:function() { if (teamboard.releaseComboDS.getCount() == 1) { var releaseId = teamboard.releaseComboDS.getAt(0).get('id'); teamboard.setReleaseValue(releaseId); teamboard.selectedRelease = releaseId; } else { BxtUserSettings.load( '$_FOCUS_TEAMBOARD_VIEW', '$_FOCUS_RELEASE_SELECTION', teamboard.setReleaseSettingValue, null ); } }, setReleaseSettingValue : function(response, options) { var r = Ext.decode(response.responseText); teamboard.setReleaseValue(r.selection); }, setReleaseValue : function(selection) { var cb = teamboard.releaseCombobox; var ret = BxtUserSettings.setComboboxValue(cb, selection); if( ret == BxtUserSettings.cbNEW) { teamboard.selectedRelease = selection; teamboard.sprintCombobox.clearValue(); teamboard.refreshButton.setDisabled(true); teamboard.resetBoard(); teamboard.loadSprintList(); } else if( ret == BxtUserSettings.cbSET) { cb.setValue(selection); teamboard.loadUserSettingsSprint(); } else if( ret == BxtUserSettings.cbNONE){ teamboard.selectedRelease = null; cb.setValue(); teamboard.resetBoard(); } }, // ----- sprint combo loading with user settings ----- loadSprintList : function() { var rId = teamboard.releaseCombobox.getValue(); if ((rId != '') && (null != rId)) { teamboard.sprintComboDS.load({waitMsg:'$LOADING', params:{ start:0, limit:25, releaseid: rId, userId:'$currentUserId', viewId:'$_FOCUS_SPRINT_PLANNING_VIEW', keyId:'$_FOCUS_RELEASE_SELECTION', selection: rId }, callback: teamboard.onLoadSprintComboDS }); } }, onLoadSprintComboDS : function(rec, options, success) { if(success) { if(rec.length < 1) { teamboard.selectedSprint = null; teamboard.sprintCombobox.setValue(); teamboard.refreshButton.setDisabled(true); teamboard.resetBoard(); } else { teamboard.loadUserSettingsSprint(); } } else { BxtUtil.showErrorMsg('$SPRINT_LIST_LOAD_ERROR'); } }, loadUserSettingsSprint:function() { if (teamboard.sprintComboDS.getCount() == 1) { var sprintId = teamboard.sprintComboDS.getAt(0).get('id'); teamboard.setSprintValue(sprintId); teamboard.selectedSprint = sprintId; teamboard.refreshButton.setDisabled(false); } else { BxtUserSettings.load('$_FOCUS_TEAMBOARD_VIEW', '$_FOCUS_SPRINT_SELECTION', teamboard.setSprintSettingValue, null); } }, setSprintSettingValue : function(response, options) { var r = Ext.decode(response.responseText); teamboard.setSprintValue(r.selection); }, setSprintValue : function(selection) { var cb = teamboard.sprintCombobox; var ret = BxtUserSettings.setComboboxValue(cb, selection); if( ret == BxtUserSettings.cbNEW) { teamboard.selectedSprint = selection; teamboard.temporarySprintPersist(); teamboard.refreshButton.setDisabled(false); } else if( ret == BxtUserSettings.cbNONE){ teamboard.selectedSprint = null; cb.setValue(); teamboard.resetBoard(); } else { cb.setValue(selection); teamboard.refreshButton.setDisabled(false); teamboard.loadBoard(); } if ((ret == BxtUserSettings.cbNEW) || teamboard.projChanged) { teamboard.loadBoard(); teamboard.projChanged = false; } }, loadBoard : function() { // teamboard.projectComboDS.reload(); // teamboard.releaseComboDS.reload(); // teamboard.sprintComboDS.reload(); Eos.resetLayout(); Eos.load(teamboard.projectCombobox.getValue(), teamboard.releaseCombobox.getValue(), teamboard.sprintCombobox.getValue(), false); var winHeight = teamboard.viewPanel.getSize().height; var winWidth = teamboard.viewPanel.getSize().width; teamboard.viewPanel.setSize(winWidth+1,winHeight); teamboard.viewPanel.setSize(winWidth,winHeight); }, resetBoard : function() { Eos.resetLayout(); }, addNewTask : function(sprintId, storyId, el, loadMask) { taskDialog.saveSuccessHandlerFn = Eos.onTaskSave; taskDialog.addNewTask(sprintId, storyId, el, loadMask); }, editTask : function(projectId, taskId, sprintId, isCopy, el, loadMask) { taskDialog.saveSuccessHandlerFn = Eos.onTaskSave; taskDialog.editTask(projectId, sprintId, taskId, isCopy, el, loadMask); }, addNewObstacle : function(projectId,sprintId, taskId, el, loadMask) { obstacleDialog.saveSuccessHandlerFn = Eos.onObstacleSave; obstacleDialog.addNewObstacle(projectId,sprintId, taskId, el, loadMask); }, editObstacle : function(projectId,sprintId, taskId,obstacleId, el, loadMask) { obstacleDialog.saveSuccessHandlerFn = Eos.onObstacleSave; obstacleDialog.editObstacle(projectId,sprintId,obstacleId, taskId, el, loadMask); }, showObstacleMgmtDialog : function(projectId,sprintId, taskId, el, loadMask) { obstaclemgmt.saveSuccessHandlerFn = Eos.onObstacleSave; obstaclemgmt.show(projectId,sprintId, taskId, el, loadMask); }, editStory : function(backlogid, reqId, copy, el, loadMask) { teamboard.setupStoryDialog(backlogid); storyDialog.saveSuccessHandlerFn = Eos.onStorySave; storyDialog.showRequirementDetails(reqId, copy, el, loadMask); }, addNewStory : function(backlogid, el, loadMask) { teamboard.setupStoryDialog(backlogid); storyDialog.saveSuccessHandlerFn = Eos.onStorySave; storyDialog.addNewRequirement(el, loadMask); }, setupStoryDialog : function(backlogid) { storyDialog.resetDialog(); storyDialog.productBacklog = backlogid; storyDialog.projectId = teamboard.projectCombobox.getValue(); storyDialog.sprintId = teamboard.sprintCombobox.getValue(); storyDialog.tabx = 'tbx'; }, syncTasksWarn : function() { var msg = '$SYNCTASK_WARN'; Ext.Msg.show({ title:'$SYNCTASK_DIALOGTITLE', msg: ''+msg+'', buttons: Ext.Msg.OKCANCEL, fn: teamboard.syncTasks, icon: Ext.MessageBox.WARNING }); }, syncTasks : function(ans) { if(ans == 'ok') { Eos.resetLayout(); Eos.load(teamboard.projectCombobox.getValue(), teamboard.releaseCombobox.getValue(), teamboard.sprintCombobox.getValue(), true); var winHeight = teamboard.viewPanel.getSize().height; var winWidth = teamboard.viewPanel.getSize().width; teamboard.viewPanel.setSize(winWidth+1,winHeight); teamboard.viewPanel.setSize(winWidth,winHeight); } } }