import {environment} from '../../../../environments/environment';
|
import {DateService} from '../../../business/services/util/date.service';
|
import {NzMessageService} from 'ng-zorro-antd';
|
import {Component, OnInit} from '@angular/core';
|
import {HttpClient} from '@angular/common/http';
|
import {Router} from '@angular/router';
|
|
@Component({
|
selector: 'app-demo',
|
templateUrl: './demo.component.html',
|
styles: []
|
})
|
|
export class DemoComponent implements OnInit {
|
constructor(
|
public http: HttpClient,
|
public dateSrv: DateService,
|
public router: Router,
|
public msgSrv: NzMessageService
|
) {
|
const timeType = this.timeType = this.typeOptions[1];
|
this.query.type = timeType.value;
|
this.time.format = timeType.format.toUpperCase();
|
this.query.reportType = this.reportOptions[1].value;
|
}
|
[x: string]: any;
|
public query: any = {};
|
public sensorOptions = [];
|
public typeOptions = [
|
{value: 'year', label: '年', xAxisName: '月', format: 'yyyy', typeFormat: '%Y-%m', timeLength: 12},
|
{value: 'month', label: '月', xAxisName: '日', format: 'yyyy-MM', typeFormat: '%Y-%m-%d', timeLength: 28},
|
{value: 'day', label: '日', xAxisName: '时', format: 'yyyy-MM-dd', typeFormat: '%Y-%m-%d %H', timeLength: 24},
|
{value: 'hour', label: '时', xAxisName: '分', format: 'yyyy-MM-dd HH', typeFormat: '%Y-%m-%d %H:%i', timeLength: 60}
|
];
|
public reportOptions = [
|
{value: 'bar', label: '柱状图'},
|
{value: 'line', label: '折线图'}
|
];
|
public monitorPointOptions = [];
|
public deviceOptions = [];
|
public time: any = {};
|
public timeType: any = {};
|
public items = [{
|
id: 0,
|
monitorPoint: null,
|
mac: '',
|
time: null,
|
formatTime: null,
|
monitorPointName: '',
|
deviceName: '',
|
monitorPointAddress: '',
|
deviceCount: ''
|
}];
|
|
ngOnInit() {
|
this.http.get(environment.SERVER_BASH_URL + 'sensor/all').subscribe((res: any) => {
|
if (res.code === 0) {
|
this.msgSrv.error(res.message);
|
} else {
|
this.sensorOptions = res.data;
|
}
|
});
|
}
|
|
typeChange(searchText) {
|
this.typeOptions.forEach(types => {
|
if (types.value === searchText) {
|
this.timeType = types;
|
this.time.format = types.format.toUpperCase();
|
}
|
});
|
}
|
|
addItem() {
|
const id = (this.items.length > 0) ? this.items[this.items.length - 1].id + 1 : 0;
|
const index = this.items.push({
|
id: id,
|
monitorPoint: null,
|
mac: '',
|
time: null,
|
formatTime: null,
|
monitorPointName: '',
|
deviceName: '',
|
monitorPointAddress: '',
|
deviceCount: ''
|
});
|
}
|
|
searchChange(searchText, i) {
|
if (searchText) {
|
const query = encodeURI(searchText);
|
if (query) {
|
this.http.get(environment.SERVER_BASH_URL + '/monitor-point/list/' + query).subscribe((res: any) => {
|
if (res.code === 0) {
|
this.msgSrv.error(res.message);
|
} else {
|
this.monitorPointOptions = res.data;
|
}
|
});
|
}
|
}
|
}
|
|
monitorPointChange(value, i) {
|
this.deviceOptions = [];
|
if (value) {
|
this.monitorPointOptions.forEach(monitorPoint => {
|
if (monitorPoint.id === value) {
|
this.items[i].monitorPointName = monitorPoint.name;
|
this.items[i].monitorPointAddress = monitorPoint.address;
|
}
|
});
|
this.http.get(environment.SERVER_BASH_URL + 'device/monitorPointId', {params: {monitorPointId: value}}).subscribe((res: any) => {
|
if (res.code === 0) {
|
this.msgSrv.error(res.message);
|
} else {
|
this.deviceOptions = res.data;
|
this.items[i].deviceCount = res.data.length;
|
}
|
});
|
} else {
|
this.items[i].monitorPoint = null;
|
this.items[i].mac = '';
|
this.items[i].monitorPointName = '';
|
}
|
}
|
|
deviceChange(value, i) {
|
if (value) {
|
this.deviceOptions.forEach(device => {
|
if (device.mac === value) {
|
this.items[i].deviceName = device.name;
|
}
|
});
|
} else {
|
this.items[i].deviceName = '';
|
}
|
}
|
|
_disabledDate(current: Date): boolean {
|
return current && current.getTime() > Date.now();
|
}
|
|
reportQuery() {
|
const query = this.query;
|
let validate = true;
|
for (let i = 0; i < this.items.length; i++) {
|
let item = this.items[i];
|
if (item.monitorPoint && item.time) {
|
item.formatTime = this.dateSrv.date_format(item.time, this.time.format);
|
} else {
|
validate = false;
|
break;
|
}
|
}
|
if (validate && query.type && query.reportType) {
|
query.timeType = JSON.stringify(this.timeType);
|
query.items = JSON.stringify(this.items);
|
this.router.navigate(['report'], {queryParams: query});
|
} else {
|
this.msgSrv.error('请完善搜索项或删除查询条目');
|
}
|
|
}
|
}
|