| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 | $(function () {    'use strict';    var FfacilityClassForSearch = ko.observableArray();    var FfacilityCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');    var FfacilityClass = ko.observableArray();    BWA.Popup.Facility = BWA.Popup.Facility || {};    BWA.Popup.Facility.create = window.$FacilitySearchPopup = function (viewModel, selectedFacilityData, options) {        options = options || {};        options.datagridId = options.datagridId || 'facilityDataGridForSearch';        var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass'),            buildingDataSource = BemsWebApplication.db.createDataSource('CmBuilding', true),            floorDataSource = BemsWebApplication.db.createDataSource('CmFloor'),            zoneDataSource = BemsWebApplication.db.createDataSource('CmZone'),            defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'),            defaultSearchBuildingArray = $SearchView.createDefaultArray('BuildingId'),            defaultSearchFloorArray = $SearchView.createDefaultArray('FloorId'),            deferredForSearch = new $.Deferred();        var onSelectedFacilities = options.onSelectedFacilities, isMultipleSelect = options.isMultipleSelect;        var facilityClassesForSearch = [ko.observableArray(), ko.observableArray(), ko.observableArray()],            facilityClassValuesForSearch = [ko.observable(), ko.observable(), ko.observable()],            buildingsForSearch = ko.observableArray(),            floorsForSearch = ko.observableArray(),            buildingIdForSearch = ko.observable(),            floorIdForSearch = ko.observable();        var dataViewModel = new BemsWebApplication.CmFacilityViewModel(),            initialized = false,            gridView,            popupVisible = ko.observable(false),            facilityOptions = BemsWebApplication.Factory.Facility,            dataSource = BWA.DataUtil.createDataSource({                dataSourceOptions: facilityOptions.getDataSourceForDataGrid()            }, 'CmFacility');        var dataGridOptions = utils.datagrid.defaultOptions({            dxDataSource: dataSource,            selectedSourceItem: dataViewModel,            datagridId: options.datagridId,            dbId: 'CmFacility',            handleDataGridRowClick: function () {            },            columns: facilityOptions.getColumns([                 /*  hcLee 2016 03 14                 { dataField: 'ClassName', width: '25%' },                 { dataField: 'Name', width: '30%' },                 { dataField: 'ManufactureModel', width: '15%' },                 { dataField: 'Location', width: '30%' } */                 {                     dataField: 'FirstClassId', width: '12%', caption: '시설(대)', alignment: 'center',                     customizeText: function (cellInfo) {                         for (var i = 1; i < FfacilityClassForSearch().length; i++) {                             if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                                 return FfacilityClassForSearch()[i].Name();                             }                         }                     }                 },             {                 dataField: 'SecondClassId', width: '12%', caption: '시설(중)', alignment: 'center',                 customizeText: function (cellInfo) {                     for (var i = 1; i < FfacilityClassForSearch().length; i++) {                         if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                             return FfacilityClassForSearch()[i].Name();                         }                     }                 }             },             {                 dataField: 'ThirdClassId', width: '12%', caption: '시설(소)', alignment: 'center',                 customizeText: function (cellInfo) {                     for (var i = 1; i < FfacilityClassForSearch().length; i++) {                         if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                             return FfacilityClassForSearch()[i].Name();                         }                     }                 }             },             { dataField: 'Name', width: '55%' },             { dataField: 'ManufactureModel', width: '15%', visible: false },             { dataField: 'CmFloor/Name', width: '9%' }            ]),            wordWrapEnabled: true,            cellPrepared: BemsWebApplication.Factory.Facility.cellPrepared,            //searchPanelPlaceHolder: '시설 검색',        });        if (isMultipleSelect) {            dataGridOptions.selection = { mode: 'multiple', allowSelectAll: true };            dataGridOptions.handleDataGridRowClick = function () { };        }        else {            dataGridOptions.handleDataGridRowClick = function (id, dataGrid, clickRow) {                var data = clickRow.data;                if (!_.isUndefined(selectedFacilityData)) {                    selectedFacilityData({                        SiteId: data.SiteId(),                        FacilityCode: data.FacilityCode(),                        Name: data.Name(),                        FirstClassId: data.FirstClassId(),                        SecondClassId: data.SecondClassId(),                        ThirdClassId: data.ThirdClassId(),                    });                }                if (!_.isUndefined(onSelectedFacilities)) {                    onSelectedFacilities([BWA.DataUtil.convertViewModelToJS(data)]);                }                popupVisible(false);            }        }        function initializeSearchClasses(onlyThird) {            if (onlyThird === undefined || onlyThird === false) {                facilityClassesForSearch[1](defaultSearchClassArray.slice(0));                facilityClassValuesForSearch[1](0);            }            facilityClassesForSearch[2](defaultSearchClassArray.slice(0));            facilityClassValuesForSearch[2](0);        }        var handleFirstClassChangedValueInSearchView = function (e) {            if (e.value === 0) {                initializeSearchClasses();                return;            }            BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClassesForSearch[1], defaultSearchClassArray);        };        var handleSecondClassChangedValueInSearchView = function (e) {            if (e.value === 0) {                initializeSearchClasses(true);                return;            }            BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, facilityClassesForSearch[2], defaultSearchClassArray);        };        var handleBuildingInSearchView = function (e) {            if (e.value === 0) {                floorsForSearch(defaultSearchFloorArray.slice(0));                floorIdForSearch(0);                return 0;            }            BWA.DataUtil.setArrayDataSourceFilter(floorDataSource, 'BuildingId', e.value, floorsForSearch, defaultSearchFloorArray);        }        function handlePopupShowing() {            FfacilityCodeClassDataSource.filter([                ['SiteId', '=', BWA.UserInfo.SiteId()]            ]);            $.when(                FfacilityCodeClassDataSource.load()            ).done(function (Result) {                FfacilityClass = ko.observableArray();                var cnt = 0;                for (var i = 0; i < Result.length; i++) {                    FfacilityClass.push(Result[i]);                }                FfacilityClassForSearch($SearchView.createArrayOfSelectBox('FacilityClassId', FfacilityClass()));            });            facilityClassDataSource.filter([                    ['SiteId', '=', BWA.UserInfo.SiteId()],                    'and',                    ['ParentFacilityClassId', '=', null]            ]);            $.when(facilityClassDataSource.load(), buildingDataSource.load()).done(function (result1, result2) {                // hcLee 2016 02 01                //facilityClassValuesForSearch[0](0);                //facilityClassValuesForSearch[1](0);                //facilityClassValuesForSearch[2](0);                // hcLee 2016 02 01                //if (initialized === false) {                facilityClassesForSearch[0]($SearchView.createArrayOfSelectBox('FacilityClassId', result1[0]));                initializeSearchClasses();                buildingsForSearch($SearchView.createArrayOfSelectBox('BuildingId', result2[0]));                floorsForSearch($SearchView.createArrayOfSelectBox('FloorId', undefined));                // }                deferredForSearch.resolve();            });        }        function handlePopupShown() {            if (initialized === false) {                gridView = $('#facilityDataGridForSearch').dxDataGrid('instance');                $("#facilityDataGridForSearch").dxDataGrid({                    paging: {                        pageSize: 14                    }                });                initialized = true;            }            searchView.show();            gridView.clearSelection();        }        function handlePopupButtonSelect() {            var array = utils.datagrid.getSelectedRowsData(options.datagridId);            if (!_.isUndefined(onSelectedFacilities)) {                onSelectedFacilities(array);            }            if (!_.isUndefined(selectedFacilityData)) {                selectedFacilityData(array);            }            popupVisible(false);        }        function handlePopupButtonClose() {            popupVisible(false);        }        var toolbarItems = [            { location: 'before', text: '찾기' },            { location: 'after', widget: 'button', options: { text: $G('select'), icon: 'save', visible: isMultipleSelect, clickAction: handlePopupButtonSelect } },            { location: 'after', widget: 'button', options: { text: $G('close'), icon: 'close', clickAction: handlePopupButtonClose } }        ];        var popupOptions = {            width: '950px',            height: '600px',            visible: popupVisible,            closeOnOutsideClick: true,            showingAction: handlePopupShowing,            shownAction: handlePopupShown,            animation: window.utils.popup.createAnimation(),            paging: { pageSize: 14 }        };        var searchView = BWA.Popup.SearchView.create({            parentPopupId: 'popupSearchFacility',            parentPopupVisible: popupVisible,            promiseDataForSearch: deferredForSearch,            searchItems: [                { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: facilityClassValuesForSearch[0], dataSource: facilityClassesForSearch[0], handleChangedValue: handleFirstClassChangedValueInSearchView },                { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: facilityClassValuesForSearch[1], dataSource: facilityClassesForSearch[1], handleChangedValue: handleSecondClassChangedValueInSearchView },                { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: facilityClassValuesForSearch[2], dataSource: facilityClassesForSearch[2] },                { id: 'BuildingId', ignoreValue: 0, defaultValue: 0, value: buildingIdForSearch, dataSource: buildingsForSearch, handleChangedValue: handleBuildingInSearchView },                { id: 'FloorId', ignoreValue: 0, defaultValue: 0, withCheckId: 'BuildingId', value: floorIdForSearch, dataSource: floorsForSearch },                { id: 'Name' }            ],            handleInitializeUpdate: function () {            },            handleSearch: function (filter, searchItems) {                var eq = BWA.DataUtil.constructEqualFilter;                var and = BWA.DataUtil.andFilter;                filter = [                    eq('SiteId', BWA.UserInfo.SiteId())                ].concat(filter)                gridView.filter(filter);                //                console.log(filter);            }        });        return {            dataModel: dataViewModel,            dataSource: dataSource,            popupOptions: popupOptions,            searchView: searchView,            toolbarItems: toolbarItems,            dataGridOptions: dataGridOptions,            show: function (callbackOnSelectedFacilities) {                if (_.isFunction(callbackOnSelectedFacilities)) {                    onSelectedFacilities = callbackOnSelectedFacilities;                }                popupVisible(true);            }        };    };    // 팝업에서 사용될 때, 선택된 시설 목록을 삭제하는 기능     BWA.Popup.Facility.getDeleteSelectedFacilitiesFunc = function (koGridView, koDataArray) {        return function handleDeleteSelectedFacilities() {            var rows = koGridView().getSelectedRowsData();            if (_.isEmpty(rows)) {                utils.toast.show('선택된 시설이 없습니다.', 'error');                return;            }            _.each(rows, function (row) {                var array = koDataArray();                var length = array.length;                var id = row.FacilityCode();                for (var i = 0 ; i < length ; i++) {                    if (id === array[i].FacilityCode()) {                        array.splice(i, 1);                        break;                    }                }            });            koGridView().refresh();        }    };    BWA.Popup.Facility.getReadOnlyDataGridOptions = function (dataSource, koVisible) {        FfacilityCodeClassDataSource.filter([                ['SiteId', '=', BWA.UserInfo.SiteId()]        ]);        $.when(            FfacilityCodeClassDataSource.load()        ).done(function (Result) {            FfacilityClass = ko.observableArray();            var cnt = 0;            for (var i = 0; i < Result.length; i++) {                FfacilityClass.push(Result[i]);            }            FfacilityClassForSearch($SearchView.createArrayOfSelectBox('FacilityClassId', FfacilityClass()));        });        var facilityColumns = BWA.Factory.Facility.getColumns([            {                dataField: 'FirstClassId', width: '15%', caption: '시설(대)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < FfacilityClassForSearch().length; i++) {                        if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                            return FfacilityClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'SecondClassId', width: '15%', caption: '시설(중)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < FfacilityClassForSearch().length; i++) {                        if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                            return FfacilityClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'ThirdClassId', width: '15%', caption: '시설(소)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < FfacilityClassForSearch().length; i++) {                        if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                            return FfacilityClassForSearch()[i].Name();                        }                    }                }            },            { dataField: 'FacilityCode', width: '30%', visible: false },            { dataField: 'Name', width: '55%' }        ]);        return utils.datagrid.defaultOptions({            width: 675,            visible: koVisible,            pager: {                showPageSizeSelector: false,                allowedPageSizes: [],                visible: true            },            dataSource: dataSource,            columns: facilityColumns        })    };    BWA.Popup.Facility.getModifiableDataGridOptions = function (dataSource, koVisible, koGridView) {        var facilityColumns = BWA.Factory.Facility.getColumns([            {                dataField: 'FirstClassId', width: '15%', caption: '시설(대)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < FfacilityClassForSearch().length; i++) {                        if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                            return FfacilityClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'SecondClassId', width: '15%', caption: '시설(중)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < FfacilityClassForSearch().length; i++) {                        if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                            return FfacilityClassForSearch()[i].Name();                        }                    }                }            },            {                dataField: 'ThirdClassId', width: '15%', caption: '시설(소)', alignment: 'center',                customizeText: function (cellInfo) {                    for (var i = 1; i < FfacilityClassForSearch().length; i++) {                        if (FfacilityClassForSearch()[i].FacilityClassId() == cellInfo.value) {                            return FfacilityClassForSearch()[i].Name();                        }                    }                }            },            { dataField: 'FacilityCode', width: '30%', visible: false },            { dataField: 'Name', width: '55%' }        ]);        return utils.datagrid.defaultOptions({            width: 675,            visible: koVisible,            pager: {                showPageSizeSelector: false,                allowedPageSizes: [],                visible: true             },            dataSource: dataSource,            selection: { mode: 'multiple', allowSelectAll: true },            columns: facilityColumns,            contentReadyAction: function (e) {                koGridView(e.component);            },        })    };});
 |