mirror of https://github.com/webpack/webpack.git
3106 lines
79 KiB
JavaScript
3106 lines
79 KiB
JavaScript
import { ResizeObserver as RO } from "resize-observer";
|
|
import * as employeeData from "Source_Data/employee";
|
|
import * as servicesData from "Source_Data/services";
|
|
import * as SplitViewPage from "Source_Framework/splitview/page";
|
|
import * as SplitViewMenu from "Source_Framework/splitview/menu";
|
|
import {
|
|
TC as pageTC,
|
|
getDeleteDialogText
|
|
} from "Source_Framework/splitview/text";
|
|
import * as UiListPicker from "Source_Framework/uilistpicker/UiListPicker";
|
|
import { CookieStorage } from "Source_ODS/cookiestorage";
|
|
import { removeTextEditor } from "Source_Framework/uirichtextedit";
|
|
import { UiElementCheckbox, UiElementRadio } from "Source_Framework/uielement";
|
|
import { switchButtonIcon } from "Source_ODS/UiButton/icon";
|
|
import { setButtonText } from "Source_ODS/UiButton/text";
|
|
import { replacePage } from "Source_Framework/pagelinks";
|
|
import { getSession } from "Source_ODS/ods";
|
|
import { UiButton, UiSelectButton } from "Source_ODS/UiButton";
|
|
import { buttonClasses } from "Source_Framework/defaultButtons";
|
|
import { UiForm } from "Source_Framework/uiform";
|
|
import * as Breadcrumb from "Source_Framework/breadcrumb";
|
|
import * as _ from "Source_ODS/lodash";
|
|
import { DomElement } from "Source_ODS/DomElement";
|
|
import { getUrlParameter, setUrlParameter } from "Source_ODS/url";
|
|
import { addFixedTooltip } from "Source_ODS/tooltip";
|
|
import { showLoadingWarning, showWarningDialog } from "Source_ODS/ui";
|
|
import { checkIsNonemptyObject, isString, isUndefined } from "Source_ODS/types";
|
|
import { UiDialog, confirmDialog } from "Source_ODS/UiDialog";
|
|
import { ModuleNameEnum } from "Source_Framework/common/moduleDispatcher";
|
|
import { showEmployeeAssignDialog } from "Source_Framework/common/employeeassignment";
|
|
import { buttonPdfPreview } from "Source_Framework/common/pdf_preview";
|
|
import { createTaskProgress } from "Source_Framework/common/taskprogress";
|
|
import { CALLBACK_EVENTS } from "Source_Framework/uitable";
|
|
import {
|
|
getFilterPara,
|
|
saveUniversalTableLayout,
|
|
loadDefaultLayout,
|
|
saveDefaultLayoutForAgency
|
|
} from "Source_Framework/backend/universalData";
|
|
import { selectColumns } from "Source_Framework/common/columnsDialog";
|
|
import { STATUS } from "Source_Framework/backend/jsonData";
|
|
import {
|
|
buttonStatusChange,
|
|
HeaderDataEnum
|
|
} from "Source_Framework/common/statuschange";
|
|
import { genericJobSelectionDialog } from "Source_Framework/common/las_mod_jobselection";
|
|
import { TC } from "./text";
|
|
import { BEC } from "./bec";
|
|
import { POSITIONTYPES } from "./positionTypes";
|
|
import { SETTINGS } from "./settings";
|
|
import * as preferences from "./preferences";
|
|
import * as privileges from "./privileges";
|
|
import * as buttons from "./buttons";
|
|
import * as form from "./form";
|
|
import * as formHelper from "./formHelper";
|
|
import { createTableWidget, createTableWidgetForManualSort } from "./table";
|
|
import { setTechnicalTextButton } from "./techText";
|
|
import { openDialogForNewPositionSi } from "./addPositionToSi";
|
|
import { buttonInsertService, insertServiceDialog } from "./ciPosFromJob";
|
|
import { shiftPosition } from "./shiftPosition";
|
|
import { autoSumsDialog } from "./autoSums";
|
|
import { defineLayoutDialog } from "./defineLayout";
|
|
import { buttonInsertFromTemplate, setInsertData } from "./insertFromTemplate";
|
|
import { buttonMove, movePosition } from "./movePosition";
|
|
import {
|
|
buttonCopySelect,
|
|
duplicatePosition,
|
|
copyPosition,
|
|
buttonCopyFromOrderToJob,
|
|
copyFromOrderToJob
|
|
} from "./copy";
|
|
import { convertData } from "./save";
|
|
import { buttonCreateOrder, onCreateOrder } from "./createOrder";
|
|
import {
|
|
buttonConnectOrderPos,
|
|
buttonCopyJobToOrderPos,
|
|
jobToOrderPos
|
|
} from "./orderPosFromJobPos";
|
|
import { showNchInfoDialog } from "./nchInfoDialog";
|
|
import { urlGotoSiFromJobService } from "Source_Modules/las_mod_siheader/url";
|
|
import { TITLE as SITITLE } from "Source_Modules/las_mod_siheader/bec";
|
|
import { TITLE as CETITLE } from "Source_Modules/las_mod_ceheader/bec";
|
|
import { TITLE as ORDERTITLE } from "Source_Modules/las_mod_order/bec";
|
|
import { TITLE as CITITLE } from "Source_Modules/las_mod_ciheader/bec";
|
|
|
|
const _positionSettings = {
|
|
parent: {
|
|
settings: {},
|
|
headerStatus: ""
|
|
},
|
|
settings: {
|
|
[SETTINGS.CREATEABLE]: false,
|
|
[SETTINGS.DELETABLE]: false
|
|
}
|
|
},
|
|
_tableOverlayClass = ".tableintableoverlay",
|
|
_tableOverlayOffsetLeft = 7,
|
|
_showTableInElement = ".tablecont",
|
|
_pluginObj = {};
|
|
const resizeObserverInstance = new RO(entries => {
|
|
entries.forEach(entry => {
|
|
const parentWidth = entry.contentRect.width;
|
|
const parentheight = entry.contentRect.height;
|
|
const newWidth = parentWidth - _tableOverlayOffsetLeft + 6;
|
|
const newHeight = parentheight;
|
|
const overlayElement = $(_tableOverlayClass);
|
|
overlayElement.css({ width: newWidth, height: newHeight });
|
|
overlayElement.find("#positiontable").css({
|
|
width: newWidth - 2,
|
|
height:
|
|
parentheight -
|
|
overlayElement.find(".title").getHeight() -
|
|
_tableOverlayOffsetLeft
|
|
});
|
|
});
|
|
});
|
|
let _options;
|
|
let _parentModuleSettings,
|
|
_parentTableSelection,
|
|
_parentTableDataId;
|
|
let _isFormInDialog = false,
|
|
_isFormInDialogSelector = null,
|
|
_isFormInDialogJobPK = null;
|
|
let _staticData,
|
|
_generalDataEmplLists,
|
|
_tableObject,
|
|
_tableData,
|
|
_tableSelectionPosNo = null,
|
|
_tableSelectionJobNo = null,
|
|
_tableContainerId = "",
|
|
_previousTableTitle = "",
|
|
_formIdName,
|
|
_formObject,
|
|
_formData,
|
|
_formEvent,
|
|
_isNewDataset = false,
|
|
progressbar,
|
|
addedBreadcrumbId;
|
|
let _tableLayoutInfo = {
|
|
moduleName: "",
|
|
privAllAgencies: false,
|
|
privSaveGlobally: false
|
|
};
|
|
let _reloadTable;
|
|
let prevRows = null;
|
|
let triggerSelectionChangeEvent = true;
|
|
async function onReloadTable() {
|
|
await _updateTableContent();
|
|
}
|
|
async function onExport() {
|
|
await _tableObject.toExcel();
|
|
}
|
|
async function onConnectPosition() {
|
|
const hPk = getPKfromModule();
|
|
const ok = await openDialogForNewPositionSi(
|
|
{ siBookId: hPk.idSiBook, siHeaderId: hPk.siHeaderId },
|
|
_staticData
|
|
);
|
|
if (ok) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function onSortPosition() {
|
|
await getSortDialog();
|
|
}
|
|
async function onSortManual() {
|
|
const isManualSort = _tableObject.isSortColumnAvailable();
|
|
const { canBeModified = true } = _positionSettings.parent.settings;
|
|
const configuration = _tableObject.getConfiguration();
|
|
const { columns } = configuration;
|
|
if (isManualSort) {
|
|
_tableObject.clearFilter();
|
|
}
|
|
await doCreateAndShowTableWidget(
|
|
columns,
|
|
_getModuleName(),
|
|
canBeModified,
|
|
!isManualSort
|
|
);
|
|
}
|
|
function showSortManualButtonState() {
|
|
const isManualSort = _tableObject.isSortColumnAvailable();
|
|
const className = "." + buttons.CLASSNAME.sortManual;
|
|
if (isManualSort) {
|
|
switchButtonIcon(className, "btn-img-sortManual", "btn-img-sortPrint");
|
|
setButtonText(className, TC.printSort);
|
|
} else {
|
|
switchButtonIcon(className, "btn-img-sortPrint", "btn-img-sortManual");
|
|
setButtonText(className, TC.manualSort);
|
|
}
|
|
}
|
|
function onGoToSi() {
|
|
const selection = _tableObject.getSelection();
|
|
if (selection.length > 0) {
|
|
const hPk = getPKfromModule();
|
|
replacePage(
|
|
urlGotoSiFromJobService({
|
|
jobId: hPk.jobid,
|
|
posNos: _getListofSelectedRow()
|
|
})
|
|
);
|
|
} else {
|
|
showLoadingWarning(TC.selectionEmpty);
|
|
}
|
|
}
|
|
async function onShiftPosition(state) {
|
|
const pk = getPKFromSelection();
|
|
if (pk !== null) {
|
|
const ok = await shiftPosition(state, pk);
|
|
if (ok) {
|
|
await _updateTableContent();
|
|
}
|
|
} else {
|
|
showLoadingWarning(TC.selectionEmpty);
|
|
}
|
|
}
|
|
async function onInsertFromTemplateDialog() {
|
|
if (_parentTableSelection) {
|
|
await setInsertData(_getModuleName(), _parentTableSelection);
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function onCopy(toTargetModule = null) {
|
|
if (_parentTableSelection) {
|
|
const refresh = await copyPosition(
|
|
_getModuleName(),
|
|
_parentTableSelection,
|
|
_staticData,
|
|
_getListofSelectedRow(),
|
|
toTargetModule
|
|
);
|
|
if (refresh) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
}
|
|
async function onCopyToJob() {
|
|
await onCopy(ModuleNameEnum.JOB);
|
|
}
|
|
async function onCopyToCe() {
|
|
await onCopy(ModuleNameEnum.CEHEADER);
|
|
}
|
|
async function onDuplicate() {
|
|
if (_parentTableSelection) {
|
|
const refresh = duplicatePosition(
|
|
_getModuleName(),
|
|
_parentTableSelection,
|
|
_getListofSelectedRow()
|
|
);
|
|
if (refresh) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
}
|
|
function onCopyList() {
|
|
return [
|
|
...(_getModuleName() === ModuleNameEnum.JOB
|
|
? [
|
|
{
|
|
rowId: "duplicateInJob",
|
|
rowText: TC.duplicateInJob,
|
|
rowListener: onDuplicate
|
|
}
|
|
]
|
|
: []),
|
|
{
|
|
rowId: "copyToOtherJob",
|
|
rowText: TC.copyToOtherJob,
|
|
rowListener: onCopyToJob
|
|
},
|
|
{ rowId: "copyToCe", rowText: TC.copyToCe, rowListener: onCopyToCe }
|
|
];
|
|
}
|
|
async function onCopyFromOrderToJob() {
|
|
if (_parentTableSelection) {
|
|
const id = _parentTableSelection.orde_orderid;
|
|
await copyFromOrderToJob(id, _staticData, _getListofSelectedRow());
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function onMove() {
|
|
if (_parentTableSelection) {
|
|
const id = _parentTableSelection.job_jobid;
|
|
const ok = await movePosition(
|
|
_getModuleName(),
|
|
id,
|
|
1,
|
|
1,
|
|
_parentTableSelection,
|
|
_getListofSelectedRow(),
|
|
_staticData
|
|
);
|
|
if (ok) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
}
|
|
async function onDefineLayout() {
|
|
const pk = getPKFromSelection();
|
|
if (pk !== null) {
|
|
const ok = await defineLayoutDialog(pk);
|
|
if (ok) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
}
|
|
async function onJobToOrderPos(withMultipleSelection) {
|
|
const hPk = getPKfromModule();
|
|
await jobToOrderPos(
|
|
hPk.orderId,
|
|
_tableObject.getSelection(),
|
|
withMultipleSelection
|
|
);
|
|
await _updateTableContent();
|
|
}
|
|
function onStatusChange() {
|
|
const selection = _tableObject.getSelection();
|
|
const hPk = getPKfromModule();
|
|
return {
|
|
idSiBook: hPk.idSiBook,
|
|
siHeaderId: hPk.siHeaderId,
|
|
theJobID: selection.map(obj => obj.jpos_jobid),
|
|
thePosNo: selection.map(obj => obj.jpos_posno),
|
|
theHeaderType: selection.map(obj => obj.jpos_headertype),
|
|
theSubPosNo: selection.map(obj => obj.jpos_subposno),
|
|
multiple: selection.length > 1
|
|
};
|
|
}
|
|
async function onAutoSums() {
|
|
if (_parentTableSelection) {
|
|
await autoSumsDialog(
|
|
_getModuleName(),
|
|
_parentTableSelection,
|
|
_staticData.lists.listPosTypesAutoSum
|
|
);
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function onInsertService() {
|
|
const hPk = getPKfromModule();
|
|
const data = {
|
|
ciBookId: hPk.ciBookId,
|
|
ciHeaderId: hPk.ciHeaderId
|
|
};
|
|
const ok = await insertServiceDialog(data);
|
|
if (ok) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
function _buttonConnectPosition(callback) {
|
|
return new UiButton(
|
|
TC.connectSIPosButtonText,
|
|
buttons.CLASSNAME.siConnectPosition,
|
|
callback,
|
|
"btn-img-connectSIPos"
|
|
);
|
|
}
|
|
function _buttonSortPosition(callback) {
|
|
return new UiButton(
|
|
TC.automaticSort,
|
|
buttons.CLASSNAME.sortPosition,
|
|
callback,
|
|
"btn-img-sortPos"
|
|
);
|
|
}
|
|
function _buttonSortManual(callback) {
|
|
return new UiButton(
|
|
TC.manualSort,
|
|
buttons.CLASSNAME.sortManual,
|
|
callback,
|
|
"btn-img-sortManual"
|
|
);
|
|
}
|
|
function gotoList() {
|
|
return [{ rowId: "gotoSi", rowText: SITITLE, rowListener: onGoToSi }];
|
|
}
|
|
function _buttonShiftUpPosition(callback) {
|
|
return new UiButton(
|
|
TC.hierarchyUp,
|
|
buttons.CLASSNAME.shiftUpPosition,
|
|
callback,
|
|
"btn-img-shiftUpPos"
|
|
);
|
|
}
|
|
function _buttonShiftDownPosition(callback) {
|
|
return new UiButton(
|
|
TC.hierarchyDown,
|
|
buttons.CLASSNAME.shiftDownPosition,
|
|
callback,
|
|
"btn-img-shiftDownPos"
|
|
);
|
|
}
|
|
function _buttonDefineLayout(callback) {
|
|
return new UiButton(
|
|
TC.setLayout,
|
|
buttons.CLASSNAME.defineLayout,
|
|
callback,
|
|
"btn-img-defineLayoutPos"
|
|
);
|
|
}
|
|
function _buttonAutoSums(callback) {
|
|
return new UiButton(
|
|
TC.generateTotals,
|
|
buttons.CLASSNAME.autoSums,
|
|
callback,
|
|
"btn-img-createsubtotals"
|
|
);
|
|
}
|
|
async function markPositions(data) {
|
|
_tableObject.clearRowAttributes();
|
|
if (data !== null && data.jpos_postype === POSITIONTYPES.SUBTOTAL) {
|
|
const para = {
|
|
theJobID: data.jpos_jobid,
|
|
theHeaderType: data.jpos_headertype,
|
|
thePosNo: data.jpos_posno,
|
|
theSubPosNo: data.jpos_subposno
|
|
};
|
|
const subtotals = await servicesData.getPositionsInSubtotal(para);
|
|
if (subtotals !== null) {
|
|
const filter = subtotals.map(posno => ({ jpos_posno: posno }));
|
|
_tableObject.setRowAttributes(filter, { backgroundColor: "aquamarine" });
|
|
}
|
|
}
|
|
}
|
|
function markPositionsTypeText(data) {
|
|
_tableObject.clearRowSelectionColor();
|
|
if (data !== null && data.jpos_postype === POSITIONTYPES.TEXT) {
|
|
const filter = [
|
|
{
|
|
jpos_posno: data.jpos_posno
|
|
}
|
|
];
|
|
_tableObject.setRowSelectionColor(filter, "lavender");
|
|
}
|
|
}
|
|
async function _createToolbarTable(setEvent) {
|
|
const data = _getDataFromSelectedEntry();
|
|
const toolbar = new SplitViewMenu.Toolbar("table");
|
|
console.log("_createToolbarTable(", setEvent, ")");
|
|
switch (setEvent) {
|
|
|
|
case buttons.STATE.initialize:
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CREATEFROMTEMPL
|
|
)
|
|
) {
|
|
toolbar.add(buttonInsertFromTemplate(onInsertFromTemplateDialog));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY) &&
|
|
getSelectionCount() > 0
|
|
) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.SICONNECTPOSITION
|
|
) &&
|
|
_positionSettings.settings[SETTINGS.CREATEABLE]
|
|
) {
|
|
toolbar.add(_buttonConnectPosition(onConnectPosition));
|
|
}
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY) &&
|
|
getSelectionCount() > 0
|
|
) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CREATEFROMTEMPL
|
|
)
|
|
) {
|
|
toolbar.add(buttonInsertFromTemplate(onInsertFromTemplateDialog));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.AUTOSUMS)
|
|
) {
|
|
toolbar.add(_buttonAutoSums(onAutoSums));
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.CEHEADER, {
|
|
cehe_ceid: getPKfromModule().ceId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.COPYORDERPOS
|
|
) &&
|
|
_positionSettings.settings[SETTINGS.CREATEABLE]
|
|
) {
|
|
toolbar.add(
|
|
buttonCopyJobToOrderPos(onJobToOrderPos.bind(this, true))
|
|
);
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.ORDER, {
|
|
orde_orderid: getPKfromModule().orderId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
{
|
|
const s = {
|
|
canBeCreated:
|
|
_positionSettings.settings[SETTINGS.CREATEABLE] || false
|
|
};
|
|
if (s.canBeCreated) {
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.MODIFY
|
|
)
|
|
) {
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CREATE
|
|
)
|
|
) {
|
|
toolbar.add(buttonInsertService(onInsertService));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.MODIFY
|
|
)
|
|
) {
|
|
toolbar.add(_buttonAutoSums(onAutoSums));
|
|
}
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.CIHEADER, {
|
|
cihe_bookid: getPKfromModule().ciBookId,
|
|
cihe_ciheaderid: getPKfromModule().ciHeaderId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case buttons.STATE.jobPositionTableMenu:
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
toolbar.add(_buttonShiftUpPosition(onShiftPosition.bind(this, 0)));
|
|
toolbar.add(_buttonShiftDownPosition(onShiftPosition.bind(this, 1)));
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CREATEFROMTEMPL
|
|
)
|
|
) {
|
|
toolbar.add(buttonInsertFromTemplate(onInsertFromTemplateDialog));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.COPYPOS)) {
|
|
toolbar.add(buttonCopySelect(onCopyList()));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MOVEPOS)) {
|
|
toolbar.add(buttonMove(onMove));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.CREATEORDER)
|
|
) {
|
|
const selectedIds = _.map(_tableObject.getSelection(), "jpos_postype");
|
|
|
|
if (
|
|
_.includes(selectedIds, POSITIONTYPES.EXTERNAL) ||
|
|
_.includes(selectedIds, POSITIONTYPES.MEDIA)
|
|
) {
|
|
const hPk = getPKfromModule();
|
|
toolbar.add(
|
|
buttonCreateOrder(
|
|
onCreateOrder.bind(this, _getListofSelectedRow(), [hPk.jobid])
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.SIMODULE)) {
|
|
|
|
if (_tableObject.getOptions().multipleSelection) {
|
|
const selectedIds = _.map(
|
|
_tableObject.getSelection(),
|
|
"jpos_postype"
|
|
);
|
|
|
|
if (
|
|
_.includes(selectedIds, POSITIONTYPES.EXTERNAL) ||
|
|
_.includes(selectedIds, POSITIONTYPES.MEDIA)
|
|
) {
|
|
toolbar.addDefaultGoto(gotoList());
|
|
}
|
|
} else {
|
|
if (
|
|
data !== null &&
|
|
(data.jpos_postype === POSITIONTYPES.EXTERNAL ||
|
|
data.jpos_postype === POSITIONTYPES.MEDIA)
|
|
) {
|
|
toolbar.addDefaultGoto(gotoList());
|
|
}
|
|
}
|
|
}
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
await markPositions(data);
|
|
markPositionsTypeText(data);
|
|
break;
|
|
case buttons.STATE.jobPositionTableMenuMultiple:
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
toolbar.add(_buttonShiftUpPosition(onShiftPosition.bind(this, 0)));
|
|
toolbar.add(_buttonShiftDownPosition(onShiftPosition.bind(this, 1)));
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CREATEFROMTEMPL
|
|
)
|
|
) {
|
|
toolbar.add(buttonInsertFromTemplate(onInsertFromTemplateDialog));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.COPYPOS)) {
|
|
toolbar.add(buttonCopySelect(onCopyList()));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MOVEPOS)) {
|
|
toolbar.add(buttonMove(onMove));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.CREATEORDER)
|
|
) {
|
|
const selectedIds = _.map(_tableObject.getSelection(), "jpos_postype");
|
|
if (
|
|
_.includes(selectedIds, POSITIONTYPES.EXTERNAL) ||
|
|
_.includes(selectedIds, POSITIONTYPES.MEDIA)
|
|
) {
|
|
const hPk = getPKfromModule();
|
|
toolbar.add(
|
|
buttonCreateOrder(
|
|
onCreateOrder.bind(this, _getListofSelectedRow(), [hPk.jobid])
|
|
)
|
|
);
|
|
}
|
|
}
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
|
|
case buttons.STATE.siPositionTableMenu:
|
|
toolbar.add(
|
|
buttonStatusChange(HeaderDataEnum.SIPOS, onStatusChange, onReloadTable)
|
|
);
|
|
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.SICONNECTPOSITION
|
|
) &&
|
|
_positionSettings.settings[SETTINGS.CREATEABLE]
|
|
) {
|
|
toolbar.add(_buttonConnectPosition(onConnectPosition));
|
|
}
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
case buttons.STATE.siPositionTableMenuMultiple:
|
|
toolbar.add(
|
|
buttonStatusChange(HeaderDataEnum.SIPOS, onStatusChange, onReloadTable)
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
|
|
case buttons.STATE.cePositionTableMenu:
|
|
case buttons.STATE.cePositionTableMenuMultiple:
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
toolbar.add(_buttonShiftUpPosition(onShiftPosition.bind(this, 0)));
|
|
toolbar.add(_buttonShiftDownPosition(onShiftPosition.bind(this, 1)));
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CREATEFROMTEMPL
|
|
)
|
|
) {
|
|
toolbar.add(buttonInsertFromTemplate(onInsertFromTemplateDialog));
|
|
}
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.COPYPOS)) {
|
|
|
|
toolbar.add(buttonCopySelect(onCopyList()));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY) &&
|
|
getSelectionCount() > 0
|
|
) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.AUTOSUMS) &&
|
|
getSelectionCount() > 0
|
|
) {
|
|
toolbar.add(_buttonAutoSums(onAutoSums));
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.CEHEADER, {
|
|
cehe_ceid: getPKfromModule().ceId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
await markPositions(data);
|
|
markPositionsTypeText(data);
|
|
break;
|
|
|
|
case buttons.STATE.orderPositionTableMenu:
|
|
toolbar.add(_buttonShiftUpPosition(onShiftPosition.bind(this, 0)));
|
|
toolbar.add(_buttonShiftDownPosition(onShiftPosition.bind(this, 1)));
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.ORDERCOPYTOJOB
|
|
)
|
|
) {
|
|
toolbar.add(buttonCopyFromOrderToJob(onCopyFromOrderToJob));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.CONNECTORDERPOS
|
|
)
|
|
) {
|
|
toolbar.add(buttonConnectOrderPos(onJobToOrderPos.bind(this, false)));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.COPYORDERPOS
|
|
) &&
|
|
_positionSettings.settings[SETTINGS.CREATEABLE]
|
|
) {
|
|
toolbar.add(buttonCopyJobToOrderPos(onJobToOrderPos.bind(this, true)));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.ORDER, {
|
|
orde_orderid: getPKfromModule().orderId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
case buttons.STATE.orderPositionTableMenuMultiple:
|
|
if (privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.ORDERCOPYTOJOB
|
|
)
|
|
) {
|
|
toolbar.add(buttonCopyFromOrderToJob(onCopyFromOrderToJob));
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.ORDER, {
|
|
orde_orderid: getPKfromModule().orderId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
break;
|
|
|
|
case buttons.STATE.ciPositionTableMenu:
|
|
{
|
|
const s = {
|
|
canBeCreated: _positionSettings.settings[SETTINGS.CREATEABLE] || false
|
|
};
|
|
if (s.canBeCreated) {
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)
|
|
) {
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
toolbar.add(_buttonShiftUpPosition(onShiftPosition.bind(this, 0)));
|
|
toolbar.add(
|
|
_buttonShiftDownPosition(onShiftPosition.bind(this, 1))
|
|
);
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.CREATE)
|
|
) {
|
|
toolbar.add(buttonInsertService(onInsertService));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)
|
|
) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
toolbar.add(_buttonAutoSums(onAutoSums));
|
|
}
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.CIHEADER, {
|
|
cihe_bookid: getPKfromModule().ciBookId,
|
|
cihe_ciheaderid: getPKfromModule().ciHeaderId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
}
|
|
break;
|
|
case buttons.STATE.ciPositionTableMenuMultiple:
|
|
{
|
|
const s = {
|
|
canBeCreated: _positionSettings.settings[SETTINGS.CREATEABLE] || false
|
|
};
|
|
if (s.canBeCreated) {
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)
|
|
) {
|
|
toolbar.add(_buttonSortPosition(onSortPosition));
|
|
toolbar.add(_buttonShiftUpPosition(onShiftPosition.bind(this, 0)));
|
|
toolbar.add(
|
|
_buttonShiftDownPosition(onShiftPosition.bind(this, 1))
|
|
);
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.CREATE)
|
|
) {
|
|
toolbar.add(buttonInsertService(onInsertService));
|
|
}
|
|
if (
|
|
privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY)
|
|
) {
|
|
toolbar.add(_buttonDefineLayout(onDefineLayout));
|
|
toolbar.add(_buttonAutoSums(onAutoSums));
|
|
}
|
|
}
|
|
toolbar.addSpacer();
|
|
toolbar.add(
|
|
buttonPdfPreview(ModuleNameEnum.CIHEADER, {
|
|
cihe_bookid: getPKfromModule().ciBookId,
|
|
cihe_ciheaderid: getPKfromModule().ciHeaderId
|
|
})
|
|
);
|
|
toolbar.add(_buttonSortManual(onSortManual), "right");
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error('Invalid event "' + setEvent + '"');
|
|
}
|
|
const multipleSelection = _tableObject.getOptions().multipleSelection;
|
|
const hasFilter = _tableObject.options.hasFilter;
|
|
toolbar.addDefaultTableOptions(
|
|
{
|
|
selectAll: multipleSelection
|
|
? () => {
|
|
_tableObject.selectAll();
|
|
if (_tableObject.eventHandler[CALLBACK_EVENTS.SELECTIONCHANGED]) {
|
|
_tableObject.eventHandler[CALLBACK_EVENTS.SELECTIONCHANGED](
|
|
_tableObject.getSelection()
|
|
);
|
|
}
|
|
}
|
|
: null,
|
|
clearAllFilters: hasFilter
|
|
? () => {
|
|
_tableObject.clearFilter();
|
|
}
|
|
: null,
|
|
selectColumns: async () => {
|
|
if (_tableLayoutInfo.moduleName !== "") {
|
|
const ok = await selectColumns(
|
|
_tableLayoutInfo.moduleName,
|
|
_tableObject
|
|
);
|
|
if (ok) {
|
|
await onReloadTable();
|
|
}
|
|
}
|
|
},
|
|
adjustColumnSize: _tableObject.adjustColumnSize.bind(_tableObject),
|
|
loadDefaultLayout: async () => {
|
|
if (_tableLayoutInfo.moduleName !== "") {
|
|
const ok = await loadDefaultLayout(_tableLayoutInfo.moduleName);
|
|
if (ok) {
|
|
await onReloadTable();
|
|
}
|
|
}
|
|
},
|
|
saveDefaultLayout: _tableLayoutInfo.privSaveGlobally
|
|
? async () => {
|
|
if (_tableLayoutInfo.moduleName !== "") {
|
|
await saveDefaultLayoutForAgency(
|
|
_tableLayoutInfo.moduleName,
|
|
_tableObject.getConfiguration()
|
|
);
|
|
}
|
|
}
|
|
: null,
|
|
exportTable: onExport
|
|
},
|
|
"right"
|
|
);
|
|
toolbar.addDefaultReload(onReloadTable, "right");
|
|
toolbar.render();
|
|
showSortManualButtonState();
|
|
}
|
|
export async function getDataAndShowTable(
|
|
name,
|
|
parentTableSelection,
|
|
parentSettings,
|
|
reloadTable,
|
|
serviceID
|
|
) {
|
|
let getListPK;
|
|
_reloadTable = reloadTable;
|
|
_parentTableSelection = parentTableSelection;
|
|
if (parentTableSelection === null) {
|
|
throw new Error("No row selected");
|
|
}
|
|
setPKfromModule(parentTableSelection);
|
|
removeTextEditor();
|
|
switch (name) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
getListPK = {
|
|
theSIBookID: hPk.idSiBook,
|
|
theSIHeaderID: hPk.siHeaderId
|
|
};
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
getListPK = { theCEID: hPk.ceId };
|
|
}
|
|
break;
|
|
case ModuleNameEnum.JOB:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
getListPK = { theJobID: hPk.jobid };
|
|
}
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
getListPK = { theOrderID: hPk.orderId };
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
getListPK = { ciBookId: hPk.ciBookId, ciHeaderId: hPk.ciHeaderId };
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error(`Invalid name "${name}`);
|
|
}
|
|
let settingsData = {
|
|
canBeCreated: true,
|
|
canBeDeleted: true,
|
|
headerStatus: "",
|
|
showButtonDeleteAndMoveNCH: false
|
|
};
|
|
switch (name) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
case ModuleNameEnum.JOB:
|
|
case ModuleNameEnum.CEHEADER:
|
|
case ModuleNameEnum.ORDER:
|
|
settingsData = {
|
|
...settingsData,
|
|
...(await servicesData.getActionInfo(
|
|
getPKfromModule(),
|
|
_getModuleType()
|
|
))
|
|
};
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
settingsData = await servicesData.getActionInfo(
|
|
getPKfromModule(),
|
|
_getModuleType()
|
|
);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
_positionSettings.settings[SETTINGS.CREATEABLE] = settingsData.canBeCreated;
|
|
_positionSettings.settings[SETTINGS.DELETABLE] = settingsData.canBeDeleted;
|
|
_positionSettings.settings[SETTINGS.MULTIPLEDELETE] =
|
|
settingsData.showButtonDeleteAndMoveNCH;
|
|
const tableData = await servicesData.getListOfPos(
|
|
getListPK,
|
|
_getModuleType(),
|
|
1,
|
|
1
|
|
);
|
|
if (tableData === null) {
|
|
_showParentTable(false);
|
|
return;
|
|
}
|
|
_tableData = {
|
|
cols: tableData.cols,
|
|
rows: tableData.rows
|
|
};
|
|
_tableLayoutInfo = tableData.info;
|
|
_positionSettings.parent.headerStatus = settingsData.headerStatus;
|
|
_positionSettings.parent.settings = parentSettings;
|
|
const { canBeModified = true } = parentSettings;
|
|
await doCreateAndShowTableWidget(tableData.head.columns, name, canBeModified);
|
|
if (_isShowFormOnly()) {
|
|
$(".overview").removeClass("notable");
|
|
$(".menutableindetails").hide();
|
|
}
|
|
if (name === ModuleNameEnum.JOB) {
|
|
|
|
const hPk = getPKfromModule();
|
|
const serviceIDForLink = serviceID ? String(serviceID) : "";
|
|
addedBreadcrumbId = await Breadcrumb.add(
|
|
_staticData.settings.moduleTitle,
|
|
`LAS_MOD_JOB_DLG.page?jobID=${hPk.jobid}&serviceID=${serviceIDForLink}`
|
|
);
|
|
if (serviceID) {
|
|
|
|
_tableObject.setCurrentRow({
|
|
jpos_posno: serviceID,
|
|
jpos_jobid: hPk.jobid
|
|
});
|
|
|
|
const selectionLength = getSelectionCount();
|
|
if (selectionLength === 1) {
|
|
await _createToolbarTable(buttons.STATE.jobPositionTableMenu);
|
|
} else if (selectionLength > 1) {
|
|
await _createToolbarTable(buttons.STATE.jobPositionTableMenuMultiple);
|
|
}
|
|
|
|
await _showForm(buttons.STATE.show, _getDataFromSelectedEntry());
|
|
}
|
|
}
|
|
}
|
|
async function doCreateAndShowTableWidget(
|
|
columns,
|
|
name,
|
|
canBeModified,
|
|
isManualSort = false
|
|
) {
|
|
if (_tableObject) {
|
|
_tableObject.destructor();
|
|
$(_tableOverlayClass)
|
|
.find(".positiontablecontent")
|
|
.html(`<div id="${_tableContainerId.replace("#", "")}"></div>`);
|
|
}
|
|
if (isManualSort) {
|
|
_tableObject = createTableWidgetForManualSort(
|
|
columns,
|
|
_tableContainerId,
|
|
name
|
|
);
|
|
} else {
|
|
_tableObject = createTableWidget(
|
|
columns,
|
|
_tableContainerId,
|
|
name,
|
|
canBeModified || true
|
|
);
|
|
}
|
|
await _showTableInTable();
|
|
await _removeDetails();
|
|
}
|
|
function _addDOMElements() {
|
|
let buttonTitle = TC.closeOverlayTableDefault;
|
|
if (isString(_previousTableTitle)) {
|
|
buttonTitle = TC.closeOverlayTable + _previousTableTitle;
|
|
}
|
|
$(_showTableInElement).append(`
|
|
<div class="${_tableOverlayClass.replace(".", "")}">
|
|
<div class="title">
|
|
<div class="headline">
|
|
<span class="label1"></span>
|
|
</div>
|
|
<div class="headerstatus"></div>
|
|
</div>
|
|
<div class="positiontablecontent">
|
|
<div id="${_tableContainerId.replace("#", "")}"></div>
|
|
</div>
|
|
<button class="close" type="button" title="${buttonTitle}"></button>
|
|
</div>
|
|
`);
|
|
}
|
|
function _isShowFormOnly() {
|
|
return Number(getUrlParameter("theShowFormOnly")) === 1;
|
|
}
|
|
function _bindClickEvents() {
|
|
$(document).on(
|
|
"click",
|
|
_tableOverlayClass + " button.close",
|
|
async function () {
|
|
const parent = $(this).closest(_showTableInElement),
|
|
parentWidth = parent.width();
|
|
|
|
if (_isShowFormOnly()) {
|
|
$(".overview").addClass("notable");
|
|
$(".menutableindetails").show();
|
|
}
|
|
$(document)
|
|
.find(_tableOverlayClass)
|
|
.animate({ left: "-" + parentWidth }, 200, function () {
|
|
$(this).css({ visibility: "hidden" });
|
|
$(this).removeAttr("style");
|
|
});
|
|
|
|
if (!isUndefined(addedBreadcrumbId)) {
|
|
await Breadcrumb.remove(addedBreadcrumbId);
|
|
}
|
|
|
|
removeTextEditor();
|
|
|
|
_showParentTable();
|
|
}
|
|
);
|
|
const positionTableContainer = new DomElement(_showTableInElement, false);
|
|
if (positionTableContainer.size() > 0) {
|
|
resizeObserverInstance.observe(positionTableContainer.getDomElement());
|
|
}
|
|
}
|
|
function _getParentDescription(name) {
|
|
let text = "";
|
|
if (_parentTableSelection) {
|
|
switch (name) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
text +=
|
|
SITITLE +
|
|
" " +
|
|
hPk.idSiBook +
|
|
'<span class="subtitle"> / ' +
|
|
hPk.siHeaderId +
|
|
"</small>";
|
|
}
|
|
break;
|
|
case ModuleNameEnum.JOB:
|
|
text +=
|
|
_parentTableSelection.job_matchcode +
|
|
' <span class="subtitle">(' +
|
|
_parentTableSelection.job_intno +
|
|
")</small>";
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
text +=
|
|
CETITLE +
|
|
" " +
|
|
_parentTableSelection.cehe_bookid +
|
|
"/" +
|
|
_parentTableSelection.cehe_headerid +
|
|
" - Var. " +
|
|
_parentTableSelection.cehe_variantid;
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
text +=
|
|
ORDERTITLE +
|
|
" " +
|
|
_parentTableSelection.orde_orderbookid +
|
|
"/" +
|
|
_parentTableSelection.orde_orderheaderid;
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
text +=
|
|
CITITLE +
|
|
" " +
|
|
_parentTableSelection.cihe_bookid +
|
|
"/" +
|
|
_parentTableSelection.cihe_ciheaderid;
|
|
break;
|
|
default:
|
|
throw new Error('Invalid event "' + name + '"');
|
|
}
|
|
}
|
|
return text;
|
|
}
|
|
async function onClickTable(selection, formState) {
|
|
const selectionLength = selection.length;
|
|
if (selectionLength === 0) {
|
|
await _removeDetails();
|
|
} else if (selectionLength === 1) {
|
|
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
await _createToolbarTable(buttons.STATE.siPositionTableMenu);
|
|
break;
|
|
case ModuleNameEnum.JOB:
|
|
await _createToolbarTable(buttons.STATE.jobPositionTableMenu);
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
await _createToolbarTable(buttons.STATE.cePositionTableMenu);
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
await _createToolbarTable(buttons.STATE.orderPositionTableMenu);
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
await _createToolbarTable(buttons.STATE.ciPositionTableMenu);
|
|
break;
|
|
default:
|
|
throw new Error('Invalid name "' + _getModuleName() + '"');
|
|
}
|
|
await _showForm(formState, _getDataFromSelectedEntry());
|
|
} else if (selectionLength > 1) {
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
await _removeDetails();
|
|
_showFormButtons(buttons.STATE.multipleInitialize);
|
|
await _createToolbarTable(buttons.STATE.siPositionTableMenuMultiple);
|
|
break;
|
|
case ModuleNameEnum.JOB:
|
|
await _removeDetails();
|
|
_showFormButtons(buttons.STATE.multipleInitialize);
|
|
await _createToolbarTable(buttons.STATE.jobPositionTableMenuMultiple);
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
await _removeDetails();
|
|
_showFormButtons(buttons.STATE.multipleInitialize);
|
|
await _createToolbarTable(buttons.STATE.cePositionTableMenuMultiple);
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
await _removeDetails();
|
|
_showFormButtons(buttons.STATE.multipleInitialize);
|
|
await _createToolbarTable(buttons.STATE.orderPositionTableMenuMultiple);
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
await _removeDetails();
|
|
_showFormButtons(buttons.STATE.multipleInitialize);
|
|
await _createToolbarTable(buttons.STATE.ciPositionTableMenuMultiple);
|
|
break;
|
|
default:
|
|
throw new Error('Invalid name "' + _getModuleName() + '"');
|
|
}
|
|
}
|
|
}
|
|
async function _showTableInTable() {
|
|
const tableOverlay = $(_tableOverlayClass);
|
|
$(".form_wrapper").addClass("serviceslist");
|
|
const parentTableWidth = $(_showTableInElement).getWidth();
|
|
const parentTableHeight = $(_showTableInElement).getHeight();
|
|
tableOverlay.css({ width: parentTableWidth, height: parentTableHeight });
|
|
tableOverlay
|
|
.find(".title span.label1")
|
|
.html(_getParentDescription(_getModuleName()));
|
|
if (_positionSettings.parent.headerStatus !== "") {
|
|
tableOverlay
|
|
.find(".title .headerstatus")
|
|
.html(
|
|
`<div class="metainfo headerstatus_inner">${TC.status}: <span class="label1">${_positionSettings.parent.headerStatus}</span></div>`
|
|
);
|
|
}
|
|
tableOverlay.find(_tableContainerId).css({
|
|
width: parentTableWidth - 2,
|
|
height:
|
|
parentTableHeight -
|
|
tableOverlay.find(".title").getHeight() -
|
|
_tableOverlayOffsetLeft
|
|
});
|
|
tableOverlay.css({ visibility: "visible" });
|
|
await _createToolbarTable(buttons.STATE.initialize);
|
|
_rerenderTable();
|
|
_tableObject.on(CALLBACK_EVENTS.SELECTIONCHANGED, async currentRows => {
|
|
|
|
console.log("currentRows", currentRows);
|
|
|
|
const btnCancel = buttonClasses.cancel;
|
|
if (
|
|
!triggerSelectionChangeEvent &&
|
|
prevRows !== null &&
|
|
currentRows[0].jpos_posno === prevRows[0].jpos_posno
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
if (_isButtonPresent(btnCancel)) {
|
|
_getButtonSelectorObject(btnCancel).trigger("click");
|
|
} else {
|
|
prevRows = currentRows;
|
|
await onClickTable(currentRows, buttons.STATE.show);
|
|
}
|
|
return false;
|
|
});
|
|
_tableObject.on(CALLBACK_EVENTS.LAYOUTCHANGED, tableConfig =>
|
|
saveUniversalTableLayout(_tableLayoutInfo.moduleName, tableConfig)
|
|
);
|
|
_tableObject.on(CALLBACK_EVENTS.DRAG, (sourceRows, targetRows) =>
|
|
moveTableRow(sourceRows, targetRows)
|
|
);
|
|
_tableObject.on(CALLBACK_EVENTS.FILTERCHANGED, async tableConfig => {
|
|
|
|
console.log("FILTERCHANGED", tableConfig, _tableObject.getFilter());
|
|
|
|
await onReloadTable();
|
|
});
|
|
}
|
|
async function moveTableRow(sourceRows, targetRows) {
|
|
const { canBeModified = true } = _positionSettings.parent.settings;
|
|
if (canBeModified) {
|
|
const para = {
|
|
jobIds: sourceRows.map(el => el.jpos_jobid),
|
|
posNos: sourceRows.map(el => el.jpos_posno),
|
|
headerTypes: sourceRows.map(el => el.jpos_headertype),
|
|
subPosNos: sourceRows.map(el => el.jpos_subposno),
|
|
insertAfterPosNo: targetRows[0].jpos_posno,
|
|
insertAfterJobId: targetRows[0].jpos_jobid,
|
|
insertAfterHeaderType: targetRows[0].jpos_headertype,
|
|
insertAfterSubPosNo: targetRows[0].jpos_subposno
|
|
};
|
|
const data = await servicesData.setReorderPos(para);
|
|
if (data !== null) {
|
|
await onReloadTable();
|
|
}
|
|
}
|
|
}
|
|
async function _updateTableContent() {
|
|
const moduleName = _getModuleName();
|
|
const filter = _tableObject.getFilter();
|
|
const para = {
|
|
...getFilterPara(filter)
|
|
};
|
|
switch (moduleName) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
para.theSIBookID = hPk.idSiBook;
|
|
para.theSIHeaderID = hPk.siHeaderId;
|
|
}
|
|
break;
|
|
case ModuleNameEnum.JOB:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
para.theJobID = hPk.jobid;
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
para.theCEID = hPk.ceId;
|
|
}
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
para.theOrderID = hPk.orderId;
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
para.ciBookId = hPk.ciBookId;
|
|
para.ciHeaderId = hPk.ciHeaderId;
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error(`Invalid moduleName "${moduleName}"`);
|
|
}
|
|
para.theType = _getModuleType();
|
|
const data = await servicesData.getListOfPos(para, _getModuleType(), 1, 1);
|
|
if (data !== null) {
|
|
|
|
_tableObject.setConfiguration({
|
|
..._tableObject.getConfiguration(),
|
|
columns: data.head.columns
|
|
});
|
|
|
|
_setTableData(data);
|
|
|
|
_rerenderTable();
|
|
|
|
if (_tableSelectionPosNo) {
|
|
_tableObject.setSelection([{ jpos_posno: _tableSelectionPosNo }]);
|
|
_tableObject.makeVisible();
|
|
} else {
|
|
await _removeDetails();
|
|
}
|
|
}
|
|
}
|
|
function _setTableData(obj) {
|
|
_tableData.cols = obj.cols;
|
|
_tableData.rows = obj.rows;
|
|
}
|
|
function _rerenderTable() {
|
|
_tableObject.show(_tableData);
|
|
if (getSession().userPreferences.autoAdjustColWidth) {
|
|
_tableObject.adjustColumnSize();
|
|
}
|
|
SplitViewPage.setTableRowCounter(_tableData.rows.length);
|
|
}
|
|
async function _createFormWidget(positionTypeId, headerPK, contentId = null) {
|
|
console.log(
|
|
'Init form for module "' +
|
|
_getModuleName() +
|
|
'", positiontype ID: ' +
|
|
positionTypeId
|
|
);
|
|
_formObject = new UiForm(
|
|
form.getFormConfig(
|
|
_getModuleName(),
|
|
positionTypeId,
|
|
_formIdName,
|
|
_formData,
|
|
_staticData,
|
|
_isNewDataset
|
|
)
|
|
);
|
|
const renderFormInConainter = contentId ? contentId : _getFormSelector();
|
|
await form.initForm(
|
|
_getModuleName(),
|
|
positionTypeId,
|
|
_formEvent,
|
|
_formObject,
|
|
_formData,
|
|
_staticData,
|
|
_isNewDataset,
|
|
renderFormInConainter,
|
|
headerPK
|
|
);
|
|
}
|
|
function _bindUiListPickerEmployees(
|
|
elementName,
|
|
defaultTabId,
|
|
availableList,
|
|
assignedList
|
|
) {
|
|
const element = _formObject.getElementByName(elementName);
|
|
const configuration = {};
|
|
configuration.listOutputElement = "#" + element.getId();
|
|
if (elementName === BEC.LISTEMPLS) {
|
|
configuration[BEC.LISTEMPLS] = true;
|
|
configuration.Id = "#" + defaultTabId + " dd";
|
|
}
|
|
if (!configuration[elementName]) {
|
|
throw new Error(
|
|
'function _bindUiListPickerEmployees() only works with elementId: "listEmpls"'
|
|
);
|
|
}
|
|
if (isUndefined(assignedList)) {
|
|
assignedList = [];
|
|
}
|
|
const $selector = $(configuration.Id);
|
|
if ($selector.length === 1) {
|
|
UiListPicker.initialize({
|
|
container: configuration.Id,
|
|
availableList: {
|
|
title: TC.available,
|
|
content: _.clone(availableList)
|
|
},
|
|
assignedList: {
|
|
title: TC.assigned,
|
|
content: _.clone(assignedList)
|
|
},
|
|
filter: {
|
|
lru: "",
|
|
onEvent: "keyup blur"
|
|
},
|
|
outputElementId: configuration.listOutputElement,
|
|
searchParameterArray: ["name", "code"],
|
|
textParameterArray: ["name", "code"],
|
|
onChange: selection => {
|
|
element.__DEPRECATED__setValue(selection.join());
|
|
}
|
|
});
|
|
} else {
|
|
throw new Error("function _bindUiListPickerEmployees() selector not found");
|
|
}
|
|
$selector.find("ul").sortable("disable");
|
|
const taskElementValue = _formObject.__DEPRECATED__getValueStringOpt(
|
|
BEC.ISTASK
|
|
);
|
|
const setAsNoTask = taskElementValue === BEC.ISTASK + "_false";
|
|
if (taskElementValue === null) {
|
|
return;
|
|
}
|
|
if (!setAsNoTask) {
|
|
|
|
if (_formEvent === buttons.STATE.edit || _formEvent === buttons.STATE.new) {
|
|
|
|
$selector.find("ul").sortable("enable");
|
|
} else {
|
|
|
|
$selector.find("ul").sortable("disable");
|
|
}
|
|
|
|
|
|
|
|
if (elementName === BEC.LISTEMPLS && _formEvent === buttons.STATE.edit) {
|
|
_showEmployeesDialogButton(configuration.Id);
|
|
}
|
|
}
|
|
}
|
|
function _bindUiListPickerPositions(
|
|
elementName,
|
|
defaultTabId,
|
|
availableList,
|
|
assignedList
|
|
) {
|
|
const element = _formObject.getElementByName(elementName);
|
|
const configuration = {
|
|
listOutputElement: "#" + element.getId(),
|
|
id: defaultTabId
|
|
};
|
|
const $selector = $("#" + configuration.id);
|
|
if ($selector.length === 1) {
|
|
UiListPicker.initialize({
|
|
container: "#" + configuration.id,
|
|
availableList: {
|
|
title: TC.available,
|
|
content: _.clone(availableList)
|
|
},
|
|
assignedList: {
|
|
title: TC.assigned,
|
|
content: _.clone(assignedList)
|
|
},
|
|
filter: {
|
|
lru: "",
|
|
onEvent: "keyup blur"
|
|
},
|
|
outputElementId: configuration.listOutputElement,
|
|
searchParameterArray: ["name"],
|
|
textParameterArray: ["name"],
|
|
onChange: selection => {
|
|
element.__DEPRECATED__setValue(selection.join());
|
|
}
|
|
});
|
|
} else {
|
|
throw new Error("function _bindUiListPickerPositions() selector not found");
|
|
}
|
|
if (_formEvent === buttons.STATE.edit || _formEvent === buttons.STATE.new) {
|
|
|
|
$selector.find("ul").sortable("enable");
|
|
} else {
|
|
|
|
$selector.find("ul").sortable("disable");
|
|
}
|
|
}
|
|
function bindTaskProgress(data) {
|
|
const elem = _formObject.getElementByName(BEC.PERCCOMPLETED);
|
|
let obj;
|
|
if (data.basic.isTask) {
|
|
obj = {
|
|
element: $("#" + elem.getId()),
|
|
showpercent: Number(_staticData.settings.taskShowPerc),
|
|
prefreopen: Number(_staticData.settings.privTaskReopen),
|
|
taskid: data.task.taskID,
|
|
status: data.task.taskStatus,
|
|
percent: data.task.percCompleted,
|
|
decisionResult: false
|
|
};
|
|
} else {
|
|
|
|
obj = {
|
|
element: $("#" + elem.getId()),
|
|
showpercent: Number(_staticData.settings.taskShowPerc),
|
|
prefreopen: Number(_staticData.settings.privTaskReopen),
|
|
taskid: null,
|
|
status: 1,
|
|
percent: 0,
|
|
decisionResult: false
|
|
};
|
|
}
|
|
_pluginObj[BEC.PERCCOMPLETED] = obj;
|
|
progressbar = createTaskProgress(
|
|
obj.element,
|
|
obj.taskid,
|
|
obj.showpercent,
|
|
obj.prefreopen,
|
|
obj.status,
|
|
obj.percent
|
|
);
|
|
progressbar.on("change", function (values) {
|
|
|
|
progressbar.setStatusOnSuccess();
|
|
|
|
|
|
_pluginObj[BEC.PERCCOMPLETED] = values;
|
|
formHelper.setCompleteDate(values.status, _formObject, _staticData);
|
|
});
|
|
if (_formEvent !== buttons.STATE.edit && _formEvent !== buttons.STATE.new) {
|
|
progressbar.setDisabled();
|
|
}
|
|
if (!data.basic.isTask) {
|
|
progressbar.setDisabled();
|
|
}
|
|
}
|
|
function _bindPluginsAfterFormRender(positionTypeId) {
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
if (
|
|
_.includes(
|
|
[
|
|
POSITIONTYPES.EXTERNAL,
|
|
POSITIONTYPES.SERVICE,
|
|
POSITIONTYPES.MEDIA,
|
|
POSITIONTYPES.HOURS,
|
|
POSITIONTYPES.INTCOSTS,
|
|
POSITIONTYPES.ACONTOSPECIAL,
|
|
POSITIONTYPES.ACONTO
|
|
],
|
|
positionTypeId
|
|
)
|
|
) {
|
|
if (
|
|
preferences.isPreferenceTrue(
|
|
_staticData,
|
|
preferences.PREFERENCE.HASPROJECTTASKS
|
|
)
|
|
) {
|
|
|
|
const elem = _formObject.getElementByName(BEC.LINKCOMM);
|
|
addFixedTooltip($("#" + elem.getId()).find("a"));
|
|
|
|
_bindUiListPickerEmployees(
|
|
BEC.LISTEMPLS,
|
|
_formObject.getRowIdOfElementName(BEC.LISTEMPLS),
|
|
_generalDataEmplLists.listEmpls,
|
|
_formData.task.listEmpls
|
|
);
|
|
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.TASKDEPENDENCIES
|
|
)
|
|
) {
|
|
|
|
_formObject.__DEPRECATED__setValue(
|
|
BEC.LISTTASKS,
|
|
formHelper.getDependentTasksList(
|
|
_formEvent,
|
|
_formObject,
|
|
_formData
|
|
)
|
|
);
|
|
}
|
|
|
|
bindTaskProgress(_formData);
|
|
}
|
|
} else if (_.includes([POSITIONTYPES.TEXT], positionTypeId)) {
|
|
if (
|
|
preferences.isPreferenceTrue(
|
|
_staticData,
|
|
preferences.PREFERENCE.HASPROJECTTASKS
|
|
)
|
|
) {
|
|
|
|
const elem = _formObject.getElementByName(BEC.LINKCOMM);
|
|
addFixedTooltip($("#" + elem.getId()).find("a"));
|
|
|
|
_bindUiListPickerEmployees(
|
|
BEC.LISTEMPLS,
|
|
_formObject.getRowIdOfElementName(BEC.LISTEMPLS),
|
|
_generalDataEmplLists.listEmpls,
|
|
_formData.task.listEmpls
|
|
);
|
|
|
|
if (
|
|
privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.TASKDEPENDENCIES
|
|
)
|
|
) {
|
|
|
|
_formObject.__DEPRECATED__setValue(
|
|
BEC.LISTTASKS,
|
|
formHelper.getDependentTasksList(
|
|
_formEvent,
|
|
_formObject,
|
|
_formData
|
|
)
|
|
);
|
|
}
|
|
|
|
bindTaskProgress(_formData);
|
|
}
|
|
} else if (_.includes([POSITIONTYPES.SUBTOTAL], positionTypeId)) {
|
|
_bindUiListPickerPositions(
|
|
BEC.LISTPOS,
|
|
_formObject.getRowIdOfElementName(BEC.LISTPOS),
|
|
_formData.basic.listPos,
|
|
_formData.basic.listPosConnected
|
|
);
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
if (_.includes([POSITIONTYPES.SUBTOTAL], positionTypeId)) {
|
|
_bindUiListPickerPositions(
|
|
BEC.LISTPOS,
|
|
_formObject.getRowIdOfElementName(BEC.LISTPOS),
|
|
_formData.basic.listPos,
|
|
_formData.basic.listPosConnected
|
|
);
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
if (_.includes([POSITIONTYPES.SUBTOTAL], positionTypeId)) {
|
|
_bindUiListPickerPositions(
|
|
BEC.LISTPOS,
|
|
_formObject.getRowIdOfElementName(BEC.LISTPOS),
|
|
_formData.basic.listPos,
|
|
_formData.basic.listPosConnected
|
|
);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
async function _resetDetails() {
|
|
setTableOverlayPanel("");
|
|
const isAddTask =
|
|
typeof _options !== "undefined" && _options.hasOwnProperty("addTask")
|
|
? _options.addTask === 1
|
|
: false;
|
|
if (_tableObject.getCurrentRow() === null || isAddTask) {
|
|
|
|
await _removeDetails();
|
|
} else {
|
|
|
|
await _showForm(buttons.STATE.show, _getDataFromSelectedEntry());
|
|
}
|
|
}
|
|
async function _removeDetails() {
|
|
_hideTheForm();
|
|
await _createToolbarTable(buttons.STATE.initialize);
|
|
_showFormButtons(buttons.STATE.initialize);
|
|
}
|
|
function urlParameterAvailable(name = "") {
|
|
return window.location.href.indexOf(name) !== -1;
|
|
}
|
|
function setIdToUrl(id) {
|
|
if (urlParameterAvailable("serviceID")) {
|
|
setUrlParameter("serviceID", id.toString());
|
|
}
|
|
}
|
|
async function _showForm(setEvent, selection, contentId = null) {
|
|
_isNewDataset = false;
|
|
triggerSelectionChangeEvent = true;
|
|
_formEvent = setEvent;
|
|
if (selection) {
|
|
_tableSelectionPosNo = selection.jpos_posno;
|
|
_tableSelectionJobNo = selection.jpos_jobid;
|
|
|
|
const para = {
|
|
theJobID: selection.jpos_jobid,
|
|
thePosNo: selection.jpos_posno,
|
|
theHeaderType: selection.jpos_headertype,
|
|
theSubPosNo: selection.jpos_subposno
|
|
};
|
|
|
|
const data = await servicesData.getPosData(para);
|
|
if (data !== null) {
|
|
|
|
if (
|
|
_.includes(
|
|
[
|
|
POSITIONTYPES.EXTERNAL,
|
|
POSITIONTYPES.MEDIA,
|
|
POSITIONTYPES.SERVICE,
|
|
POSITIONTYPES.HOURS,
|
|
POSITIONTYPES.INTCOSTS,
|
|
POSITIONTYPES.TEXT,
|
|
POSITIONTYPES.ACONTOSPECIAL,
|
|
POSITIONTYPES.ACONTO,
|
|
POSITIONTYPES.SUBTOTAL
|
|
],
|
|
data.basic.idPosType
|
|
)
|
|
) {
|
|
|
|
_formData = data;
|
|
|
|
await _createFormWidget(
|
|
data.basic.idPosType,
|
|
getPKfromModule(),
|
|
contentId
|
|
);
|
|
|
|
_setCalculationButton(data.basic.idPosType);
|
|
|
|
_setEnhanceButton(data.basic.idPosType);
|
|
|
|
if (
|
|
preferences.isPreferenceTrue(
|
|
_staticData,
|
|
preferences.PREFERENCE.HASPROJECTTASKS
|
|
)
|
|
) {
|
|
reOpenTaskButton(data.basic.idPosType, setEvent);
|
|
}
|
|
|
|
_setDefaultLayoutButton(data.basic.idPosType, setEvent);
|
|
|
|
setTechnicalTextButton(_formObject, data.basic.idPosType);
|
|
|
|
_setCostsButton(data.basic.idPosType, setEvent);
|
|
|
|
_bindPluginsAfterFormRender(data.basic.idPosType);
|
|
|
|
_showTheForm();
|
|
if (!_isFormInDialog) {
|
|
setTableOverlayPanel(setEvent);
|
|
|
|
_showFormButtons(setEvent);
|
|
|
|
setIdToUrl(selection.jpos_posno);
|
|
} else {
|
|
_showFormButtons(setEvent);
|
|
|
|
}
|
|
} else {
|
|
showLoadingWarning("form not defined");
|
|
await _removeDetails();
|
|
}
|
|
} else {
|
|
await _removeDetails();
|
|
}
|
|
} else {
|
|
|
|
await _removeDetails();
|
|
}
|
|
}
|
|
async function _showFormNewPosition(setEvent, postypeID, serverData) {
|
|
_isNewDataset = true;
|
|
_formEvent = setEvent;
|
|
if (!_isFormInDialog) {
|
|
setTableOverlayPanel(setEvent);
|
|
|
|
_tableSelectionPosNo = null;
|
|
|
|
_tableObject.setCurrentRow(null);
|
|
}
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
const data = await servicesData.getDefaultsForNewPos(
|
|
{
|
|
theJobID: hPk.jobid,
|
|
thePostype: postypeID
|
|
},
|
|
servicesData.ServiceHeaderType.JOB
|
|
);
|
|
await _showFormNewPositionExtended(setEvent, data, getPKfromModule());
|
|
}
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
if (!serverData) {
|
|
throw new Error();
|
|
}
|
|
await _showFormNewPositionExtended(
|
|
setEvent,
|
|
serverData,
|
|
getPKfromModule()
|
|
);
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
const data = await servicesData.getDefaultsForNewPos(
|
|
{
|
|
theJobID: hPk.ceId,
|
|
thePostype: postypeID
|
|
},
|
|
servicesData.ServiceHeaderType.CE
|
|
);
|
|
await _showFormNewPositionExtended(setEvent, data, getPKfromModule());
|
|
}
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
const data = await servicesData.getDefaultsForNewPos(
|
|
{
|
|
theJobID: hPk.orderId,
|
|
thePostype: postypeID
|
|
},
|
|
servicesData.ServiceHeaderType.ORDER
|
|
);
|
|
await _showFormNewPositionExtended(setEvent, data, getPKfromModule());
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
{
|
|
const hPk = getPKfromModule();
|
|
const data = await servicesData.getDefaultsForNewCIPos({
|
|
ciBookId: hPk.ciBookId,
|
|
ciHeaderId: hPk.ciHeaderId,
|
|
posType: postypeID
|
|
});
|
|
await _showFormNewPositionExtended(setEvent, data, getPKfromModule());
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error('Invalid type "_getModuleName()"');
|
|
}
|
|
}
|
|
async function _showFormNewPositionExtended(setEvent, data, headerPK) {
|
|
_formData = data;
|
|
await _createFormWidget(
|
|
data.basic.idPosType,
|
|
headerPK,
|
|
_isFormInDialogSelector
|
|
);
|
|
_setCalculationButton(data.basic.idPosType);
|
|
_setEnhanceButton(data.basic.idPosType);
|
|
_setDefaultLayoutButton(data.basic.idPosType, setEvent);
|
|
setTechnicalTextButton(_formObject, data.basic.idPosType);
|
|
_setCostsButton(data.basic.idPosType, setEvent);
|
|
_bindPluginsAfterFormRender(data.basic.idPosType);
|
|
_showTheForm();
|
|
_showFormButtons(setEvent);
|
|
}
|
|
function setTableOverlayPanel(setEvent) {
|
|
switch (setEvent) {
|
|
case buttons.STATE.edit:
|
|
case buttons.STATE.new:
|
|
SplitViewPage.disableOverviewPage();
|
|
break;
|
|
default:
|
|
SplitViewPage.enableOverviewPage();
|
|
break;
|
|
}
|
|
}
|
|
async function _saveForm(removeShowWarning, successWithInfoOptions) {
|
|
if (_formObject.validate()) {
|
|
const hPk = getPKfromModule();
|
|
const saveData = convertData(
|
|
hPk,
|
|
_formObject.__DEPRECATED__getValues(),
|
|
_formData,
|
|
_getModuleName(),
|
|
_pluginObj,
|
|
_isNewDataset,
|
|
removeShowWarning,
|
|
successWithInfoOptions
|
|
);
|
|
|
|
const json = await servicesData.setSavedPos(saveData, _isNewDataset);
|
|
if (json.stat.status === STATUS.SUCCESS) {
|
|
|
|
if (_isNewDataset) {
|
|
_tableSelectionPosNo = json.data.posNo;
|
|
}
|
|
await _saveCompleted(_tableSelectionPosNo);
|
|
return true;
|
|
} else if (json.stat.status === STATUS.INFO) {
|
|
|
|
|
|
if (
|
|
_.includes(Object.keys(json.data), "askSplitPos") ||
|
|
_.includes(Object.keys(json.data), "askHowToChange")
|
|
) {
|
|
await showSISaveDialog(json.data);
|
|
return true;
|
|
}
|
|
} else if (json.stat.status === STATUS.VALIDATE) {
|
|
await showWarningDialog(json.stat.message);
|
|
} else if (json.stat.status === STATUS.WARNING) {
|
|
|
|
await showSISaveConfirmDialog(json.data.warnings);
|
|
}
|
|
} else {
|
|
showLoadingWarning(pageTC.requiredInformation);
|
|
}
|
|
return false;
|
|
}
|
|
async function _saveCompleted(newPosNo) {
|
|
_formObject.setActive(false);
|
|
_formObject.memorizeCurrentValues();
|
|
if (_isFormInDialog && _isFormInDialogJobPK !== null) {
|
|
_isFormInDialogJobPK.jpos_posno = newPosNo;
|
|
|
|
await _showForm(
|
|
buttons.STATE.show,
|
|
_isFormInDialogJobPK,
|
|
_isFormInDialogSelector
|
|
);
|
|
} else {
|
|
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function showSISaveConfirmDialog(message) {
|
|
const ok = await confirmDialog(message);
|
|
if (ok) {
|
|
await _saveForm(true);
|
|
}
|
|
}
|
|
async function showSISaveDialog(data) {
|
|
const defaultSetting = {
|
|
doSplitPos: true,
|
|
chargeType: 10
|
|
},
|
|
elements = {
|
|
chbox: new UiElementCheckbox({
|
|
name: "splitPos",
|
|
value: defaultSetting.doSplitPos
|
|
}),
|
|
radio: new UiElementRadio({
|
|
name: "howToCharge",
|
|
value: defaultSetting.chargeType,
|
|
selectOptions: _.map(_staticData.lists.listChargeTypes, function (obj) {
|
|
return { id: obj.id, name: obj.name };
|
|
})
|
|
})
|
|
};
|
|
let askSplitPosText,
|
|
asHowToChargeText,
|
|
html = "";
|
|
html += '<table class="Q_form formlike">';
|
|
if (data.askSplitPos) {
|
|
if (_formData.settings.ciExists) {
|
|
askSplitPosText = TC.askSplitPosCiExists;
|
|
} else {
|
|
askSplitPosText = TC.askSplitPos;
|
|
}
|
|
html += "<tr><td>" + elements.chbox.getHTML() + "</td>";
|
|
html += "<td>" + askSplitPosText + "<br><br></td></tr>";
|
|
}
|
|
if (data.askHowToCharge) {
|
|
asHowToChargeText = TC.howToCharge;
|
|
html += '<tr><td colspan="2"><br><br>' + asHowToChargeText + "</td></tr>";
|
|
html +=
|
|
'<tr><td colspan="2"><div>' +
|
|
elements.radio.getHTML() +
|
|
"</div></td></tr>";
|
|
}
|
|
html += "</table>";
|
|
const dialog = new UiDialog({
|
|
autoClose: true,
|
|
html,
|
|
title: pageTC.confirmation,
|
|
async onClose(ok) {
|
|
return ok ? _saveForm(true, defaultSetting) : true;
|
|
}
|
|
});
|
|
elements.chbox.onChange(element => {
|
|
defaultSetting.doSplitPos = element.getValueBoolean();
|
|
});
|
|
elements.radio.onChange(element => {
|
|
defaultSetting.chargeType = element.getValueAsNumber();
|
|
});
|
|
if (data.askSplitPos) {
|
|
elements.chbox.bindEvents();
|
|
}
|
|
if (data.askHowToCharge) {
|
|
elements.radio.bindEvents();
|
|
}
|
|
await dialog.open();
|
|
}
|
|
async function getSortDialog() {
|
|
let sortOrder = 1;
|
|
const NAME = "sortPosition";
|
|
const elements = {
|
|
radio: new UiElementRadio({
|
|
name: "sortOrder",
|
|
value: sortOrder,
|
|
selectOptions: [
|
|
{
|
|
id: "1",
|
|
name: TC.sortByCategory
|
|
},
|
|
{
|
|
id: "2",
|
|
name: TC.sortByGroup
|
|
}
|
|
]
|
|
})
|
|
};
|
|
const html = `<div class=${NAME}>
|
|
<table class="Q_form formlike">
|
|
<tr>
|
|
<td>${elements.radio.getHTML()}</td>
|
|
</tr>
|
|
</table>
|
|
</div>`;
|
|
if (_parentTableSelection === null) {
|
|
throw new Error("No row selected");
|
|
}
|
|
const dialog = new UiDialog({
|
|
autoClose: true,
|
|
html,
|
|
title: pageTC.confirmation,
|
|
onClose(ok) {
|
|
if (ok) {
|
|
return sendSortCommandToBE(_parentTableSelection, sortOrder);
|
|
}
|
|
return Promise.resolve(true);
|
|
}
|
|
});
|
|
elements.radio.onChange(element => {
|
|
sortOrder = element.getValueAsNumber();
|
|
});
|
|
elements.radio.bindEvents();
|
|
$("." + NAME + " table").attr("style", "width: 100%");
|
|
$("." + NAME + " table td").attr("style", "text-align: center");
|
|
const isClosed = await dialog.open();
|
|
if (isClosed) {
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function sendSortCommandToBE(currentRow, sortOrder) {
|
|
const moduleName = _getModuleName();
|
|
switch (moduleName) {
|
|
case ModuleNameEnum.JOB:
|
|
return servicesData.setJobSortType(currentRow.job_jobid, sortOrder);
|
|
case ModuleNameEnum.CEHEADER:
|
|
return servicesData.setCeSortType(currentRow.cehe_ceid, sortOrder);
|
|
case ModuleNameEnum.CIHEADER:
|
|
return servicesData.setCiSortType(
|
|
{
|
|
ciBookId: currentRow.cihe_bookid,
|
|
ciHeaderId: currentRow.cihe_ciheaderid
|
|
},
|
|
sortOrder
|
|
);
|
|
default:
|
|
throw new Error('Invalid name "' + moduleName + '"');
|
|
}
|
|
}
|
|
async function deleteEntryJob(para) {
|
|
const result = await servicesData.setDeletePosList(para);
|
|
if (result) {
|
|
if (_isFormInDialog && _isFormInDialogSelector !== null) {
|
|
$(_isFormInDialogSelector).html("");
|
|
|
|
_showFormButtons(buttons.STATE.initialize);
|
|
} else {
|
|
_tableSelectionPosNo = null;
|
|
await _updateTableContent();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
async function deleteEntrySiCheck() {
|
|
const selectedListPosNo = _tableObject
|
|
.getSelection()
|
|
.map(el => el.jpos_posno);
|
|
const hPk = getPKfromModule();
|
|
const data = await servicesData.setSiCheckDeletePos({
|
|
idSiBook: hPk.idSiBook,
|
|
siHeaderId: hPk.siHeaderId,
|
|
listPosNos: selectedListPosNo
|
|
});
|
|
if (data.askSupplRemains) {
|
|
|
|
const ok = await confirmDialog(TC.askJobservicesStayAssigned);
|
|
if (ok) {
|
|
await deleteEntrySi(true);
|
|
} else {
|
|
await deleteEntrySi(false);
|
|
}
|
|
} else {
|
|
|
|
await deleteEntrySi(true);
|
|
}
|
|
}
|
|
async function deleteEntrySi(supplRemains) {
|
|
const selectedListPosNo = _tableObject
|
|
.getSelection()
|
|
.map(el => el.jpos_posno);
|
|
const hPk = getPKfromModule();
|
|
const para = {
|
|
idSiBook: hPk.idSiBook,
|
|
siHeaderId: hPk.siHeaderId,
|
|
supplRemains: supplRemains,
|
|
lockTimestamp: _formData.settings.lockTimestamp,
|
|
listPosNos: selectedListPosNo
|
|
};
|
|
await servicesData.setSiDeletePos(para);
|
|
_tableSelectionPosNo = null;
|
|
await _updateTableContent();
|
|
}
|
|
async function setDeletePosList(para) {
|
|
const result = await servicesData.setDeletePosList(para);
|
|
if (result) {
|
|
|
|
_tableSelectionPosNo = null;
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
async function _deleteEntry(disableWarnings = false) {
|
|
let pk = null;
|
|
if (_isFormInDialog && _isFormInDialogJobPK !== null) {
|
|
pk = {
|
|
jobId: _isFormInDialogJobPK.jpos_jobid,
|
|
headerType: _isFormInDialogJobPK.jpos_headertype,
|
|
listPosNos: _isFormInDialogJobPK.jpos_posno
|
|
? [_isFormInDialogJobPK.jpos_posno]
|
|
: [],
|
|
subPosNo: _isFormInDialogJobPK.jpos_subposno
|
|
};
|
|
} else {
|
|
pk = getPKFromSelection();
|
|
}
|
|
if (pk === null) {
|
|
return;
|
|
}
|
|
const data = {
|
|
jobID: pk.jobId,
|
|
headerType: pk.headerType,
|
|
listPosNos: pk.listPosNos,
|
|
subPosNo: pk.subPosNo,
|
|
lockTimestamp: _formData.settings.lockTimestamp,
|
|
showWarnings: !disableWarnings
|
|
};
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
await deleteEntryJob(data);
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
await deleteEntrySiCheck();
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
await setDeletePosList(data);
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
await setDeletePosList(data);
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
await setDeletePosList(data);
|
|
break;
|
|
default:
|
|
throw new Error(
|
|
'Invalid name "' + _getModuleName() + '" in _deleteEntry()'
|
|
);
|
|
}
|
|
}
|
|
function showEnhanceEffect($selector, hiddenClassName, type = "slideandfade") {
|
|
switch (type) {
|
|
|
|
case "show":
|
|
$selector.removeClass(hiddenClassName);
|
|
break;
|
|
case "fold":
|
|
|
|
$selector.hide().removeClass(hiddenClassName).slideDown(500).show();
|
|
break;
|
|
case "fade":
|
|
|
|
$selector
|
|
.css({ opacity: 0 })
|
|
.removeClass(hiddenClassName)
|
|
.animate({ opacity: 1 }, 600);
|
|
break;
|
|
case "slideandfade":
|
|
|
|
$selector
|
|
.css({ opacity: 0 })
|
|
.hide()
|
|
.removeClass(hiddenClassName)
|
|
.slideDown(300)
|
|
.animate({ opacity: 1 }, 250);
|
|
break;
|
|
default:
|
|
throw new Error('Invalid type "' + type + '" in showEnhanceEffect()');
|
|
}
|
|
}
|
|
function _setCalculationButton(positionTypeId) {
|
|
let showButton = true,
|
|
showButtonInTab = 1;
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
|
|
showButtonInTab = 1;
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
|
|
showButtonInTab = 1;
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
|
|
showButtonInTab = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
switch (positionTypeId) {
|
|
case POSITIONTYPES.TEXT:
|
|
showButton = false;
|
|
break;
|
|
case POSITIONTYPES.SUBTOTAL:
|
|
showButton = false;
|
|
break;
|
|
default:
|
|
|
|
break;
|
|
}
|
|
if (showButton) {
|
|
|
|
new UiButton(
|
|
TC.showCalculation,
|
|
"showCalcBtn",
|
|
async function () {
|
|
|
|
await _showCalculationDialog();
|
|
},
|
|
"calculator"
|
|
).appendHTML("#" + _formObject.getPageId(showButtonInTab));
|
|
}
|
|
}
|
|
function _setEnhanceButton(positionTypeId) {
|
|
let showButton = true,
|
|
showButtonInTab = 1;
|
|
switch (_getModuleName()) {
|
|
|
|
case ModuleNameEnum.JOB:
|
|
showButtonInTab = 1;
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
|
|
showButtonInTab = 1;
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
|
|
showButtonInTab = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
switch (positionTypeId) {
|
|
case POSITIONTYPES.TEXT:
|
|
showButton = false;
|
|
break;
|
|
case POSITIONTYPES.SUBTOTAL:
|
|
showButton = false;
|
|
break;
|
|
default:
|
|
|
|
break;
|
|
}
|
|
if (showButton) {
|
|
const COOKIE = new CookieStorage(
|
|
"services_price_enhanced_" + _getModuleName()
|
|
);
|
|
|
|
new UiButton(
|
|
TC.enhanced,
|
|
"enhancedBtn",
|
|
function (e) {
|
|
const btnIcon = e.currentTarget;
|
|
const $enhancedElements = $("#" + _formObject.getFormId()).find(
|
|
".enhanced"
|
|
);
|
|
|
|
if (COOKIE.get() === "true") {
|
|
|
|
$enhancedElements.addClass("enhanced_hidden");
|
|
switchButtonIcon(btnIcon, "caret-1-n", "caret-1-s");
|
|
COOKIE.set("false");
|
|
} else {
|
|
|
|
showEnhanceEffect($enhancedElements, "enhanced_hidden");
|
|
switchButtonIcon(btnIcon, "caret-1-s", "caret-1-n");
|
|
COOKIE.set("true");
|
|
}
|
|
},
|
|
"caret-1-s"
|
|
).appendHTML("#" + _formObject.getPageId(showButtonInTab));
|
|
|
|
if (COOKIE.get() === "true") {
|
|
switchButtonIcon("#" + _formObject.getFormId(), "caret-1-s", "caret-1-n");
|
|
$("#" + _formObject.getFormId())
|
|
.find(".enhanced")
|
|
.removeClass("enhanced_hidden");
|
|
}
|
|
}
|
|
}
|
|
function _setDefaultLayoutButton(positionTypeId, setEvent) {
|
|
const $selector = $(".showDefaultBtn");
|
|
const showButtonInTab = _formObject.getPageIndexWithElementName(
|
|
BEC.POSITIONPRINT
|
|
);
|
|
console.log(_formObject.getPageIdWithElementName(BEC.POSITIONPRINT));
|
|
switch (setEvent) {
|
|
|
|
case buttons.STATE.edit:
|
|
|
|
if (
|
|
_getModuleName() === ModuleNameEnum.SIHEADER &&
|
|
_formData.settings[SETTINGS.CIEXISTS]
|
|
) {
|
|
break;
|
|
}
|
|
|
|
if ($selector.length === 0) {
|
|
|
|
new UiButton(
|
|
TC.defaultSettings,
|
|
"showDefaultBtn",
|
|
async function () {
|
|
|
|
if (_tableSelectionJobNo === null) {
|
|
throw new Error(
|
|
'In edit mode the variable "_tableSelectionJobNo" must have a number'
|
|
);
|
|
}
|
|
await formHelper.setLayoutElementsDefaultRoutine(
|
|
_formObject,
|
|
_formData,
|
|
_tableSelectionJobNo
|
|
);
|
|
},
|
|
"gear",
|
|
undefined,
|
|
false
|
|
).appendHTML("#" + _formObject.getPageId(showButtonInTab));
|
|
}
|
|
break;
|
|
|
|
default:
|
|
|
|
if ($selector.length === 1) {
|
|
$selector.remove();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
function _showEmployeesDialogButton(appendTo) {
|
|
const className = "changeEmplSelectionInfoBtn";
|
|
const button = new UiButton(
|
|
TC.enhancedSelection,
|
|
className,
|
|
async () => {
|
|
await showAssignResourcesDialog(appendTo);
|
|
},
|
|
"btn-img-emplAssign"
|
|
);
|
|
button.appendHTML(appendTo);
|
|
new DomElement(`.${className}`).setCssObject({
|
|
float: "right",
|
|
marginTop: 10,
|
|
marginRight: 5
|
|
});
|
|
}
|
|
async function showAssignResourcesDialog(appendTo) {
|
|
const { taskID } = _formData.task;
|
|
const ok = await showEmployeeAssignDialog(taskID);
|
|
if (ok) {
|
|
const formDataPointerCopy = _formData;
|
|
const data = await servicesData.getTaskEmpl(taskID);
|
|
|
|
formDataPointerCopy.task.listEmpls = data;
|
|
_formObject.__DEPRECATED__setValue(BEC.LISTEMPLS, data.join(","));
|
|
|
|
$(appendTo).html(_formObject.getElementByName(BEC.LISTEMPLS).getHTML());
|
|
|
|
_bindPluginsAfterFormRender(formDataPointerCopy.basic.idPosType);
|
|
}
|
|
}
|
|
function _setCostsButton(positionTypeId, event) {
|
|
switch (event) {
|
|
|
|
case buttons.STATE.initialize:
|
|
break;
|
|
|
|
case buttons.STATE.show:
|
|
break;
|
|
|
|
case buttons.STATE.reset:
|
|
break;
|
|
|
|
case buttons.STATE.edit:
|
|
case buttons.STATE.new:
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.SIHEADER:
|
|
if (
|
|
_.includes(
|
|
[POSITIONTYPES.EXTERNAL, POSITIONTYPES.MEDIA],
|
|
positionTypeId
|
|
)
|
|
) {
|
|
formHelper.addButtonFormPageCosts(
|
|
_staticData,
|
|
_formObject,
|
|
BEC.NCHCOSTCENTRE
|
|
);
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
if (_.includes([POSITIONTYPES.INTCOSTS], positionTypeId)) {
|
|
formHelper.addButtonFormPageCosts(
|
|
_staticData,
|
|
_formObject,
|
|
BEC.NCHCOSTCENTRE
|
|
);
|
|
}
|
|
break;
|
|
case ModuleNameEnum.JOB:
|
|
case ModuleNameEnum.CEHEADER:
|
|
case ModuleNameEnum.ORDER:
|
|
break;
|
|
default:
|
|
throw new Error('Invalid type "_getModuleName()"');
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error('Invalid event _setCostsButton("' + event + '")');
|
|
}
|
|
}
|
|
function reOpenTaskButton(positionTypeId, event) {
|
|
switch (_getModuleName()) {
|
|
|
|
case ModuleNameEnum.JOB:
|
|
|
|
if (positionTypeId !== POSITIONTYPES.SUBTOTAL) {
|
|
formHelper.addButtonReOpenTask(
|
|
_getModuleName(),
|
|
_staticData,
|
|
_formObject,
|
|
_formData.task.taskID,
|
|
event
|
|
);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
function _buttonNewPositions() {
|
|
const serviceTypes = _staticData.lists.listPosTypes.filter(e => e.isUsed);
|
|
const btnArray = serviceTypes.map((obj, i) => {
|
|
return {
|
|
rowId: "addPosition" + i,
|
|
rowText: obj.name,
|
|
rowListener: async function () {
|
|
await _getNewPositionForm(obj.id);
|
|
}
|
|
};
|
|
});
|
|
return new UiSelectButton(TC.new, "newPosition", btnArray, "caret-1-s");
|
|
}
|
|
export async function onEdit() {
|
|
if (_isFormInDialog) {
|
|
await _showForm(
|
|
buttons.STATE.edit,
|
|
_isFormInDialogJobPK,
|
|
_isFormInDialogSelector
|
|
);
|
|
} else {
|
|
await _showForm(buttons.STATE.edit, _getDataFromSelectedEntry());
|
|
}
|
|
}
|
|
async function onDelete() {
|
|
let selectionCount = 0;
|
|
if (_isFormInDialog) {
|
|
selectionCount = 1;
|
|
} else {
|
|
selectionCount = _tableObject.getSelectionCount();
|
|
}
|
|
const ok = await confirmDialog(getDeleteDialogText(selectionCount));
|
|
if (ok) {
|
|
await _deleteEntry();
|
|
}
|
|
}
|
|
async function onDeleteAndMoveNCH() {
|
|
const pk = getPKFromSelection();
|
|
if (pk === null) {
|
|
return;
|
|
}
|
|
const ok = await confirmDialog(TC.confirmationDeleteAndMoveNCH);
|
|
if (ok) {
|
|
const data = {
|
|
jobID: pk.jobId,
|
|
headerType: pk.headerType,
|
|
listPosNos: pk.listPosNos,
|
|
subPosNo: pk.subPosNo
|
|
};
|
|
let setNchData = {};
|
|
const infoForDelete = await servicesData.getInfoForDeleteCiPosList(data);
|
|
if (infoForDelete.doShowNCHInfo) {
|
|
const { nchAccount, nchCostCentre } = infoForDelete;
|
|
setNchData = await showNchInfoDialog(
|
|
{ nchAccount, nchCostCentre },
|
|
_staticData
|
|
);
|
|
}
|
|
if (setNchData !== null) {
|
|
const setDeleteData = {
|
|
...data,
|
|
...setNchData,
|
|
lockTimestamp: _formData.settings.lockTimestamp,
|
|
showWarnings: true
|
|
};
|
|
const result = await servicesData.setDeleteCiPosList(setDeleteData);
|
|
if (result) {
|
|
|
|
_tableSelectionPosNo = null;
|
|
await _updateTableContent();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function _buttonDeleteCiPositions() {
|
|
return new UiSelectButton(
|
|
TC.buttonDelete,
|
|
"deleteCiPosition",
|
|
[
|
|
{ rowId: "deleteCI", rowText: TC.buttonDelete, rowListener: onDelete },
|
|
{
|
|
rowId: "deleteCIAndMoveNCH",
|
|
rowText: TC.buttonDeleteAndMoveNCH,
|
|
rowListener: onDeleteAndMoveNCH
|
|
}
|
|
],
|
|
"trash"
|
|
);
|
|
}
|
|
async function onCancel() {
|
|
triggerSelectionChangeEvent = true;
|
|
if (
|
|
!_formObject.valuesAreEqualWithMemorizedValues() &&
|
|
getSession().userPreferences.notifyCancelChanges
|
|
) {
|
|
const ok = await confirmDialog(pageTC.dialogTextConfirmCancel);
|
|
if (ok) {
|
|
if (_isFormInDialog) {
|
|
await onCancelInDialog();
|
|
} else {
|
|
await _resetDetails();
|
|
}
|
|
} else {
|
|
if (prevRows !== null) {
|
|
triggerSelectionChangeEvent = false;
|
|
_tableObject.setSelection(prevRows);
|
|
}
|
|
}
|
|
} else {
|
|
if (_isFormInDialog) {
|
|
await onCancelInDialog();
|
|
} else {
|
|
await _resetDetails();
|
|
}
|
|
}
|
|
}
|
|
async function onCancelInDialog() {
|
|
if (_isNewDataset && _isFormInDialogSelector !== null) {
|
|
|
|
$(_isFormInDialogSelector).html("");
|
|
|
|
_showFormButtons(buttons.STATE.initialize);
|
|
} else {
|
|
await _showForm(
|
|
buttons.STATE.show,
|
|
_isFormInDialogJobPK,
|
|
_isFormInDialogSelector
|
|
);
|
|
}
|
|
}
|
|
async function onSave() {
|
|
await _saveForm(false);
|
|
}
|
|
function _showFormButtons(manualSetEvent) {
|
|
const p = {
|
|
create: privileges.getPrivilege(_staticData, privileges.PRIVILEGE.CREATE),
|
|
modify: privileges.getPrivilege(_staticData, privileges.PRIVILEGE.MODIFY),
|
|
delete: privileges.getPrivilege(_staticData, privileges.PRIVILEGE.DELETE)
|
|
};
|
|
if (_getModuleName() === ModuleNameEnum.SIHEADER) {
|
|
p.create = privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.SIPOSNEW
|
|
);
|
|
}
|
|
const s = {
|
|
canBeCreated: false,
|
|
editable: false,
|
|
canBeDeleted: false
|
|
};
|
|
if (manualSetEvent) {
|
|
_formEvent = manualSetEvent;
|
|
}
|
|
s.canBeCreated = _positionSettings.settings[SETTINGS.CREATEABLE];
|
|
s.canBeDeleted = _positionSettings.settings[SETTINGS.DELETABLE];
|
|
if (
|
|
_formData &&
|
|
_formEvent !== buttons.STATE.new &&
|
|
_formEvent !== buttons.STATE.initialize &&
|
|
_formEvent !== buttons.STATE.multipleInitialize &&
|
|
_formEvent !== buttons.STATE.delete
|
|
) {
|
|
s.editable = _formData.settings[SETTINGS.MODIFIABLE];
|
|
|
|
|
|
if (!s.editable) {
|
|
|
|
console.log(
|
|
"entry not editable: set _formEvent from",
|
|
_formEvent,
|
|
"to",
|
|
buttons.STATE.show
|
|
);
|
|
|
|
_formEvent = buttons.STATE.show;
|
|
}
|
|
}
|
|
console.log("_showFormButtons: ", _formEvent);
|
|
console.log("privileges", p);
|
|
console.log("settings", s);
|
|
let toolbar;
|
|
if (_isFormInDialog) {
|
|
toolbar = new SplitViewMenu.Toolbar("showFormOnly");
|
|
} else {
|
|
toolbar = new SplitViewMenu.Toolbar("form");
|
|
}
|
|
switch (_formEvent) {
|
|
|
|
case buttons.STATE.initialize:
|
|
if (p.create && s.canBeCreated) {
|
|
toolbar.add(_buttonNewPositions());
|
|
}
|
|
break;
|
|
|
|
case buttons.STATE.multipleInitialize:
|
|
if (p.create && s.canBeCreated) {
|
|
toolbar.add(_buttonNewPositions());
|
|
}
|
|
if (p.delete && s.canBeDeleted) {
|
|
if (
|
|
_getModuleName() === ModuleNameEnum.CIHEADER &&
|
|
_positionSettings.settings[SETTINGS.MULTIPLEDELETE]
|
|
) {
|
|
toolbar.add(_buttonDeleteCiPositions(), "right");
|
|
} else {
|
|
toolbar.addDefaultDelete(onDelete, "right");
|
|
}
|
|
}
|
|
break;
|
|
|
|
case buttons.STATE.edit:
|
|
case buttons.STATE.new:
|
|
toolbar.addDefaultCancel(onCancel);
|
|
toolbar.addDefaultSave(onSave);
|
|
break;
|
|
|
|
case buttons.STATE.show:
|
|
if (p.create && s.canBeCreated) {
|
|
toolbar.add(_buttonNewPositions());
|
|
}
|
|
if (p.modify && s.editable) {
|
|
toolbar.addDefaultEdit(onEdit);
|
|
}
|
|
if (p.delete && s.canBeDeleted) {
|
|
if (
|
|
_getModuleName() === ModuleNameEnum.CIHEADER &&
|
|
_positionSettings.settings[SETTINGS.MULTIPLEDELETE]
|
|
) {
|
|
toolbar.add(_buttonDeleteCiPositions(), "right");
|
|
} else {
|
|
toolbar.addDefaultDelete(onDelete, "right");
|
|
}
|
|
}
|
|
break;
|
|
|
|
case buttons.STATE.reset:
|
|
if (p.create && s.canBeCreated) {
|
|
|
|
toolbar.add(_buttonNewPositions());
|
|
}
|
|
break;
|
|
|
|
case buttons.STATE.delete:
|
|
if (p.delete && s.canBeDeleted) {
|
|
if (
|
|
_getModuleName() === ModuleNameEnum.CIHEADER &&
|
|
_positionSettings.settings[SETTINGS.MULTIPLEDELETE]
|
|
) {
|
|
toolbar.add(_buttonDeleteCiPositions(), "right");
|
|
} else {
|
|
toolbar.addDefaultDelete(onDelete, "right");
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
throw new Error('Invalid event "' + _formEvent + '"');
|
|
}
|
|
toolbar.render();
|
|
}
|
|
async function _showCalculationDialog() {
|
|
await form.showCalculationDialog(
|
|
_getModuleName(),
|
|
TC.calculation,
|
|
getPKfromModule()
|
|
);
|
|
}
|
|
function setPKfromModule(parentTableSelection) {
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
_parentTableDataId = {
|
|
jobid: parentTableSelection.job_jobid
|
|
};
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
_parentTableDataId = {
|
|
siHeaderId: parentTableSelection.sihd_siheaderid,
|
|
idSiBook: parentTableSelection.sihd_bookid
|
|
};
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
_parentTableDataId = {
|
|
ceId: parentTableSelection.cehe_ceid
|
|
};
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
_parentTableDataId = {
|
|
orderId: parentTableSelection.orde_orderid
|
|
};
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
_parentTableDataId = {
|
|
ciHeaderId: parentTableSelection.cihe_ciheaderid,
|
|
ciBookId: parentTableSelection.cihe_bookid
|
|
};
|
|
break;
|
|
default:
|
|
throw new Error('Invalid type "_getModuleName()"');
|
|
}
|
|
}
|
|
function getPKfromModule() {
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
return _parentTableDataId;
|
|
case ModuleNameEnum.SIHEADER:
|
|
return _parentTableDataId;
|
|
case ModuleNameEnum.CEHEADER:
|
|
return _parentTableDataId;
|
|
case ModuleNameEnum.ORDER:
|
|
return _parentTableDataId;
|
|
case ModuleNameEnum.CIHEADER:
|
|
return _parentTableDataId;
|
|
default:
|
|
throw new Error('Invalid type "_getModuleName()"');
|
|
}
|
|
}
|
|
function _getDataFromSelectedEntry() {
|
|
return _tableObject.getCurrentRow();
|
|
}
|
|
async function _getNewPositionForm(postypeID) {
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
await _showFormNewPosition(buttons.STATE.new, postypeID);
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
|
|
await _showNewJobFromTemplateDialog(postypeID);
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
await _showFormNewPosition(buttons.STATE.new, postypeID);
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
await _showFormNewPosition(buttons.STATE.new, postypeID);
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
await _showFormNewPosition(buttons.STATE.new, postypeID);
|
|
break;
|
|
default:
|
|
throw new Error('Invalid type "_getModuleName()"');
|
|
}
|
|
}
|
|
async function _showNewJobFromTemplateDialog(postypeID) {
|
|
const options = {
|
|
title: TC.selectJobFromTemplateDialogTitle,
|
|
showCheckbox: privileges.getPrivilege(
|
|
_staticData,
|
|
privileges.PRIVILEGE.SHOWALLJOBS
|
|
),
|
|
includeJob: true
|
|
};
|
|
const result = await genericJobSelectionDialog(
|
|
options,
|
|
".newJobFromTemplate_div"
|
|
);
|
|
if (result !== null && result.data.jobRequest.theJobID) {
|
|
const hPk = getPKfromModule();
|
|
const para = {
|
|
theSIBookID: hPk.idSiBook,
|
|
theSIHeaderID: hPk.siHeaderId,
|
|
thePostype: postypeID ? postypeID : 1,
|
|
theJobID: result.data.jobRequest.theJobID
|
|
};
|
|
const data = await servicesData.getDefaultsForNewSIPos(para);
|
|
await _showFormNewPosition(buttons.STATE.new, 0, data);
|
|
}
|
|
}
|
|
function _isButtonPresent(buttonName) {
|
|
return SplitViewMenu.isButtonPresent(buttonName);
|
|
}
|
|
function _getButtonSelectorObject(buttonName) {
|
|
return SplitViewMenu.getButtonSelectorObject(buttonName);
|
|
}
|
|
function _showTheForm() {
|
|
SplitViewPage.showForm();
|
|
}
|
|
function _hideTheForm() {
|
|
SplitViewPage.hideForm();
|
|
}
|
|
function _getFormSelector() {
|
|
return "." + SplitViewPage.getDetailsFormClass();
|
|
}
|
|
function _getListofSelectedRow() {
|
|
const CURRENT_ROW = _tableObject.getCurrentRow();
|
|
return CURRENT_ROW === null
|
|
? []
|
|
: _.compact(_.map(_tableObject.getSelection(), "jpos_posno"));
|
|
}
|
|
function getSelectionCount() {
|
|
const selection = _tableObject.getSelection();
|
|
return selection.length;
|
|
}
|
|
function getPKFromSelection() {
|
|
const selection = _tableObject.getSelection();
|
|
if (selection.length === 0) {
|
|
return null;
|
|
}
|
|
return {
|
|
jobId: Number(selection[0].jpos_jobid),
|
|
headerType: Number(selection[0].jpos_headertype),
|
|
listPosNos: selection.map(obj => Number(obj.jpos_posno)),
|
|
subPosNo: Number(selection[0].jpos_subposno)
|
|
};
|
|
}
|
|
function _showParentTable(forceReload = true) {
|
|
$(".form_wrapper").removeClass("serviceslist");
|
|
if (forceReload) {
|
|
switch (_getModuleName()) {
|
|
case ModuleNameEnum.JOB:
|
|
if (_reloadTable !== null) {
|
|
_reloadTable();
|
|
}
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
if (_reloadTable !== null) {
|
|
_reloadTable();
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
if (_reloadTable !== null) {
|
|
_reloadTable();
|
|
}
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
if (_reloadTable !== null) {
|
|
_reloadTable();
|
|
}
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
if (_reloadTable !== null) {
|
|
_reloadTable();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
function _setParentModulSettings(moduleName) {
|
|
switch (moduleName) {
|
|
case ModuleNameEnum.JOB:
|
|
_parentModuleSettings = {
|
|
type: "job",
|
|
moduleName: moduleName
|
|
};
|
|
break;
|
|
case ModuleNameEnum.CEHEADER:
|
|
_parentModuleSettings = {
|
|
type: "ce",
|
|
moduleName: moduleName
|
|
};
|
|
break;
|
|
case ModuleNameEnum.SIHEADER:
|
|
_parentModuleSettings = {
|
|
type: "si",
|
|
moduleName: moduleName
|
|
};
|
|
break;
|
|
case ModuleNameEnum.ORDER:
|
|
_parentModuleSettings = {
|
|
type: "order",
|
|
moduleName: moduleName
|
|
};
|
|
break;
|
|
case ModuleNameEnum.CIHEADER:
|
|
_parentModuleSettings = {
|
|
type: "ci",
|
|
moduleName: moduleName
|
|
};
|
|
break;
|
|
default:
|
|
throw new TypeError("Invalid moduleName: " + moduleName);
|
|
}
|
|
}
|
|
function _getModuleType() {
|
|
return _parentModuleSettings.type;
|
|
}
|
|
function _getModuleName() {
|
|
return _parentModuleSettings.moduleName;
|
|
}
|
|
export async function initialize(
|
|
generalDataEmplLists,
|
|
newContainerId,
|
|
moduleName,
|
|
previousTableTitle
|
|
) {
|
|
_setParentModulSettings(moduleName);
|
|
_tableContainerId = "#" + newContainerId;
|
|
_formIdName = moduleName + "_" + newContainerId + "-form";
|
|
_previousTableTitle = previousTableTitle;
|
|
_addDOMElements();
|
|
_bindClickEvents();
|
|
_staticData = await servicesData.getGeneralData(_getModuleType());
|
|
if (generalDataEmplLists !== null) {
|
|
_generalDataEmplLists = generalDataEmplLists;
|
|
} else {
|
|
_generalDataEmplLists = {
|
|
listEmpls: _staticData.lists.listEmpls
|
|
};
|
|
}
|
|
return _staticData;
|
|
}
|
|
export async function renderFormInDialog(contentId, data, addTask = false) {
|
|
const moduleName = ModuleNameEnum.SERVICES;
|
|
const pkForJobService = {
|
|
jpos_jobid: data.jobId,
|
|
jpos_posno: data.posNo,
|
|
jpos_headertype: 1,
|
|
jpos_subposno: 1
|
|
};
|
|
_setParentModulSettings(ModuleNameEnum.JOB);
|
|
_isFormInDialog = true;
|
|
_isFormInDialogSelector = contentId;
|
|
_isFormInDialogJobPK = pkForJobService;
|
|
_parentTableDataId = {
|
|
jobid: data.jobId
|
|
};
|
|
_formIdName = moduleName + "_form";
|
|
_staticData = await servicesData.getGeneralData("job");
|
|
checkIsNonemptyObject(_staticData, "staticData in " + moduleName);
|
|
const settings = await servicesData.getActionInfo(
|
|
getPKfromModule(),
|
|
_getModuleType()
|
|
);
|
|
_positionSettings.settings[SETTINGS.CREATEABLE] = settings.canBeCreated;
|
|
_positionSettings.settings[SETTINGS.DELETABLE] = settings.canBeDeleted;
|
|
const emailOfCurrentUser = await employeeData.getEmplList();
|
|
_generalDataEmplLists = {
|
|
listEmpls: emailOfCurrentUser
|
|
};
|
|
if (addTask) {
|
|
|
|
_showFormButtons(buttons.STATE.initialize);
|
|
$("#newPosition button").trigger("click");
|
|
} else {
|
|
await _showForm(buttons.STATE.show, pkForJobService, contentId);
|
|
}
|
|
}
|