| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581 | BemsWebApplication.FacilityOperationReport = function (params, viewInfo) {    "use strict";    var initialized = false,        shouldReload = false,        datagrid = null,        currentTabIndex = ko.observable(0),        facilityViewModel = new BWA.CmFacilityViewModel(),        dataSource;    var m_Facility;    var multiViewItems = [{        template: 'mainCharts'    }, {        template: 'subCharts'    }    ];    var searchDeferred = new $.Deferred();    var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass');    var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType');    var facilityTypes = ko.observableArray();    var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()];    var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId');    var facilityDataSource = BWA.db.createDataSource('CmFacility'),        facilitiesForSearch = ko.observableArray(),        facilityCodeForSearch = ko.observable(0);    //var deferredForSearch = new $.Deferred();        var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()],        searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()],    searchFacilityClassValuesLast = [ko.observable(), ko.observable(), ko.observable()];    var selectedFacilityDataInSearchParentPopup = ko.observable();    selectedFacilityDataInSearchParentPopup.subscribe(function (value) {        viewModel.dataModel.ParentFacilityCode(value.FacilityCode);        viewModel.dataModel.ParentFacilityName(value.Name);    });    var visiblePopup = ko.observable(false);    var dataCalorie = ko.observableArray(),        dataAtfw = ko.observableArray(),        dataTemperatureCalorie = ko.observableArray(),        dataTemperatureElectricity = ko.observableArray()    ;    var runtimeGet = new BWA.Chart.PointHistory_RunTimeGet(BWA.UserInfo.SiteId());    var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly, 'startThisYear');    var chartDay = BWA.Chart.Instance('chartDay', 'dxChart');    var chartMonth = BWA.Chart.Instance('chartMonth', 'dxChart');    var chartLayout = new BWA.ChartLayout({        divs: [{            id: 'day',            chartId: 'chartDay'        }, {            id: 'month',            chartId: 'chartMonth'        }        ],        multiViewOptions: {            viewIndex: currentTabIndex,            viewCount: 1        }    });    /*    var m = moment();    dataCalorie([        { DateTime: new Date(m.year(), m.month(), 1), Value: 50 },        { DateTime: new Date(m.year(), m.month(), 2), Value: 50 },        { DateTime: new Date(m.year(), m.month(), 3), Value: 60 },        { DateTime: new Date(m.year(), m.month(), 4), Value: 80 },        { DateTime: new Date(m.year(), m.month(), 5), Value: 100 },        { DateTime: new Date(m.year(), m.month(), 6), Value: 40, },        { DateTime: new Date(m.year(), m.month(), 7), Value: 120 },        { DateTime: new Date(m.year(), m.month(), 31), Value: 120 }    ]);*/    // 추가 2015 04 20 hcLee ->    var CODE = $Code,    FuelType = CODE.FuelType,    FT = CODE.FacilityType,    FC = CODE.FacilityCode,    F = CODE.Formula,    TIT = CODE.TimeIntervalType;    // 추가 2015 04 20 hcLee  <-    //dataMonthForBar(dataDayForBar());    //dataDayForPie([    //    { FuelTypeName: '전기', Value: 320 },    //    { FuelTypeName: '가스', Value: 350 },    //    { FuelTypeName: '수도', Value: 360 },    //]);    //dataMonthForPie(dataDayForPie());    function handleMonthBarPointClick(clickedPoint) {        var month = clickedPoint.originalArgument;        //alert(month.length);        var year = month.substr(0, 4);        var month = (month.length == 11) ? month.substr(8, 2) : month.substr(8, 1);        //alert(year);        //alert(month);        //return;        loadDailyEnergyUsage(year,month);        console.log(month);    }    function loadDailyEnergyUsage(year,month) {        if (m_Facility == null) return;        var f = m_Facility.toJS();        facilityViewModel.fromJS(f);        visiblePopup(true);        var startDate, endDate;        var monthMoment;        if (_.isUndefined(month)) {            monthMoment = moment(year);        }        else {            monthMoment = moment(year).month(month - 1);        }        startDate = monthMoment.startOf('month');        endDate = monthMoment.clone().endOf('month');        var promises = [];        var p = runtimeGet.apiGet({            //FacilityTypeId: f.FacilityTypeId,            FacilityCode: f.FacilityCode,            TimeIntervalType: TIT.DAY,            StartDate: startDate,            EndDate: endDate        });        promises.push(p);        promises.push(BemsWebApplication.api.get('BemsMonitoringPointHistory/FacilityCostRunTime', {            SiteId: BWA.UserInfo.SiteId(),            FacilityCode: f.FacilityCode,            TimeIntervalType: TIT.DAY,            StartDate: $G.dateTime(startDate), // 중요 2016 04 26            EndDate: $G.dateTime(endDate) // 중요 2016 04 26        }));        $.when.apply(this, promises).done(function (sw, cost) {            var barDataArray = [];            //var pieDataArray = [];            //getChartDataFromDataSources(arguments, barDataArray, pieDataArray, 'D');            _.each(sw[0][0], function (x) {                barDataArray.push({                    DateTime: moment(x.DateTime).format('D'),                    rt: x.Value                    });            });            _.each(cost[0], function (x) {                barDataArray.push({                    DateTime: moment(x.DateTime).format('D'),                    cost: Math.round(x.Value)                });            });            /*            var remainDate = _.range(moment().date(), moment().endOf('month').date() + 1);            _.each(remainDate, function (date) {                barDataArray.push({                    DateTime: date,                    rt : 0,                });            });*/            //console.log(barDataArray);            //2015 11 23 차트 다시 그리지 않는 문제             //chartDay().option('dataSource', barDataArray); 대신 아래3줄로 변경            var options = BWA.ChartOptions.FacilityRuntime.getChartDayOptions($Code.TimeType.DAY);            options.dataSource = barDataArray;            chartDay().option(options);                        $('#st1').text(year + '년 ' + month + '월 가동시간  ' + ' : ' + f.Name);            $('#st2').text('월별 가동시간  ' + ' : ' + f.Name);            /*$('#st1').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 사용 현황');            $('#st2').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 전체 사용량 비율');            $('#st3').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 사용량');            $('#st4').text(new Date().getFullYear() + '년 TOE환산 에너지 사용 현황');            $('#st5').text(new Date().getFullYear() + '년 TOE환산 에너지 전체 사용량 비율');            $('#st6').text(new Date().getFullYear() + '년 TOE환산 에너지 사용량');*/            visiblePopup(false);        }).fail(function (error) {            //alert(error);            visiblePopup(false);        });    }    function handleViewShown() {        if (initialized === false) {            var chartOption = BWA.ChartOptions.FacilityRuntime;            chartDay = chartDay(chartOption.getChartDayOptions($Code.TimeType.DAY));            //chartMonth = chartMonth(chartOption.getChartMonthOptions($Code.TimeType.MONTH));            chartMonth = chartMonth(chartOption.getChartMonthOptions($Code.TimeType.MONTH, handleMonthBarPointClick));            initialized = true;        }        facilityClassDataSource.filter([                ['SiteId', '=', BWA.UserInfo.SiteId()],                'and',                ['ParentFacilityClassId', '=', null]        ]);        facilityTypeDataSource.filter([            ['FacilityTypeId', '<', 99],            //'and',            //['ContractType', '>', 0]        ]);        // 빌딩 데이터 로드 시점         $.when(facilityClassDataSource.load(),            //buildingDataSource.load(),            facilityTypeDataSource.load()        //).done(function (result1, result2, result3) {        ).done(function (result1, result2) {            facilityClasses[0](result1[0]);            searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(result1[0]));            searchFacilityClassValues[0](0);            //searchFacilityClasses[0](defaultSearchClassArray.slice(0));            initializeSearchClasses();            //buildings(result2[0]);            //searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0]));            //searchFloors(defaultSearchFloorArray.slice(0));            facilityTypes(result2[0]);            searchDeferred.resolve();        });/*        var eq = BWA.DataUtil.constructEqualFilter;        facilityDataSource.filter([            eq('SiteId', BWA.UserInfo.SiteId()),        ]);        facilityDataSource.load().done(function (facilities) {            facilitiesForSearch(facilities);            if (_.isEmpty(facilities) === false) {                var f = facilities[0];                handleSelectedFacilityInSearchView(f);                handleSearchInSearchView();                var datagrid = $('#FacilityDataGridViewInSearchView').dxDataGrid('instance');                if (_.has(datagrid, 'selectRows')) {                    datagrid.selectRows(f);                }            }        });*/    }    if (shouldReload) {        //shouldReload = false;        //dataSource.pageIndex(0);        //dataSource.load();    }    function handleViewHidden() {        var paging = BWA.ChartLayout.Paging;        paging.sideOverlayVisible(false);        $SearchView.visibleObservable(false); // hcLee 2015 03 23        visiblePopup(false);    }    function handleViewShowing() {    }    function refreshList() {        //dataSource.pageIndex(0);        //dataSource.load();    }    function ReSetSearchList() {        if (searchFacilityClassValues[0]() == null || searchFacilityClassValues[1]() == null || searchFacilityClassValues[2]() == null) return;        if (searchFacilityClassValuesLast[0]() == searchFacilityClassValues[0]() &&            searchFacilityClassValuesLast[1]() == searchFacilityClassValues[1]() &&            searchFacilityClassValuesLast[2]() == searchFacilityClassValues[2]()) return;        searchFacilityClassValuesLast[0](searchFacilityClassValues[0]());        searchFacilityClassValuesLast[1](searchFacilityClassValues[1]());        searchFacilityClassValuesLast[2](searchFacilityClassValues[2]());        var filterA = [];        var eq = BWA.DataUtil.constructEqualFilter;                filterA.push(eq('SiteId', BWA.UserInfo.SiteId()));        filterA.push(['ContractType', '>', 0]);        if (searchFacilityClassValues[0]() != 0) {            filterA.push(eq('FirstClassId', searchFacilityClassValues[0]()));        }        if (searchFacilityClassValues[1]() != 0) {            filterA.push(eq('SecondClassId', searchFacilityClassValues[1]()));        }        if (searchFacilityClassValues[2]() != 0) {            filterA.push(eq('ThirdClassId', searchFacilityClassValues[2]()));        }        facilityDataSource.filter(filterA);        facilityDataSource.load().done(function (facilities) {            facilitiesForSearch(facilities);            if (_.isEmpty(facilities) === false) {                var f = facilities[0];                handleSelectedFacilityInSearchView(f);                handleSearchInSearchView();                var datagrid = $('#FacilityDataGridViewInSearchView').dxDataGrid('instance');                if (_.has(datagrid, 'selectRows')) {                    datagrid.selectRows(f);                }            }        });    }    var handleFirstClassChangedValueInSearchView = function (e) {        if (e.value === 0) {            initializeSearchClasses();            return;        }        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray);        searchFacilityClassValues[1](0);        ReSetSearchList();    };    var handleSecondClassChangedValueInSearchView = function (e) {        if (e.value === 0) {            initializeSearchClasses(true);            return;        }        BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray);        searchFacilityClassValues[2](0);        ReSetSearchList();    };    var handleThirdClassChangedValueInSearchView = function (e) {        /*if (e.value === 0) {            return;        }*/        ReSetSearchList();    };    function initializeSearchClasses(onlyThird) {        if (onlyThird === undefined || onlyThird === false) {            searchFacilityClasses[1](defaultSearchClassArray.slice(0));            searchFacilityClassValues[1](0);        }        searchFacilityClasses[2](defaultSearchClassArray.slice(0));        searchFacilityClassValues[2](0);        ReSetSearchList();    }    var searchViewOptions = {        searchViewItems: [            { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },            { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },            { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2], handleChangedValue: handleThirdClassChangedValueInSearchView },            { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch },        ],        promiseDataInSearchView: searchDeferred.promise()    };    function handleSelectedFacilityInSearchView(facility) {        m_Facility = facility;        return;    }    function handleSearchInSearchView(filter, searchViewItems) {        if (m_Facility == null) return;        //alert(m_Facility.Name());        var f = m_Facility.toJS();        facilityViewModel.fromJS(f);        //var timeIntervalType = $Code.TimeIntervalType.QUARTERMIN;        var timeIntervalType = timeBoxForSearch.type();        var formula = $Code.Formula[$Code.FacilityType.WATER_H];        var formulaIds = _.values(formula);        var date = timeBoxForSearch.getDate();        //utils.toast.displayTime=1000000;        //utils.toast.show('공조기 성능분석 중 입니다. 잠시만 기다려 주세요');        visiblePopup(true);        //        var startDate = moment().        var promises = [];        var p = runtimeGet.apiGet({                //FacilityTypeId: f.FacilityTypeId,                FacilityCode: f.FacilityCode,                TimeIntervalType: timeIntervalType,                StartDate: date.startDate,                EndDate: date.endDate        });        promises.push(p);        promises.push(BemsWebApplication.api.get('BemsMonitoringPointHistory/FacilityCostRunTime', {            SiteId:BWA.UserInfo.SiteId(),            FacilityCode: f.FacilityCode,            TimeIntervalType: timeIntervalType,            StartDate: $G.dateTime(date.startDate), // 중요 2016 04 26            EndDate: $G.dateTime(date.endDate) // 중요 2016 04 26        }));        //BemsWebApplication.api.get('AvailableDueDate/GetAvailableDueDate', commonParameters).done(function (values) {                    $.when.apply(this, promises).done(function (sw, cost) {            //var sw = sw[0];            //var cost = cost[0];            var MonthDataArray = [];            _.each(sw[0][0], function (x) {                MonthDataArray.push({                    DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),                    //DateTime: moment(x.DateTime).format('M'),                    rt: x.Value                });            });            _.each(cost[0], function (x) {                MonthDataArray.push({                    DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),                    //DateTime: moment(x.DateTime).format('M'),                    cost: Math.round(x.Value)                });            });            //var options = BWA.ChartOptions.FacilityRuntime.getChartMonthOptions(timeBoxForSearch.type(), handleMonthBarPointClick);            //options.dataSource = MonthDataArray;            //chartMonth().option(options);            //2015 11 23 차트 다시 그리지 않는 문제             //chartMonth().option('dataSource', MonthDataArray); 대신 아래3줄로 변경            var options = BWA.ChartOptions.FacilityRuntime.getChartMonthOptions($Code.TimeType.MONTH, handleMonthBarPointClick);            options.dataSource = MonthDataArray;            chartMonth().option(options);            loadDailyEnergyUsage(date.endDate.getFullYear().toString(), (date.endDate.getMonth() + 1).toString());            //loadDailyEnergyUsage("2015", "11");            //hw = hw[0];            // chart 1            /*            var EffiDataArray = [];            _.each(sw, function (x) {                EffiDataArray.push({                    DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),                    sw: x.Value                });            });            _.each(hw, function (x) {                EffiDataArray.push({                    DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()),                    hw: x.Value                });            });            var options = BWA.ChartOptions.WaterHAnalysis.getChartEffiOptions(timeBoxForSearch.type());            options.dataSource = EffiDataArray;            chartEffi().option(options);            */            //visiblePopup(false);        })        .fail(function (error) {            //alert(error);            visiblePopup(false);        });    }    var viewModel = $.extend(BWA.CommonView.create(            params, viewInfo, searchViewOptions, ko.observable(null),            //params, viewInfo, null, ko.observable(null),            handleViewShown, null, handleSearchInSearchView, undefined,            chartLayout), {                //        facility: facilityViewModel,                refreshList: refreshList,                viewHidden: handleViewHidden, // hcLee 2015 06 03                viewShowing: handleViewShowing,                /*                searchViewItems: [                    { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView },                    { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView },                    { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] },                    { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch },                ],                promiseDataInSearchView: searchDeferred.promise(),*/                scrolling: { mode: 'infinite' },                FacilityDataGridOptions: {                    dataSource: facilitiesForSearch,                    columns: [                        { dataField: 'Name', caption: $G('facilityName'), width: '100%', alignment: 'left' }                    ],                    filterRow: {                        visible: true,                        showOperationChooser: false                    },                    selection: {                        mode: 'single'                    },                    rowClick: function (clickRow) {                        handleSelectedFacilityInSearchView(clickRow.data);                    }                },                contentReadyAction: function (e) {                    datagrid = e.component;                }            });    /*    viewModel.popupOptions = {        width: 300,        height: 100,        contentTemplate: "info",        showTitle: false,        title: "메세지",        visible: visiblePopup,        dragEnabled: false,        shading: false,        closeOnOutsideClick: false    };    */    //viewModel.dataModel.MainContactorUserName = $KoSet(viewModel.dataModel.MainContactorUserName, '');    //viewModel.dataModel.SubContactorUserName = $KoSet(viewModel.dataModel.SubContactorUserName, '');    //viewModel.dataModel.ParentFacilityName = $KoSet(viewModel.dataModel.ParentFacilityName, '');    viewModel.facilityTypes = facilityTypes;    //viewModel.dataModel.ClassName = ko.observable();    viewModel.facilityClasses = facilityClasses;    viewModel.searchFacilityClasses = searchFacilityClasses;    viewModel.facilitySearchPopup = BWA.Popup.Facility.create(viewModel, selectedFacilityDataInSearchParentPopup);    viewModel.timeBoxForSearch = timeBoxForSearch;    viewModel.currentTabIndex = currentTabIndex;    viewModel.multiViewItems = [{        facility: facilityViewModel,        template: 'mainCharts'    }, {        template: 'subCharts'    }    ];    $HourGlassPopup(viewModel, visiblePopup);    return viewModel;};
 |