$(function () { 'use strict'; BWA.Popup = BWA.Popup || {}; BWA.Popup.VirtualFacility = { create: function (viewModel, selectedTreeItem) { var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'), CmfacilityTypeDataSource = BemsWebApplication.db.createDataSource('CmFacility'), facilityTypes = ko.observableArray(), FacilityTypeInfo = ko.observableArray(), isNew = ko.observable(false), popupVisible = ko.observable(), isEditMode = ko.observable(false), isViewMode = ko.observable(true), cancelButtonVisible = ko.observable(true), facilityDataModel = new BWA.CmFacilityViewModel(), popupOptions = { position: { offset: '-450 0' }, width: '520px', height: 'auto', //shading: false, shadingColor: 'rgba(0,0,0,0.0)', visible: popupVisible, closeOnOutsideClick: false, animation: utils.popup.createAnimation(), shownAction: function () { }, }, toolbarItems = [ { location: 'before', text: $G('detailInfo') }, { location: 'after', widget: 'button', options: { text: $G('edit'), icon: 'edit', visible: isViewMode, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonEdit } }, { location: 'after', widget: 'button', options: { text: $G('delete'), type: 'danger', icon: 'remove', visible: isViewMode, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonDelete } }, { location: 'after', widget: 'button', options: { text: $G('cancel'), icon: 'cancel', visible: cancelButtonVisible, clickAction: handlePopupButtonCancel } }, { location: 'after', widget: 'button', options: { text: $G('save'), icon: 'save', visible: isEditMode, disabled: viewModel.hasnotModificationPermission, clickAction: handlePopupButtonSave } }, { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } } ] ; facilityDataModel.FacilityTypeName = ko.observable(); isEditMode.subscribe(function (isEdit) { isViewMode(!isEdit); }); var facilityTempName = ko.observable(); var EditNameDev; function handlePopupButtonEdit() { isEditMode(true); cancelButtonVisible(true); facilityTempName(facilityDataModel.toJS().Name); } function handlePopupButtonCancel() { facilityDataModel.Name(facilityTempName()); isEditMode(false); cancelButtonVisible(false); } function handlePopupButtonClose() { facilityDataModel.Name(undefined); // 팝업에 기존 이름 보이기 방지 popupVisible(false); } function refreshList() { CmfacilityTypeDataSource.filter([ ["SiteId", "=", BWA.UserInfo.SiteId()] ]); CmfacilityTypeDataSource.load().done(function (result) { FacilityTypeInfo(result); }); if (selectedTreeItem()) $('#facilityTreeView').cwTreeView('reload', selectedTreeItem().parentData); } function getDoneFunc(messageId) { return function () { refreshList(); popupVisible(false); utils.toast.show($G(messageId)); }; } function handlePopupButtonDelete() { BWA.db.CmFacility.remove( BWA.DataUtil.pickKeys(facilityDataModel, 'CmFacility') ).done(getDoneFunc('successDatabaseDeleteMsg')); facilityDataModel.Name(undefined); // 팝업에 기존 이름 보이기 방지 } function handlePopupButtonSave() { var dfd = $.Deferred(); var isDuplicated = false; for (var i = 0; i < FacilityTypeInfo().length; i++) { if (facilityDataModel.toJS().Name == FacilityTypeInfo()[i].Name() && EditNameDev != FacilityTypeInfo()[i].Name()) { isDuplicated = true; break; } } if (!BWA.DataUtil.isValidInputValue(facilityDataModel.toJS().Name)) { utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error'); return 0; } else { if (isDuplicated) { utils.toast.show('이미 동일 명칭이 존재합니다.', 'error'); return 0; } else { if (isNew()) { facilityDataModel.SiteId(BWA.UserInfo.SiteId()); BWA.db.CmFacility.insert(facilityDataModel.toJS()).done(getDoneFunc('successDatabaseInsertionMsg')); } else { BWA.db.CmFacility.update( BWA.DataUtil.pickKeys(facilityDataModel, 'CmFacility'), facilityDataModel.toJS() ).done(getDoneFunc('successDatabaseUpdateMsg')); } } } facilityDataModel.Name(undefined); // 팝업에 기존 이름 보이기 방지 } function handleViewShown() { refreshList(); facilityDataModel.SiteId(BWA.UserInfo.SiteId()); facilityTypeDataSource.load().done(function (dbFacilityTypes) { facilityTypes(dbFacilityTypes); }); } return { facilityTypes: facilityTypes, dataModel: facilityDataModel, isNew: isNew, isEditMode: isEditMode, options: popupOptions, toolbarItems: toolbarItems, handleViewShown: handleViewShown, show: function (facilityJson, EditName) { if (_.isUndefined(facilityJson)) { // 등록 isNew(true); isEditMode(true); cancelButtonVisible(false); facilityDataModel.FacilityTypeId(99); facilityDataModel.IsVirtualFacility(true); } else { isNew(false); isEditMode(false); cancelButtonVisible(false); facilityDataModel.fromJS(facilityJson); facilityDataModel.FacilityTypeName(facilityJson['BemsFacilityType/Name']); } EditNameDev = EditName; popupVisible(true); } }; } } });