$(function () { 'use strict'; BemsWebApplication.Popup.WorkList = { create: function (viewInfo, viewModel) { var facilities = ko.observableArray(), facilitiesInView = ko.observableArray(), businessFields = ko.observableArray(); var facilitySearchPopup = null, facilityFactory = BWA.Factory.Facility, facilityGridView = ko.observable(undefined), facilityDataGridOptions, modifiableFacilityDataGridOptions = undefined; var facilityDataSource = facilityFactory.getBasicDataSourceRef({ dbModeIId: 'FmsWorkOrderToFacility', primaryKeyDataField: 'WorkRequestId' }) ; function isValidateWithFunction(errorMessage) { if (_.isEmpty(facilities())) { errorMessage.message = '점검을 위한 시설이 없습니다.'; return false; } return true; } function handleBeforePopupShowingPromise(isNewInPopup, dataViewModel, clickRowData) { var workProgressId; if (isNewInPopup()) { workProgressId = $Code.WorkProgress.WORK_PLAN; } else { workProgressId = clickRowData['FmsWorkRequest/WorkProgressId'](); // clickRowData.WorkProgressId(); dataViewModel.WorkProgressId = ko.observable(); dataViewModel.WorkProgressId(workProgressId); } } function handlePopupShowing(isNewInPopup, dataModel, selectedData) { //var userInfo = BWA.UserInfo; //if (isNewInPopup()) { // dataModel.BusinessFieldName(userInfo.BusinessFieldName()); // dataModel.BusinessFieldId(userInfo.BusinessFieldId()); // dataModel.RequestUserName(userInfo.Name()); // dataModel.RequestUserId(userInfo.UserId()); // dataModel.WorkTypeId(workTypeId); // BWA.db.FmsWorkCodeType.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkRequest/FmsWorkCodeType')).done(function (workType) { // dataModel.WorkTypeName(workType.Name); // }); // var now = moment(); // dataModel.RequestDate(now.toDate()); // dataModel.StartWorkDate(BWA.DataUtil.getDateFromDateTime(now)); // dataModel.WorkProgressId($Code.WorkProgress.WORK_PLAN); // BWA.db.FmsWorkCodeProgress.byKey(BWA.DataUtil.pickKeys(dataModel, 'FmsWorkRequest/FmsWorkCodeProgress')).done(function (workProgress) { // dataModel.WorkProgressName(workProgress.Name); // }); //} } function handlePopupShown(isEditMode, isNew, dataViewModel) { } // 점검계획 정보가 저장된 후에 호출 된다. // 등록이면 responseKey가 있고, 수정이면 없다. function handleAfterSave(responseKey) { var array = facilities(); if (_.isEmpty(array)) { return; } var siteId, workRequestId;//, businessFieldId; if (_.isUndefined(responseKey)) { var dataModel = viewModel.dataModel; siteId = dataModel.SiteId(); //businessFieldId = dataModel.BusinessFieldId(); workRequestId = dataModel.WorkRequestId(); } else { siteId = responseKey.SiteId; //businessFieldId = responseKey.BusinessFieldId; workRequestId = responseKey.WorkRequestId; } var postData; var parameters = { SiteId: siteId, //BusinessFieldId: businessFieldId, WorkRequestId: workRequestId }; postData = _.map(array, function (f) { return { SiteId: siteId, //BusinessFieldId: businessFieldId, WorkRequestId: workRequestId, FacilityCode: f.FacilityCode() }; }); BWA.api.post('FmsWorkOrderToFacility', postData, parameters); } function handleAfterLoadingModelByKey(data, dataViewModel, isNewInPopup) { // 작업목록은 삭제 할 수 없음 viewModel.visibleDeleteButton(false); // 작업계획에서 사용하는 코드 임 //if (dataViewModel.WorkProgressId() >= $Code.WorkProgress.WORK_PLAN) { // viewModel.visibleEditButton(false); // viewModel.visibleDeleteButton(false); //} var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; facilityDataSource.filter([ eq('SiteId', dataViewModel.SiteId()), and, //eq('BusinessFieldId', dataViewModel.BusinessFieldId()), //and, eq('WorkRequestId', dataViewModel.WorkRequestId()) ]); facilityDataSource.load().done(function (dbFacilities) { facilitiesInView(dbFacilities); }); } function handleBeforeShowingPopupForEdit(rowData, dataViewModel) { dataViewModel.BusinessFieldName(rowData['CmBusinessField/Name']()); dataViewModel.WorkTypeName(rowData['FmsWorkRequest/FmsWorkCodeType/Name']()); dataViewModel.RequestUserName(rowData['CmUser/Name']()); dataViewModel.WorkProgressName(rowData['FmsWorkRequest/FmsWorkCodeProgress/Name']()); dataViewModel.RejectUserName($KoValue(rowData['CmUser1/Name'])); } viewModel.popupVisible.subscribe(function (visible) { if (!visible) { facilitiesInView([]); } }); viewModel.isEditModeInPopup.subscribe(function (isEditMode) { if (isEditMode) { facilities(facilitiesInView.slice(0)); } }); viewModel.dataModel.WorkTypeName = ko.observable(); viewModel.dataModel.BusinessFieldName = ko.observable(); viewModel.dataModel.RequestUserName = ko.observable(); viewModel.dataModel.RejectUserName = ko.observable(); viewModel.dataModel.WorkProgressName = ko.observable(); facilityDataGridOptions = BWA.Popup.Facility.getReadOnlyDataGridOptions( facilitiesInView, viewModel.viewModeInPopup); modifiableFacilityDataGridOptions = BWA.Popup.Facility.getModifiableDataGridOptions( facilities, viewModel.isEditModeInPopup, facilityGridView); viewModel.facilitySearchPopup = facilitySearchPopup = BWA.Popup.Facility.create(viewModel, undefined, { isMultipleSelect: true, onSelectedFacilities: function (selectedFacilities) { var workRequestId = viewModel.dataModel.WorkRequestId(); _.each(selectedFacilities, function (sf) { // 어차피 SiteId와 BusinessField는 동일 할 수 밖에 없으므로 비교하지 않는다. var found = _.some(facilities(), function (f) { return f.FacilityCode() === sf.FacilityCode(); }); if (found) return; facilities.push({ SiteId: sf.SiteId, WorkRequestId: ko.observable(workRequestId), FacilityCode: sf.FacilityCode, Name: sf.Name, }); }); facilityGridView().refresh(); } }); return { facilitySearchPopup: facilitySearchPopup, facilities: facilitiesInView, businessFields: businessFields, isValidateWithFunction: isValidateWithFunction, facilityDataGridOptions: facilityDataGridOptions, modifiableFacilityDataGridOptions: modifiableFacilityDataGridOptions, handleAfterLoadingModelByKey: handleAfterLoadingModelByKey, handleAfterSave: handleAfterSave, handlePopupShowing: handlePopupShowing, handlePopupShown: handlePopupShown, handleBeforeShowingPopupForEdit: handleBeforeShowingPopupForEdit, handleDeleteSelectedFacilities: BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc(facilityGridView, facilities), handleBeforePopupShowingPromise: handleBeforePopupShowingPromise }; } } });