From 9c9b8250b973eea72f6970e1ceb46facca9f0a99 Mon Sep 17 00:00:00 2001 From: 沈斌 <bluelazysb@hotmail.com> Date: Tue, 13 Mar 2018 15:18:31 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into develop --- src/app/routes/analysis/query/query.component.ts | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 104 insertions(+), 14 deletions(-) diff --git a/src/app/routes/analysis/query/query.component.ts b/src/app/routes/analysis/query/query.component.ts index 9d59510..4b327f8 100644 --- a/src/app/routes/analysis/query/query.component.ts +++ b/src/app/routes/analysis/query/query.component.ts @@ -1,7 +1,7 @@ import { ExampleService } from '@business/services/util/example.service'; import { MonitorPointService } from '@business/services/http/monitor-point.service'; import { AreacodeService } from '@business/services/http/areacode.service'; -import { LineChartCriteria, TimePeriod, Organization, MonitorPoint, DataCondition, Device } from '@business/entity/data'; +import { LineChartCriteria, TimePeriod, Organization, MonitorPoint, DataCondition, Device, PairData } from '@business/entity/data'; import { PageBean, ResultBean } from '@business/entity/grid'; import { Sensor } from '@business/entity/data'; import { SensorsService } from '@business/services/http/sensors.service'; @@ -12,6 +12,8 @@ import { CascaderOption } from 'ng-zorro-antd/src/cascader/nz-cascader.component'; import { environment } from '@env/environment'; import { DeviceService } from '@business/services/http/device.service'; +import { DateService } from '@business/services/util/date.service'; +import { NzMessageService } from 'ng-zorro-antd'; @Component({ selector: 'app-query', templateUrl: './query.component.html', @@ -89,6 +91,8 @@ private http: _HttpClient, private monitorPointService: MonitorPointService, private deviceService: DeviceService, + private dateService: DateService, + private msg: NzMessageService ) { } @@ -298,31 +302,32 @@ } private getPeriodDate(value: Date , type?: 'start'|'end' ): Date { - debugger; - let month = 0 ; - let day = 0; + let month = 0; + let day = 1; let hour = 0; let minute = 0; let second = 0; + let millisecond = 0; if ('end' === type) { - month = 12; + month = 11; day = 31; hour = 23; minute = 59; second = 59; + millisecond = 999; } const mo = moment(value); switch ( this.lineChartCriteria.timePeriod.timeUnits ) { case TimeUnits.YEAR: - mo.month(month).day(day).hour(hour).minute(minute).second(second); break; + mo.month(month).date(day).hour(hour).minute(minute).second(second).millisecond(millisecond); break; case TimeUnits.MONTH: - mo.day(day).hour(hour).minute(minute).second(second); break; + mo.date(day).hour(hour).minute(minute).second(second).millisecond(millisecond); break; case TimeUnits.DAY: - mo.hour(hour).minute(minute).second(second); break; + mo.hour(hour).minute(minute).second(second).millisecond(millisecond); break; case TimeUnits.HOUR: - mo.minute(minute).second(second); break; + mo.minute(minute).second(second).millisecond(millisecond); break; case TimeUnits.MINUTE: - mo.second(second); break; + mo.second(second).millisecond(millisecond); break; } return mo.toDate(); } @@ -465,7 +470,8 @@ // ������������������������ actualTimeDisabled get actualTimeDisabled() { if (!!this.dataTimeUnitsList && this._dataTimeUnits === this.dataTimeUnitsList[0]) { - this._actualTime = null; + this.setActualTime(null); + // ������������������������������ this.actualTimes = null; } return !!this.dataTimeUnitsList && this._dataTimeUnits === this.dataTimeUnitsList[0]; @@ -483,10 +489,94 @@ this.lineChartCriteria.timePeriod.endTime = this.getPeriodDate(endTime, 'end'); this.lineChartCriteria.dataConditions.pop(); this.lineChartCriteria.dataConditions.push(this.dataConditionTemp); - this.http.post(environment.SERVER_BASH_URL + '/report/line-chart', this.lineChartCriteria).subscribe( - res => console.log(res) - ); + this.reloadChart(); } + private reloadChart(): void { + const countTimeRange = this.dateService.countTimeRange(this.lineChartCriteria.timePeriod); + let timeList: string[]; + const maxTimeRange = 5000; + if (countTimeRange < maxTimeRange ) { + timeList = this.dateService.makeTimeList(this.lineChartCriteria.timePeriod); + } else { + this.msg.error('������������������������' + maxTimeRange + '������������������������' + countTimeRange); + return ; + } + + if (!!this.echartsIntance) { + this.chartOption = null; + this.echartsIntance.clear(); + } + this.initOpton({data: timeList}); + this.chartLoading = true; + this.http.post(environment.SERVER_BASH_URL + '/report/line-chart', this.lineChartCriteria).subscribe( + (res: ResultBean<Array<Array<PairData>>>) => { + if (res.code === 1) { + const series = []; + const dataList = res.data; + if (!!dataList && !!dataList.length) { + dataList.forEach( + data => { + const outData = data.map( item => { + return item.value; + }); + series.push({type: 'line', data: outData}); + } + ); + this.echartsIntance.setOption({ + series: series + }); + this.chartLoading = false; + } + } + } + ); + } + private initOpton(opt: {data: string[]}) { + + this.chartOption = { + title: { + text: '' + }, + tooltip : { + trigger: 'axis', + axisPointer: { + type: 'cross', + label: { + backgroundColor: '#6a7985' + } + } + }, + legend: { + data: [] + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + xAxis : [ + { + type : 'category', + boundaryGap : false, + data : opt.data + } + ], + yAxis : [ + { + type : 'value' + } + ], + series : [ + ] + }; + } + chartLoading: boolean; chartOption; echartsIntance; onChartInit(ec) { -- Gitblit v1.8.0