UNPKG

processmaker-builder

Version:

The gulp task runner for ProcessMaker building

1,184 lines (1,171 loc) 76 kB
(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();