$(function () { 'use strict'; BemsWebApplication.Popup.WorkResultCheckItemMaterial = { create: function (viewInfo, viewModel) { var ex = 0; var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; var deletestate = false; var overlayVisible = ko.observable(false), position = ko.observable(), timer = null; var materialGridView2 = ko.observable(); var materials2 = ko.observableArray(); var materialFactory2 = BWA.Factory.Material; var materialColumns2 = materialFactory2.getColumns([ { dataField: 'MaterialCode', width: '30%' }, { dataField: 'Name', width: '40%' }, { dataField: 'Standard', width: '40%' } ]); var materials2DataSource = BemsWebApplication.db.createDataSource('FmsWorkResultCheckItemMaterial', true, true, true); var fmsmaterialsDataSource = BemsWebApplication.db.createDataSource('FmsMaterial', true, true, true); //var modifiableMaterialDataGridOptions2 = null; overlayVisible.subscribe(function (value) { if (value) { if (timer !== null) { clearInterval(timer); } var top, left; //var element = $('#popupWorkContentsDetail').offsetParent(); var element = $('#currentWorkpopupDetail').offsetParent(); position({ my: 'left top', at: 'right top', of: element }); timer = setInterval(function () { var offset = element.offset(); if (top !== offset.top || left !== offset.left) { top = offset.top; left = offset.left; position({ my: 'left top', at: 'right top', of: element }); } }, 100); } else { if (timer !== null) { clearInterval(timer); timer = null; } } }); position.subscribe(function (value) { }); viewModel.popupVisible.subscribe(function (value) { if (value === false) { overlayVisible(false); materials2([]); } //workProgressDataSource.load().done(function (result) { // progresses(result); //}); }); viewModel.workResultContentsViewOptions = { width: '530px', height: '682px', dragEnabled: false, position: position, visible: overlayVisible, showingAction: function () { $("#gridContainer2").dxDataGrid({ paging: { pageSize: 14, enabled: true } }); }, closeOnOutsideClick: false, shading: false, animation: { show: { type: "slide", duration: 150, from: { left: '-=10', opacity: 0 }, to: { opacity: 1 } }, hide: { type: "slide", duration: 150, from: { left: '-=10', opacity: 1 }, to: { opacity: 0 } } } }; //var popup = e.component; viewModel.toolbarItemsInWorkResult = [ { location: 'before', text: '자재사용내역' }, //{ // location: 'after', widget: 'button', options: { // text: $G('materialInsertion'), icon: 'search', visible: viewModel.isApprovalMode(), // !viewModel.isWorkHistory(), // clickAction: function () { // viewModel.isAddPopup(false); // viewModel.materialSearchPopup.show(); // } // } //}, //{ // location: 'after', widget: 'button', options: { // text: $G('materialDeletion'), icon: 'remove', type: 'danger', visible: viewModel.isApprovalMode(),//!viewModel.isWorkHistory(), // clickAction: function () { handleDeleteSelectedMaterials(); } // } //}, //{ // location: 'after', widget: 'button', options: { // text: $G('save'), icon: 'save', visible: viewModel.isApprovalMode(), // clickAction: function () { // saveApprovalMaterials(); // } // } //} ]; viewModel.modifiableMaterialDataGridOptions2 = utils.datagrid.defaultOptions({ width: 500, pager: { showPageSizeSelector: false, allowedPageSizes: [] }, // visible: viewModel.isEditModeInPopup, dataSource: materials2, selection: { mode: 'none', allowSelectAll: true }, columns: materialColumns2.concat([{ dataField: 'MaterialCount', width: '20%', type: 'number', caption: $G('materialCount'), alignment: 'center', //19.08.21 자재사용내역 수량 변경 금지 //cellTemplate: utils.datagrid.getNumberBoxDataGridTemplateFunc({ // min: 1, // max: 1000000, // dataField: 'MaterialCount', // convertValueWhenValueChanged: function (value) { // return Math.max(1, value); // } //}) }]), cellClick: function (e) { utils.datagrid.cellClickEventForDataGridTemplate(e, 'MaterialCount'); }, contentReadyAction: function (e) { materialGridView2(e.component); }, }); function handleDeleteSelectedMaterials() { var rows = materialGridView2().getSelectedRowsData(); if (_.isEmpty(rows)) { utils.toast.show('선택된 자재가 없습니다.', 'error'); return; } _.each(rows, function (row) { var array = materials2(); var length = array.length; var id = row.MaterialId(); for (var i = 0 ; i < length ; i++) { if (id === array[i].MaterialId()) { materials2().splice(i, 1); break; } } }); materialGridView2().refresh(); } function saveApprovalMaterials() { var workCheckItem = new BemsWebApplication.FmsWorkResultCheckItemViewModel(); workCheckItem.SiteId(viewModel.dataModel.SiteId()); workCheckItem.WorkRequestId(viewModel.dataModel.WorkRequestId()); // Warning: 다른 로직이 필요할 수 있음 if (viewModel.dataModel.selectedItemCheckItemId() == 0) { var itemId = viewModel.workResultCheckItems()[viewModel.workResultCheckItems().length - 1].CheckItemId(); workCheckItem.CheckItemId(itemId); } else { workCheckItem.CheckItemId(viewModel.dataModel.selectedItemCheckItemId()); } workCheckItem.TextResult(viewModel.dataModel.selectedItemTextResult()) var array = materials2(); if (array.length != 0) { var postData; var parameters2 = { SiteId: workCheckItem.SiteId(), BusinessFieldId: viewModel.dataModel.BusinessFieldId(), WorkRequestId: workCheckItem.WorkRequestId(), CheckItemId: workCheckItem.CheckItemId() }; postData = _.map(array, function (m) { return { SiteId: workCheckItem.SiteId(), WorkRequestId: workCheckItem.WorkRequestId(), MaterialId: m.MaterialId(), MaterialCount: m.MaterialCount(), CheckItemId: workCheckItem.CheckItemId(), MaterialCode: m.MaterialCode(), Name: m.Name() }; }); BWA.api.post('FmsWorkResultCheckItemMaterial/Approval', postData, parameters2).done(function () { refreshMaterialGrid(); utils.toast.show($G('successDatabaseInsertionMsg')); }); } else { var postData; var parameters2 = { SiteId: workCheckItem.SiteId(), BusinessFieldId: viewModel.dataModel.BusinessFieldId(), WorkRequestId: workCheckItem.WorkRequestId(), CheckItemId: workCheckItem.CheckItemId() }; postData = _.map(array, function (m) { return null; }); BWA.api.post('FmsWorkResultCheckItemMaterial/Approval', postData, parameters2).done(function () { refreshMaterialGrid(); utils.toast.show($G('successDatabaseInsertionMsg')); }); } } var fmsMaterialsdata; function refreshMaterialGrid() { //viewModel.workResultCheckItemMaterialPopup.materials2([]); materials2([]); //viewModel.workResultCheckItemMaterialPopup.materials2DataSource.filter([ materials2DataSource.filter([ eq('SiteId', viewModel.dataModel.SiteId()), and, eq('WorkRequestId', viewModel.dataModel.WorkRequestId()) ]); fmsmaterialsDataSource.filter([ eq('SiteId', viewModel.dataModel.SiteId()) ]); fmsmaterialsDataSource.load().done(function (fmsMaterials) { fmsMaterialsdata = fmsMaterials; materials2DataSource.load().done(function (dbMaterials) { _.each(dbMaterials, function (sm) { var standard = ""; for (var i = 0; i < fmsMaterialsdata.length ; i++) { if (sm.MaterialId() == fmsMaterialsdata[i].MaterialId()) { standard = fmsMaterialsdata[i].Standard(); if (standard == null) standard = "" break; } } materials2.push({ SiteId: sm.SiteId, MaterialId: sm.MaterialId, Name: sm.Name, Standard: standard, MaterialCode: sm.MaterialCode, MaterialCount: sm.MaterialCount //FinalPrice: sm.FinalPrice, }); }); //viewModel.workResultCheckItemMaterialPopup.materialGridView2().refresh(); if (materialGridView2() != null) materialGridView2().refresh(); }); }); } return { refreshMaterialGrid: refreshMaterialGrid, visible: overlayVisible, materials2: materials2, materialGridView2: materialGridView2, //materials2DataSource : materials2DataSource, //modifiableMaterialDataGridOptions2: modifiableMaterialDataGridOptions2 }; } } });