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);
}
}
}