| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 | BemsWebApplication.Zone = function (params, viewInfo) {    "use strict";    var ZoneInfo = ko.observableArray();    var CmZoneDataSource = BemsWebApplication.db.createDataSource('CmZone');    var RowBuildingId;    var RowName, RowFloorId;    var buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),        floorDataSource = BemsWebApplication.db.createDataSource('CmFloor', true);    var buildings = ko.observableArray(),        floors = ko.observableArray();    var buildingsForSearch = ko.observableArray(),        floorsForSearch = ko.observableArray(),        buildingIdForSerach = ko.observable(),        floorIdForSerach = ko.observable(),        defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),        defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId');    var deferredForSearch = new $.Deferred();    function handleBuildingInSearchView(e) {        if (e.value === 0) {            floorsForSearch(getDefaultFloorForSearch());        }        else {            BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floorsForSearch, getDefaultFloorForSearch());        }        floorIdForSerach(0);    }    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'CmZone', {        rowAlternationEnabled: true,        /*                    editing: {                        editMode: 'batch',                        editEnabled: true,                        //removeEnabled: true,                        //insertEnabled: true                    },*/        dataSourceOptions: {            select: ['SiteId', 'FloorId', 'BuildingId', 'ZoneId', 'Name', 'CmBuilding/Name', 'CmFloor/Name', 'Target_temperature', 'Target_humidity'],            expand: ['CmBuilding', 'CmFloor'],            extendOptions: {                forceOriginalField: true,            }        },        columns: [            { dataField: 'ZoneId', caption: $G('number'), width: '15%', alignment: 'center', sortOrder: 'desc' },            /*            { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center', allowEditing: false },            { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center', allowEditing: false },            { dataField: 'Name', caption: $G('zoneName'), width: '40%', alignment: 'center', allowEditing: false }, */            { dataField: 'CmBuilding/Name', caption: $G('buildingName'), width: '22%', alignment: 'center' },            { dataField: 'CmFloor/Name', caption: $G('floorName'), width: '23%', alignment: 'center' },            { dataField: 'Name', caption: $G('zoneName'), width: '40%', alignment: 'center' },            //{ dataField: 'Target_temperature', caption: '목표온도', width: '40%', alignment: 'center' },            //{ dataField: 'Target_humidity', caption: '목표습도', width: '40%', alignment: 'center' }            //utils.datagrid.columnIsUse( '15%' )        ],				paging: {			pageSize: 18		},		pager: {},        // 2019.04.17 엑셀 출력 기능 추가 ~~~        "export": {            enabled: true,            fileName: '구역 정보 목록'        },        onExporting: function (e) {            e.component.columnOption("ZoneId", "visible", false);        },        onExported: function (e) {            e.component.columnOption("ZoneId", "visible", true);        },        // ~~~ 2019.04.17 엑셀 출력 기능 추가        popupWidth: 480,        promiseDataInSearchView: deferredForSearch.promise(),        searchViewItems: [            { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSerach, dataSource: buildingsForSearch, handleChangedValue: handleBuildingInSearchView },            { id: 'FloorId', ignoreValue: 0, defaultValue: 0, value: floorIdForSerach, dataSource: floorsForSearch },  //withCheckId: 'BuildingId',             { id: 'Name' }        ],        handleViewShowing: function () {                     buildingDataSource.load().done(function (buildingResults) {                buildings(buildingResults);                //buildingsForSearch( $SearchView.createArrayOfSelectBox( 'BuildingId', buildings() ) );                //floorsForSearch( getDefaultFloorForSearch() );                buildingsForSearch(defaultSearchBuildingArray.slice(0).concat(buildingResults));                floorsForSearch(defaultSearchFloorArray.slice(0));                buildingIdForSerach(0);                floorIdForSerach(0);                deferredForSearch.resolve();            });        },        handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) {            dataGrid.clearSelection();            // hcLee 2016 02 16 키필드가 콤보로 제공될때 등록시만 보이고 수정시에는 안보기에 하기 위하여 꼭 필요 !!!            viewModel.isNewInPopup(false);            //$("#textBuildingName").show();            var data = clickRow.data;            var dataModel = viewModel.dataModel;            dataModel.BuildingName = $KoSet(dataModel.BuildingName, data['CmBuilding/Name']);            dataModel.FloorName = $KoSet(dataModel.FloorName, data['CmFloor/Name']);            RowBuildingId = data.BuildingId;            RowFloorId = data.FloorId;            RowName = data.Name;            //alert(dataModel.BuildingName());             popupVisible(true);        },        handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) {            if (isNewInPopup() == false) {                BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', dataViewModel.BuildingId(), floors);            }        },        viewHidden: function () {            $SearchView.visibleObservable(false); // hcLee 2015 03 23            visiblePopup(false);        },        handleBeforeDelete: function (db) {            //alert('handleAfterDelete ' + db.SiteId + db.BuildingId + db.FloorId + db.ZoneId);            var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel']();            dataViewModel.SiteId = db.SiteId;            dataViewModel.BuildingId = db.BuildingId;            dataViewModel.FloorId = db.FloorId;            dataViewModel.ZoneId = db.ZoneId;            var promise = BemsWebApplication.api.post('BemsMonitoringPoint/RemoveZoneTempHumiSet', dataViewModel);            promise.done(function () {            });        },        // 이름 중복 방지        handlePopupShowing: function () {            CmZoneDataSource.filter([                ["SiteId", "=", BWA.UserInfo.SiteId()]            ]);            CmZoneDataSource.load().done(function (result) {                ZoneInfo(result);            });        },        beforeInsertingDataViewModel: function (dataModel, dbModelId) {            var dfd = $.Deferred();            var isDuplicated = false;            for (var i = 0; i < ZoneInfo().length; i++) {                if (dataModel.BuildingId() == ZoneInfo()[i].BuildingId() && dataModel.FloorId() == ZoneInfo()[i].FloorId() && dataModel.Name() == ZoneInfo()[i].Name()) {                    isDuplicated = true;                    break;                }            }            if (!BWA.DataUtil.isValidInputValue(dataModel.BuildingId())                || !BWA.DataUtil.isValidInputValue(dataModel.FloorId())                || !BWA.DataUtil.isValidInputValue(dataModel.Name()))                return dfd.resolve(false, '저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)');            else {                if (isDuplicated)                    return dfd.resolve(false, '이미 동일 정보가 존재합니다 (빌딩 명칭, 층 명칭, 구역 명칭 확인 필요)');                else                    return dfd.resolve(true);            }        },        beforeUpdateDataViewModel: function () {            var isDuplicated = false;            for (var i = 0; i < ZoneInfo().length; i++) {                if (viewModel.dataModel.Name() == ZoneInfo()[i].Name() && RowName() != ZoneInfo()[i].Name()                    && viewModel.dataModel.BuildingId() == ZoneInfo()[i].BuildingId() && viewModel.dataModel.FloorId() == ZoneInfo()[i].FloorId()) {                    isDuplicated = true;                    break;                }            }            if (!BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())                || !BWA.DataUtil.isValidInputValue(viewModel.dataModel.FloorId())                || !BWA.DataUtil.isValidInputValue(viewModel.dataModel.Name())) {                utils.toast.show('저장 혹은 수정 반드시 필수 입력 정보를 모두 입력하셔야 합니다 (앞뒤공백 허용안함)', 'error');                return 0;            }            else {                if (isDuplicated) {                    utils.toast.show('이미 동일 명칭이 존재합니다 (빌딩 명칭, 층 명칭, 구역 명칭 확인 필요)', 'error');                    return 0;                }                else                    return 2;            }        },        handleAfterInsert: function (db) {            //alert('handleAfterInsert' + db.SiteId + db.BuildingId + db.FloorId + db.ZoneId);            //var data = new CmZoneTempHumiSet();            var dataViewModel = new BemsWebApplication['CmZoneTempHumiSetViewModel']();            dataViewModel.SiteId = db.SiteId;            dataViewModel.BuildingId = db.BuildingId;            dataViewModel.FloorId = db.FloorId;            dataViewModel.ZoneId = db.ZoneId;            /*            dataViewModel.T1 = 0;            dataViewModel.T2 = 0;            dataViewModel.T3 = 0;            dataViewModel.T4 = 0;            dataViewModel.T5 = 0;            dataViewModel.T6 = 0;            dataViewModel.T7 = 0;            dataViewModel.T8 = 0;            dataViewModel.T9 = 0;            dataViewModel.T10 = 0;            dataViewModel.T11 = 0;            dataViewModel.T12 = 0;            dataViewModel.H1 = 0;            dataViewModel.H2 = 0;            dataViewModel.H3 = 0;            dataViewModel.H4 = 0;            dataViewModel.H5 = 0;            dataViewModel.H6 = 0;            dataViewModel.H7 = 0;            dataViewModel.H8 = 0;            dataViewModel.H9 = 0;            dataViewModel.H10 = 0;            dataViewModel.H11 = 0;            dataViewModel.H12 = 0;*/            //r promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumi', dataViewModel.toJS());            var promise = BemsWebApplication.api.post('BemsMonitoringPoint/AddZoneTempHumiSet', dataViewModel);            promise.done(function () {                ;            });        },    });    function getDefaultFloorForSearch() {        return $SearchView.createDefaultArray('FloorId');    }    floorDataSource.filter('BuildingId', -1);    //viewModel.dataModel.ClassName = ko.observable();    viewModel.dataModel.BuildingName = ko.observable();    viewModel.dataModel.FloorName = ko.observable();    viewModel.buildings = buildings;    //viewModel.buildingsForSearch = buildingsForSearch;    viewModel.floors = floors;    //viewModel.floorsForSearch = floorsForSearch;    viewModel.handleSelectBoxChangeBuilding = function (e) {        //BWA.DataUtil.setArrayDataSourceFilter( floorDataSource, 'BuildingId', e.value, floors );        if (viewModel.dataModel.BuildingId() != null) {            floorDataSource.filter([                ['SiteId', '=', BWA.UserInfo.SiteId()],                "and",                ['BuildingId', '=', viewModel.dataModel.BuildingId()]            ]);        }        floorDataSource.load().done(function (result) {            floors(result);        });        viewModel.dataModel.FloorId(null);    }    viewModel.searchViewPopup = BWA.Popup.SearchView.create({        parentPopupId: 'popupDetail',        parentPopupVisible: viewModel.popupVisible,        handleSearch: function (filter, searchItems) {        }    });    /*        viewModel.popupInsertButtonOptions.action = function () {            alert('insett');        }*/    return viewModel;};
 |