From 43e7ed40c26afa535aba24b1c9ddc1b87b607d8d Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Mon, 05 Mar 2018 09:26:26 +0800
Subject: [PATCH] 报表查看
---
src/app/business/enum/types.enum.ts | 6 +
src/app/routes/analysis/query/query.component.less | 21 ++++
src/app/business/entity/data.ts | 18 +++
src/app/business/services/http/sensors.service.ts | 8 +
src/app/routes/analysis/query/query.component.ts | 92 ++++++++++++++++++
src/app/routes/systems/organization/organization-config/organization-config.component.ts | 2
src/app/routes/analysis/analysis.module.ts | 28 +++++
src/app/routes/routes-routing.module.ts | 1
src/assets/app-data.json | 30 +++--
src/app/routes/analysis/query/query.component.html | 51 ++++++++++
10 files changed, 241 insertions(+), 16 deletions(-)
diff --git a/src/app/business/entity/data.ts b/src/app/business/entity/data.ts
index f56e676..38e3557 100644
--- a/src/app/business/entity/data.ts
+++ b/src/app/business/entity/data.ts
@@ -1,5 +1,6 @@
+import { LineChartCriteria } from './data';
import { Column } from '@business/entity/grid';
-import { AlarmStyle } from '@business/enum/types.enum';
+import { AlarmStyle, TimeUnits, AreaRange } from '@business/enum/types.enum';
export interface AreaNames {
@@ -132,4 +133,19 @@
mode: string;
organizationId: number;
username: string;
+}
+export interface TimePeriod{
+ startTime:number;//������������
+ endTime:number;//������������
+}
+export interface DataCondition{
+ timeUnits:TimeUnits;//������
+ actualTime:number;//������������
+ areaRange:AreaRange;//������������
+ areaRangeId:number;//���������������ID
+}
+export interface LineChartCriteria{
+ sensorKey:String;
+ timePeriod:TimePeriod;
+ dataConditions:DataCondition[];
}
\ No newline at end of file
diff --git a/src/app/business/enum/types.enum.ts b/src/app/business/enum/types.enum.ts
index 7fdb678..55d7143 100644
--- a/src/app/business/enum/types.enum.ts
+++ b/src/app/business/enum/types.enum.ts
@@ -5,3 +5,9 @@
//���������������������������������
weixin='weixin',email='email',sms='sms',voice='voice'
}
+export enum TimeUnits{
+ YEAR='YEAR',MONTH='MONTH',DAY='DAY',HOUR='HOUR',MINUTE='MINUTE'
+}
+export enum AreaRange {
+ PROVINCE='PROVINCE',CITY='CITY',AREA='AREA',MONITORPOINT='MONITORPOINT',DEVICE='DEVICE'
+}
\ No newline at end of file
diff --git a/src/app/business/services/http/sensors.service.ts b/src/app/business/services/http/sensors.service.ts
index 91ae9d5..08c4e3a 100644
--- a/src/app/business/services/http/sensors.service.ts
+++ b/src/app/business/services/http/sensors.service.ts
@@ -23,8 +23,12 @@
example.or().andEqualTo({name: 'version', value: queryText});
}
let orderByClause = '';
- if ( page.getOrderByClause != null && page.getOrderByClause instanceof Function) {
- orderByClause = page.getOrderByClause();
+ if(!!page){
+ if (page.getOrderByClause != null && page.getOrderByClause instanceof Function) {
+ orderByClause = page.getOrderByClause();
+ }
+ }else{
+ page = {pageSize:0,pageIndex:0};
}
const param: PageBean = {pageSize: page.pageSize, pageIndex: page.pageIndex,
queryParams: example.getSqlParam(), orderByClause: orderByClause};
diff --git a/src/app/routes/analysis/analysis.module.ts b/src/app/routes/analysis/analysis.module.ts
new file mode 100644
index 0000000..f61ca5e
--- /dev/null
+++ b/src/app/routes/analysis/analysis.module.ts
@@ -0,0 +1,28 @@
+import { SensorsService } from '@business/services/http/sensors.service';
+import { PipeModule } from '@business/pipe/pipe.module';
+import { NgModule } from '@angular/core';
+import { SharedModule } from '@shared/shared.module';
+import { QueryComponent } from './query/query.component';
+import { Routes, RouterModule } from '@angular/router';
+import { CommonModule } from '@angular/common';
+const routes: Routes = [
+ {
+ path: '',
+ children: [
+ { path: 'query', component: QueryComponent }
+ ]
+ }
+];
+
+@NgModule({
+ imports: [
+ // ������������������������������������
+ PipeModule,
+ CommonModule,
+ SharedModule,
+ RouterModule.forChild(routes)
+ ],
+ declarations: [QueryComponent],
+ providers:[SensorsService]
+})
+export class AnalysisModule { }
diff --git a/src/app/routes/analysis/query/query.component.html b/src/app/routes/analysis/query/query.component.html
new file mode 100644
index 0000000..97a90da
--- /dev/null
+++ b/src/app/routes/analysis/query/query.component.html
@@ -0,0 +1,51 @@
+<nz-card [nzBordered]="true">
+ <div nz-row>
+ <div nz-col [nzXs]="20" [nzSm]="8" class="header-info">
+ <p class="text-grey-dark">������������������</p>
+ <nz-dropdown>
+ <a class="ant-dropdown-link" nz-dropdown>
+ <p class="display-2">{{ lineChartSensorName }}<i class="anticon anticon-down"></i></p>
+ </a>
+ <ul style="height:280px;overflow:auto;" nz-menu>
+ <li style="width:200px;cursor:pointer;" *ngFor="let sensor of sensorList"
+ (click) = "lineChartCriteria.sensorKey=sensor.sensorKey" nz-menu-item>
+ <p>
+ {{sensor.name}}
+ </p>
+ </li>
+ </ul>
+ </nz-dropdown>
+ <em></em>
+ </div>
+ <div nz-col [nzXs]="20" [nzSm]="8" class="header-info">
+ <p class="text-grey-dark">���������������������</p>
+ <nz-dropdown>
+ <a class="ant-dropdown-link" nz-dropdown>
+ <p class="display-2">{{ timePeriodUnitName }}<i class="anticon anticon-down"></i></p>
+ </a>
+ <ul nz-menu>
+ <li style="width:60px;cursor:pointer;" *ngFor="let item of timeUnits"
+ (click)="timePeriodUnitValue = item.value" nz-menu-item>
+ <p>
+ {{item.label}}
+ </p>
+ </li>
+ </ul>
+ </nz-dropdown>
+ <em></em>
+ </div>
+ <div nz-col [nzSm]="8" class="header-info">
+ <p class="text-grey-dark">���������������������</p>
+ <nz-datepicker style="width: 42%;"
+ [(ngModel)]="lineChartCriteria.timePeriod.startTime"
+ [nzDisabledDate]="_disabledStartDate"
+ nzShowTime="{{ !!timeType.timePickerOption?timeType.timePickerOption:false }}" [nzMode]="timeType.mode" [nzFormat]="timeType.dateFormat" [nzPlaceHolder]="'Start date'"></nz-datepicker>
+ <span>-</span>
+ <nz-datepicker style="width: 42%;"
+ [nzDisabledDate]="_disabledEndDate"
+ [(ngModel)]="lineChartCriteria.timePeriod.endTime"
+ nzShowTime="{{ !!timeType.timePickerOption?timeType.timePickerOption:false }}" [nzMode]="timeType.mode" [nzFormat]="timeType.dateFormat" [nzPlaceHolder]="'End date'"></nz-datepicker>
+ </div>
+ <input type="button" value="text" width="100px;" (click)="_isSameDay"/>
+ </div>
+</nz-card>
\ No newline at end of file
diff --git a/src/app/routes/analysis/query/query.component.less b/src/app/routes/analysis/query/query.component.less
new file mode 100644
index 0000000..66c0e84
--- /dev/null
+++ b/src/app/routes/analysis/query/query.component.less
@@ -0,0 +1,21 @@
+.header-info {
+ position: relative;
+ text-align: center;
+ > em {
+ background-color: #e8e8e8;
+ position: absolute;
+ height: 56px;
+ width: 1px;
+ top: 0;
+ right: 0;
+ }
+}
+
+@media screen and (max-width: 576px) {
+ .header-info {
+ margin-bottom: 16px;
+ > em {
+ display: none;
+ }
+ }
+}
diff --git a/src/app/routes/analysis/query/query.component.ts b/src/app/routes/analysis/query/query.component.ts
new file mode 100644
index 0000000..6ab3e45
--- /dev/null
+++ b/src/app/routes/analysis/query/query.component.ts
@@ -0,0 +1,92 @@
+import { getService } from './../../../../testing/common.spec';
+import { LineChartCriteria, TimePeriod } from './../../../business/entity/data';
+import { PageBean } from '@business/entity/grid';
+import { Sensor } from '@business/entity/data';
+import { SensorsService } from '@business/services/http/sensors.service';
+import { Component, OnInit } from '@angular/core';
+import { _HttpClient } from '@delon/theme';
+import { TimeUnits } from '@business/enum/types.enum';
+import * as moment from 'moment';
+
+@Component({
+ selector: 'app-query',
+ templateUrl: './query.component.html',
+ styleUrls: [ './query.component.less' ]
+})
+export class QueryComponent implements OnInit {
+ public sensorList:Sensor[];
+ public timeUnits:{ label: string, value: TimeUnits, disabled: boolean }[] = [];
+ // public timePeriod:TimePeriod = {startTime:null,endTime:null};
+ public lineChartCriteria:LineChartCriteria = {sensorKey:'e1', timePeriod:{startTime:null,endTime:null},dataConditions:[]};
+
+ get lineChartSensorName():String{
+ return !!this.sensorList?this.sensorList.find( sensor => sensor.sensorKey==this.lineChartCriteria.sensorKey).name:null;
+ }
+ private _timePeriodUnitValue:TimeUnits=TimeUnits.DAY;
+ public set timePeriodUnitValue(value:TimeUnits){
+ this._timePeriodUnitValue = value;
+ switch(value){
+ //YYYY-MM-DD HH:mm:ss
+ case TimeUnits.MONTH:
+ this.timeType.dateFormat ="YYYY-MM";
+ this.timeType.mode = "month";
+ this.timeType.timePickerOption = null;
+ break;
+ case TimeUnits.DAY:
+ this.timeType.dateFormat ="YYYY-MM-DD";
+ this.timeType.mode = "day";
+ this.timeType.timePickerOption = null;
+ break;
+ case TimeUnits.HOUR:
+ this.timeType.dateFormat ="YYYY-MM-DD HH ���";
+ this.timeType.timePickerOption = {nzFormat:"HH:mm"};
+ break;
+ }
+ }
+ public timeType:{dateFormat?:string,mode?:'year'|'month'|'day',timePickerOption?:{}}
+ = {dateFormat:"YYYY-MM-DD",mode:"day",timePickerOption:null};
+ get timePeriodUnitName():String {
+ return this.timeUnits.find( item => item.value == this._timePeriodUnitValue).label;
+ }
+ constructor(
+ private sensorsService:SensorsService
+ ) {
+ this.initPage();
+ }
+ private initPage(){
+ this.sensorsService.getPagingList(null,null).subscribe(
+ (res: PageBean) => {
+ this.sensorList = res.data;
+ }
+ );
+ this.timeUnits.push(
+ {label:'���',value:TimeUnits.YEAR,disabled:false},
+ {label:'���',value:TimeUnits.MONTH,disabled:false},
+ {label:'���',value:TimeUnits.DAY,disabled:false},
+ {label:'���',value:TimeUnits.HOUR,disabled:false},
+ {label:'���',value:TimeUnits.MINUTE,disabled:false}
+ );
+ }
+ ngOnInit() {
+ }
+ get _isSameDay() {
+ console.log(this.lineChartCriteria.timePeriod.startTime && this.lineChartCriteria.timePeriod.endTime && moment(this.lineChartCriteria.timePeriod.startTime).isSame(this.lineChartCriteria.timePeriod.endTime, 'day'));
+ return this.lineChartCriteria.timePeriod.startTime && this.lineChartCriteria.timePeriod.endTime && moment(this.lineChartCriteria.timePeriod.startTime).isSame(this.lineChartCriteria.timePeriod.endTime, 'day');
+ }
+ _disabledStartDate = (startValue) => {
+ if (!startValue || !this.lineChartCriteria.timePeriod.endTime) {
+ return false;
+ }
+ console.log(startValue);
+ console.log("getTime:"+startValue.getTime());
+ let _startValue = moment(startValue,this.timeType.dateFormat);
+ console.log("valueOf:"+_startValue.valueOf());
+ return _startValue.valueOf() > this.lineChartCriteria.timePeriod.endTime;
+ };
+ _disabledEndDate = (endValue) => {
+ if (!endValue || !this.lineChartCriteria.timePeriod.startTime) {
+ return false;
+ }
+ return endValue.getTime() < this.lineChartCriteria.timePeriod.startTime;
+ };
+}
diff --git a/src/app/routes/routes-routing.module.ts b/src/app/routes/routes-routing.module.ts
index 4cb980b..7a4e094 100644
--- a/src/app/routes/routes-routing.module.ts
+++ b/src/app/routes/routes-routing.module.ts
@@ -31,6 +31,7 @@
{ path: 'sensors', loadChildren: './sensors/sensors.module#SensorsModule' },
{ path: 'systems', loadChildren: './systems/systems.module#SystemsModule' },
{ path: 'reports', loadChildren: './reports/reports.module#ReportsModule' },
+ { path: 'analysis', loadChildren: './analysis/analysis.module#AnalysisModule' },
]
}, // passport
{
diff --git a/src/app/routes/systems/organization/organization-config/organization-config.component.ts b/src/app/routes/systems/organization/organization-config/organization-config.component.ts
index f73e7b6..50c4d60 100644
--- a/src/app/routes/systems/organization/organization-config/organization-config.component.ts
+++ b/src/app/routes/systems/organization/organization-config/organization-config.component.ts
@@ -2,7 +2,6 @@
import { filter } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http';
import { FormGroup, FormBuilder, FormControl, Validators, FormArray, AbstractControl } from '@angular/forms';
-import { SensorsService } from '@business/services/http/sensors.service';
import { Grid, PageBean } from '@business/entity/grid';
import { Organization, AlarmConfig, AlarmSensorLevel, AlarmConfigValue } from '@business/entity/data';
import { Component, OnInit, OnDestroy } from '@angular/core';
@@ -28,7 +27,6 @@
validateForm: FormGroup;
constructor(
private organizationService: OrganizationService,
- private sensorsService: SensorsService,
private alarmConfigService: AlarmConfigService,
private formBuilder: FormBuilder,
private http: _HttpClient,
diff --git a/src/assets/app-data.json b/src/assets/app-data.json
index b19eb23..420b56d 100644
--- a/src/assets/app-data.json
+++ b/src/assets/app-data.json
@@ -73,21 +73,17 @@
"link": "/sensors/basic"
}]
}, {
- "text": "������������",
- "icon": "icon-note",
+ "text": "������������",
+ "icon": "icon-graph",
"children": [
{
- "text": "������������",
- "link": "/systems/account"
- },
- {
- "text": "������������",
- "link": "/systems/organization"
- }
+ "text": "������������",
+ "link": "/analysis/query"
+ }
]
}, {
"text": "������������",
- "icon": "icon-note",
+ "icon": "icon-chart",
"children": [
{
"text": "���������������",
@@ -98,8 +94,20 @@
"link": "/reports/excel"
}
]
+ }, {
+ "text": "������������",
+ "icon": "icon-settings",
+ "children": [
+ {
+ "text": "������������",
+ "link": "/systems/account"
+ },
+ {
+ "text": "������������",
+ "link": "/systems/organization"
+ }
+ ]
}
-
]
--
Gitblit v1.8.0