BemsWebApplication.Manual = function (params, viewInfo) { "use strict"; //2019-11-25 변경 var dropZone = null; var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; var drawingHistory; var historyViewModel = new BemsWebApplication.FmsManualHistoryViewModel(); var endpointSelector = ""; if (BemsWebApplication.config.mode == "production") { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production; } else { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local; } //2019-11-25 변경 //drawingGroupDataSource = BemsWebApplication.db.createDataSource('FmsDrawingCodeGroup', true), var drawingTypeDataSource = BemsWebApplication.db.createDataSource('FmsManualType', true), drawingHistoryDataSource = BemsWebApplication.DataUtil.createDataSource({ dataSourceOptions: { select: [ 'SiteId', 'ManualId', 'HistoryId', 'FileId', 'Description', 'RevisionNo', 'UpdatedDate', 'UpdatedUserId', 'CmFile/Name', 'CmFile/FileSize', 'CmUser/Name' ], expand: ['CmFile', 'CmUser'], extendOptions: { forceOriginalField: true } } }, 'FmsManualHistory'); var drawingHistories = ko.observableArray(), //drawingGroups = ko.observableArray(), drawingTypes = ko.observableArray(), //drawingGroupsForSearch = ko.observableArray(), drawingTypesForSearch = ko.observableArray(), tabsVisible = ko.observable(false), textAreaNoteHeightInPopup = ko.observable(), isVisibleHistoryInsertButton = ko.observable(false), uploadedFileInfo = {}, drawingHistoryPopup, deferredForSearch = new $.Deferred(); params.popupPosition = { offset: '-200 0' }; var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsManual', { popupWidth: 720, dataSourceOptions: { select: [ 'SiteId', 'ManualId', 'ManualNo', 'Name', 'ManualTypeId', 'FmsManualType/Name', 'Description' ], expand: ['FmsManualType'], extendOptions: { forceOriginalField: true } }, columns: [ { dataField: 'ManualId', caption: '번호', width: '10%', alignment: 'center', sortOrder: 'desc' }, { dataField: 'FmsManualType/Name', caption: '매뉴얼 유형', width: '15%', alignment: 'center' }, { dataField: 'ManualNo', caption: '매뉴얼 번호', width: '25%', alignment: 'center' }, { dataField: 'Name', caption: '매뉴얼 명', width: '35%', alignment: 'center' } ], searchViewItems: [ { id: 'ManualTypeId', ignoreValue: 0, defaultValue: 0, dataSource: drawingTypesForSearch }, { id: 'Name' } ], getAddedToolbarItemsInPopup: function (e) { var isEditModeInPopup = e.isEditModeInPopup, hasnotModificationPermission = e.hasnotModificationPermission; isEditModeInPopup.subscribe(function (isEditMode) { tabIndex(0); // 왼쪽 수정은 무조건 매뉴얼 hcLee 2016 03 24추가 //isVisibleHistoryInsertButton(tabIndex() === 1 && isEditMode); }); return [ { location: 'after', widget: 'button', options: { text: '매뉴얼이력추가', icon: 'plus', visible: isVisibleHistoryInsertButton, disabled: hasnotModificationPermission, clickAction: function () { drawingHistoryPopup.handleInsertDrawingHistory(); } } }, ] }, promiseDataInSearchView: deferredForSearch.promise(), handlePopupShowing: function (isNewInPopup) { tabIndex(0); tabsVisible(isNewInPopup() == false); }, // hcLee 2016 03 28 beforeInsertingDataViewModel: function (dataModel, dbModelId) { var dfd = $.Deferred(); if (BWA.DataUtil.isValidInputValue(dataModel.ManualTypeId()) == false || BWA.DataUtil.isValidInputValue(dataModel.ManualNo()) == false || BWA.DataUtil.isValidInputValue(dataModel.Name()) == false || manualFileUpload.dropzone.files.length == 0)//2019-11-25 변경 dfd.resolve(false, '(*) 표시 항목은 필수 입력 사항 입니다!'); return dfd.resolve(true); }, beforeUpdateDataViewModel: function () { var dataModel = viewModel.dataModel; if (BWA.DataUtil.isValidInputValue(dataModel.ManualTypeId()) == false || BWA.DataUtil.isValidInputValue(dataModel.ManualNo()) == false || BWA.DataUtil.isValidInputValue(dataModel.Name()) == false) { utils.toast.show('(*) 표시 항목은 필수 입력 사항 입니다!', 'error'); return 0; } return 2; // 2016 01 19 BaseClass 에서 update한다. }, handleAfterSaveInPopup: function (responseKey) { var fileId = uploadedFileInfo.FileId; if (_.isUndefined(fileId)) return; var dataViewModel = viewModel.dataModel;//2019-11-25 변경 drawingHistory = new BWA.FmsManualHistoryViewModel(); drawingHistory.SiteId(responseKey.SiteId); drawingHistory.ManualId(responseKey.ManualId); drawingHistory.FileId(fileId); drawingHistory.RevisionNo(0); // 2016 03 28 hcLee 추가 drawingHistory.UpdatedDate(new Date()); drawingHistory.UpdatedUserId(BWA.UserInfo.UserId()); //2019-11-25 변경 if (viewModel.isNewInPopup() === false) {//추가, 변경 여부 if (_.isNull(dropZone) === false) { if (drawingHistory.FileId() != null) { //변경 - 그림삭제 var temp = { SiteId: BWA.UserInfo.SiteId(), FileId: drawingHistory.FileId() } BWA.db.CmFile.byKey(temp).done(function (data) { dropZone.removeFile(data); dropZone.processQueue(); }); } else { dropZone.processQueue();//변경 - 그림 삭제 필요없음 } } } else { if (_.isNull(dropZone) === false) { //추가 if (drawingHistory.FileId() == null) { dropZone.processQueue(); } } } BWA.db.FmsManualHistory.insert(drawingHistory.toJS()).done(function () { // utils.toast.show('데이터베이스 항목 등록 작업이 성공하였습니다.'); }); //console.log('handleAfterSaveInPopup'); //console.log(response); }, //2019-11-25 변경 handleBeforeDelete: function () { for (var i = 0; i < drawingHistories().length; i++) { var temp1 = { SiteId: BWA.UserInfo.SiteId(), FileId: drawingHistories()[i].FileId() } if (temp1.FileId != null) { BWA.db.CmFile.byKey(temp1).done(function (data) { if (_.isNull(dropZone)) { dropZone = BWA.DropZone.create({ id: '#manualFileUpload1', categoryId: $Code.FileCategory.MANUAL }); } dropZone.removeFile(data); }); } var store = new DevExpress.data.ODataStore({ url: endpointSelector + "/FmsManualHistory", key: ["SiteId", "ManualId", "HistoryId"], keyType: { SiteId: "Int32", ManualId: "Int32", HistoryId: "Int32" } }); var removeData = { SiteId: BWA.UserInfo.SiteId(), ManualId: drawingHistories()[i].ManualId(), HistoryId: drawingHistories()[i].HistoryId(), RevisionNo: drawingHistories()[i].RevisionNo(), FileId: drawingHistories()[i].FileId(), Description: drawingHistories()[i].Description(), UpdatedDate: drawingHistories()[i].UpdatedDate(), UpdatedUserId: drawingHistories()[i].UpdatedUserId }; store.remove(removeData).done(function (values, key) { utils.toast.show("삭제 되었습니다."); }) .fail(function (error) { utils.toast.show(error); }); if (i == drawingHistories().length) { dropZone = null; } } }, //handleInitializedInPopup: function() { handlePopupShown: function (isEditModeInPopup, isNewInPopup, dataViewModel) { if (isNewInPopup) { uploadedFileInfo.FileId = null; textAreaNoteHeightInPopup(170); dropZone = BWA.DropZone.create({ categoryId: $Code.FileCategory.MANUAL, id: '#manualFileUpload', uploadedFileInfo: uploadedFileInfo, maxFiles: 1, handleSuccess: function (fileInfo) { if (uploadedFileInfo.FileId) { historyViewModel.FileId(fileInfo.FileId); drawingHistoryDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('ManualId', drawingHistory.ManualId()) ]); drawingHistoryDataSource.load().done(function (histories) { drawingHistories(histories); if (drawingHistories()[0].HistoryId() != null) { return BWA.db.FmsManualHistory.update({ SiteId: drawingHistories()[0].SiteId(), HistoryId: drawingHistories()[0].HistoryId(), ManualId: drawingHistories()[0].ManualId() }, { FileId: fileInfo.FileId }) .done(function (res) { $('#gridContainer').dxDataGrid('instance').refresh(); }); } }); } }, handleRemovedFile: function () { historyViewModel.FileId(null); } }); } else { textAreaNoteHeightInPopup(340); reloadDrawingHistory(dataViewModel.ManualId()); } }, handleViewShowing: function (that) { $.when( //drawingGroupDataSource.load(), drawingTypeDataSource.load()) //.done(function(dbGroups, dbTypes) { .done(function (dbTypes) { //drawingGroups(dbGroups[0]); //drawingTypes(dbTypes[0]); drawingTypes(dbTypes); //drawingGroupsForSearch($SearchView.createDefaultArray('DrawingGroupId').concat(dbGroups[0])); drawingTypesForSearch($SearchView.createDefaultArray('ManualTypeId').concat(dbTypes)); deferredForSearch.resolve(); }); }, //2016 03 24 hcLee 추가 handleCancelInPopup: function () { //tabIndex(1); tabIndex(0); tabIndex(0); }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; // dataModel.DrawingGroupName = $KoSet(dataModel.DrawingGroupName, data['FmsDrawingCodeGroup/Name']); dataModel.ManualTypeName = $KoSet(dataModel.ManualTypeName, data['FmsManualType/Name']); popupVisible(true); }, handleViewShown: function () { } }); function reloadDrawingHistory(drawingId) { drawingHistoryDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), and, eq('ManualId', drawingId) ]); drawingHistoryDataSource.load().done(function (histories) { drawingHistories(histories); }); } drawingHistoryPopup = BWA.Popup.ManualHistory.create(viewModel, params, drawingHistories, reloadDrawingHistory); //viewModel.drawingGroups = drawingGroups; viewModel.drawingTypes = drawingTypes; //viewModel.drawingGroupsForSearch = drawingGroupsForSearch; viewModel.drawingTypesForSearch = drawingTypesForSearch; var tabIndex = ko.observable(0); viewModel.tabsOptions = { visible: tabsVisible, selectedIndex: tabIndex, dataSource: [ { text: '매뉴얼정보' }, { text: '매뉴얼이력' } ] }; tabIndex.subscribe(function (index) { // 왼쪽 수정은 무조건 매뉴얼 hcLee 2016 03 24추가 //if (viewModel.isEditModeInPopup()) return; if (viewModel.isEditModeInPopup() == false) { isVisibleHistoryInsertButton(index === 1); viewModel.visibleEditButton(index === 0); viewModel.visibleDeleteButton(index === 0); } if (index == 0) drawingHistoryPopup.hide(); //if (index == 0 && tabIndex() == 0) return; // hcLee 2016 03 24 if (viewModel.isEditModeInPopup()) { tabIndex(0); return; } }); viewModel.multiViewOptions = { dataSource: [ { template: 'drawing', viewModel: viewModel, dataModel: viewModel.dataModel, }, { template: 'drawingHistory', viewModel: viewModel, dataGridOptions: { dataSource: drawingHistories, columns: [ { dataField: 'RevisionNo', caption: $G('revisionNo'), width: '13%' }, { dataField: 'UpdatedDate', caption: $G('updatedDate'), width: '30%', dataType: 'date', format: 'yyyy-MM-dd HH:mm:ss' }, { dataField: 'CmUser/Name', caption: $G('modifier'), width: '22%' }, { dataField: 'CmFile/Name', caption: $G('fileName'), alignment: 'center', width: '45%', cellTemplate: function (cellElement, cellInfo) { var data = cellInfo.data; var url = [ BWA.db._url, '/CmFile(SiteId={0},FileId={1})/$value'.formati(data.SiteId(), data.FileId()) ].join(''); $('') .prop('href', url) .prop('download', cellInfo.value) .attr('style', 'color: {0} !important; text-decoration: underline;'.formati('purple')) //.style('color', '#333 !important') .attr('target', '_blank') .text(cellInfo.value) .appendTo(cellElement); } } ], paging: { pageSize: 10, enabled: true }, pager: { visible: true }, hoverStateEnabled: true, contentReadyAction: function (e) { drawingHistoryPopup.setDrawingHistoryGridViewInstance(e.component); }, selection: { mode: 'single' }, rowClick: function (clickRow) { if (drawingHistoryPopup.isNewData()) { utils.toast.show('매뉴얼이력추가 중 입니다.'); // hcLee 2016 03 28 return; } drawingHistoryPopup.setSelectedDrawingHistory(clickRow.data); //drawingHistoryPopup.hide(); drawingHistoryPopup.show(); }, height: 405 } } ], swipeEnabled: false, selectedIndex: tabIndex, height: '520px' }; viewModel.dataModel.ManualTypeName = $KoSet(viewModel.dataModel.ManualTypeName, ''); viewModel.isEditModeInPopup.subscribe(function (isEditMode) { tabIndex(0); // 왼쪽 수정은 무조건 매뉴얼 hcLee 2016 03 24추가 //isVisibleHistoryInsertButton(tabIndex() === 1 && isEditMode); }); viewModel.textAreaNoteHeightInPopup = textAreaNoteHeightInPopup; viewModel.drawingHistoryPopup = drawingHistoryPopup; return viewModel; };