BemsWebApplication.RefrigeratorAnalysis = function(params, viewInfo) { "use strict"; var initialized = false, shouldReload = false, datagrid = null, check_A = ko.observable(false), check_R = ko.observable(false), //check_s = ko.observable(true), currentTabIndex = ko.observable(0), facilityViewModel = new BWA.CmFacilityViewModel(), dataSource; var m_Facility; var multiViewItems = [{ template: 'mainCharts' }, { template: 'subCharts', check_A: check_A, check_R: check_R, //check_s : check_s, } ]; //var buttonInstance = $('#check_input').dxChechkBox('instance'); var facilityDataSource = BWA.db.createDataSource('CmFacility'), facilitiesForSearch = ko.observableArray(), facilityCodeForSearch = ko.observable(0), deferredForSearch = new $.Deferred(); var dataArraycoolingApproaches = []; var dataSourceCop = ko.observableArray(), dataSourceLoadRate = ko.observableArray(), dataSourceElectricityLoadRate = ko.observableArray(), dataSourceTemperatureCop = ko.observableArray(), dataSourceCoolingApproach = ko.observableArray(); //todayValue = ko.observable(0) var visiblePopup = ko.observable(false); var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId()); //var timeBoxForSearch = BWA.SearchView.createDateTimeBox(); // cyim 2016.08.22 : 성능분석 그래프의 경우 시간 데이타만 표시되어야 한다 var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForHourOnly, null, false); var chartCop = BWA.Chart.Instance('chartCop', 'dxChart'), chartLoadRate = BWA.Chart.Instance('chartLoadRate', 'dxChart'), chartGasLoadRate = BWA.Chart.Instance('chartGasLoadRate', 'dxChart'), chartElectricityLoadRate = BWA.Chart.Instance('chartElectricityLoadRate', 'dxChart'), chartTemperatureCop = BWA.Chart.Instance('chartTemperatureCop', 'dxChart'), chart6 = BWA.Chart.Instance('chart6', 'dxChart'), chartReturnEfficiency = BWA.Chart.Instance('chartReturnEfficiency', 'dxChart'), chartATF = BWA.Chart.Instance('chartATF', 'dxChart'), chartCopLoadRate = BWA.Chart.Instance('chartCopLoadRate', 'dxChart'), chartEFFSW = BWA.Chart.Instance('chartEFFSW', 'dxChart'), chartCoolingApproach = BWA.Chart.Instance('chartCoolingApproach', 'dxChart') //chartCoolingApproach_ChangeSeries = BWA.Chart.Instance('chartCoolingApproach', 'dxChart') ; var m = moment(); dataSourceCop([ { 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 <- var chartLayout = new BWA.ChartLayout({ divs: [[{ //hcLee 2015 07 20 V14.1-V15.1 id: 'regrigeratorDetail' }, { id: 'cop', chartId: 'chartCop' }, { id: 'loadRate', chartId: 'chartLoadRate' }, { id: 'GasLoadRate', chartId: 'chartGasLoadRate' }, { id: 'electricityLoadRate', chartId: 'chartElectricityLoadRate' }, { id: 'temperatureCop', chartId: 'chartTemperatureCop' }], [{ id: 'b6', chartId: 'chart6' }, { id: 'returnEfficiency', chartId: 'chartReturnEfficiency' }, { id: 'ATF', chartId: 'chartATF' }, { id: 'CopLoadRate', chartId: 'chartCopLoadRate' }, { id: 'EFFSW', chartId: 'chartEFFSW' }, { id: 'coolingApproach', chartId: 'chartCoolingApproach' }] ], multiViewOptions: { viewIndex: currentTabIndex, viewCount: 2, PageChanged: function () { // //hcLee 2015 07 20 V14.1-V15.1 //alert(currentTabIndex()); handleSearchInSearchView(); }, } }); //dataMonthForBar(dataDayForBar()); //dataDayForPie([ // { FuelTypeName: '전기', Value: 320 }, // { FuelTypeName: '가스', Value: 350 }, // { FuelTypeName: '수도', Value: 360 }, //]); //dataMonthForPie(dataDayForPie()); function handleViewShown() { if (initialized === false) { var chartOption = BWA.ChartOptions.RefrigeratorAnalysis; // chart 설정, 최초 한번 chartCop = chartCop(chartOption.getCopChartOptions($Code.TimeType.HOUR)); chartLoadRate = chartLoadRate(chartOption.getLoadRateChartOptions($Code.TimeType.HOUR)); //chartGasLoadRate = chartGasLoadRate(chartOption.getGasLoadRateChartOptions($Code.TimeType.HOUR)); chartGasLoadRate = chartGasLoadRate(chartOption.getChart_3_Options($Code.TimeType.HOUR)); chartElectricityLoadRate = chartElectricityLoadRate(chartOption.getElectricityLoadRateChartOptions($Code.TimeType.HOUR)); chartTemperatureCop = chartTemperatureCop(chartOption.getTemperatureCopChartOptions($Code.TimeType.HOUR)); chart6 = chart6(chartOption.getChart_678_Options($Code.TimeType.HOUR)); chartReturnEfficiency = chartReturnEfficiency(chartOption.getChart_678_Options($Code.TimeType.HOUR)); chartATF = chartATF(chartOption.getChart_678_Options($Code.TimeType.HOUR)); chartCopLoadRate = chartCopLoadRate(chartOption.getCopLoadRateChartOptions($Code.TimeType.HOUR)); chartEFFSW = chartEFFSW(chartOption.getEFFSWChartOptions($Code.TimeType.HOUR)); chartCoolingApproach = chartCoolingApproach(chartOption.getCoolingApproachChartOptions($Code.TimeType.HOUR)); initialized = true; } //hcLee 2016 07 12 timeBoxForSearch.setDefaultDate(); //timeBoxForSearch.hour(); var eq = BWA.DataUtil.constructEqualFilter; facilityDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), 'and', eq('FacilityTypeId', $Code.FacilityType.REFRIGERATOR) // 냉동기($Code.FacilityType.REFRIGERATOR) ]); facilityDataSource.load().done(function (facilities) { facilitiesForSearch(facilities); if (_.isEmpty(facilities) === false) { var f = facilities[0]; // 첫번째 설비 그려주기 위해 handleSelectedFacilityInSearchView(f); handleSearchInSearchView(); var datagrid = $('#refrigeratorDataGridViewInSearchView').dxDataGrid('instance'); if (_.has(datagrid, 'selectRows')) { datagrid.selectRows(f); } } }); } $('#temperatureCop').css('visibility', 'hidden'); $('#coolingApproach').css('margin-left', '10.5%'); if (shouldReload) { //shouldReload = false; //dataSource.pageIndex(0); //dataSource.load(); } function handleViewHidden() { //hideOverlay(); // var dataGrid = $('#gridContainer').dxDataGrid('instance'); // dataGrid.clearSelection(); //chartLayout.multiViewOptions.viewCount = 1; //var view = $('#RefrigeratorAnalysisView'); //view. //$('#RefrigeratorAnalysisView').sideOverlayVisible(false); //$('#RefrigeratorAnalysisView').paging.hideNextButton(true); //$('#RefrigeratorAnalysisView').paging.hideNextButton(true); var paging = BWA.ChartLayout.Paging; paging.sideOverlayVisible(false); //paging.hideNextButton(true); //paging.hidePrevButton(true); $SearchView.visibleObservable(false); // hcLee 2015 03 23 visiblePopup(false); } function handleViewShowing() { } function refreshList() { //dataSource.pageIndex(0); //dataSource.load(); } var searchViewOptions = { searchViewItems: [ { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch }, ], promiseDataInSearchView: deferredForSearch.promise() }; function handleSelectedFacilityInSearchView(facility) { m_Facility = facility; return; } function setChartElectricityByLoadRate(loadRateDataArray, electricityDataArray) { var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( loadRateDataArray, electricityDataArray, 'LoadRate', 'EV'); //chartElectricityLoadRate().option('dataSource', dataArray); var options = BWA.ChartOptions.RefrigeratorAnalysis.getElectricityLoadRateChartOptions(timeBoxForSearch.type()); //chartElectricityLoadRate().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = dataArray; chartElectricityLoadRate().option(options); } function setChartGasByLoadRate(loadRateDataArray, gasDataArray) { var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( loadRateDataArray, gasDataArray, 'LoadRate', 'm'); //chartGasLoadRate().option('dataSource', dataArray); // 아래 4줄로 변경 var options = BWA.ChartOptions.RefrigeratorAnalysis.getGasLoadRateChartOptions(timeBoxForSearch.type()); //chartGasLoadRate().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = dataArray; chartGasLoadRate().option(options); } // 냉열원 생산열량 function setChart_3(DataArray1, DataArray2, maxValueatf) { var dataArray = []; _.each(DataArray1, function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), kcal : x.Value }); }); _.each(DataArray2, function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), temp : x.Value }); }); var options = BWA.ChartOptions.RefrigeratorAnalysis.getChart_3_Options(timeBoxForSearch.type()); if (maxValueatf != undefined) // 한축에 온도가 있는 경우 options.valueAxis[0].tickInterval = Math.round(maxValueatf / 5) + 1; options.dataSource = dataArray; chartGasLoadRate().option(options); } function setChartCopByTemperature(temperatureDataArray, copDataArray, loadDataArray) { var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( temperatureDataArray, copDataArray, 'Temperature', 'Cop'); var dataArray2 = BWA.Chart.getRelationDataArrayOnDateTime( temperatureDataArray, loadDataArray, 'Temperature', 'load'); _.each(dataArray2, function (x) { dataArray.push(x); }); //console.log(dataArray); //chartTemperatureCop().option('dataSource', dataArray); var options = BWA.ChartOptions.RefrigeratorAnalysis.getTemperatureCopChartOptions(timeBoxForSearch.type()); //chartTemperatureCop().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = dataArray; chartTemperatureCop().option(options); } function setChart_678(DataArray1, DataArray2, chart678) { var dataArray = []; _.each(DataArray1, function (x) { dataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), kw : x.Value }); }); _.each(DataArray2, function (x) { dataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), hz: x.Value }); }); var options = BWA.ChartOptions.RefrigeratorAnalysis.getChart_678_Options(timeBoxForSearch.type()); options.dataSource = dataArray; chart678().option(options); } function setChartCopLoadRates(copDataArray, loadRateDataArray) { var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( copDataArray, loadRateDataArray, 'cop', 'LoadRate'); //chartCopLoadRate().option('dataSource', dataArray); var options = BWA.ChartOptions.RefrigeratorAnalysis.getCopLoadRateChartOptions(timeBoxForSearch.type()); //chartCopLoadRate().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = dataArray; chartCopLoadRate().option(options); } function setChartReturnEfficiency(pkwDataArray, CoolAbtyDataArray) { var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( pkwDataArray, CoolAbtyDataArray, 'pkwh', 'CoolAbty'); //chartReturnEfficiency().option('dataSource', dataArray); var options = BWA.ChartOptions.RefrigeratorAnalysis.getReturnEfficiencyChartOptions(timeBoxForSearch.type()); //chartReturnEfficiency().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = dataArray; chartReturnEfficiency().option(options); } function setChartATF(tempDataArray, atfDataArray, maxValueatf) { //var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( // tempDataArray, atfDataArray, 'temp', 'atf'); var dataArray = []; _.each(tempDataArray, function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), temp: x.Value }); }); _.each(atfDataArray, function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), atf: x.Value }); }); //chartATF().option('dataSource', dataArray); var options = BWA.ChartOptions.RefrigeratorAnalysis.getATFChartOptions(timeBoxForSearch.type()); //chartATF().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.valueAxis[0].tickInterval = Math.round(maxValueatf / 5)+1; options.dataSource = dataArray; chartATF().option(options); } function setChartEFFSW(effDataArray, swDataArray) { //var dataArray = BWA.Chart.getRelationDataArrayOnDateTime( // tempDataArray, atfDataArray, 'temp', 'atf'); var dataArray = []; /* _.each(effDataArray, function (x) { dataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), eff: x.Value }); }); */ _.each(swDataArray, function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), sw: x.Value }); }); //chartEFFSW().option('dataSource', dataArray); var options = BWA.ChartOptions.RefrigeratorAnalysis.getEFFSWChartOptions(timeBoxForSearch.type()); //chartEFFSW().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = dataArray; chartEFFSW().option(options); } function handleSearchInSearchView(filter, searchViewItems) { //console.log(filter); //console.log(searchViewItems); if (m_Facility == null) return; visiblePopup(true); var f = m_Facility.toJS(); facilityViewModel.fromJS(f); // 선택한 설비 //var timeIntervalType = $Code.TimeIntervalType.QUARTERMIN; var timeIntervalType = timeBoxForSearch.type(); // $Code.FacilityType.REFRIGERATOR -> 이 화면은 냉동기 -> REFRIGERATOR: 2, 냉동기 (DB FacilityType 테이블 내용과 같아야 한다.) var formula = $Code.Formula[$Code.FacilityType.REFRIGERATOR]; // 1~ 6까지 var formulaIds = _.values(formula); var date = timeBoxForSearch.getDate(); /* timeBoxForSearch.type($Code.TimeIntervalType.DAY); timeIntervalType = $Code.TimeIntervalType.DAY; date.startDate = new Date(2015, 0, 1); date.endDate = new Date(2015, 11, 31); */ // var startDate = moment(). var promises = []; _.each(formulaIds, function (formulaId) { var p = formulaGet.apiGet({ FacilityTypeId: f.FacilityTypeId, FacilityCode: f.FacilityCode, // 선택한 설비별 포뮬러를 가져온다 FormulaId: formulaId, TimeIntervalType: timeIntervalType, StartDate: date.startDate, EndDate: date.endDate }); promises.push(p); }); // 외기 온도와 습도를 위해 추가 hcLee 2015 04 20 -> var commonParameters = { TimeIntervalType: timeBoxForSearch.type(), StartDate: date.startDate, EndDate: date.endDate }; var temperatureParameters = { FacilityTypeId: FT.OUTDOOR, FacilityCode: FC.OUTDOOR, FormulaId: F[FT.OUTDOOR].TEMPERATURE, }; var humidityParameters = _.extend({}, temperatureParameters, { FormulaId: F[FT.OUTDOOR].HUMIDITY, }); promises.push(formulaGet.apiGet(_.extend(temperatureParameters, commonParameters))); promises.push(formulaGet.apiGet(_.extend(humidityParameters, commonParameters))); // 외기 온도와 습도를 위해 추가 hcLee 2015 04 20 <- $.when.apply(this, promises) .done(function (cops, loadRates, coolingApproaches, ratedCapacities, electricities, temperatures, gas, pkwh, CoolAbty, atf, eff, sw, c_out_temp, h_temp, R15, R16, R17, R18, R19, R20, R21, R22, // 2016 06 30 추가 쿨링레인지 OUTtemperatures, humidities) { // done의 리턴 파라메터는 정해져 있다 2015 04 20, 끝에 2개 (OUTtemperatures, humidities)추가 R15 = R15[0]; R16 = R16[0]; R17 = R17[0]; R18 = R18[0]; R19 = R19[0]; R20 = R20[0]; R21 = R21[0]; R22 = R22[0]; // 2016 06 30 추가 쿨링레인지 cops = cops[0]; loadRates = loadRates[0]; var maxValuecops = 0; var maxValueloadRates = 0; _.each(cops, function (x) { if (maxValuecops < x.Value) maxValuecops = x.Value; }); _.each(loadRates, function (x) { if (maxValueloadRates < x.Value) maxValueloadRates = x.Value; }); coolingApproaches = coolingApproaches[0]; /* var maxValuecoolingApproaches = 0; _.each(coolingApproaches, function (x) { if (maxValuecoolingApproaches < x.Value) maxValuecoolingApproaches= x.Value; // 2015 07 02 쿨링어프로치의 온도들은 외기온도가 아니기 떄문에 min max가 없는 걸로 일단 처리 한다. });*/ dataArraycoolingApproaches = coolingApproaches; ratedCapacities = ratedCapacities[0]; // 추가 hcLee 2015 04 20 electricities = electricities[0]; // 전력량 temperatures = temperatures[0]; // 냉각수 입구 온도 gas = gas[0]; pkwh = pkwh[0]; CoolAbty = CoolAbty[0]; //OUTtemperatures = OUTtemperatures[0]; atf = atf[0]; var maxValueatf = 0; _.each(atf, function (x) { if (maxValueatf < x.Value) maxValueatf = x.Value; }); eff = eff[0]; sw = sw[0]; c_out_temp = c_out_temp[0]; h_temp = h_temp[0]; /* var dataArray = []; _.each(OUTtemperatures[0], function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), Temperature: x.Value }); }); _.each(humidities[0], function (x) { dataArray.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), Humidity: x.Value }); }); */ var copDataArray = BWA.Chart.mapNewWithConvertingDateTime(cops, timeBoxForSearch.type()); var loadRateDataArray = BWA.Chart.mapNewWithConvertingDateTime(loadRates, timeBoxForSearch.type()); //_.each(OUTtemperatures[0], function (x) { // copDataArray.push({ // //DateTime: moment(x.DateTime).toDate(), // DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), // Temperature: x.Value // }); // loadRateDataArray.push({ // //DateTime: moment(x.DateTime).toDate(), // DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), // Temperature: x.Value // }); //}); //_.each(humidities[0], function (x) { // copDataArray.push({ // //DateTime: moment(x.DateTime).toDate(), // DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), // Humidity: x.Value // }); // loadRateDataArray.push({ // //DateTime: moment(x.DateTime).toDate(), // DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), // Humidity: x.Value // }); //}); //hcLee 2015 07 20 V14.1-V15.1 if (currentTabIndex() == 0) { //BWA.Chart.mapWithConvertingDateTime(coolingApproaches, timeBoxForSearch.type()); // 1차트 냉동기 COP // chartCop().option('dataSource', copDataArray); 2015 06 25 아래 4줄로 변경 var options = BWA.ChartOptions.RefrigeratorAnalysis.getCopChartOptions(timeBoxForSearch.type()); //chartCop().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) //options.valueAxis[0].tickInterval = Math.round(maxValuecops / 5) + 1; options.dataSource = copDataArray; chartCop().option(options); // 2차트 부하율 //chartLoadRate().option('dataSource', loadRateDataArray); options = BWA.ChartOptions.RefrigeratorAnalysis.getLoadRateChartOptions(timeBoxForSearch.type()); //options.valueAxis[0].tickInterval = Math.round(maxValueloadRates / 5) + 1; //chartLoadRate().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) options.dataSource = loadRateDataArray; chartLoadRate().option(options); // 3차트 추가 가스량vs부하 //setChartGasByLoadRate(loadRates, gas); setChart_3(R15, electricities, maxValueatf); //$('#electricityLoadRate').css('visibility', 'hidden'); // //$('#electricityLoadRate').css('width', '0%'); // 4차트 냉동기 소비전력과 부하율 관계 -> 차트4 setChartElectricityByLoadRate(loadRates, electricities); // 5차트 냉각수 입구 온도와 COP, 부하율 관계 setChartCopByTemperature(temperatures, cops, loadRates); } //hcLee 2015 07 20 V14.1-V15.1 else if (currentTabIndex() == 1) { //if (chartCopLoadRate().option == 'undefined') //if (chartCopLoadRate() != object) //BWA.Chart.mapWithConvertingDateTime(coolingApproaches, timeBoxForSearch.type()); { //hcLee 2015 07 20 V14.1-V15.1 var chartOption = BWA.ChartOptions.RefrigeratorAnalysis; chart6 = BWA.Chart.Instance('chart6', 'dxChart'), chartReturnEfficiency = BWA.Chart.Instance('chartReturnEfficiency', 'dxChart'), chartATF = BWA.Chart.Instance('chartATF', 'dxChart'), chartCopLoadRate = BWA.Chart.Instance('chartCopLoadRate', 'dxChart'), chartEFFSW = BWA.Chart.Instance('chartEFFSW', 'dxChart'), chartCoolingApproach = BWA.Chart.Instance('chartCoolingApproach', 'dxChart') chart6 = chart6(chartOption.getChart_678_Options($Code.TimeType.HOUR)); chartReturnEfficiency = chartReturnEfficiency(chartOption.getChart_678_Options($Code.TimeType.HOUR)); chartATF = chartATF(chartOption.getChart_678_Options($Code.TimeType.HOUR)); chartCopLoadRate = chartCopLoadRate(chartOption.getCopLoadRateChartOptions($Code.TimeType.HOUR)); chartEFFSW = chartEFFSW(chartOption.getEFFSWChartOptions($Code.TimeType.HOUR)); chartCoolingApproach = chartCoolingApproach(chartOption.getCoolingApproachChartOptions($Code.TimeType.HOUR)); } // 6차트 COP와 부하율 분석 (다음페이지 첫 차트) setChart_678(R16, R19, chart6); // 7차트 수반송 효율 //setChartReturnEfficiency(pkwh, CoolAbty); setChart_678(R17, R20, chartReturnEfficiency); // 8차트 ATF //setChartATF(temperatures, atf); //setChartATF(OUTtemperatures[0], atf, maxValueatf); setChart_678(R18, R21, chartATF); // setChartCopLoadRates(cops, loadRates); // 9차트 EFFSW setChartEFFSW(eff, sw); // 마지막차트 냉동기 시간대별 쿨링어프로치 var OUTtemperatures = OUTtemperatures[0]; BWA.Chart.mapWithConvertingDateTime(OUTtemperatures, timeBoxForSearch.type()); _.each(temperatures, function (x) { OUTtemperatures.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), c_in_temp: x.Value }); }); _.each(c_out_temp, function (x) { OUTtemperatures.push({ //DateTime: moment(x.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), c_out_temp: x.Value }); }); _.each(h_temp, function (y) { OUTtemperatures.push({ //DateTime: moment(y.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(y.DateTime).toDate()), h_temp: y.Value }); }); _.each(coolingApproaches, function (ca) { OUTtemperatures.push({ //DateTime: moment(y.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(ca.DateTime).toDate()), ca_value: ca.Value }); }); _.each(R22, function (cr) { OUTtemperatures.push({ //DateTime: moment(y.DateTime).toDate(), DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(cr.DateTime).toDate()), cr_value: cr.Value }); }); //chartCoolingApproach().option('dataSource', coolingApproaches); options = BWA.ChartOptions.RefrigeratorAnalysis.getCoolingApproachChartOptions(timeBoxForSearch.type()); //chartCoolingApproach().option('argumentAxis', null); // 2015 05 21 결국 이 코드가 필요 함 (시간 축 에러 해결) //options.valueAxis[0].tickInterval = Math.round(maxValuecoolingApproaches / 10); // 2015 07 02 쿨링어프로치의 온도들은 외기온도가 아니기 떄문에 min max가 없는 걸로 일단 처리 한다. options.dataSource = OUTtemperatures; chartCoolingApproach().option(options); } visiblePopup(false); }) .fail(function (error) { //alert(error); visiblePopup(false); }); } var viewModel = $.extend(BWA.CommonView.create( params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView, undefined, chartLayout), { facility: facilityViewModel, viewHidden: handleViewHidden, // hcLee 2015 06 03 refreshList: refreshList, viewShowing: handleViewShowing, scrolling: { mode: 'infinite' }, waterCoolingDataGridOptions: { 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.check_A_f = function () { setCheckBoxChart(); } var valueAxises = [ { title: { text: '온도 (°C)' } }, ]; var seriesS = [ { //type: 'bar', type: 'spline', argumentField: 'DateTime', valueField: 'Value', //width: 5, //valueField: 'h_temp', name: '외기온도', label: { visible: false, }, point: { size: 1 } }, { type: 'spline', color: '#c96374', //pane: 'topPane', // axis: 'intemp', valueField: 'c_in_temp', point: { size: 1 }, //name: '냉각수 입구온도', name : '냉각탑 출구온도', label: { visible: false, font: { color: '#c96374', }, customizeText: function () { return this.valueText + ' °C'; } } }, { type: 'spline', //pane: 'topPane', // axis: 'outtemp', color: '#00A7C6', valueField: 'c_out_temp', point: { size: 1 }, //name: '냉각수 출구온도', name: '냉각탑 입구온도', label: { font: { color: '#00A7C6', }, visible: false, customizeText: function () { return this.valueText + ' °C'; } } }, { type: 'spline', // pane: 'topPane', // axis: 'htemp', color: 'darkgreen', valueField: 'h_temp', point: { size: 1 }, name: '습구온도', label: { font: { color: 'darkgreen', }, visible: false, customizeText: function () { return this.valueText + ' °C'; } } }, { type: 'bar', argumentField: 'DateTime', //argumentField: 'string', valueField: 'ca_value', color: 'red', width: 5, //valueField: 'h_temp', name: $G('coolingApproach'), label: { visible: false, }, point: { size: 4 } }, { type: 'bar', argumentField: 'DateTime', //argumentField: 'string', valueField: 'cr_value', color: 'blue', width: 5, //valueField: 'h_temp', name: '쿨링 레인지', label: { visible: false, }, point: { size: 4 } }, ]; function setCheckBoxChart() { /* var cO = BWA.ChartOptions.RefrigeratorAnalysis; var S = chartCoolingApproach(cO.getCoolingApproachSeriesOptions(check_input(), check_out(), check_s())); var V = chartCoolingApproach(cO.getCoolingApproachvalueAxisOptions(check_input(), check_out(), check_s())); var chart = $('#chartCoolingApproach').dxChart('instance'); chart.option('valueAxis', V); chart.option('series', S); */ // 이렇게 옵션에서 가져오면 안됨. // OK 코드 var chart = $('#chartCoolingApproach').dxChart('instance'); var valueAxisNew = []; valueAxisNew.push(valueAxises[0]); //if (check_input()) valueAxisNew.push(valueAxises[1]); //if (check_out()) valueAxisNew.push(valueAxises[2]); //if (check_s()) valueAxisNew.push(valueAxises[3]); chart.option('valueAxis', valueAxisNew); var seriesNew = []; for (var i = 0; i < 4; i++) seriesNew.push(seriesS[i]); // 기본4개, 외기/입구/출구/습구 if (check_A()) seriesNew.push(seriesS[4]); if (check_R()) seriesNew.push(seriesS[5]); chart.option('series', seriesNew); // OK 코드 } viewModel.check_A_f = function () { setCheckBoxChart(); } viewModel.check_R_f = function () { setCheckBoxChart(); } check_A.subscribe(viewModel.check_A_f); check_R.subscribe(viewModel.check_R_f); viewModel.timeBoxForSearch = timeBoxForSearch; viewModel.currentTabIndex = currentTabIndex; viewModel.multiViewItems = [{ facility: facilityViewModel, template: 'mainCharts' }, { template: 'subCharts', check_A: check_A, check_R: check_R, //check_s: check_s, } ]; //ko.applyBindgings(viewModel, check_input); //ko.a //ko.applyBindings(viewModel, document.getElementById("multiview")); $HourGlassPopup(viewModel, visiblePopup); return viewModel; };