processmaker-builder
Version:
The gulp task runner for ProcessMaker building
1,184 lines (1,171 loc) • 76 kB
JavaScript
(function () {
PMDesigner.assigmentRules = function (event) {
var formAssignmentRules,
i,
tabPanelAssignmentRules,
windowAssignmentRules,
dataProperties,
activity = event,
pageSizeAssignment = 9,
pageSizeAssignmentAD = 9,
quickMessageWindow = new QuickMessageWindow(),
arrayObjectUserList = [],
arrayObjectUserList2 = [],
arrayObjectUsers = [],
arrayObjectUsers2 = [],
arrayObjectAdhocUser = [],
arrayObjectAdhocUser2 = [],
arrayObjectAdhocUserList = [],
arrayObjectAdhocUserList2 = [],
warningMessageWindowDirty,
restClient,
assigmentPanelGlobal,
assigmentPanelUser,
panelTitleUser,
titleUser,
panelGridUser,
buttonsUsers,
gridUsers,
assigmentPanelUserList,
panelTitleUserList,
titleUserList,
panelGridUserList,
buttonsUserList,
gridUserList,
assigmentPanelGlobalAD,
assigmentPanelUserAD,
panelTitleUserAD,
titleUserAD,
panelSearchUserAD,
searchGridUserAD,
panelGridUserAD,
buttonsUsersAD,
gridUsersAD,
assigmentPanelUserListAD,
panelTitleUseListAD,
titleUserListAD,
panelGridUserListAD,
buttonsUserListAD,
gridUserListAD,
panelContainerRules,
panelContainerUsers,
panelContainerUsersAdHoc,
loadTrigger,
loadFormData,
loadServerData,
loadFreeUsers,
loadAssignmentUsers,
loadAdHocFreeUsers,
loadAdHocAssignmentUsers,
updateRules,
allHidden,
changeRadioButtons,
visibleService,
hiddenTab,
saveData,
saveOrUpdateUserAndAdHocUsers,
applyStyles,
applyStylesAD,
assignee,
remove,
assigneeAD,
removeAD,
groupRows,
flashMessage = new PMUI.ui.FlashMessage({
message: '',
appendTo: document.body,
duration: 1000,
severity: "success"
});
warningMessageWindowDirty = new PMUI.ui.MessageWindow({
id: 'warningMessageWindowDirty',
windowMessageType: 'warning',
width: 490,
bodyHeight: 'auto',
title: 'Routing Rule'.translate(),
message: 'Are you sure you want to discard your changes?'.translate(),
footerItems: [{
id: 'warningMessageWindowDirtyButtonNo',
text: 'No'.translate(),
visible: true,
handler: function () {
warningMessageWindowDirty.close();
},
buttonType: "error"
}, {
id: 'warningMessageWindowDirtyButtonYes',
text: 'Yes'.translate(),
visible: true,
handler: function () {
warningMessageWindowDirty.close();
windowAssignmentRules.close();
},
buttonType: "success"
}]
});
formAssignmentRules = new PMUI.form.Form({
id: 'formAssignmentRules',
visibleHeader: false,
buttonPanelPosition: 'top',
width: 910,
items: [
new PMUI.field.RadioButtonGroupField({
id: 'formTasAssignType',
name: 'tas_assign_type',
label: 'Case assignment method'.translate(),
required: false,
controlPositioning: 'horizontal',
maxDirectionOptions: 3,
options: [{
id: 'formTasAssignTypeCyclical',
label: 'Cyclical Assignment'.translate(),
value: 'BALANCED',
selected: true
}, {
id: 'formTasAssignTypeManual',
label: 'Manual Assignment'.translate(),
value: 'MANUAL'
}, {
id: 'formTasAssignTypeValue',
label: 'Value Based Assignment'.translate(),
value: 'EVALUATE'
}, {
id: 'formTasAssignTypeReports',
label: 'Reports to'.translate(),
value: 'REPORT_TO'
}, {
id: 'formTasAssignTypeSelf',
label: 'Self Service'.translate(),
value: 'SELF_SERVICE'
}, {
id: 'formTasAssignTypeSelfValue',
label: 'Self Service Value Based Assignment'.translate(),
value: 'SELF_SERVICE_EVALUATE'
}, {
id: 'formTasAssignTypeParallel',
label: 'Parallel Assignment'.translate(),
value: 'MULTIPLE_INSTANCE'
}, {
id: 'formTasAssignTypeParallel',
label: 'Value Based Assignment'.translate(),
value: 'MULTIPLE_INSTANCE_VALUE_BASED'
}
],
onChange: function (newVal, oldVal) {
changeRadioButtons(newVal);
},
}), new CriteriaField({
id: 'formAssignmentRulesVariable',
pmType: 'text',
name: 'tas_assign_variable',
valueType: 'string',
label: 'Variable for Value Based Assignment'.translate(),
controlsWidth: DEFAULT_WINDOW_WIDTH - 527
}), new CriteriaField({
id: 'formAssignmentRulesVariableSelf',
pmType: 'text',
name: 'tas_group_variable',
valueType: 'string',
label: 'Variable for Self Service Value Based Assignment'.translate(),
controlsWidth: DEFAULT_WINDOW_WIDTH - 527
}), {
id: 'formAssignmentRulesSetTimeout',
pmType: 'checkbox',
name: 'tas_selfservice_timeout',
label: 'Set a timeout'.translate(),
options: [{
id: 'formAssignmentRulesSetTimeoutOption',
label: '',
value: '1'
}
],
onChange: function (val) {
visibleService(this.controls[0].selected);
}
}, {
id: 'formAssignmentRulesTime',
pmType: 'text',
name: 'tas_selfservice_time',
valueType: 'string',
label: 'Time'.translate(),
required: true,
validators: [{
pmType: "regexp",
criteria: /^[0-9]*$/,
errorMessage: "Please enter a numeric value".translate()
}]
}, {
id: 'formAssignmentRulesTimeUnit',
pmType: 'dropdown',
name: 'tas_selfservice_time_unit',
label: 'Time unit'.translate(),
options: [{
id: 'formAssignmentRulesTimeUnitOption1',
label: 'Hours'.translate(),
value: 'HOURS'
}, {
id: 'formAssignmentRulesTimeUnitOption2',
label: 'Days'.translate(),
value: 'DAYS'
}, {
id: 'formAssignmentRulesTimeUnitOption3',
label: 'Minutes'.translate(),
value: 'MINUTES'
}]
}, {
id: 'formAssignmentRulesTrigger',
pmType: 'dropdown',
name: 'tas_selfservice_trigger_uid',
label: 'Trigger to execute'.translate(),
required: true,
options: [{
id: 'formAssignmentRulesTriggerOption1',
value: '',
label: ''
}]
}, {
id: 'formAssignmentRulesTriggerExecute',
pmType: 'dropdown',
name: 'tas_selfservice_execution',
label: 'Execute Trigger'.translate(),
options: [{
id: 'formAssignmentRulesTriggerExecute1',
label: 'Every time scheduled by cron'.translate(),
value: 'EVERY_TIME'
}, {
id: 'formAssignmentRulesTriggerExecute2',
label: 'Once'.translate(),
value: 'ONCE'
}]
}
]
});
restClient = new PMRestClient({
endpoint: 'projects',
typeRequest: 'get',
messageError: "There are problems, please try again.".translate(),
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
});
assigmentPanelGlobal = new PMUI.core.Panel({
id: "assigmentPanelGlobal",
layout: "hbox",
width: DEFAULT_WINDOW_WIDTH
});
assigmentPanelUser = new PMUI.core.Panel({
id: "assigmentPanelUser",
layout: "vbox",
width: "60%",
style: {
cssClasses: [
'mafe-panel-assignment-white'
]
}
});
panelTitleUser = new PMUI.core.Panel({
id: "panelTitleUser",
layout: "hbox"
});
titleUser = new PMUI.ui.TextLabel({
id: "titleUser",
label: " ",
textMode: 'plain',
text: 'Available users list'.translate(),
style: {
cssClasses: [
'mafe-designer-assigment-title'
]
}
});
panelGridUser = new PMUI.core.Panel({
id: "panelGridUser",
layout: "hbox",
style: {
cssClasses: ["mafe-panel"]
}
});
buttonsUsers = new PMUI.field.RadioButtonGroupField({
id: "buttonsUsers",
controlPositioning: 'horizontal',
maxDirectionOptions: 3,
options: [{
id: 'buttonAllAv',
label: 'View all'.translate(),
value: 'all',
selected: true
}, {
id: 'buttonUsersAv',
label: 'View users'.translate(),
value: 'user'
}, {
id: 'buttonGroupsAv',
label: 'View groups'.translate(),
value: 'group'
}],
onChange: function (newVal, oldVal) {
switch (newVal) {
case "user" :
gridUsers.typeList = "user";
break;
case "group":
gridUsers.typeList = "group";
break;
default:
gridUsers.typeList = "";
break;
}
gridUsers.goToPage(0);
}
});
gridUsers = new PMUI.grid.GridPanel({
id: "gridUsers",
pageSize: pageSizeAssignment - 1,
edges: 2,
behavior: 'dragdropsort',
displayedPages: 2,
filterable: true,
filterPlaceholder: 'Search ...'.translate(),
emptyMessage: 'No records found'.translate(),
nextLabel: 'Next'.translate(),
previousLabel: 'Previous'.translate(),
tableContainerHeight: 242,
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
customDataRest: function (data) {
var i;
for (i = 0; i < data.length; i += 1) {
if (data[i].aas_type == "group") {
data[i]["available"] = data[i].aas_name;
} else {
data[i]["available"] = data[i].aas_name + " " + data[i].aas_lastname + " (" + data[i].aas_username + ")";
}
}
return data;
},
dynamicLoad: {
keys: {
server: HTTP_SERVER_HOSTNAME,
projectID: PMDesigner.project.projectId,
workspace: WORKSPACE,
accessToken: PMDesigner.project.tokens.access_token,
endPoint: 'project/' + PMDesigner.project.id + '/activity/' + activity.id + '/available-assignee/paged'
}
},
columns: [{
id: 'gridUsersButtonLabel',
title: '',
dataType: 'button',
width: "10%",
buttonLabel: function (row, data) {
return data.fullName;
},
buttonStyle: {
cssClasses: [
'mafe-grid-button'
]
},
onButtonClick: function (row, grid) {
var option, select;
select = document.createElement("span");
select.id = "list-usersIngroup";
option = document.createElement("span");
option.id = "list-usersIngroup-iem"
if (row.getData()["aas_type"] === 'group') {
var restClient = new PMRestClient({
typeRequest: 'get',
functionSuccess: function (xhr, response) {
var optionClone, i;
for (i = 0; i < response.length; i += 1) {
if (i == 10) {
optionClone = option.cloneNode(false);
optionClone.innerHTML = "<b style='float: right'>. . .<b>";
select.appendChild(optionClone);
} else {
optionClone = option.cloneNode(false);
optionClone.textContent = "- " + response[i].usr_firstname + ' ' + response[i].usr_lastname;
optionClone.title = response[i].usr_firstname + ' ' + response[i].usr_lastname;
select.appendChild(optionClone);
}
}
if (!optionClone) {
optionClone = option.cloneNode(false);
optionClone.textContent = "No users".translate();
select.appendChild(optionClone);
}
quickMessageWindow.show($(row.html).find('a')[0], select);
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
},
messageError: 'There are problems saving the assigned user, please try again.'.translate()
});
restClient.setBaseEndPoint('group/' + row.getData()["aas_uid"] + '/users?start=0&limit=11');
restClient.executeRestClient();
}
}
},
{
title: "",
dataType: 'string',
columnData: "available",
alignmentCell: "left",
width: "330px"
},
{
id: 'gridUsersButtonAssign',
title: '',
dataType: 'button',
width: "10%",
buttonStyle: {
cssClasses: [
'mafe-button-edit-assign'
]
},
buttonLabel: function (row, data) {
var sw = row.getData()["aas_type"] === 'user';
row.getCells()[0].content.style.addClasses([sw ? 'button-icon-user' : 'button-icon-group']);
return '';
},
onButtonClick: function (row, grid) {
var dataRow = {};
grid = (grid != null) ? grid : gridUsers;
assignee(row);
gridUserList.goToPage(gridUserList.currentPage);
grid.goToPage(0);
gridUserList.goToPage(0);
flashMessage.setMessage("Assignee saved successfully".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
}
}],
onDropOut: function (item, origin, destiny) {
},
onDrop: function (a, row) {
grid = this;
remove(row);
gridUserList.goToPage(gridUserList.currentPage);
grid.goToPage(grid.currentPage);
flashMessage.setMessage("The user/group was successfully removed".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
return false;
},
style: {
cssClasses: [
'mafe-designer-assigment-grid'
]
}
});
assigmentPanelUserList = new PMUI.core.Panel({
id: "assigmentPanelUserList",
layout: "vbox",
width: "60%",
style: {
cssClasses: [
'mafe-panel-assignment-white'
]
}
});
panelTitleUserList = new PMUI.core.Panel({
id: "panelTitleUserList",
layout: "hbox"
});
titleUserList = new PMUI.ui.TextLabel({
id: "titleUserList",
textMode: 'plain',
text: 'Assigned users list'.translate(),
style: {
cssClasses: [
'mafe-designer-assigment-title'
]
}
});
panelGridUserList = new PMUI.core.Panel({
id: "panelGridUserList",
layout: "hbox",
style: {
cssClasses: ["mafe-panel"]
}
});
buttonsUserList = new PMUI.field.RadioButtonGroupField({
id: "buttonsUserList",
controlPositioning: 'horizontal',
maxDirectionOptions: 3,
options: [{
id: 'buttonAllAs',
label: 'View all'.translate(),
value: 'all',
selected: true
}, {
id: 'buttonUsersAs',
label: 'View users'.translate(),
value: 'user'
}, {
id: 'buttonGroupsAs',
label: 'View groups'.translate(),
value: 'group'
}],
onChange: function (newVal, oldVal) {
switch (newVal) {
case "user" :
gridUserList.typeList = "user";
break;
case "group":
gridUserList.typeList = "group";
break;
default:
gridUserList.typeList = "";
break;
}
gridUserList.goToPage(0);
}
});
gridUserList = new PMUI.grid.GridPanel({
id: "gridUserList",
pageSize: pageSizeAssignment - 1,
edges: 2,
displayedPages: 2,
behavior: 'dragdropsort',
filterable: true,
nextLabel: 'Next'.translate(),
filterPlaceholder: 'Search ...'.translate(),
previousLabel: 'Previous'.translate(),
tableContainerHeight: 242,
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
emptyMessage: function () {
var div = document.createElement('div'),
span = document.createElement('span');
div.appendChild(span);
div.className = "mafe-grid-panel-empty";
div.style.height = gridUserList.dom.tableContainer.style.height;
div.style.width = gridUserList.dom.tableContainer.style.width;
span.innerHTML = 'Drag & Drop a User or a Group here'.translate();
return div;
},
onEmpty: function () {
gridUserList.dom.tableContainer.style.overflow = "hidden";
},
dynamicLoad: {
keys: {
server: HTTP_SERVER_HOSTNAME,
projectID: PMDesigner.project.projectId,
workspace: WORKSPACE,
accessToken: PMDesigner.project.tokens.access_token,
endPoint: 'project/' + PMDesigner.project.id + '/activity/' + activity.id + '/assignee/paged'
}
},
customDataRest: function (data) {
var i;
for (i = 0; i < data.length; i += 1) {
if (data[i].aas_type == "group") {
data[i]["assignment"] = data[i].aas_name;
} else {
data[i]["assignment"] = data[i].aas_name + " " + data[i].aas_lastname + " (" + data[i].aas_username + ")";
}
}
return data;
},
columns: [
{
id: 'gridUserListButtonLabel',
title: "",
width: "10%",
dataType: 'button',
buttonLabel: function (row, data) {
return data.lastName;
},
buttonStyle: {
cssClasses: [
'mafe-grid-button'
]
},
onButtonClick: function (row, grid) {
var option, select;
select = document.createElement("span");
select.id = "list-usersIngroup";
option = document.createElement("span");
option.id = "list-usersIngroup-iem";
if (row.getData()["aas_type"] === "group") {
var restClient = new PMRestClient({
typeRequest: 'get',
functionSuccess: function (xhr, response) {
var optionClone, i;
for (i = 0; i < response.length; i += 1) {
if (i == 10) {
optionClone = option.cloneNode(false);
optionClone.innerHTML = "<b style='float: right'>. . .<b>";
select.appendChild(optionClone);
} else {
optionClone = option.cloneNode(false);
optionClone.textContent = "- " + response[i].usr_firstname + ' ' + response[i].usr_lastname;
optionClone.title = response[i].usr_firstname + ' ' + response[i].usr_lastname;
select.appendChild(optionClone);
}
}
if (!optionClone) {
optionClone = option.cloneNode(false);
optionClone.textContent = "No users".translate();
select.appendChild(optionClone);
}
quickMessageWindow.show($(row.html).find('a')[0], select);
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
},
messageError: 'There are problems saving the assigned user, please try again.'.translate()
});
restClient.setBaseEndPoint("group/" + row.getData()["aas_uid"] + "/users?start=0&limit=11");
restClient.executeRestClient();
}
}
},
{
title: '',
dataType: 'string',
columnData: "assignment",
alignmentCell: "left",
width: "330px"
},
{
id: 'gridUserListButtonDelete',
title: '',
dataType: 'button',
width: "10%",
buttonStyle: {
cssClasses: [
'mafe-button-delete-assign'
]
},
buttonLabel: function (row, data) {
var sw = row.getData()["aas_type"] === 'user';
row.getCells()[0].content.style.addClasses([sw ? 'button-icon-user' : 'button-icon-group']);
return '';
},
onButtonClick: function (row, grid) {
var dataRow = {};
grid = (grid != null) ? grid : gridUserList;
remove(row);
gridUserList.goToPage(gridUserList.currentPage);
grid.goToPage(0);
gridUsers.goToPage(0);
flashMessage.setMessage("The user/group was successfully removed".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
}
}
],
onDropOut: function (item, origin, destiny) {
},
onDrop: function (grid, row) {
var dataRow = {};
grid = this;
assignee(row);
gridUsers.goToPage(gridUsers.currentPage);
grid.goToPage(grid.currentPage);
flashMessage.setMessage("Assignee saved successfully".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
return false;
},
style: {
cssClasses: [
'mafe-designer-assigment-grid'
]
}
});
assigmentPanelGlobalAD = new PMUI.core.Panel({
id: "assigmentPanelGlobalAD",
layout: "hbox",
width: DEFAULT_WINDOW_WIDTH
});
assigmentPanelUserAD = new PMUI.core.Panel({
id: "assigmentPanelUserAD",
layout: "vbox",
width: "60%",
style: {
cssClasses: [
'mafe-panel-assignment-white'
]
}
});
panelTitleUserAD = new PMUI.core.Panel({
id: "panelTitleUserAD",
layout: "hbox"
});
titleUserAD = new PMUI.ui.TextLabel({
id: "titleUserAD",
label: " ",
textMode: 'plain',
text: 'Available users list'.translate(),
style: {
cssClasses: [
'mafe-designer-assigment-title'
]
}
});
panelSearchUserAD = new PMUI.core.Panel({
id: "panelSearchUserAD",
layout: "hbox"
});
searchGridUserAD = new PMUI.field.TextField({
id: "searchGridUserAD",
label: " ",
placeholder: 'Search ...'.translate(),
style: {
cssClasses: [
'mafe-assigment-search'
]
}
});
panelGridUserAD = new PMUI.core.Panel({
id: "panelGridUserAD",
layout: "hbox",
style: {
cssClasses: ["mafe-panel"]
}
});
buttonsUsersAD = new PMUI.field.RadioButtonGroupField({
id: "buttonsUsersAD",
controlPositioning: 'horizontal',
maxDirectionOptions: 3,
options: [{
id: 'buttonAllAv',
label: 'View all'.translate(),
selected: true,
value: 'all'
}, {
id: 'buttonUsersAv',
label: 'View users'.translate(),
value: 'user'
}, {
id: 'buttonGroupsAv',
label: 'View groups'.translate(),
value: 'group'
}],
onChange: function (newVal, oldVal) {
switch (newVal) {
case "user" :
gridUsersAD.typeList = "user";
break;
case "group":
gridUsersAD.typeList = "group";
break;
default:
gridUsersAD.typeList = "";
break;
}
gridUsersAD.goToPage(0);
}
});
gridUsersAD = new PMUI.grid.GridPanel({
id: "gridUsersAD",
pageSize: pageSizeAssignmentAD - 1,
filterable: true,
behavior: 'dragdropsort',
filterPlaceholder: 'Search ...'.translate(),
emptyMessage: 'No records found'.translate(),
nextLabel: 'Next'.translate(),
previousLabel: 'Previous'.translate(),
tableContainerHeight: 242,
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
dynamicLoad: {
keys: {
server: HTTP_SERVER_HOSTNAME,
projectID: PMDesigner.project.projectId,
workspace: WORKSPACE,
accessToken: PMDesigner.project.tokens.access_token,
endPoint: 'project/' + PMDesigner.project.id + '/activity/' + activity.id + '/adhoc-available-assignee/paged'
}
},
customDataRest: function (data) {
var i;
for (i = 0; i < data.length; i += 1) {
if (data[i].ada_type == "group") {
data[i]["available"] = data[i].ada_name;
} else {
data[i]["available"] = data[i].ada_name + " " + data[i].ada_lastname + " (" + data[i].ada_username + ")";
}
}
return data;
},
columns: [
{
id: 'gridUsersADButtonLabel',
title: '',
dataType: 'button',
width: "10%",
buttonLabel: function (row, data) {
return data.lastName;
},
buttonStyle: {
cssClasses: [
'mafe-grid-button'
]
},
onButtonClick: function (row, grid) {
var option, select;
select = document.createElement("span");
select.id = "list-usersIngroup";
option = document.createElement("span");
option.id = "list-usersIngroup-iem";
if (row.getData()["ada_type"] === "group") {
var restClient = new PMRestClient({
typeRequest: 'get',
functionSuccess: function (xhr, response) {
var optionClone, i;
for (i = 0; i < response.length; i += 1) {
if (i == 10) {
optionClone = option.cloneNode(false);
optionClone.innerHTML = "<b style='float: right'>. . .<b>";
select.appendChild(optionClone);
} else {
optionClone = option.cloneNode(false);
optionClone.textContent = "- " + response[i].usr_firstname + ' ' + response[i].usr_lastname;
optionClone.title = response[i].usr_firstname + ' ' + response[i].usr_lastname;
select.appendChild(optionClone);
}
}
if (!optionClone) {
optionClone = option.cloneNode(false);
optionClone.textContent = "No users".translate();
select.appendChild(optionClone);
}
quickMessageWindow.show($(row.html).find('a')[0], select);
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
},
messageError: 'There are problems saving the assigned user, please try again.'.translate()
});
restClient.setBaseEndPoint("group/" + row.getData()["ada_uid"] + "/users?start=0&limit=11");
restClient.executeRestClient();
}
}
},
{
title: "",
dataType: 'string',
columnData: "available",
alignmentCell: "left",
width: "330px"
},
{
id: 'gridUsersADButtonAssign',
title: '',
dataType: 'button',
width: "10%",
buttonStyle: {
cssClasses: [
'mafe-button-edit-assign'
]
},
buttonLabel: function (row, data) {
var sw = row.getData()["ada_type"] === 'user';
row.getCells()[0].content.style.addClasses([sw ? 'button-icon-user' : 'button-icon-group']);
return '';
},
onButtonClick: function (row, grid) {
var dataRow = {};
grid = (grid != null) ? grid : gridUsersAD;
assigneeAD(row);
grid.goToPage(gridUsersAD.currentPage);
gridUserListAD.goToPage(0);
flashMessage.setMessage("Assignee saved successfully".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
}
}
],
onDropOut: function (item, origin, destiny) {
formAssignmentRules.dirty = true;
grid = gridUsersAD;
grid.sort('fullName', 'asc');
buttonsUserListAD.setValue(buttonsUsersAD.getValue());
groupRows(gridUsersAD, 'all');
groupRows(gridUserListAD, 'all');
arrayObjectAdhocUserList.push(item);
index = arrayObjectAdhocUser.indexOf(item);
if (index > -1) {
arrayObjectAdhocUser.splice(index, 1);
}
},
onDrop: function (a, row) {
grid = this;
removeAD(row);
gridUserListAD.goToPage(gridUserListAD.currentPage);
grid.goToPage(grid.currentPage);
flashMessage.setMessage("The user/group was successfully removed".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
return false;
},
style: {
cssClasses: [
'mafe-designer-assigment-grid'
]
}
});
assigmentPanelUserListAD = new PMUI.core.Panel({
id: "assigmentPanelUserListAD",
layout: "vbox",
style: {
cssClasses: [
'mafe-panel-assignment-white'
]
},
width: "60%"
});
panelTitleUseListAD = new PMUI.core.Panel({
id: "panelTitleUseListAD",
layout: "hbox"
});
titleUserListAD = new PMUI.ui.TextLabel({
id: "titleUserListAD",
textMode: 'plain',
text: 'Assigned users list'.translate(),
style: {
cssClasses: [
'mafe-designer-assigment-title'
]
}
});
panelGridUserListAD = new PMUI.core.Panel({
id: "panelGridUserListAD",
layout: "hbox",
style: {
cssClasses: ["mafe-panel"]
}
});
buttonsUserListAD = new PMUI.field.RadioButtonGroupField({
id: "buttonsUserListAD",
controlPositioning: 'horizontal',
maxDirectionOptions: 3,
options: [{
id: 'buttonAllAs',
label: 'View all'.translate(),
value: 'all',
selected: true
}, {
id: 'buttonUsersAs',
label: 'View users'.translate(),
value: 'user'
}, {
id: 'buttonGroupsAs',
label: 'View groups'.translate(),
value: 'group'
}],
onChange: function (newVal, oldVal) {
switch (newVal) {
case "user" :
gridUserListAD.typeList = "user";
break;
case "group":
gridUserListAD.typeList = "group";
break;
default:
gridUserListAD.typeList = "";
break;
}
gridUserListAD.goToPage(0);
}
});
gridUserListAD = new PMUI.grid.GridPanel({
id: "gridUserListAD",
pageSize: pageSizeAssignmentAD - 1,
behavior: 'dragdropsort',
filterable: true,
filterPlaceholder: 'Search ...'.translate(),
nextLabel: 'Next'.translate(),
previousLabel: 'Previous'.translate(),
tableContainerHeight: 242,
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
emptyMessage: function () {
var div = document.createElement('div'),
span = document.createElement('span');
div.appendChild(span);
div.className = "mafe-grid-panel-empty";
div.style.height = gridUserListAD.dom.tableContainer.style.height;
div.style.width = gridUserListAD.dom.tableContainer.style.width;
span.innerHTML = 'Drag & Drop a User or a Group here'.translate();
return div;
},
onEmpty: function (grid, cell) {
gridUserListAD.dom.tableContainer.style.overflow = "hidden";
},
dynamicLoad: {
keys: {
server: HTTP_SERVER_HOSTNAME,
projectID: PMDesigner.project.projectId,
workspace: WORKSPACE,
accessToken: PMDesigner.project.tokens.access_token,
endPoint: 'project/' + PMDesigner.project.id + '/activity/' + activity.id + '/adhoc-assignee/paged'
}
},
customDataRest: function (data) {
var i;
for (i = 0; i < data.length; i += 1) {
if (data[i].ada_type == "group") {
data[i]["assignee"] = data[i].ada_name;
} else {
data[i]["assignee"] = data[i].ada_name + " " + data[i].ada_lastname + " (" + data[i].ada_username + ")";
}
}
return data;
},
columns: [
{
id: 'gridUserListADButtonLabel',
title: "",
width: "13%",
dataType: 'button',
buttonLabel: function (row, data) {
return data.lastName;
},
buttonStyle: {
cssClasses: [
'mafe-grid-button'
]
},
onButtonClick: function (row, grid) {
var option, select;
select = document.createElement("span");
select.id = "list-usersIngroup";
option = document.createElement("span");
option.id = "list-usersIngroup-iem";
if (row.getData()["ada_type"] === "group") {
var i,
restClient = new PMRestClient({
typeRequest: 'get',
functionSuccess: function (xhr, response) {
var optionClone, i;
for (i = 0; i < response.length; i += 1) {
if (i == 10) {
optionClone = option.cloneNode(false);
optionClone.innerHTML = "<b style='float: right'>. . .<b>";
select.appendChild(optionClone);
} else {
optionClone = option.cloneNode(false);
optionClone.textContent = "- " + response[i].usr_firstname + ' ' + response[i].usr_lastname;
optionClone.title = response[i].usr_firstname + ' ' + response[i].usr_lastname;
select.appendChild(optionClone);
}
}
if (!optionClone) {
optionClone = option.cloneNode(false);
optionClone.textContent = "No users".translate();
select.appendChild(optionClone);
}
quickMessageWindow.show($(row.html).find('a')[0], select);
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
},
messageError: 'There are problems saving the assigned user, please try again.'.translate()
});
restClient.setBaseEndPoint("group/" + row.getData()["ada_uid"] + "/users?start=0&limit=11");
restClient.executeRestClient();
}
}
},
{
title: '',
dataType: 'string',
columnData: "assignee",
alignmentCell: "left",
width: "330px"
},
{
id: 'gridUserListADButtonDelete',
title: '',
dataType: 'button',
width: "10%",
buttonStyle: {
cssClasses: [
'mafe-button-delete-assign'
]
},
buttonLabel: function (row, data) {
var sw = row.getData()["ada_type"] === 'user';
row.getCells()[0].content.style.addClasses([sw ? 'button-icon-user' : 'button-icon-group']);
return '';
},
onButtonClick: function (row, grid) {
var dataRow = {};
grid = (grid != null) ? grid : gridUserListAD;
removeAD(row);
grid.goToPage(grid.currentPage);
gridUsersAD.goToPage(gridUsersAD.currentPage);
flashMessage.setMessage("The user/group was successfully removed".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
}
}
],
onDropOut: function (item, origin, destiny) {
},
onDrop: function (a, row) {
grid = this;
assigneeAD(row);
gridUsersAD.goToPage(gridUsersAD.currentPage);
grid.goToPage(grid.currentPage);
flashMessage.setMessage("Assignee saved successfully".translate());
flashMessage.setAppendTo(windowAssignmentRules.getHTML());
flashMessage.show();
return false;
},
style: {
cssClasses: [
'mafe-designer-assigment-grid'
]
}
});
panelContainerRules = new PMUI.core.Panel({
width: DEFAULT_WINDOW_WIDTH - 55,
height: "auto",
fieldset: true,
items: [
formAssignmentRules
]
});
panelContainerUsers = new PMUI.core.Panel({
width: DEFAULT_WINDOW_WIDTH,
height: "auto",
fieldset: true,
items: [
assigmentPanelGlobal
]
});
panelContainerUsersAdHoc = new PMUI.core.Panel({
width: DEFAULT_WINDOW_WIDTH,
height: "auto",
fieldset: true,
items: [
assigmentPanelGlobalAD
]
});
tabPanelAssignmentRules = new PMUI.panel.TabPanel({
id: 'tabPanelAssignmentRules',
width: "100%",
height: "auto",
items: [
{
id: 'tabUsers',
title: 'Users'.translate(),
panel: panelContainerUsers
},
{
id: 'tabUsersAdHoc',
title: 'Ad Hoc Users'.translate(),
panel: panelContainerUsersAdHoc
}
],
onTabClick: function (item) {
quickMessageWindow.close();