| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399 | 
							- $(function () {
 
-     "use strict";
 
-     BemsWebApplication.Factory.WorkResultContentsPopup = {
 
-         create: function (viewModel, params, isEdit) {
 
-             var workResultDataSource = BemsWebApplication.db.createDataSource('FmsWorkResult', true),
 
-                 workProgressDataSource = BemsWebApplication.db.createDataSource('FmsWorkCodeProgress', true),
 
-                 facilityCheckItemDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCheckItem', true),
 
-                 workResultCheckItemDataSource = BemsWebApplication.db.createDataSource('FmsWorkResultCheckItem', true),
 
-                 workResultDataViewModel = new BemsWebApplication.FmsWorkResultViewModel(),
 
-                 workOrderToFacilityDataViewModel = new BemsWebApplication.FmsWorkResultViewModel(),
 
-                 workOrderDataModel = viewModel.dataModel,
 
-                 overlayVisible = ko.observable(false),
 
-                 position = ko.observable(),
 
-                 isEditable = params.isEditableWorkContents || ko.observable(true),
 
-                 isConfirmFunction = params.isConfirmFunction || ko.observable(false),
 
-                 isShowCheckItemList = ko.observable(true),
 
-                 isNewData = ko.observable(false),
 
-                 selectedFacility = null,
 
-                 facilityDataGrid = null,
 
-                 timer = null,
 
-                 mainPopupElement = params.mainPopupElement,
 
-                 progresses = ko.observableArray([]),
 
-                 checkItems = ko.observableArray();
 
-             //dataSourceOptions: {
 
-             //    store: BemsWebApplication.odata.Facility,
 
-             //    select: [ 'SiteId' , 'FacilityCode' , 'ParentFacilityName', 'FirstClassName', 'SecondClassName', 'ThirdClassName', 'Name', 'Nickname',
 
-             //              'BuildingName', 'FloorName', 'ZoneName', 'ManufactureModel', 'MainContactorUserName', 'SubContactorUserName' ]
 
-             //},
 
-             workResultDataViewModel.WorkerUserName = ko.observable();
 
-             workResultDataViewModel.ProgressId = ko.observable();
 
-             workResultDataViewModel.ProgressName = ko.observable();
 
-             workResultDataViewModel.StartTime = ko.observable();
 
-             workResultDataViewModel.EndTime = ko.observable();
 
-             viewModel.isEditableWorkContents = isEditable;
 
-             viewModel.isShowCheckItemListInWorkContents = isShowCheckItemList;
 
-             function updateWorkOrderToFacility(dataModel, deferred) {
 
-                 var db = BemsWebApplication.db;
 
-                 var keys = db.extractKeysObject('FmsWorkOrderToFacility', dataModel);
 
-                 db.FmsWorkOrderToFacility.update(keys, dataModel.toJS()).done(function () {
 
-                     var promise = viewModel.refreshFaciliyList();
 
-                     promise.done(function (facilities) {
 
-                         var length = facilities.length;
 
-                         var wp = $Code.WorkProgress;
 
-                         var workStandbyCount = 0, workingCount = 0, workCompleteCount = 0, workConfirmCount = 0;
 
-                         $.each(facilities, function (i, f) {
 
-                             switch (f.ProgressId()) {
 
-                                 case wp.WorkStandby:
 
-                                     workStandbyCount++;
 
-                                     break;
 
-                                 case wp.Working:
 
-                                     workingCount++;
 
-                                     break;
 
-                                 case wp.WorkComplete:
 
-                                     workCompleteCount++;
 
-                                     break;
 
-                                 case wp.WorkConfirm:
 
-                                     workConfirmCount++;
 
-                                     break;
 
-                                 default:
 
-                                     throw new Error('Unknown ProgressId');
 
-                             }
 
-                         });
 
-                         var progressId = null;
 
-                         if (workStandbyCount === length) {
 
-                             progressId = wp.WorkStandby;
 
-                         }
 
-                         else if (workConfirmCount === length) {
 
-                             progressId = wp.WorkConfirm;
 
-                         }
 
-                         else if (workCompleteCount === length) {
 
-                             progressId = wp.WorkComplete;
 
-                         }
 
-                         else {
 
-                             progressId = wp.Working;
 
-                         }
 
-                         var wrdm = viewModel.workRequestDataModel;
 
-                         if (progressId !== null && progressId !== wrdm.ProgressId()) {
 
-                             wrdm.ProgressId(progressId);
 
-                             db.FmsWorkRequest.update(db.extractKeysObject('FmsWorkRequest', wrdm), wrdm.toJS()).done(function () {
 
-                                 viewModel.refreshList();
 
-                                 deferred.resolve();
 
-                             });
 
-                         }
 
-                         else {
 
-                             deferred.resolve();
 
-                         }
 
-                     });
 
-                 });
 
-             }
 
-             function handleButtonSave() {
 
-                 workResultDataViewModel.StartDate(BWA.DataUtil.getDateTimeFromDateAndTime(
 
-                     workResultDataViewModel.StartDate(),
 
-                     workResultDataViewModel.StartTime()));
 
-                 workResultDataViewModel.EndDate(BWA.DataUtil.getDateTimeFromDateAndTime(
 
-                     workResultDataViewModel.EndDate(),
 
-                     workResultDataViewModel.EndTime()));
 
-                 var workResultPromise = null;
 
-                 var db = BemsWebApplication.db;
 
-                 if (isNewData()) {
 
-                     workResultPromise = db.FmsWorkResult.insert(workResultDataViewModel.toJS());
 
-                 }
 
-                 else {
 
-                     var keys = db.extractKeysObject('FmsWorkResult', workResultDataViewModel);
 
-                     workResultPromise = db.FmsWorkResult.update(keys, workResultDataViewModel.toJS());
 
-                 }
 
-                 var deferred = new $.Deferred();
 
-                 workResultPromise.done(function (result) {
 
-                     if (selectedFacility === null) {
 
-                         throw new Error('selectedFacility is null!');
 
-                     }
 
-                     var model = new BemsWebApplication.FmsWorkOrderToFacility();
 
-                     model.SiteId(workOrderDataModel.SiteId());
 
-                     model.OrderId(workOrderDataModel.OrderId());
 
-                     model.FacilityCode(selectedFacility.FacilityCode());
 
-                     model.ProgressId(workResultDataViewModel.ProgressId());
 
-                     updateWorkOrderToFacility(model, deferred);
 
-                     var postData = [];
 
-                     var itemKeys = _.keys(new BWA.FmsWorkResultCheckItemViewModel());
 
-                     var toJS = BWA.DataUtil.convertViewModelToJS;
 
-                     $.each(checkItems(), function (i, item) {
 
-                         item = toJS(_.pick(item, itemKeys));
 
-                         item.OrderId = workOrderDataModel.OrderId();
 
-                         if (_.isBoolean(item.BoolResult) === false) {
 
-                             item.BoolResult = false;
 
-                         }
 
-                         postData.push(item);
 
-                     });
 
-                     var postPromise = BemsWebApplication.api.post(
 
-                         'FmsWorkResultCheckItem', postData, {
 
-                             SiteId: workResultDataViewModel.SiteId(),
 
-                             OrderId: workResultDataViewModel.OrderId(),
 
-                             FacilityCode: workResultDataViewModel.FacilityCode()
 
-                         }
 
-                     );
 
-                     $.when(postPromise, deferred.promise()).done(function () {
 
-                         utils.toast.show($G('successDatabaseProcessMsg'));
 
-                     });
 
-                 });
 
-             }
 
-             function handlePopupButtonConfirm() {
 
-                 var deferred = new $.Deferred();
 
-                 var keys = BemsWebApplication.db.extractKeysObject('FmsWorkResult', workResultDataViewModel);
 
-                 //var dataModel = new BemsWebApplication.FmsWorkResultViewModel();
 
-                 //workResultDataViewModel.fromJS( workResultDataSource.toJS() );
 
-                 workResultDataViewModel.ConfirmedUserId(BWA.UserInfo.UserId());
 
-                 workResultDataViewModel.ConfirmedDate(moment().toDate());
 
-                 var db = BemsWebApplication.db;
 
-                 db.FmsWorkResult.update(keys, workResultDataViewModel.toJS()).done(function () {
 
-                     if (selectedFacility === null) {
 
-                         throw new Error('selectedFacility is null!');
 
-                     }
 
-                     var model = new BemsWebApplication.FmsWorkOrderToFacility();
 
-                     model.SiteId(workOrderDataModel.SiteId());
 
-                     model.OrderId(workOrderDataModel.OrderId());
 
-                     model.FacilityCode(selectedFacility.FacilityCode());
 
-                     model.ProgressId($Code.WorkProgress.WorkConfirm);
 
-                     updateWorkOrderToFacility(model, deferred);
 
-                     deferred.promise().done(function () {
 
-                         utils.toast.show($G('successDatabaseProcessMsg'));
 
-                     });
 
-                 });
 
-             }
 
-             workProgressDataSource.filter(
 
-                 ['SiteId', '=', BWA.UserInfo.SiteId()],
 
-                 'and',
 
-                 ['ProgressId', '>=', $Code.WorkProgress.WorkStandby],
 
-                 'and',
 
-                 ['ProgressId', '<=', $Code.WorkProgress.WorkComplete]
 
-             );
 
-             overlayVisible.subscribe(function (value) {
 
-                 if (value) {
 
-                     if (timer !== null) {
 
-                         clearInterval(timer);
 
-                     }
 
-                     var top, left;
 
-                     var element = $('#popupWorkContentsDetail').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);
 
-                 }
 
-                 workProgressDataSource.load().done(function (result) {
 
-                     progresses(result);
 
-                 });
 
-             });
 
-             viewModel.progressesInWorkResult = progresses;
 
-             viewModel.workContentsDataModel = workResultDataViewModel;
 
-             viewModel.workContentsCheckItems = checkItems;
 
-             viewModel.workContentsResultTypes = $G.FacilityCheckItemResultType;
 
-             viewModel.workResultContentsViewOptions = {
 
-                 width: '720px',
 
-                 height: '616px',
 
-                 dragEnabled: false,
 
-                 position: position,
 
-                 visible: overlayVisible,
 
-                 showingAction: function () {
 
-                 },
 
-                 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 } }
 
-                     //show: { type: "slide", duration: 150, from: { left: screenWidth() - 260, width: '260px', opacity: 0.0 }, to: { left: screenWidth() - 260, width: '260px', opacity: 1 } },
 
-                     //hide: { type: "slide", duration: 100, from: { left: screenWidth() - 260, width: '260px', opacity: 1 }, to: { left: screenWidth() - 260, width: '260px', opacity: 0 } }
 
-                 }
 
-             };
 
-             //var popup = e.component;
 
-             viewModel.toolbarItemsInWorkResult = [
 
-                 { location: 'before', text: $G('workContents') },
 
-                 { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: isEditable, disabled: viewModel.hasnotModificationPermission, clickAction: handleButtonSave } },
 
-                 { location: 'after', widget: 'button', options: { text: $G('workResultConfirm'), icon: 'save', visible: isConfirmFunction, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonConfirm } },
 
-                 { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: function () { overlayVisible(false); } } }
 
-             ];
 
-             return {
 
-                 visible: overlayVisible,
 
-                 checkItems: checkItems,
 
-                 setFacilityGridViewInstance: function (instance) {
 
-                     facilityDataGrid = instance;
 
-                 },
 
-                 setSelectedFacility: function (facility) {
 
-                     selectedFacility = facility;
 
-                     isConfirmFunction(selectedFacility.ProgressId() === $Code.WorkProgress.WorkComplete);
 
-                     (function (workResultDataModel) {
 
-                         var eq = BWA.DataUtil.constructEqualFilter;
 
-                         workResultDataSource.filter(
 
-                             eq('SiteId', BWA.UserInfo.SiteId()),
 
-                             'and',
 
-                             eq('OrderId', workOrderDataModel.OrderId()),
 
-                             'and',
 
-                             eq('FacilityCode', selectedFacility.FacilityCode())
 
-                         );
 
-                         facilityCheckItemDataSource.filter([
 
-                             eq('SiteId', BWA.UserInfo.SiteId()),
 
-                             'and',
 
-                             eq('FacilityCode', selectedFacility.FacilityCode()),
 
-                             'and',
 
-                             eq('WorkTypeId', viewModel.workRequestDataModel.WorkTypeId())
 
-                         ]);
 
-                         workResultCheckItemDataSource.filter([
 
-                             eq('SiteId', BWA.UserInfo.SiteId()),
 
-                             'and',
 
-                             eq('FacilityCode', selectedFacility.FacilityCode()),
 
-                             'and',
 
-                             eq('OrderId', workOrderDataModel.OrderId())
 
-                         ]);
 
-                         $.when(workResultDataSource.load(),
 
-                                facilityCheckItemDataSource.load(),
 
-                                workResultCheckItemDataSource.load())
 
-                             .done(function (workResultArray, facilityCheckItems, workResultCheckItems) {
 
-                                 workResultArray = workResultArray[0];
 
-                                 facilityCheckItems = facilityCheckItems[0];
 
-                                 workResultCheckItems = workResultCheckItems[0];
 
-                                 if (workResultArray.length === 0) {
 
-                                     isNewData(true);
 
-                                     BWA.DataUtil.resetViewModel(workResultDataViewModel);
 
-                                     workResultDataViewModel.SiteId(workOrderDataModel.SiteId());
 
-                                     workResultDataViewModel.OrderId(workOrderDataModel.OrderId());
 
-                                     workResultDataViewModel.FacilityCode(selectedFacility.FacilityCode());
 
-                                     workResultDataViewModel.RequestId(workOrderDataModel.RequestId());
 
-                                     var currentDate = moment().toDate();
 
-                                     workResultDataModel.StartDate(currentDate);
 
-                                     workResultDataModel.StartTime(currentDate);
 
-                                     workResultDataModel.EndDate(currentDate);
 
-                                     workResultDataModel.EndTime(currentDate);
 
-                                 }
 
-                                 else {
 
-                                     var model = workResultArray[0];
 
-                                     isNewData(false);
 
-                                     BWA.DataUtil.copyViewModel(model, workResultDataModel);
 
-                                     workResultDataModel.StartTime(model.StartDate());
 
-                                     workResultDataModel.EndTime(model.EndDate());
 
-                                 }
 
-                                 checkItems(_.map(facilityCheckItems, function (item) {
 
-                                     var foundItem = BWA.DataUtil.koFindWhere(workResultCheckItems, { CheckItemId: item.CheckItemId() });
 
-                                     if (_.isEmpty(foundItem) === false) {
 
-                                         $.extend(item, foundItem);
 
-                                     }
 
-                                     return item;
 
-                                 }));
 
-                                 workResultDataModel.ProgressName(selectedFacility.FmsWorkCodeProgress_Name());
 
-                                 workResultDataModel.ProgressId(selectedFacility.ProgressId());
 
-                                 workResultDataModel.WorkerUserId(workOrderDataModel.WorkerUserId());
 
-                                 workResultDataModel.WorkerUserName(workOrderDataModel.WorkerUserName());
 
-                             });
 
-                     })(viewModel.workContentsDataModel);
 
-                 }
 
-             }
 
-         }
 
-     }
 
- });
 
- /* 한번에 해결하려 했으나 여러가지 상황이 발생해 나눠서 요청하고 합쳐서 처리하기로 결정
 
- var checkItemDataSource = BWA.DataUtil.createDataSource({
 
-     dataSourceOptions: {
 
-         store: BemsWebApplication.odata.FmsWorkResultCheckItem,
 
-         select: [
 
-             'SiteId', 'FacilityCode', 'CheckItemId', 'WorkTypeId', 'CycleUnitId', 'Name', 
 
-             'IsYesNoResult', 'CheckItemId', 'OrderId', 'BoolResult', 'TextResult'
 
-         ],
 
-         //store: BemsWebApplication.db.FmsFacilityCheckItem,
 
-         //select: [
 
-         //    'SiteId', 'FacilityCode', 'CheckItemId', 'WorkTypeId', 'CycleUnitId', 'Name', 
 
-         //    'IsYesNoResult', 'IsUse',
 
-         //    'FmsWorkResultCheckItem/CheckItemId',
 
-         //    'FmsWorkResultCheckItem/OrderId',
 
-         //    'FmsWorkResultCheckItem/BoolResult',
 
-         //    'FmsWorkResultCheckItem/TextResult'
 
-         //],
 
-         //expand: [ 'FmsWorkResultCheckItem' ],
 
-         //extendOptions: {
 
-         //    alterNames: {
 
-         //        'FmsWorkResultCheckItem/CheckItemId': 'ResultCheckItemId',
 
-         //        'FmsWorkResultCheckItem/OrderId': 'OrderId',
 
-         //        'FmsWorkResultCheckItem/BoolResult': 'BoolResult',
 
-         //        'FmsWorkResultCheckItem/TextResult': 'TextResult',
 
-         //    }
 
-         //}
 
-     }
 
- });
 
- */
 
 
  |