#set ($EDIT_BACKLOG_TITLE = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.edittitle"))
#set ($ADD_BACKLOG_TITLE = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.addtitle"))
#set ($BACKLOG_HEADER_ID= $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.id"))
#set ($BACKLOG_HEADER_NAME = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.name"))
#set ($BACKLOG_HEADER_PROJECT = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.project"))
#set ($BACKLOG_HEADER_PUBLIC = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.public"))
#set ($BACKLOG_HEADER_LINKS = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.links"))
#set ($BACKLOG_HEADER_STORIES = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.stories"))
#set ($BACKLOG_HEADER_OWNER = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.owner"))
#set ($BACKLOG_HEADER_LASTSYNCHED = $CommonFunctions.getEncodedTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.header.lastsynched"))
#set ($ADD_NEW_BACKLOG_TTIP = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.addnewbacklogttip")))
#set ($ADD_BACKLOG_BUTTON = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.addbacklogbutton")))
#set ($DELETE_BACKLOG_TTIP = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.deletebacklogtitle")))
#set ($DELETE_BACKLOG_BUTTON = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.deletebacklogbutton")))
#set ($DELETE_BACKLOG_MSG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.deletebacklogmsg")))
#set ($DELETE_BACKLOG_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.deletebacklogtitle")))
#set ($DELETE_MASTER_BACKLOG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.deletemasterbacklog")))
#set ($CLOSE_TEXT = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.closetext")))
#set ($SYNC_THIS_BACKLOG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.syncbacklog")))
#set ($REFRESH_THIS_BACKLOG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.refreshbacklog")))
#set ($MANAGE_BACKLOG_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.managebacklogtitile")))
#set ($CONTACT_ADMIN_MSG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.contactadminmsg")))
#set ($ERROR_LOADING_BACKLOGS = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.backlogloaderror")))
#set ($NUMBER_OF_BACKLOGS = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.totalbacklogs")))
#set ($NUMBER_OF_PROJECTS = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.totalprojects")))
#set ($OWNER = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.owner")))
#set ($PROJECT = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.project")))
#set ($STORY_REP_CONNECTION = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.storyrepconnect")))
#set ($DEFAULT_DATA_STORE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.defaultdatastore")))
#set ($ID_LABEL = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.ID")))
#set ($BLANK_ENTRY_MSG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.blankmsg")))
#set ($SAVE_TEXT = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.savetext")))
#set ($INVALID_MSG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.invalidmsg")))
#set ($SAVE_BACKLOG_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.savebacklogtitle")))
#set ($CANCEL_TEXT = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.canceltext")))
#set ($SAVING_BACKLOG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.savingbacklog")))
#set ($SAVE_BACKLOG_ERROR = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.savebacklogerror")))
#set ($SYNCHRONIZE_BACKLOG = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.synchronizebacklog")))
#set ($BACKLOG_PUBLIC = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.backlogpublic")))
#set ($ERROR_TITLE = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.backlog.error")))
#set ($LOAD_ERROR = $CommonFunctions.encodeJavaScriptString($CommonFunctions.getTermFromResourceBundle($currentUserId, "gbacklogmgmt", "gbacklogmgmt.backlog.loaderror")))
// HTMLComponent - An extension of BoxComponent to allow inline HTML
// while preserving lazy rendering
Ext.HTMLComponent = function(config) {
Ext.apply(this,config);
Ext.HTMLComponent.superclass.constructor.call(this);
this.on('beforerender',function() {
if ( !this.el ) {
this.el = Ext.DomHelper.append(Ext.getBody(),{
tag:'div',
html:this.html
},true);
}
return true;
},this);
}
Ext.extend(Ext.HTMLComponent,Ext.BoxComponent);
var backlogmgmt = {
mgmtDialog : null,
ds : null,
gridCtrl : null,
addButton : null,
closeButton : null,
topText : null,
backlogDialog : null, // backlog dialog and forms entries
bdlgFormCtrl : null,
bdlgFormRec : null,
bdlgNewFormRec : null,
bdlgProjCombo : null, // backlog dialog project combo
bdlgProjCombods : null, // combo ds
bdlgUserCombo : null, // backlog dialog user combo
bdlgUserCombods : null, // combo ds
comboRec: null,
syncmenu : null, // context menu entry for sync backlog
refreshPBX: false,
init : function() {
backlogmgmt.createMgmtDialog();
backlogmgmt.createBacklogDialog();
},
// ---------- Backlog Management Dialog ----------
createMgmtDialog : function() {
backlogmgmt.reader = new Ext.data.JsonReader({}, [
{name: 'id'},
{name: 'name', sortType:'asUCString'},
{name: 'project', sortType:'asUCString'},
{name: 'projid'},
{name: 'activated'},
{name: 'lcount', type:'int' },
{name: 'scount', type:'int' },
{name: 'owner', sortType:'asUCString'},
{name: 'lastsynched'},
{name: 'warningMsg'},
{name: 'errorcodes'},
{name: 'repositoryid'},
{name: 'ismaster'}
]);
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=LOAD-BACKLOGS'}),
reader: backlogmgmt.reader,
sortInfo:{field: 'project', direction: "ASC"},
listeners : { load : backlogmgmt.updateTopText }
});
ds.on('load', backlogmgmt.loadHandler);
ds.on('loadexception', backlogmgmt.httpLexHandler);
//ds.load({waitMsg:'$LOADING',params:{start:0, limit:25}});
backlogmgmt.ds = ds;
backlogmgmt.gridCtrl = new Ext.grid.GridPanel({
ds: backlogmgmt.ds,
autoExpandColumn: 'name',
autoExpandMin: 100,
columns: [
{header: "$BACKLOG_HEADER_ID", width: 40, sortable: true, dataIndex: 'id', renderer: TBLRender.Id },
{id:'name',header: "$BACKLOG_HEADER_NAME", width: 100, sortable: true, dataIndex: 'name', renderer: backlogmgmt.renderName },
{header: "$BACKLOG_HEADER_PROJECT", width: 100, sortable: true, dataIndex: 'project' },
{header: "$BACKLOG_HEADER_PUBLIC", width: 40, sortable: true, dataIndex: 'activated', renderer: TBLRender.YBoolean },
{header: "$BACKLOG_HEADER_LINKS", width: 40, sortable: true, dataIndex: 'lcount', renderer: TBLRender.Number },
{header: "$BACKLOG_HEADER_STORIES", width: 40, sortable: true, dataIndex: 'scount', renderer: backlogmgmt.renderStoryCount },
{header: "$BACKLOG_HEADER_OWNER", width: 90, sortable: true, dataIndex: 'owner' },
{header: "$BACKLOG_HEADER_LASTSYNCHED", width: 104, sortable: true, dataIndex: 'lastsynched' }
],
loadMask: {msg: '$LOADING'},
frame:true,
collapsible: false,
animCollapse: false,
tbar: [],
layout:'fit',
headerAsText:false,
renderTo: document.body
});
if(!backlogmgmt.mgmtDialog) {
backlogmgmt.addButton = new Ext.Button({id: 'addPBlButton', text:'$ADD_BACKLOG_BUTTON', tooltip:'$ADD_NEW_BACKLOG_TTIP', iconCls: 'add'});
backlogmgmt.addButton.on('click', function() {
backlogmgmt.addNewBacklog(backlogmgmt.addButton.getEl());
});
backlogmgmt.removeButton = new Ext.Button({text:'$DELETE_BACKLOG_BUTTON', tooltip:'$DELETE_BACKLOG_TTIP', iconCls: 'remove'});
backlogmgmt.removeButton.on('click', function() {
var selections = backlogmgmt.gridCtrl.selModel.getSelections();
var selectlen = selections.length;
if(selectlen > 0) {
// check if it a master backlog
for(var i = 0; i < selectlen; i++) {
var srow = selections[i];
var master = srow.get('ismaster');
if(master) {
BxtUtil.showErrorMsg("$DELETE_MASTER_BACKLOG" + "
" + srow.get('name') + "");
return;
}
}
var msg2 = '$DELETE_BACKLOG_MSG';
Ext.Msg.show({
title:'$DELETE_BACKLOG_TITLE',
msg: '' + msg2 +'',
buttons: Ext.Msg.OKCANCEL,
fn: backlogmgmt.onRemoveBacklog,
icon: Ext.MessageBox.QUESTION,
animEl : backlogmgmt.removeButton.getEl()
});
}
});
backlogmgmt.closeButton = new Ext.Toolbar.Button({id: 'backlogMgmtCloseButton',
text:'$CLOSE_TEXT'});
backlogmgmt.closeButton.on('click', function() {
backlogmgmt.mgmtDialog.hide();
});
// Toolbar
var toolbar = backlogmgmt.gridCtrl.getTopToolbar();
backlogmgmt.topText = new Ext.Toolbar.TextItem();
toolbar.add(backlogmgmt.topText);
toolbar.add('->');
toolbar.add( backlogmgmt.addButton );
toolbar.add( backlogmgmt.removeButton );
// context menu
backlogmgmt.contextMenu = new Ext.menu.Menu();
// handler for context menu items
function contextMenuHandler(item, e) {
switch (item.id) {
case 'refreshBacklogs':
backlogmgmt.ds.reload({waitMsg:'$LOADING',params:{start:0, limit:25}});
break;
}
}
backlogmgmt.mgmtDialog = new Ext.Window({
title: '$MANAGE_BACKLOG_TITLE',
width:700,
height:420,
closeAction:'hide',
plain: true,
items: backlogmgmt.gridCtrl,
modal: true,
resizable : true,
closable: true,
layout: 'fit',
buttons:[{
text:'$CLOSE_TEXT',
id: 'backlogMgmtCloseButton'
,handler:function(){backlogmgmt.mgmtDialog.hide()}
}],
renderTo: document.body
});
}
},
httpLexHandler : function(proxy, store, response, e) {
BxtUtil.showErrorMsg(response.statusText);
},
loadHandler : function(store, records, opts) {
var errorHandled = false;
if(records.length == 1 && (records[0].json.success != undefined)) {
if(!records[0].json.success) {
errorHandled = true;
var msg = records[0].json.data[0].msg;
var msgtype = records[0].json.data[0].type;
store.removeAll();
store.commitChanges();
if(msgtype == undefined) {
BxtUtil.showErrorMsg( msg + ' $CONTACT_ADMIN_MSG');
var subaction = opts.params.subaction;
if('SYNC' == subaction){ // attempt to reload backlog list
backlogmgmt.ds.reload({waitMsg:'$SYNCHING', params:{start:0, limit:25}});
}
} else if(msgtype == 'warn') {
BxtUtil.showWarningMsg(msg);
var subaction = opts.params.subaction;
if('SYNC' == subaction){ // attempt to reload backlog list
backlogmgmt.ds.reload({waitMsg:'$LOADING', params:{start:0, limit:25}});
}
}
}
}
if (!errorHandled) {
ErrorHandlerLib.OnStoreLoad(store, records, opts, "$ERROR_LOADING_BACKLOGS");
}
},
updateTopText : function(ds, records, opts) {
// calculate and update backlog and project count.
var rlen = records.length;
var pmap = []; // proj map
var pcount = 0; // proj count
for(var i=0; i < records.length; i++) {
var p = records[i].get('projid');
if(p != "") {
if(pmap[p] == null) { // not already counted?
pcount++;
pmap[p] = 'v';
}
}
}
var s = pcount;
var msg1 = '$NUMBER_OF_BACKLOGS ' + ds.getCount();
var msg2 = '$NUMBER_OF_PROJECTS ' + s;
backlogmgmt.topText.getEl().innerHTML = msg1 + "
" + msg2;
},
renderName : function(value, p, record, rowindex, colindex, store) {
var backlogId = backlogmgmt.ds.getAt(rowindex).get('id');
return "" + value + "";
},
renderStoryCount : function(value, p, record, rowindex, colindex, store) {
var backlogId = backlogmgmt.ds.getAt(rowindex).get('id');
p.attr = 'style="text-align:right;vertical-align:middle;"';
return "" + value + "";
},
//used by watir
getBacklogId : function(projectid,bname) {
for(var i=0; i < backlogmgmt.ds.getCount(); i++) {
var backlogId = backlogmgmt.ds.getAt(i).get('id');
var backlogName = backlogmgmt.ds.getAt(i).get('name');
var project = backlogmgmt.ds.getAt(i).get('project');
var projid = backlogmgmt.ds.getAt(i).get('projid');
if(projectid == projid && backlogName == bname)
{
return backlogId;
}
}
return "";
},
showBacklogMgmtDialog : function(el) {
backlogmgmt.ds.load({waitMsg:'$LOADING', params:{start:0, limit:25}, failure : BxtUtil.showLoadError});
backlogmgmt.mgmtDialog.show(el);
},
// ---------- Add/Edit Backlog Dialog ----------
createBacklogDialog : function() {
backlogmgmt.comboRec = Ext.data.Record.create( [
{ name:'id' },
{ name:'name', sortType:'asUCString' }
]);
backlogmgmt.bdlgFormRec = Ext.data.Record.create( [
{ name:'backlogId' },
{ name:'name' },
{ name:'category' },
{ name:'desc' },
{ name:'owner' },
{ name:'projectId' },
{ name:'activated' }
]);
if(backlogmgmt.bdlgProjCombods == null ) {
backlogmgmt.bdlgProjCombods = new Ext.data.Store({
id : 0,
proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=PROJECTLIST'}),
reader: new Ext.data.JsonReader({}, backlogmgmt.comboRec),
sortInfo:{field: 'name', direction: "ASC"}
});
backlogmgmt.bdlgNewFormRec = new backlogmgmt.bdlgFormRec(
{ backlogId: '$SYSTEM_ASSIGNED', activated: false });
}
// user combo
if(backlogmgmt.bdlgUserCombo == null) {
backlogmgmt.bdlgUserCombods = new Ext.data.Store({
id : 0,
proxy: new Ext.data.HttpProxy({url:'pbv/PBVAsyncHandler?action=USERLIST'}),
reader: new Ext.data.JsonReader({}, backlogmgmt.comboRec),
sortInfo:{field: 'name', direction: "ASC"}
});
backlogmgmt.bdlgUserCombo = new Ext.form.ComboBox({
autoCreate: {tag: "input", type: "combo", id: "bdlgOwnerCombo"},
fieldLabel: '$OWNER',
hiddenName: 'owner',
name: 'owner',
store: backlogmgmt.bdlgUserCombods,
displayField: 'name',
valueField: 'id',
selectOnFocus: true,
forceSelection : false,
listClass: 'x-combo-list-small',
mode: 'local',
allowBlank: true,
triggerAction: 'all',
editable: false,
anchor: '94%'
});
}
// project combo
if(backlogmgmt.bdlgProjCombo == null) {
backlogmgmt.bdlgProjCombo = new Ext.form.ComboBox({
autoCreate: {tag: "input", type: "combo", id: "bdlgProjCombo"},
tpl: '{name}
',
fieldLabel: '$PROJECT',
hiddenName: 'projectId',
name: 'projectId',
store: backlogmgmt.bdlgProjCombods,
displayField: 'name',
valueField: 'id',
selectOnFocus: true,
forceSelection : false,
listClass: 'x-combo-list-small',
mode: 'local',
allowBlank: false,
triggerAction: 'all',
editable: false,
anchor: '94%'
//listeners: { select: projectChangeHandler, loadexception: BxtUtil.lexHandler }
});
}
backlogmgmt.bdlgIdField = new Ext.form.TextField({
fieldLabel: '$ID_LABEL',
name: 'backlogId',
allowBlank: false,
readOnly: true,
cls: 'x-item-disabled',
anchor:'94%',
tabIndex: -1,
hidden: true,
hideLabel: true,
height: 0
});
backlogmgmt.bdlgTitleField = new Ext.form.TextField ({
autoCreate: {tag: "input", type: "text", id: "bdlgTitleField"},
fieldLabel: '$NAME',
name: 'name',
allowBlank: false,
anchor:'94%',
maxLength: 36,
validator: function(v) {
if(v!=null && v.trim() == '') {
return '$BLANK_ENTRY_MSG'
}
return true;
}
});
// backlog dialog form
backlogmgmt.bdlgFormCtrl = new Ext.FormPanel({
buttonAlign: 'right',
labelAlign: 'right',
labelWidth: 78,
frame:true,
width: 480,
reader: new Ext.data.JsonReader({}, backlogmgmt.bdlgFormRec),
items: [{
layout: 'form',
items: [
backlogmgmt.bdlgIdField
,
backlogmgmt.bdlgTitleField
,{
autoCreate: {tag: "textarea", id: "bdlgDescField"},
xtype:'textarea',
fieldLabel: '$DESC',
name: 'desc',
anchor:'94%',
maxLength: 2000,
height: 92
},
backlogmgmt.bdlgUserCombo
,
{
autoCreate: {tag: "input", type: "checkbox", id: "bdlgFormCtrlCheckbox"},
xtype:'checkbox',
name: 'activated',
fieldLabel: '',
labelSeparator: '',
boxLabel: '$BACKLOG_PUBLIC',
anchor: '94%' ,
checked: false ,
autoWidth : true
}
,
backlogmgmt.bdlgProjCombo
]
}],
buttons: [{
id: 'bdlgFormCtrlSaveButton',
text: '$SAVE_TEXT',
handler: function(){
backlogmgmt.preSaveHandler();
}
},
{
id: 'bdlgFormCtrlCancelButton',
text: '$CANCEL_TEXT',
handler: function() {
backlogmgmt.backlogDialog.hide();
}
}]
});
if(!backlogmgmt.backlogDialog){
backlogmgmt.backlogDialog = new Bxt.BMSWindow({
id: 'blgdlg-win',
layout:'fit',
width: 460,
height:290,
closeAction:'hide',
plain: true,
items: backlogmgmt.bdlgFormCtrl,
modal: true,
resizable : false,
closable: true,
renderTo: document.body,
saveFunc: backlogmgmt.preSaveHandler,
formCtrl: backlogmgmt.bdlgFormCtrl
});
};
// Intercept backspace key on dialog
var keymap = new Ext.KeyMap('blgdlg-win', {
key: Ext.EventObject.BACKSPACE,
fn: function(k, e) {
if(!BxtUtil.handleBACKSPACEKey(k,e)) {
var tid = e.getTarget().id;
if( tid === 'bdlgOwnerCombo' || tid === 'bdlgProjCombo' ) { // drop downs
e.preventDefault();
}
}
}
});
backlogmgmt.backlogDialog.on('show', function(){
backlogmgmt.bdlgTitleField.getEl().dom.focus();
}, null, {delay: 100});
},
preSaveHandler : function() {
if(!backlogmgmt.bdlgFormCtrl.form.isValid()) {
BxtUtil.showErrorMsg("$INVALID_MSG")
return;
}
backlogmgmt.backlogDialog.confirmHide = true;
var id = backlogmgmt.bdlgIdField.getValue();
var newbklog = ((id == "") || ('$SYSTEM_ASSIGNED' == id));
backlogmgmt.submitBacklog("ok");
},
// ---------- Backlog Dialog Form Submit ----------
submitBacklog : function(ans) {
if(ans == 'ok') {
backlogmgmt.bdlgFormCtrl.form.submit({url:'pbv/PBVAsyncHandler',
waitMsg : ' ',
waitTitle : '$SAVING_BACKLOG',
settings: {show: true, title:'$SAVE_BACKLOG_ERROR'},
params:{action:'SAVE-BACKLOG', projectId: backlogmgmt.bdlgProjCombo.getValue()},
success:function(form, action) {
var res = action.result;
if (res.success) {
backlogmgmt.backlogDialog.hide();
backlogmgmt.ds.reload({waitMsg:'$LOADING', params:{start:0, limit:25}, callback: backlogmgmt.reloadBacklogtableCombos});
} else {
ErrorHandlerLib.onFormFailure(form, action);
}
},
failure:function(form, action) {
backlogmgmt.backlogDialog.confirmHide = false;
ErrorHandlerLib.onFormFailure(form, action);
}
});
}
},
// ---------- Sync Backlogs from Backlog Management Dialog ----------
syncBacklogs : function() {
var selections = backlogmgmt.gridCtrl.selModel.getSelections();
var selectlen = selections.length;
if(selectlen > 0) {
var srow = selections[0];
var msg = BxtUtil.formatId(srow.get('id')) + ': ' + srow.get('name') + '';
var msg2 = '$SYNC_WARN3_1ST ' + msg + '? '+ '$SYNC_WARN3_2ND';
Ext.Msg.show({
title:'$SYNCHRONIZE_BACKLOG',
msg: '' + msg2 +'',
buttons: Ext.Msg.OKCANCEL,
fn: backlogmgmt.onSyncBacklog,
icon: Ext.MessageBox.QUESTION
});
}
},
onSyncBacklog : function(val) {
if(val == 'ok'){
var pId = backlogtable.projectCombobox.getValue();
var bId = backlogtable.pbCombobox.getValue();
var selections = backlogmgmt.gridCtrl.selModel.getSelections();
var ids = "";
for (i = 0; i < selections.length; i++) {
var record = selections[i];
if (ids != "") {
ids += ",";
}
ids += record.data.id;
if(bId == record.data.id)
{
backlogmgmt.refreshPBX = true;
}
}
backlogmgmt.ds.reload({waitMsg:'$SYNCHING', callback: backlogmgmt.afterSync, params:{start:0, limit:25, subaction:'SYNC', ids:ids}});
}
},
afterSync: function()
{
if(backlogmgmt.refreshPBX)
{
backlogmgmt.refreshPBX = false;
backlogtable.loadPBxTable(backlogtable.onLoadStories);
}
},
// ---------- Add Backlog ----------
addNewBacklog : function( el ) {
backlogmgmt.backlogDialog.confirmHide = false;
var fc = backlogmgmt.bdlgFormCtrl;
fc.form.reset();
backlogmgmt.bdlgProjCombods.reload( { add: false, params: { projs:'Agile' } } );
backlogmgmt.bdlgUserCombods.reload( { add: false } );
backlogmgmt.backlogDialog.setTitle("$ADD_BACKLOG_TITLE");
fc.form.loadRecord( backlogmgmt.bdlgNewFormRec, false );
backlogmgmt.bdlgProjCombo.setDisabled(false);
backlogmgmt.backlogDialog.show(el);
},
// ---------- Edit Backlog ----------
showBacklogDetails : function( backlogId, el) {
backlogmgmt.backlogDialog.confirmHide = false;
var fc = backlogmgmt.bdlgFormCtrl;
fc.form.reset();
backlogmgmt.bdlgProjCombods.reload( { params: { projs:'BacklogProject', backlogid: backlogId },
callback : backlogmgmt.loadForm,
localvars: { el: el} } ); //
backlogmgmt.bdlgUserCombods.reload( { add: false } );
backlogmgmt.backlogDialog.setTitle( "$EDIT_BACKLOG_TITLE" + ": " + BxtUtil.formatId(backlogId));
backlogmgmt.bdlgProjCombo.setDisabled(true);
},
loadForm : function(recs, options, success) {
if(success) {
var fc = backlogmgmt.bdlgFormCtrl;
var backlogId = options.params.backlogid;
var el = options.localvars.el;
fc.form.load({
url: 'pbv/PBVAsyncHandler?action=LOAD-BACKLOG&backlogId=' + backlogId,
loadMask: {msg: '$LOADING'},
failure : backlogmgmt.handleLoadFailure
});
backlogmgmt.backlogDialog.show(el);
} else {
backlogmgmt.handleLoadFailure();
}
},
handleLoadFailure : function( form, action) {
// TODO: Better error handling in general.
Ext.MessageBox.show({
title: '$ERROR_TITLE',
msg: '$LOAD_ERROR',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.ERROR
});
},
// ---------- Delete backlog ----------
onRemoveBacklog : function(val) {
if(val == 'ok'){
var selections = backlogmgmt.gridCtrl.selModel.getSelections();
var ids = "";
for (i = 0; i < selections.length; i++) {
var record = selections[i];
if (ids != "") {
ids += ",";
}
ids += record.data.id;
}
backlogmgmt.ds.reload({waitMsg:'$DELETING',
params:{start:0, limit:25, subaction: 'DELETE', deleteids:ids},
callback: backlogmgmt.reloadBacklogtableCombos});
}
},
// !!! External Linkage to product backlog and story dialog
reloadBacklogtableCombos : function(rec, options, success) {
if(success) {
backlogtable.loadBacklogList();
//sprintplanning.loadProjectList();
//sprintplanning.loadBacklogList();
storyDialog.updaterdlgBklogCombodsByDS(backlogtable.pbCombods);
} else {
BxtUtil.showErrorMsg("Error in loading backlog combobox");
}
}
}