From caa9dac1c8e4b0cc2d77f3683b70e80d450f9c81 Mon Sep 17 00:00:00 2001 From: HHL Date: Mon, 26 Nov 2018 13:07:23 +0100 Subject: [PATCH] frontend --- Frontend/dist/Frontend/main.js | 39 +++++++------------ Frontend/dist/Frontend/main.js.map | 2 +- .../home/components/edit/edit.component.html | 2 +- .../home/components/edit/edit.component.ts | 8 ++-- .../filter-bar/filter-bar.component.html | 2 +- .../filter-bar/filter-bar.component.scss | 6 +++ .../filter-bar/filter-bar.component.ts | 2 +- .../modules/home/pages/home-page.component.ts | 34 +++++++--------- 8 files changed, 41 insertions(+), 54 deletions(-) diff --git a/Frontend/dist/Frontend/main.js b/Frontend/dist/Frontend/main.js index 382431d..14fdb0a 100644 --- a/Frontend/dist/Frontend/main.js +++ b/Frontend/dist/Frontend/main.js @@ -353,7 +353,7 @@ var HeaderComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\n
Configuration
\n
\n\n
\n
\n
\n
\n \n DeviceID\n \n
\n
\n \n
\n
\n
\n\n
\n
\n
\n \n Name\n \n
\n \n
\n
\n
\n\n
\n\n
\n
\n
\n \n Period\n \n
\n \n
\n
\n\n
\n
\n\n
\n
\n \n \n
\n
\n\n
\n" +module.exports = "
\n
Configuration
\n
\n\n
\n
\n
\n
\n \n DeviceID\n \n
\n
\n \n
\n
\n
\n\n
\n
\n
\n \n Name\n \n
\n \n
\n
\n
\n\n
\n\n
\n
\n
\n \n Period\n \n
\n \n
\n
\n\n
\n
\n\n
\n
\n \n \n
\n
\n\n
\n" /***/ }), @@ -412,11 +412,11 @@ var EditComponent = /** @class */ (function () { var editedSensor = { id: formValue.deviceId, period: formValue.period, - status: this.selectedSensor.status + status: this.selectedSensor.status, + name: !formValue.deviceName || (formValue.deviceName && formValue.deviceName.length === 0) + ? null + : formValue.deviceName }; - if (formValue.deviceName) { - editedSensor['name'] = formValue.deviceName; - } this.sensorService.updateSensors(editedSensor).subscribe(function (res) { _this.onUpdated.emit(editedSensor); }); @@ -463,7 +463,7 @@ var EditComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\n
\n
\n\n \n \n \n
\n
\n {{device.name ? device.name : device.id}}\n
\n
\n \n \n\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
From
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
To
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n\n
\n
\n\n
\n
\n\n\n\n\n\n" +module.exports = "
\n
\n
\n\n \n \n \n
\n
\n {{device.name ? device.name : device.id}}\n
\n
\n \n \n\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
From
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n
To
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n\n
\n
\n\n
\n
\n\n\n\n\n\n" /***/ }), @@ -474,7 +474,7 @@ module.exports = "
\n .form-control:focus {\n box-shadow: 0px 0px 1px 3px #448bfc; }\n\n.submit-button, .edit-button {\n height: 35px;\n width: 120px;\n background-color: #009688;\n color: white;\n border-radius: 3px; }\n\n.submit-button:disabled {\n background-color: #929396; }\n\n.filter-button {\n height: 35px;\n border: 1px solid black;\n background-color: #E8E8E8;\n border-radius: 3px;\n box-shadow: 0 0 0.75rem #e4e4e4; }\n\ninput[type=\"time\"]:focus {\n border-color: black;\n box-shadow: 0px 0px 1px 3px #448bfc; }\n\n.filter-button :hover, .filter-button :focus {\n box-shadow: 0px 0px 1px 3px #448bfc; }\n" +module.exports = ".header {\n font-size: 25px; }\n\ninput[type=\"time\"] {\n display: inline-block;\n padding: .375rem .75rem;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid black;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n box-shadow: 0 0 0.75rem #e4e4e4; }\n\n.input-group {\n border: 1px solid black;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n box-shadow: 0 0 0.75rem #e4e4e4; }\n\n.input-group .btn-outline-secondary {\n border-right: 0;\n border-bottom: 0;\n border-top: 0; }\n\n.input-group .form-control {\n border: none; }\n\n.input-group .form-control:focus {\n border-right: 1px solid black;\n box-shadow: none; }\n\n.input-group > .form-control:focus {\n box-shadow: 0px 0px 1px 3px #448bfc; }\n\n.submit-button, .edit-button {\n height: 35px;\n width: 120px;\n background-color: #009688;\n color: white;\n border-radius: 3px; }\n\n.submit-button:disabled {\n background-color: #929396; }\n\n.filter-button {\n height: 35px;\n border: 1px solid black;\n background-color: #E8E8E8;\n border-radius: 3px;\n box-shadow: 0 0 0.75rem #e4e4e4; }\n\ninput[type=\"time\"]:focus {\n border-color: black;\n box-shadow: 0px 0px 1px 3px #448bfc; }\n\n.filter-button :hover, .filter-button :focus {\n box-shadow: 0px 0px 1px 3px #448bfc; }\n\n.description {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis; }\n" /***/ }), @@ -519,6 +519,7 @@ var FilterBarComponent = /** @class */ (function () { function FilterBarComponent(modalService, store) { this.modalService = modalService; this.store = store; + this.sensors = []; this.onChangedValue = new _angular_core__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"](); this.selectedDevices = []; } @@ -992,9 +993,15 @@ var HomePageComponent = /** @class */ (function () { } HomePageComponent.prototype.ngOnInit = function () { var _this = this; + // interval(60 * 60 * 1000) + // .pipe( + // tap(() => { setTimeout(function () { _this.getAllSensors(); }, 500); + // }) + // ) + // .subscribe(); }; HomePageComponent.prototype.onChangedValue = function (data) { this.from = this.convertToDate(data['startDate'], data['startTime']).valueOf(); @@ -1012,29 +1019,11 @@ var HomePageComponent = /** @class */ (function () { }; HomePageComponent.prototype.getAllSensors = function () { var _this = this; - // this.isLoading = true; this.store.dispatch(new store_actions_sensors__WEBPACK_IMPORTED_MODULE_4__["SensorsLoadingAction"]()); - // const testData = [ - // { - // id: 'test12', - // name: '345', - // period: 456, - // status: SensorStatus.CONNECTED - // }, - // { - // id: 'thahah', - // name: 'hoho', - // period: 456, - // status: SensorStatus.DISCONNECTED - // }]; - // this.store.dispatch(new SensorsLoadedSuccessAction(testData)); - // this.isLoading = false; this.sensorService.getAllSenors().subscribe(function (sensorList) { _this.store.dispatch(new store_actions_sensors__WEBPACK_IMPORTED_MODULE_4__["SensorsLoadedSuccessAction"](sensorList)); - // this.isLoading = false; }, function (error1) { _this.store.dispatch(new store_actions_sensors__WEBPACK_IMPORTED_MODULE_4__["SensorsLoadedFailAction"]()); - // this.isLoading = false; }); }; __decorate([ diff --git a/Frontend/dist/Frontend/main.js.map b/Frontend/dist/Frontend/main.js.map index 98d58bb..d800db2 100644 --- a/Frontend/dist/Frontend/main.js.map +++ b/Frontend/dist/Frontend/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/core/footer/footer.component.html","webpack:///./src/app/core/footer/footer.component.scss","webpack:///./src/app/core/footer/footer.component.ts","webpack:///./src/app/core/header/header.component.html","webpack:///./src/app/core/header/header.component.scss","webpack:///./src/app/core/header/header.component.ts","webpack:///./src/app/modules/home/components/edit/edit.component.html","webpack:///./src/app/modules/home/components/edit/edit.component.scss","webpack:///./src/app/modules/home/components/edit/edit.component.ts","webpack:///./src/app/modules/home/components/filter-bar/filter-bar.component.html","webpack:///./src/app/modules/home/components/filter-bar/filter-bar.component.scss","webpack:///./src/app/modules/home/components/filter-bar/filter-bar.component.ts","webpack:///./src/app/modules/home/components/graph-summary/graph-summary.component.html","webpack:///./src/app/modules/home/components/graph-summary/graph-summary.component.scss","webpack:///./src/app/modules/home/components/graph-summary/graph-summary.component.ts","webpack:///./src/app/modules/home/constants/constants.ts","webpack:///./src/app/modules/home/home-routing.module.ts","webpack:///./src/app/modules/home/home.module.ts","webpack:///./src/app/modules/home/pages/home-page.component.html","webpack:///./src/app/modules/home/pages/home-page.component.scss","webpack:///./src/app/modules/home/pages/home-page.component.ts","webpack:///./src/app/modules/home/services/sensor.service.ts","webpack:///./src/app/shared/components/loading-spinner/loading-spinner.component.html","webpack:///./src/app/shared/components/loading-spinner/loading-spinner.component.scss","webpack:///./src/app/shared/components/loading-spinner/loading-spinner.component.ts","webpack:///./src/app/shared/services/dom.service.ts","webpack:///./src/app/shared/services/modal.service.ts","webpack:///./src/app/shared/shared.module.ts","webpack:///./src/app/store/actions/sensors.ts","webpack:///./src/app/store/reducers/index.ts","webpack:///./src/app/store/reducers/sensors.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {HomePageComponent} from './modules/home/pages/home-page.component';\n\nconst routes: Routes = [\n {path: '', component: HomePageComponent},\n {path: '*', component: HomePageComponent},\n {path: '**', redirectTo: ''},\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n
\\n \\n
\\n\\n\\n\\n\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\"","module.exports = \"\"","import {Component, OnInit} from '@angular/core';\nimport {ModalService} from './shared/services/modal.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n title = 'Smart Power Reader';\n\n isOnHomepage: boolean;\n\n constructor(private modalService: ModalService,\n private router: Router) {\n\n }\n\n ngOnInit(): void {\n this.router.events.subscribe(val => {\n this.isOnHomepage = this.router.url === '/';\n });\n }\n\n closeModal() {\n this.modalService.destroy();\n }\n}\n","import {BrowserModule} from '@angular/platform-browser';\nimport {NgModule} from '@angular/core';\n\nimport {AppComponent} from './app.component';\nimport {FooterComponent} from 'core/footer/footer.component';\nimport {HeaderComponent} from 'core/header/header.component';\nimport {EditComponent} from './modules/home/components/edit/edit.component';\nimport {AppRoutingModule} from './app-routing.module';\nimport {HomeModule} from './modules/home/home.module';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport { StoreModule } from '@ngrx/store';\nimport { reducers, metaReducers } from './store/reducers';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { environment } from 'environments/environment';\n\n@NgModule({\n declarations: [\n AppComponent,\n FooterComponent,\n HeaderComponent,\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n HomeModule,\n StoreModule.forRoot(reducers, { metaReducers }),\n !environment.production ? StoreDevtoolsModule.instrument() : [],\n ],\n providers: [],\n bootstrap: [AppComponent],\n entryComponents: [\n EditComponent\n ]\n})\nexport class AppModule {\n}\n","module.exports = \"
\\n
\\n
\\n \\n \\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n\\n\"","module.exports = \".avatar {\\n height: 50px;\\n width: 50px; }\\n\\n.buttonFooter {\\n position: -webkit-sticky;\\n position: sticky;\\n bottom: 20px; }\\n\\nfooter {\\n border-top: 1px solid #e4e4e4;\\n height: 100px;\\n padding: 20px 0; }\\n\\nfooter a {\\n text-decoration: none;\\n color: #333; }\\n\"","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\\n
\\n\\n\\n\\n\\n\"","module.exports = \"a.nav-link {\\n color: white; }\\n\\n.nav-item {\\n padding-left: 5px; }\\n\\n.top-navbar {\\n height: 81px;\\n background: #ffffff;\\n border-bottom: 1px solid #e4e4e4;\\n box-shadow: none !important; }\\n\\n.top-navbar .smart-power-reader-logo {\\n content: '';\\n background: url('smart-power-reader.jpg') no-repeat;\\n background-size: auto 50px;\\n background-position: center center;\\n width: 100px;\\n float: left;\\n height: 50px; }\\n\\n.top-navbar .navbar-brand {\\n color: #333; }\\n\\n.avatar {\\n width: 50px;\\n height: 50px; }\\n\\n.navbar-brand img {\\n width: auto;\\n height: 50px !important; }\\n\"","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n\n logout() {\n\n }\n}\n","module.exports = \"
\\n
Configuration
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n DeviceID\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n Name\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \\n Period\\n \\n
\\n \\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n\"","module.exports = \".header {\\n font-size: 30px;\\n font-weight: bold; }\\n\\n.row {\\n margin-left: 0;\\n margin-right: 0;\\n width: 650px; }\\n\\n.row .first-column {\\n width: 400px; }\\n\\n.row .first-column .input-group-prepend {\\n width: 90px !important; }\\n\\n.row .first-column .input-form {\\n width: 275px; }\\n\\n.row .second-column .form-control {\\n width: 150px; }\\n\\n.form-control {\\n border-radius: 0.25rem !important; }\\n\\n.cancel-button {\\n background-color: #cc1c35;\\n color: white; }\\n\\n.save-button {\\n background-color: #009688;\\n color: white; }\\n\\nbutton {\\n width: 100px;\\n height: 35px;\\n border: none;\\n border-radius: 3px;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\"","import {Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ModalService} from '../../../../shared/services/modal.service';\nimport {SensorService} from '../../services/sensor.service';\nimport {Sensor} from '../../../../core/interfaces/sensor.interface';\n\n@Component({\n selector: 'app-components',\n templateUrl: './edit.component.html',\n styleUrls: ['./edit.component.scss']\n})\nexport class EditComponent implements OnInit {\n form: FormGroup;\n sensors: Sensor[];\n selectedSensor: Sensor;\n @Output() onClosed = new EventEmitter();\n @Output() onUpdated = new EventEmitter();\n\n\n constructor(private sensorService: SensorService) {\n }\n\n ngOnInit() {\n this.form = new FormGroup({\n deviceId: new FormControl(''),\n deviceName: new FormControl(),\n period: new FormControl(0, [Validators.min(0)])\n });\n }\n\n save() {\n const formValue = this.form.getRawValue();\n const editedSensor = {\n id: formValue.deviceId,\n period: formValue.period,\n status: this.selectedSensor.status\n };\n\n if (formValue.deviceName) {\n editedSensor['name'] = formValue.deviceName;\n }\n this.sensorService.updateSensors(editedSensor).subscribe(res => {\n this.onUpdated.emit(editedSensor);\n });\n }\n\n isFormValid() {\n return !this.form.invalid;\n }\n\n onChangeSensor(event) {\n const id = event.target.value;\n this.selectedSensor = this.sensors.find(sensor => sensor.id === id);\n this.form.controls['deviceName'].setValue(this.selectedSensor.name ? this.selectedSensor.name : null);\n this.form.controls['period'].setValue(this.selectedSensor.period ? this.selectedSensor.period : 1);\n }\n\n close() {\n this.onClosed.emit();\n }\n}\n","module.exports = \"
\\n
\\n
\\n\\n \\n \\n \\n
\\n
\\n {{device.name ? device.name : device.id}}\\n
\\n
\\n \\n \\n\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
From
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
To
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
\\n
\\n\\n
\\n
\\n\\n\\n\\n\\n\\n\"","module.exports = \".header {\\n font-size: 25px; }\\n\\ninput[type=\\\"time\\\"] {\\n display: inline-block;\\n padding: .375rem .75rem;\\n font-size: 1rem;\\n line-height: 1.5;\\n color: #495057;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 1px solid black;\\n border-radius: .25rem;\\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\\n.input-group {\\n border: 1px solid black;\\n border-radius: .25rem;\\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\\n.input-group .btn-outline-secondary {\\n border-right: 0;\\n border-bottom: 0;\\n border-top: 0; }\\n\\n.input-group .form-control {\\n border: none; }\\n\\n.input-group .form-control:focus {\\n border-right: 1px solid black;\\n box-shadow: none; }\\n\\n.input-group > .form-control:focus {\\n box-shadow: 0px 0px 1px 3px #448bfc; }\\n\\n.submit-button, .edit-button {\\n height: 35px;\\n width: 120px;\\n background-color: #009688;\\n color: white;\\n border-radius: 3px; }\\n\\n.submit-button:disabled {\\n background-color: #929396; }\\n\\n.filter-button {\\n height: 35px;\\n border: 1px solid black;\\n background-color: #E8E8E8;\\n border-radius: 3px;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\\ninput[type=\\\"time\\\"]:focus {\\n border-color: black;\\n box-shadow: 0px 0px 1px 3px #448bfc; }\\n\\n.filter-button :hover, .filter-button :focus {\\n box-shadow: 0px 0px 1px 3px #448bfc; }\\n\"","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormControl, FormGroup} from '@angular/forms';\nimport {formatDate} from '@angular/common';\nimport {addDays, addMonths, Day, firstDayInWeek, firstDayOfMonth, lastDayOfMonth} from '@progress/kendo-date-math';\nimport {Sensor} from 'core/interfaces/sensor.interface';\nimport {ModalService} from '../../../../shared/services/modal.service';\nimport {EditComponent} from '../edit/edit.component';\nimport {select, Store} from '@ngrx/store';\nimport * as fromRoot from 'store/reducers';\nimport {UpdateSensorsSAction} from 'store/actions/sensors';\n\n\n@Component({\n selector: 'app-filter-bar',\n templateUrl: './filter-bar.component.html',\n styleUrls: ['./filter-bar.component.scss']\n})\nexport class FilterBarComponent implements OnInit {\n form: FormGroup;\n sensors: Sensor[];\n @Output() onChangedValue = new EventEmitter();\n isLoading: boolean;\n\n startTime: Date;\n endTime: Date;\n isFormValid: boolean;\n now: string;\n\n selectedDevices = [];\n\n constructor(private modalService: ModalService,\n private store: Store) {\n }\n\n ngOnInit() {\n this.isLoading = true;\n this.now = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n const todayArr = this.now.split('-');\n const today = {\n year: +todayArr[0],\n month: +todayArr[1],\n day: +todayArr[2]\n };\n this.form = new FormGroup({\n startDate: new FormControl(today),\n endDate: new FormControl(today),\n startTime: new FormControl('00:00'),\n endTime: new FormControl('23:59')\n }\n );\n\n const raw = this.form.getRawValue();\n this.startTime = this.combineToDate(raw.startDate, raw.startTime);\n this.endTime = this.combineToDate(raw.endDate, raw.endTime);\n this.isFormValid = this.startTime < this.endTime;\n\n setTimeout(() => {\n this.store.pipe(select(fromRoot.getSensors)).subscribe(sensors => {\n this.sensors = sensors;\n this.isLoading = false;\n });\n }, 500);\n\n\n this.form.valueChanges.subscribe(data => {\n const rawValue = this.form.getRawValue();\n this.startTime = this.combineToDate(rawValue.startDate, rawValue.startTime);\n this.endTime = this.combineToDate(rawValue.endDate, rawValue.endTime);\n this.isFormValid = this.startTime < this.endTime;\n });\n }\n\n onSubmit() {\n const rawValue = this.form.getRawValue();\n rawValue['selectedDevices'] = this.selectedDevices;\n this.onChangedValue.emit(\n rawValue\n );\n }\n\n editDevice() {\n this.modalService.init(EditComponent, {sensors: this.sensors}, {\n onUpdated: (editedSensor: Sensor) => {\n const index = this.sensors.findIndex(sensor => sensor.id === editedSensor.id);\n this.sensors[index] = editedSensor;\n this.store.dispatch(new UpdateSensorsSAction(this.sensors));\n this.modalService.destroy();\n },\n onClosed: () => {\n this.modalService.destroy();\n }\n });\n }\n\n selectDate(offset: number = 0) {\n const date = this.convertDateToHashMap(addDays(new Date(), offset));\n this.form.controls['startDate'].setValue(date);\n this.form.controls['endDate'].setValue(date);\n }\n\n selectWeek(from: number = 0, to: number = 0) {\n const fromWeek = firstDayInWeek(addDays(new Date(), from), Day.Monday);\n const toWeek = addDays(firstDayInWeek(addDays(new Date(), to), Day.Monday), 6);\n const startDate = this.convertDateToHashMap(fromWeek);\n const endDate = this.convertDateToHashMap(toWeek);\n this.form.controls['startDate'].setValue(startDate);\n this.form.controls['endDate'].setValue(endDate);\n }\n\n selectMonth(from: number = 0, to: number = 0) {\n const fromMonth = addMonths(new Date(), from);\n const toMonth = addMonths(new Date(), to);\n const startDate = this.convertDateToHashMap(firstDayOfMonth(fromMonth));\n const endDate = this.convertDateToHashMap(lastDayOfMonth(toMonth));\n this.form.controls['startDate'].setValue(startDate);\n this.form.controls['endDate'].setValue(endDate);\n }\n\n selectYear(num: number = 0) {\n const year = new Date().getFullYear() + num;\n const startYear = this.convertDateToHashMap(new Date(year, 0, 1));\n const endYear = this.convertDateToHashMap(new Date(year, 11, 31));\n this.form.controls['startDate'].setValue(startYear);\n this.form.controls['endDate'].setValue(endYear);\n }\n\n private convertDateToHashMap(date) {\n const dateString = formatDate(date, 'yyyy-MM-dd', 'en');\n const dateArr = dateString.split('-');\n return {\n year: +dateArr[0],\n month: +dateArr[1],\n day: +dateArr[2]\n };\n }\n\n private combineToDate(dateHashMap: any, time: string) {\n const date = new Date(dateHashMap.year, dateHashMap.month - 1, dateHashMap.day,\n +time.substr(0, 2), +time.substr(3, 2));\n return date;\n }\n\n activeHover(className) {\n console.log(document.getElementsByClassName('input-group ' + className).item(0));\n }\n\n\n change(event) {\n const device = event.source.value as Sensor;\n if (event.isUserInput) {\n if (event.source.selected)\n this.selectedDevices.push([device.id, device.name]);\n else {\n const index = this.selectedDevices.findIndex(item => device.id === item[0]);\n this.selectedDevices.splice(index, 1);\n }\n }\n }\n\n}\n","module.exports = \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n\\n \\n \\n\\n
\\n\\n\"","module.exports = \".graph-wrapper {\\n overflow: scroll;\\n height: calc(100vh - 81px - 100px - 100px); }\\n .graph-wrapper ngx-charts-legend {\\n margin-left: 20px !important; }\\n\"","import {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {SensorService} from '../../services/sensor.service';\nimport {Sensor} from 'core/interfaces/sensor.interface';\nimport {formatDate} from '@angular/common';\nimport {GET_MEASUREMENT} from '../../constants/constants';\n\n@Component({\n selector: 'app-graph-summary',\n templateUrl: './graph-summary.component.html',\n styleUrls: ['./graph-summary.component.scss']\n})\nexport class GraphSummaryComponent implements OnInit, AfterViewInit {\n results: Sensor[] = [];\n isLoading = true;\n isLoaded = false;\n\n showXAxis = true;\n showYAxis = true;\n showLegend = true;\n showXAxisLabel = true;\n showYAxisLabel = true;\n yAxisLabel = 'Power Meter';\n roundDomains = true;\n autoScale = true;\n ticks = [];\n indexTicks = [];\n simpleTicks = [];\n isLessThan3Days = false;\n isLessThan1Month = false;\n\n colorScheme = {\n domain: ['#5AA454', '#A10A28', '#C7B42C', '#AAAAAA']\n };\n\n constructor(private sensorService: SensorService) {\n }\n\n ngOnInit() {\n }\n\n drawGraph(selectedDevices: any[], from: number, to: number) {\n this.isLoading = true;\n this.isLoaded = false;\n this.isLessThan3Days = false;\n this.results = [];\n for (let i = 0; i < selectedDevices.length; i++) {\n const params = {\n action: GET_MEASUREMENT,\n id: selectedDevices[i][0],\n from: from,\n to: to,\n count: 100\n };\n setTimeout(() => {\n this.sensorService.getData(params).subscribe((res) => {\n const series = res.map(s => ({\n name: s.timestamp,\n value: s.value\n }));\n\n series.sort((a, b) => a.name < b.name ? 1 : (a.name > b.name ? 1 : 0));\n const newSensor = {\n id: params.id,\n name: selectedDevices[i][1] ? selectedDevices[i][1] : params.id,\n series: series\n } as Sensor;\n this.results.push(newSensor);\n if (i === selectedDevices.length - 1) {\n this.isLoading = false;\n }\n });\n }, 2000);\n }\n this.isLessThan3Days = to - from <= 86340000 * 3;\n this.isLessThan1Month = to - from <= 86340000 * 38;\n\n\n }\n\n\n ngAfterViewInit(): void {\n setTimeout(_ => {\n window.dispatchEvent(new Event('resize'));\n }); // BUGFIX:\n }\n\n\n axisFormatMonth(val) {\n return formatDate(new Date(val), 'MMM yyyy', 'en');\n }\n\n axisFormatTime(val) {\n return formatDate(new Date(val), 'MMM dd HH:mm', 'en');\n }\n\n axisFormatDate(val) {\n return formatDate(new Date(val), 'dd MMM', 'en');\n }\n\n}\n","export const GET_MEASUREMENT = 'query-measurement';\nexport const GET_SENSORS = 'query-devices';\nexport const UPDATE_SENSORS = 'put-device';\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class HomeRoutingModule { }\n","import {NgModule} from '@angular/core';\n\nimport {HomeRoutingModule} from './home-routing.module';\nimport {SharedModule} from '../../shared/shared.module';\nimport {HomePageComponent} from './pages/home-page.component';\nimport {EditComponent} from './components/edit/edit.component';\nimport {FilterBarComponent} from './components/filter-bar/filter-bar.component';\nimport {GraphSummaryComponent} from './components/graph-summary/graph-summary.component';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {AmazingTimePickerModule} from 'amazing-time-picker';\nimport {NgxChartsModule} from '@swimlane/ngx-charts';\nimport {SensorService} from './services/sensor.service';\nimport {BrowserAnimationsModule, NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {MatDatepickerModule, MatFormFieldModule, MatIconModule, MatNativeDateModule, MatSelectModule} from '@angular/material';\n\n\n@NgModule({\n imports: [\n SharedModule,\n HomeRoutingModule,\n NgbModule,\n AmazingTimePickerModule,\n NgxChartsModule,\n BrowserAnimationsModule,\n NoopAnimationsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule\n ],\n declarations: [\n HomePageComponent,\n EditComponent,\n FilterBarComponent,\n GraphSummaryComponent\n ],\n providers: [\n SensorService\n ]\n})\nexport class HomeModule {\n}\n","module.exports = \"
\\n \\n \\n \\n
\\n\"","module.exports = \".main-page {\\n min-height: calc(100vh - 81px - 100px); }\\n\"","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {GraphSummaryComponent} from '../components/graph-summary/graph-summary.component';\nimport {SensorService} from '../services/sensor.service';\nimport {Store} from '@ngrx/store';\nimport * as fromRoot from 'store/reducers';\nimport {SensorsLoadedFailAction, SensorsLoadedSuccessAction, SensorsLoadingAction} from 'store/actions/sensors';\n\n@Component({\n selector: 'app-homepage',\n templateUrl: './home-page.component.html',\n styleUrls: ['./home-page.component.scss']\n})\nexport class HomePageComponent implements OnInit {\n from: number;\n to: number;\n isLoading = true;\n\n @ViewChild(GraphSummaryComponent) graphSummaryComponent: GraphSummaryComponent;\n\n constructor(private sensorService: SensorService,\n private store: Store) {\n }\n\n ngOnInit() {\n setTimeout(() => {\n this.getAllSensors();\n }, 500);\n\n }\n\n onChangedValue(data) {\n this.from = this.convertToDate(data['startDate'], data['startTime']).valueOf();\n this.to = this.convertToDate(data['endDate'], data['endTime']).valueOf();\n this.graphSummaryComponent.drawGraph(data.selectedDevices, this.from, this.to);\n }\n\n private convertToDate(date, time) {\n const year = date.year;\n const month = date.month;\n const day = date.day;\n const timeArr = time.split(':');\n const hour = +timeArr[0];\n const minute = +timeArr[1];\n return new Date(year, month - 1, day, hour, minute);\n }\n\n private getAllSensors() {\n // this.isLoading = true;\n this.store.dispatch(new SensorsLoadingAction());\n // const testData = [\n // {\n // id: 'test12',\n // name: '345',\n // period: 456,\n // status: SensorStatus.CONNECTED\n // },\n // {\n // id: 'thahah',\n // name: 'hoho',\n // period: 456,\n // status: SensorStatus.DISCONNECTED\n // }];\n // this.store.dispatch(new SensorsLoadedSuccessAction(testData));\n // this.isLoading = false;\n this.sensorService.getAllSenors().subscribe(sensorList => {\n this.store.dispatch(new SensorsLoadedSuccessAction(sensorList));\n // this.isLoading = false;\n }, error1 => {\n this.store.dispatch(new SensorsLoadedFailAction());\n // this.isLoading = false;\n });\n\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {environment} from 'environments/environment';\nimport {Observable} from 'rxjs';\nimport {Sensor} from 'core/interfaces/sensor.interface';\nimport {GET_SENSORS, UPDATE_SENSORS} from '../constants/constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SensorService {\n\n constructor(private httpClient: HttpClient) {\n }\n\n getData(params: any): Observable {\n return this.httpClient.get(`${environment.sensorUrl}/devices`, {params: params});\n }\n\n getAllSenors(): Observable {\n const params = {\n action: GET_SENSORS\n };\n return this.httpClient.get(`${environment.sensorUrl}`, {params: params});\n }\n\n updateSensors(body: any): Observable {\n const params = {\n action: UPDATE_SENSORS\n };\n return this.httpClient.put(`${environment.sensorUrl}`, body, {params: params});\n }\n\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n
\\n\"","module.exports = \".spinner {\\n margin: 0 auto;\\n width: 70px;\\n text-align: center; }\\n\\n.spinner > div {\\n width: 12px;\\n height: 12px;\\n background-color: #fff;\\n border-radius: 100%;\\n display: inline-block;\\n -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\\n animation: sk-bouncedelay 1.4s infinite ease-in-out both; }\\n\\n.spinner .bounce1 {\\n -webkit-animation-delay: -0.32s;\\n animation-delay: -0.32s; }\\n\\n.spinner .bounce2 {\\n -webkit-animation-delay: -0.16s;\\n animation-delay: -0.16s; }\\n\\n@-webkit-keyframes sk-bouncedelay {\\n 0%, 80%, 100% {\\n -webkit-transform: scale(0); }\\n 40% {\\n -webkit-transform: scale(1); } }\\n\\n@keyframes sk-bouncedelay {\\n 0%, 80%, 100% {\\n -webkit-transform: scale(0);\\n transform: scale(0); }\\n 40% {\\n -webkit-transform: scale(1);\\n transform: scale(1); } }\\n\"","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'app-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n styleUrls: ['./loading-spinner.component.scss']\n})\nexport class LoadingSpinnerComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import {ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, EventEmitter, Injectable, Injector} from '@angular/core';\n\n@Injectable(\n {providedIn: 'root'}\n)\nexport class DomService {\n private childComponentRef: any;\n private workingChild: String;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private appRef: ApplicationRef,\n private injector: Injector) {\n this.workingChild = '';\n }\n\n public appendComponentTo(parentId: string, child: any, childConfig?: ChildConfig) {\n // Create a component reference from the component\n const childComponent = this.componentFactoryResolver.resolveComponentFactory(child);\n if (childComponent.componentType.name !== this.workingChild) {\n this.addComponent(parentId, child, childConfig);\n this.workingChild = childComponent.componentType.name;\n }\n }\n\n public removeComponent() {\n this.appRef.detachView(this.childComponentRef.hostView);\n this.childComponentRef.destroy();\n this.workingChild = '';\n }\n\n private attachConfig(config, componentRef) {\n const inputs = config.inputs;\n const outputs = config.outputs;\n for (const key in inputs) {\n componentRef.instance[key] = inputs[key];\n }\n for (const key in outputs) {\n // componentRef.instance[key] = outputs[key];\n // subscribe to output event and invoke function\n // console.log(componentRef.instance[key], outputs[key]);\n if (componentRef.instance[key] instanceof EventEmitter) {\n componentRef.instance[key].subscribe(r => {\n outputs[key](r);\n });\n }\n }\n }\n\n private addComponent(parentId: string, childComponent: any, childConfig?: ChildConfig) {\n const childComponentRef = this.componentFactoryResolver\n .resolveComponentFactory(childComponent)\n .create(this.injector);\n // Check if a component is attached\n if (this.appRef.viewCount < 2) {\n // Attach the config to the child (inputs and outputs)\n this.attachConfig(childConfig, childComponentRef);\n this.childComponentRef = childComponentRef;\n // Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(childComponentRef.hostView);\n // Get DOM element from component\n const childDomElem = (childComponentRef.hostView as EmbeddedViewRef)\n .rootNodes[0] as HTMLElement;\n\n // Append DOM element to the body\n document.getElementById(parentId).appendChild(childDomElem);\n }\n }\n}\n\ninterface ChildConfig {\n inputs: object;\n outputs: object;\n}\n","import {Injectable} from '@angular/core';\nimport {DomService} from './dom.service';\n\n@Injectable(\n {providedIn: 'root'}\n)\nexport class ModalService {\n private modalElementId = 'modal-container';\n private overlayElementId = 'modal-background';\n private wrapperElementId = 'modal-wrapper';\n\n constructor(private domService: DomService) {\n }\n\n init(component: any, inputs: object, outputs: object) {\n const config = {\n inputs: inputs,\n outputs: outputs\n };\n this.domService.appendComponentTo(this.modalElementId, component, config);\n document.getElementById(this.modalElementId).style.visibility = 'visible';\n document.getElementById(this.overlayElementId).style.visibility = 'visible';\n document.getElementById(this.wrapperElementId).style.display = 'block';\n }\n\n destroy() {\n this.domService.removeComponent();\n document.getElementById(this.modalElementId).style.visibility = 'hidden';\n document.getElementById(this.overlayElementId).style.visibility = 'hidden';\n document.getElementById(this.wrapperElementId).style.display = 'none';\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {LoadingSpinnerComponent} from './components/loading-spinner/loading-spinner.component';\nimport {HttpClientModule} from '@angular/common/http';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule\n ],\n declarations: [\n LoadingSpinnerComponent\n ],\n exports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n LoadingSpinnerComponent,\n HttpClientModule\n ]\n})\nexport class SharedModule {\n}\n","import {Action} from '@ngrx/store';\n\n\nexport const UPDATE_SENSORS = 'main/UPDATE-SENSORS';\n\nexport const CLEAR_SENSORS = 'main/CLEAR-SENSORS';\n\nexport const SENSORS_LOADING = 'main/SENSORS_LOADING';\nexport const SENSORS_LOAD_SUCCESS = 'main/SENSORS_LOAD_SUCCESS';\nexport const SENSORS_LOAD_FAIL = 'main/SENSORS_LOAD_FAIL';\n\nexport const SELECT_SENSORS = 'main/SELECT_SENSORS';\n\n\n\n/**\n * Update Sensors Action\n */\nexport class UpdateSensorsSAction implements Action {\n readonly type = UPDATE_SENSORS;\n\n constructor(public payload: any) { }\n}\n\n\n/**\n * Update Selected Sensors Action\n */\nexport class SelectSensorsAction implements Action {\n readonly type = SELECT_SENSORS;\n\n constructor(public payload: any) { }\n}\n\n\n/**\n * Load Sensors Action\n */\nexport class SensorsLoadingAction implements Action {\n readonly type = SENSORS_LOADING;\n constructor() {\n }\n}\n\nexport class SensorsLoadedSuccessAction implements Action {\n readonly type = SENSORS_LOAD_SUCCESS;\n\n constructor(public payload: any) { }\n}\n\n\nexport class SensorsLoadedFailAction implements Action {\n readonly type = SENSORS_LOAD_FAIL;\n\n constructor() { }\n}\n\n\n/**\n * Clear Sensors Actions\n */\nexport class ClearSensorsAction implements Action {\n readonly type = CLEAR_SENSORS;\n\n constructor() { }\n}\n\n\nexport type Actions\n = UpdateSensorsSAction\n | SelectSensorsAction\n | SensorsLoadingAction\n | SensorsLoadedSuccessAction\n | SensorsLoadedFailAction\n | ClearSensorsAction;\n","import {ActionReducer, ActionReducerMap, combineReducers, createSelector, MetaReducer} from '@ngrx/store';\nimport {environment} from 'environments/environment';\n\nimport * as fromSensors from './sensors';\n\n// import * as fromRouter from './router';\n\n\nexport interface State {\n sensors: fromSensors.State;\n}\n\nexport const reducers: ActionReducerMap = {\n sensors: fromSensors.reducer,\n};\n\n\nexport function logger(reduce: ActionReducer): ActionReducer {\n return (state: State, action: any): any => {\n const result = reduce(state, action);\n console.groupCollapsed(action.type);\n console.log('prev state', state);\n console.log('action', action);\n console.log('next state', result);\n console.groupEnd();\n\n return result;\n };\n}\n\n// const developmentReducer: ActionReducer = compose(storeFreeze, combineReducers)(reducers);\nexport const productionReducer: ActionReducer = combineReducers(reducers);\n\nexport function reducer(state: any, action: any) {\n// if (environment.production) {\n return productionReducer(state, action);\n// } else {\n// return developmentReducer(state, action);\n// }\n}\n\nexport const getSensorslState = (state: State) => state.sensors;\n\nexport const getSelectedSensors = createSelector(getSensorslState, fromSensors.getSelectedSensors);\nexport const getSensors = createSelector(getSensorslState, fromSensors.getSensors);\n\n\n// export const metaReducers: MetaReducer[] = !environment.production ? [] : [];\nexport const metaReducers: MetaReducer[] = !environment.production\n ? []\n : [];\n","import * as sensors from '../actions/sensors';\nimport {Sensor} from '../../core/interfaces/sensor.interface';\n\nexport interface State {\n sensors: Sensor[];\n selectedSensors: Sensor[];\n loading: boolean;\n loaded: boolean;\n}\n\nconst initialState: State = {\n sensors: [],\n selectedSensors: [],\n loading: false,\n loaded: false,\n};\n\n\nexport function reducer(state = initialState, action: sensors.Actions): State {\n\n switch (action.type) {\n case sensors.SENSORS_LOADING: {\n return Object.assign({}, state, {\n loading: true,\n loaded: false\n });\n }\n\n case sensors.SENSORS_LOAD_SUCCESS: {\n return Object.assign({}, state, {\n loading: false,\n loaded: true,\n sensors: action.payload,\n selectedSensors: []\n });\n }\n\n case sensors.SENSORS_LOAD_FAIL: {\n return Object.assign({}, state, {\n loading: false,\n loaded: false,\n });\n }\n\n case sensors.UPDATE_SENSORS: {\n return Object.assign({}, state, {\n sensors: JSON.parse(JSON.stringify(action.payload)),\n });\n }\n\n case sensors.SELECT_SENSORS: {\n return Object.assign({}, state, {\n selectedSensors: JSON.parse(JSON.stringify(action.payload))\n });\n }\n\n case sensors.CLEAR_SENSORS: {\n return Object.assign({}, state, {\n sensors: [],\n selectedSensors: [],\n });\n }\n default: {\n return state;\n }\n }\n}\n\nexport const getSensors = (state: State) => state.sensors;\nexport const getSelectedSensors = (state: State) => state.selectedSensors;\n\n\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nconst serverUrl = 'http://192.168.1.236:3000';\nexport const environment: any = {\n production: false,\n serverUrl: serverUrl,\n sensorUrl: serverUrl + '/sensors'\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import {enableProdMode} from '@angular/core';\nimport {platformBrowserDynamic} from '@angular/platform-browser-dynamic';\n\nimport {AppModule} from './app/app.module';\nimport {environment} from './environments/environment';\nimport 'hammerjs';\n\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/core/footer/footer.component.html","webpack:///./src/app/core/footer/footer.component.scss","webpack:///./src/app/core/footer/footer.component.ts","webpack:///./src/app/core/header/header.component.html","webpack:///./src/app/core/header/header.component.scss","webpack:///./src/app/core/header/header.component.ts","webpack:///./src/app/modules/home/components/edit/edit.component.html","webpack:///./src/app/modules/home/components/edit/edit.component.scss","webpack:///./src/app/modules/home/components/edit/edit.component.ts","webpack:///./src/app/modules/home/components/filter-bar/filter-bar.component.html","webpack:///./src/app/modules/home/components/filter-bar/filter-bar.component.scss","webpack:///./src/app/modules/home/components/filter-bar/filter-bar.component.ts","webpack:///./src/app/modules/home/components/graph-summary/graph-summary.component.html","webpack:///./src/app/modules/home/components/graph-summary/graph-summary.component.scss","webpack:///./src/app/modules/home/components/graph-summary/graph-summary.component.ts","webpack:///./src/app/modules/home/constants/constants.ts","webpack:///./src/app/modules/home/home-routing.module.ts","webpack:///./src/app/modules/home/home.module.ts","webpack:///./src/app/modules/home/pages/home-page.component.html","webpack:///./src/app/modules/home/pages/home-page.component.scss","webpack:///./src/app/modules/home/pages/home-page.component.ts","webpack:///./src/app/modules/home/services/sensor.service.ts","webpack:///./src/app/shared/components/loading-spinner/loading-spinner.component.html","webpack:///./src/app/shared/components/loading-spinner/loading-spinner.component.scss","webpack:///./src/app/shared/components/loading-spinner/loading-spinner.component.ts","webpack:///./src/app/shared/services/dom.service.ts","webpack:///./src/app/shared/services/modal.service.ts","webpack:///./src/app/shared/shared.module.ts","webpack:///./src/app/store/actions/sensors.ts","webpack:///./src/app/store/reducers/index.ts","webpack:///./src/app/store/reducers/sensors.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {HomePageComponent} from './modules/home/pages/home-page.component';\n\nconst routes: Routes = [\n {path: '', component: HomePageComponent},\n {path: '*', component: HomePageComponent},\n {path: '**', redirectTo: ''},\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n
\\n \\n
\\n\\n\\n\\n\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\"","module.exports = \"\"","import {Component, OnInit} from '@angular/core';\nimport {ModalService} from './shared/services/modal.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n title = 'Smart Power Reader';\n\n isOnHomepage: boolean;\n\n constructor(private modalService: ModalService,\n private router: Router) {\n\n }\n\n ngOnInit(): void {\n this.router.events.subscribe(val => {\n this.isOnHomepage = this.router.url === '/';\n });\n }\n\n closeModal() {\n this.modalService.destroy();\n }\n}\n","import {BrowserModule} from '@angular/platform-browser';\nimport {NgModule} from '@angular/core';\n\nimport {AppComponent} from './app.component';\nimport {FooterComponent} from 'core/footer/footer.component';\nimport {HeaderComponent} from 'core/header/header.component';\nimport {EditComponent} from './modules/home/components/edit/edit.component';\nimport {AppRoutingModule} from './app-routing.module';\nimport {HomeModule} from './modules/home/home.module';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport { StoreModule } from '@ngrx/store';\nimport { reducers, metaReducers } from './store/reducers';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { environment } from 'environments/environment';\n\n@NgModule({\n declarations: [\n AppComponent,\n FooterComponent,\n HeaderComponent,\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n HomeModule,\n StoreModule.forRoot(reducers, { metaReducers }),\n !environment.production ? StoreDevtoolsModule.instrument() : [],\n ],\n providers: [],\n bootstrap: [AppComponent],\n entryComponents: [\n EditComponent\n ]\n})\nexport class AppModule {\n}\n","module.exports = \"
\\n
\\n
\\n \\n \\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n\\n\"","module.exports = \".avatar {\\n height: 50px;\\n width: 50px; }\\n\\n.buttonFooter {\\n position: -webkit-sticky;\\n position: sticky;\\n bottom: 20px; }\\n\\nfooter {\\n border-top: 1px solid #e4e4e4;\\n height: 100px;\\n padding: 20px 0; }\\n\\nfooter a {\\n text-decoration: none;\\n color: #333; }\\n\"","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\\n
\\n\\n\\n\\n\\n\"","module.exports = \"a.nav-link {\\n color: white; }\\n\\n.nav-item {\\n padding-left: 5px; }\\n\\n.top-navbar {\\n height: 81px;\\n background: #ffffff;\\n border-bottom: 1px solid #e4e4e4;\\n box-shadow: none !important; }\\n\\n.top-navbar .smart-power-reader-logo {\\n content: '';\\n background: url('smart-power-reader.jpg') no-repeat;\\n background-size: auto 50px;\\n background-position: center center;\\n width: 100px;\\n float: left;\\n height: 50px; }\\n\\n.top-navbar .navbar-brand {\\n color: #333; }\\n\\n.avatar {\\n width: 50px;\\n height: 50px; }\\n\\n.navbar-brand img {\\n width: auto;\\n height: 50px !important; }\\n\"","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n\n logout() {\n\n }\n}\n","module.exports = \"
\\n
Configuration
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n DeviceID\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n Name\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \\n Period\\n \\n
\\n \\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n\"","module.exports = \".header {\\n font-size: 30px;\\n font-weight: bold; }\\n\\n.row {\\n margin-left: 0;\\n margin-right: 0;\\n width: 650px; }\\n\\n.row .first-column {\\n width: 400px; }\\n\\n.row .first-column .input-group-prepend {\\n width: 90px !important; }\\n\\n.row .first-column .input-form {\\n width: 275px; }\\n\\n.row .second-column .form-control {\\n width: 150px; }\\n\\n.form-control {\\n border-radius: 0.25rem !important; }\\n\\n.cancel-button {\\n background-color: #cc1c35;\\n color: white; }\\n\\n.save-button {\\n background-color: #009688;\\n color: white; }\\n\\nbutton {\\n width: 100px;\\n height: 35px;\\n border: none;\\n border-radius: 3px;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\"","import {Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {ModalService} from '../../../../shared/services/modal.service';\nimport {SensorService} from '../../services/sensor.service';\nimport {Sensor} from '../../../../core/interfaces/sensor.interface';\n\n@Component({\n selector: 'app-components',\n templateUrl: './edit.component.html',\n styleUrls: ['./edit.component.scss']\n})\nexport class EditComponent implements OnInit {\n form: FormGroup;\n sensors: Sensor[];\n selectedSensor: Sensor;\n @Output() onClosed = new EventEmitter();\n @Output() onUpdated = new EventEmitter();\n\n\n constructor(private sensorService: SensorService) {\n }\n\n ngOnInit() {\n this.form = new FormGroup({\n deviceId: new FormControl(''),\n deviceName: new FormControl(),\n period: new FormControl(0, [Validators.min(0)])\n });\n }\n\n save() {\n const formValue = this.form.getRawValue();\n const editedSensor = {\n id: formValue.deviceId,\n period: formValue.period,\n status: this.selectedSensor.status,\n name: !formValue.deviceName || (formValue.deviceName && formValue.deviceName.length === 0)\n ? null\n : formValue.deviceName\n };\n\n this.sensorService.updateSensors(editedSensor).subscribe(res => {\n this.onUpdated.emit(editedSensor);\n });\n }\n\n isFormValid() {\n return !this.form.invalid;\n }\n\n onChangeSensor(event) {\n const id = event.target.value;\n this.selectedSensor = this.sensors.find(sensor => sensor.id === id);\n this.form.controls['deviceName'].setValue(this.selectedSensor.name ? this.selectedSensor.name : null);\n this.form.controls['period'].setValue(this.selectedSensor.period ? this.selectedSensor.period : 1);\n }\n\n close() {\n this.onClosed.emit();\n }\n}\n","module.exports = \"
\\n
\\n
\\n\\n \\n \\n \\n
\\n
\\n {{device.name ? device.name : device.id}}\\n
\\n
\\n \\n \\n\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
From
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
To
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
\\n
\\n\\n
\\n
\\n\\n\\n\\n\\n\\n\"","module.exports = \".header {\\n font-size: 25px; }\\n\\ninput[type=\\\"time\\\"] {\\n display: inline-block;\\n padding: .375rem .75rem;\\n font-size: 1rem;\\n line-height: 1.5;\\n color: #495057;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 1px solid black;\\n border-radius: .25rem;\\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\\n.input-group {\\n border: 1px solid black;\\n border-radius: .25rem;\\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\\n.input-group .btn-outline-secondary {\\n border-right: 0;\\n border-bottom: 0;\\n border-top: 0; }\\n\\n.input-group .form-control {\\n border: none; }\\n\\n.input-group .form-control:focus {\\n border-right: 1px solid black;\\n box-shadow: none; }\\n\\n.input-group > .form-control:focus {\\n box-shadow: 0px 0px 1px 3px #448bfc; }\\n\\n.submit-button, .edit-button {\\n height: 35px;\\n width: 120px;\\n background-color: #009688;\\n color: white;\\n border-radius: 3px; }\\n\\n.submit-button:disabled {\\n background-color: #929396; }\\n\\n.filter-button {\\n height: 35px;\\n border: 1px solid black;\\n background-color: #E8E8E8;\\n border-radius: 3px;\\n box-shadow: 0 0 0.75rem #e4e4e4; }\\n\\ninput[type=\\\"time\\\"]:focus {\\n border-color: black;\\n box-shadow: 0px 0px 1px 3px #448bfc; }\\n\\n.filter-button :hover, .filter-button :focus {\\n box-shadow: 0px 0px 1px 3px #448bfc; }\\n\\n.description {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis; }\\n\"","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormControl, FormGroup} from '@angular/forms';\nimport {formatDate} from '@angular/common';\nimport {addDays, addMonths, Day, firstDayInWeek, firstDayOfMonth, lastDayOfMonth} from '@progress/kendo-date-math';\nimport {Sensor} from 'core/interfaces/sensor.interface';\nimport {ModalService} from '../../../../shared/services/modal.service';\nimport {EditComponent} from '../edit/edit.component';\nimport {select, Store} from '@ngrx/store';\nimport * as fromRoot from 'store/reducers';\nimport {UpdateSensorsSAction} from 'store/actions/sensors';\n\n\n@Component({\n selector: 'app-filter-bar',\n templateUrl: './filter-bar.component.html',\n styleUrls: ['./filter-bar.component.scss']\n})\nexport class FilterBarComponent implements OnInit {\n form: FormGroup;\n sensors: Sensor[] = [];\n @Output() onChangedValue = new EventEmitter();\n isLoading: boolean;\n\n startTime: Date;\n endTime: Date;\n isFormValid: boolean;\n now: string;\n\n selectedDevices = [];\n\n constructor(private modalService: ModalService,\n private store: Store) {\n }\n\n ngOnInit() {\n this.isLoading = true;\n this.now = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n const todayArr = this.now.split('-');\n const today = {\n year: +todayArr[0],\n month: +todayArr[1],\n day: +todayArr[2]\n };\n this.form = new FormGroup({\n startDate: new FormControl(today),\n endDate: new FormControl(today),\n startTime: new FormControl('00:00'),\n endTime: new FormControl('23:59')\n }\n );\n\n const raw = this.form.getRawValue();\n this.startTime = this.combineToDate(raw.startDate, raw.startTime);\n this.endTime = this.combineToDate(raw.endDate, raw.endTime);\n this.isFormValid = this.startTime < this.endTime;\n\n setTimeout(() => {\n this.store.pipe(select(fromRoot.getSensors)).subscribe(sensors => {\n this.sensors = sensors;\n this.isLoading = false;\n });\n }, 500);\n\n\n this.form.valueChanges.subscribe(data => {\n const rawValue = this.form.getRawValue();\n this.startTime = this.combineToDate(rawValue.startDate, rawValue.startTime);\n this.endTime = this.combineToDate(rawValue.endDate, rawValue.endTime);\n this.isFormValid = this.startTime < this.endTime;\n });\n }\n\n onSubmit() {\n const rawValue = this.form.getRawValue();\n rawValue['selectedDevices'] = this.selectedDevices;\n this.onChangedValue.emit(\n rawValue\n );\n }\n\n editDevice() {\n this.modalService.init(EditComponent, {sensors: this.sensors}, {\n onUpdated: (editedSensor: Sensor) => {\n const index = this.sensors.findIndex(sensor => sensor.id === editedSensor.id);\n this.sensors[index] = editedSensor;\n this.store.dispatch(new UpdateSensorsSAction(this.sensors));\n this.modalService.destroy();\n },\n onClosed: () => {\n this.modalService.destroy();\n }\n });\n }\n\n selectDate(offset: number = 0) {\n const date = this.convertDateToHashMap(addDays(new Date(), offset));\n this.form.controls['startDate'].setValue(date);\n this.form.controls['endDate'].setValue(date);\n }\n\n selectWeek(from: number = 0, to: number = 0) {\n const fromWeek = firstDayInWeek(addDays(new Date(), from), Day.Monday);\n const toWeek = addDays(firstDayInWeek(addDays(new Date(), to), Day.Monday), 6);\n const startDate = this.convertDateToHashMap(fromWeek);\n const endDate = this.convertDateToHashMap(toWeek);\n this.form.controls['startDate'].setValue(startDate);\n this.form.controls['endDate'].setValue(endDate);\n }\n\n selectMonth(from: number = 0, to: number = 0) {\n const fromMonth = addMonths(new Date(), from);\n const toMonth = addMonths(new Date(), to);\n const startDate = this.convertDateToHashMap(firstDayOfMonth(fromMonth));\n const endDate = this.convertDateToHashMap(lastDayOfMonth(toMonth));\n this.form.controls['startDate'].setValue(startDate);\n this.form.controls['endDate'].setValue(endDate);\n }\n\n selectYear(num: number = 0) {\n const year = new Date().getFullYear() + num;\n const startYear = this.convertDateToHashMap(new Date(year, 0, 1));\n const endYear = this.convertDateToHashMap(new Date(year, 11, 31));\n this.form.controls['startDate'].setValue(startYear);\n this.form.controls['endDate'].setValue(endYear);\n }\n\n private convertDateToHashMap(date) {\n const dateString = formatDate(date, 'yyyy-MM-dd', 'en');\n const dateArr = dateString.split('-');\n return {\n year: +dateArr[0],\n month: +dateArr[1],\n day: +dateArr[2]\n };\n }\n\n private combineToDate(dateHashMap: any, time: string) {\n const date = new Date(dateHashMap.year, dateHashMap.month - 1, dateHashMap.day,\n +time.substr(0, 2), +time.substr(3, 2));\n return date;\n }\n\n activeHover(className) {\n console.log(document.getElementsByClassName('input-group ' + className).item(0));\n }\n\n\n change(event) {\n const device = event.source.value as Sensor;\n if (event.isUserInput) {\n if (event.source.selected)\n this.selectedDevices.push([device.id, device.name]);\n else {\n const index = this.selectedDevices.findIndex(item => device.id === item[0]);\n this.selectedDevices.splice(index, 1);\n }\n }\n }\n\n}\n","module.exports = \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n\\n \\n \\n\\n
\\n\\n\"","module.exports = \".graph-wrapper {\\n overflow: scroll;\\n height: calc(100vh - 81px - 100px - 100px); }\\n .graph-wrapper ngx-charts-legend {\\n margin-left: 20px !important; }\\n\"","import {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {SensorService} from '../../services/sensor.service';\nimport {Sensor} from 'core/interfaces/sensor.interface';\nimport {formatDate} from '@angular/common';\nimport {GET_MEASUREMENT} from '../../constants/constants';\n\n@Component({\n selector: 'app-graph-summary',\n templateUrl: './graph-summary.component.html',\n styleUrls: ['./graph-summary.component.scss']\n})\nexport class GraphSummaryComponent implements OnInit, AfterViewInit {\n results: Sensor[] = [];\n isLoading = true;\n isLoaded = false;\n\n showXAxis = true;\n showYAxis = true;\n showLegend = true;\n showXAxisLabel = true;\n showYAxisLabel = true;\n yAxisLabel = 'Power Meter';\n roundDomains = true;\n autoScale = true;\n ticks = [];\n indexTicks = [];\n simpleTicks = [];\n isLessThan3Days = false;\n isLessThan1Month = false;\n\n colorScheme = {\n domain: ['#5AA454', '#A10A28', '#C7B42C', '#AAAAAA']\n };\n\n constructor(private sensorService: SensorService) {\n }\n\n ngOnInit() {\n }\n\n drawGraph(selectedDevices: any[], from: number, to: number) {\n this.isLoading = true;\n this.isLoaded = false;\n this.isLessThan3Days = false;\n this.results = [];\n for (let i = 0; i < selectedDevices.length; i++) {\n const params = {\n action: GET_MEASUREMENT,\n id: selectedDevices[i][0],\n from: from,\n to: to,\n count: 100\n };\n setTimeout(() => {\n this.sensorService.getData(params).subscribe((res) => {\n const series = res.map(s => ({\n name: s.timestamp,\n value: s.value\n }));\n\n series.sort((a, b) => a.name < b.name ? 1 : (a.name > b.name ? 1 : 0));\n const newSensor = {\n id: params.id,\n name: selectedDevices[i][1] ? selectedDevices[i][1] : params.id,\n series: series\n } as Sensor;\n this.results.push(newSensor);\n if (i === selectedDevices.length - 1) {\n this.isLoading = false;\n }\n });\n }, 2000);\n }\n this.isLessThan3Days = to - from <= 86340000 * 3;\n this.isLessThan1Month = to - from <= 86340000 * 38;\n\n\n }\n\n\n ngAfterViewInit(): void {\n setTimeout(_ => {\n window.dispatchEvent(new Event('resize'));\n }); // BUGFIX:\n }\n\n\n axisFormatMonth(val) {\n return formatDate(new Date(val), 'MMM yyyy', 'en');\n }\n\n axisFormatTime(val) {\n return formatDate(new Date(val), 'MMM dd HH:mm', 'en');\n }\n\n axisFormatDate(val) {\n return formatDate(new Date(val), 'dd MMM', 'en');\n }\n\n}\n","export const GET_MEASUREMENT = 'query-measurement';\nexport const GET_SENSORS = 'query-devices';\nexport const UPDATE_SENSORS = 'put-device';\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class HomeRoutingModule { }\n","import {NgModule} from '@angular/core';\n\nimport {HomeRoutingModule} from './home-routing.module';\nimport {SharedModule} from '../../shared/shared.module';\nimport {HomePageComponent} from './pages/home-page.component';\nimport {EditComponent} from './components/edit/edit.component';\nimport {FilterBarComponent} from './components/filter-bar/filter-bar.component';\nimport {GraphSummaryComponent} from './components/graph-summary/graph-summary.component';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {AmazingTimePickerModule} from 'amazing-time-picker';\nimport {NgxChartsModule} from '@swimlane/ngx-charts';\nimport {SensorService} from './services/sensor.service';\nimport {BrowserAnimationsModule, NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {MatDatepickerModule, MatFormFieldModule, MatIconModule, MatNativeDateModule, MatSelectModule} from '@angular/material';\n\n\n@NgModule({\n imports: [\n SharedModule,\n HomeRoutingModule,\n NgbModule,\n AmazingTimePickerModule,\n NgxChartsModule,\n BrowserAnimationsModule,\n NoopAnimationsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule\n ],\n declarations: [\n HomePageComponent,\n EditComponent,\n FilterBarComponent,\n GraphSummaryComponent\n ],\n providers: [\n SensorService\n ]\n})\nexport class HomeModule {\n}\n","module.exports = \"
\\n \\n \\n \\n
\\n\"","module.exports = \".main-page {\\n min-height: calc(100vh - 81px - 100px); }\\n\"","import {Component, OnInit, ViewChild} from '@angular/core';\nimport {GraphSummaryComponent} from '../components/graph-summary/graph-summary.component';\nimport {SensorService} from '../services/sensor.service';\nimport {Store} from '@ngrx/store';\nimport * as fromRoot from 'store/reducers';\nimport {SensorsLoadedFailAction, SensorsLoadedSuccessAction, SensorsLoadingAction} from 'store/actions/sensors';\nimport {interval} from 'rxjs';\nimport {flatMap} from 'tslint/lib/utils';\nimport {tap} from 'rxjs/internal/operators';\n\n@Component({\n selector: 'app-homepage',\n templateUrl: './home-page.component.html',\n styleUrls: ['./home-page.component.scss']\n})\nexport class HomePageComponent implements OnInit {\n from: number;\n to: number;\n isLoading = true;\n\n @ViewChild(GraphSummaryComponent) graphSummaryComponent: GraphSummaryComponent;\n\n constructor(private sensorService: SensorService,\n private store: Store) {\n }\n\n ngOnInit() {\n // interval(60 * 60 * 1000)\n // .pipe(\n // tap(() => {\n setTimeout(() => {\n this.getAllSensors();\n }, 500);\n // })\n // )\n // .subscribe();\n\n\n }\n\n onChangedValue(data) {\n this.from = this.convertToDate(data['startDate'], data['startTime']).valueOf();\n this.to = this.convertToDate(data['endDate'], data['endTime']).valueOf();\n this.graphSummaryComponent.drawGraph(data.selectedDevices, this.from, this.to);\n }\n\n private convertToDate(date, time) {\n const year = date.year;\n const month = date.month;\n const day = date.day;\n const timeArr = time.split(':');\n const hour = +timeArr[0];\n const minute = +timeArr[1];\n return new Date(year, month - 1, day, hour, minute);\n }\n\n private getAllSensors() {\n this.store.dispatch(new SensorsLoadingAction());\n this.sensorService.getAllSenors().subscribe(sensorList => {\n this.store.dispatch(new SensorsLoadedSuccessAction(sensorList));\n }, error1 => {\n this.store.dispatch(new SensorsLoadedFailAction());\n });\n\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {environment} from 'environments/environment';\nimport {Observable} from 'rxjs';\nimport {Sensor} from 'core/interfaces/sensor.interface';\nimport {GET_SENSORS, UPDATE_SENSORS} from '../constants/constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SensorService {\n\n constructor(private httpClient: HttpClient) {\n }\n\n getData(params: any): Observable {\n return this.httpClient.get(`${environment.sensorUrl}/devices`, {params: params});\n }\n\n getAllSenors(): Observable {\n const params = {\n action: GET_SENSORS\n };\n return this.httpClient.get(`${environment.sensorUrl}`, {params: params});\n }\n\n updateSensors(body: any): Observable {\n const params = {\n action: UPDATE_SENSORS\n };\n return this.httpClient.put(`${environment.sensorUrl}`, body, {params: params});\n }\n\n\n}\n","module.exports = \"
\\n
\\n
\\n
\\n
\\n\"","module.exports = \".spinner {\\n margin: 0 auto;\\n width: 70px;\\n text-align: center; }\\n\\n.spinner > div {\\n width: 12px;\\n height: 12px;\\n background-color: #fff;\\n border-radius: 100%;\\n display: inline-block;\\n -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\\n animation: sk-bouncedelay 1.4s infinite ease-in-out both; }\\n\\n.spinner .bounce1 {\\n -webkit-animation-delay: -0.32s;\\n animation-delay: -0.32s; }\\n\\n.spinner .bounce2 {\\n -webkit-animation-delay: -0.16s;\\n animation-delay: -0.16s; }\\n\\n@-webkit-keyframes sk-bouncedelay {\\n 0%, 80%, 100% {\\n -webkit-transform: scale(0); }\\n 40% {\\n -webkit-transform: scale(1); } }\\n\\n@keyframes sk-bouncedelay {\\n 0%, 80%, 100% {\\n -webkit-transform: scale(0);\\n transform: scale(0); }\\n 40% {\\n -webkit-transform: scale(1);\\n transform: scale(1); } }\\n\"","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'app-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n styleUrls: ['./loading-spinner.component.scss']\n})\nexport class LoadingSpinnerComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import {ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, EventEmitter, Injectable, Injector} from '@angular/core';\n\n@Injectable(\n {providedIn: 'root'}\n)\nexport class DomService {\n private childComponentRef: any;\n private workingChild: String;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private appRef: ApplicationRef,\n private injector: Injector) {\n this.workingChild = '';\n }\n\n public appendComponentTo(parentId: string, child: any, childConfig?: ChildConfig) {\n // Create a component reference from the component\n const childComponent = this.componentFactoryResolver.resolveComponentFactory(child);\n if (childComponent.componentType.name !== this.workingChild) {\n this.addComponent(parentId, child, childConfig);\n this.workingChild = childComponent.componentType.name;\n }\n }\n\n public removeComponent() {\n this.appRef.detachView(this.childComponentRef.hostView);\n this.childComponentRef.destroy();\n this.workingChild = '';\n }\n\n private attachConfig(config, componentRef) {\n const inputs = config.inputs;\n const outputs = config.outputs;\n for (const key in inputs) {\n componentRef.instance[key] = inputs[key];\n }\n for (const key in outputs) {\n // componentRef.instance[key] = outputs[key];\n // subscribe to output event and invoke function\n // console.log(componentRef.instance[key], outputs[key]);\n if (componentRef.instance[key] instanceof EventEmitter) {\n componentRef.instance[key].subscribe(r => {\n outputs[key](r);\n });\n }\n }\n }\n\n private addComponent(parentId: string, childComponent: any, childConfig?: ChildConfig) {\n const childComponentRef = this.componentFactoryResolver\n .resolveComponentFactory(childComponent)\n .create(this.injector);\n // Check if a component is attached\n if (this.appRef.viewCount < 2) {\n // Attach the config to the child (inputs and outputs)\n this.attachConfig(childConfig, childComponentRef);\n this.childComponentRef = childComponentRef;\n // Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(childComponentRef.hostView);\n // Get DOM element from component\n const childDomElem = (childComponentRef.hostView as EmbeddedViewRef)\n .rootNodes[0] as HTMLElement;\n\n // Append DOM element to the body\n document.getElementById(parentId).appendChild(childDomElem);\n }\n }\n}\n\ninterface ChildConfig {\n inputs: object;\n outputs: object;\n}\n","import {Injectable} from '@angular/core';\nimport {DomService} from './dom.service';\n\n@Injectable(\n {providedIn: 'root'}\n)\nexport class ModalService {\n private modalElementId = 'modal-container';\n private overlayElementId = 'modal-background';\n private wrapperElementId = 'modal-wrapper';\n\n constructor(private domService: DomService) {\n }\n\n init(component: any, inputs: object, outputs: object) {\n const config = {\n inputs: inputs,\n outputs: outputs\n };\n this.domService.appendComponentTo(this.modalElementId, component, config);\n document.getElementById(this.modalElementId).style.visibility = 'visible';\n document.getElementById(this.overlayElementId).style.visibility = 'visible';\n document.getElementById(this.wrapperElementId).style.display = 'block';\n }\n\n destroy() {\n this.domService.removeComponent();\n document.getElementById(this.modalElementId).style.visibility = 'hidden';\n document.getElementById(this.overlayElementId).style.visibility = 'hidden';\n document.getElementById(this.wrapperElementId).style.display = 'none';\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {LoadingSpinnerComponent} from './components/loading-spinner/loading-spinner.component';\nimport {HttpClientModule} from '@angular/common/http';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule\n ],\n declarations: [\n LoadingSpinnerComponent\n ],\n exports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n LoadingSpinnerComponent,\n HttpClientModule\n ]\n})\nexport class SharedModule {\n}\n","import {Action} from '@ngrx/store';\n\n\nexport const UPDATE_SENSORS = 'main/UPDATE-SENSORS';\n\nexport const CLEAR_SENSORS = 'main/CLEAR-SENSORS';\n\nexport const SENSORS_LOADING = 'main/SENSORS_LOADING';\nexport const SENSORS_LOAD_SUCCESS = 'main/SENSORS_LOAD_SUCCESS';\nexport const SENSORS_LOAD_FAIL = 'main/SENSORS_LOAD_FAIL';\n\nexport const SELECT_SENSORS = 'main/SELECT_SENSORS';\n\n\n\n/**\n * Update Sensors Action\n */\nexport class UpdateSensorsSAction implements Action {\n readonly type = UPDATE_SENSORS;\n\n constructor(public payload: any) { }\n}\n\n\n/**\n * Update Selected Sensors Action\n */\nexport class SelectSensorsAction implements Action {\n readonly type = SELECT_SENSORS;\n\n constructor(public payload: any) { }\n}\n\n\n/**\n * Load Sensors Action\n */\nexport class SensorsLoadingAction implements Action {\n readonly type = SENSORS_LOADING;\n constructor() {\n }\n}\n\nexport class SensorsLoadedSuccessAction implements Action {\n readonly type = SENSORS_LOAD_SUCCESS;\n\n constructor(public payload: any) { }\n}\n\n\nexport class SensorsLoadedFailAction implements Action {\n readonly type = SENSORS_LOAD_FAIL;\n\n constructor() { }\n}\n\n\n/**\n * Clear Sensors Actions\n */\nexport class ClearSensorsAction implements Action {\n readonly type = CLEAR_SENSORS;\n\n constructor() { }\n}\n\n\nexport type Actions\n = UpdateSensorsSAction\n | SelectSensorsAction\n | SensorsLoadingAction\n | SensorsLoadedSuccessAction\n | SensorsLoadedFailAction\n | ClearSensorsAction;\n","import {ActionReducer, ActionReducerMap, combineReducers, createSelector, MetaReducer} from '@ngrx/store';\nimport {environment} from 'environments/environment';\n\nimport * as fromSensors from './sensors';\n\n// import * as fromRouter from './router';\n\n\nexport interface State {\n sensors: fromSensors.State;\n}\n\nexport const reducers: ActionReducerMap = {\n sensors: fromSensors.reducer,\n};\n\n\nexport function logger(reduce: ActionReducer): ActionReducer {\n return (state: State, action: any): any => {\n const result = reduce(state, action);\n console.groupCollapsed(action.type);\n console.log('prev state', state);\n console.log('action', action);\n console.log('next state', result);\n console.groupEnd();\n\n return result;\n };\n}\n\n// const developmentReducer: ActionReducer = compose(storeFreeze, combineReducers)(reducers);\nexport const productionReducer: ActionReducer = combineReducers(reducers);\n\nexport function reducer(state: any, action: any) {\n// if (environment.production) {\n return productionReducer(state, action);\n// } else {\n// return developmentReducer(state, action);\n// }\n}\n\nexport const getSensorslState = (state: State) => state.sensors;\n\nexport const getSelectedSensors = createSelector(getSensorslState, fromSensors.getSelectedSensors);\nexport const getSensors = createSelector(getSensorslState, fromSensors.getSensors);\n\n\n// export const metaReducers: MetaReducer[] = !environment.production ? [] : [];\nexport const metaReducers: MetaReducer[] = !environment.production\n ? []\n : [];\n","import * as sensors from '../actions/sensors';\nimport {Sensor} from '../../core/interfaces/sensor.interface';\n\nexport interface State {\n sensors: Sensor[];\n selectedSensors: Sensor[];\n loading: boolean;\n loaded: boolean;\n}\n\nconst initialState: State = {\n sensors: [],\n selectedSensors: [],\n loading: false,\n loaded: false,\n};\n\n\nexport function reducer(state = initialState, action: sensors.Actions): State {\n\n switch (action.type) {\n case sensors.SENSORS_LOADING: {\n return Object.assign({}, state, {\n loading: true,\n loaded: false\n });\n }\n\n case sensors.SENSORS_LOAD_SUCCESS: {\n return Object.assign({}, state, {\n loading: false,\n loaded: true,\n sensors: action.payload,\n selectedSensors: []\n });\n }\n\n case sensors.SENSORS_LOAD_FAIL: {\n return Object.assign({}, state, {\n loading: false,\n loaded: false,\n });\n }\n\n case sensors.UPDATE_SENSORS: {\n return Object.assign({}, state, {\n sensors: JSON.parse(JSON.stringify(action.payload)),\n });\n }\n\n case sensors.SELECT_SENSORS: {\n return Object.assign({}, state, {\n selectedSensors: JSON.parse(JSON.stringify(action.payload))\n });\n }\n\n case sensors.CLEAR_SENSORS: {\n return Object.assign({}, state, {\n sensors: [],\n selectedSensors: [],\n });\n }\n default: {\n return state;\n }\n }\n}\n\nexport const getSensors = (state: State) => state.sensors;\nexport const getSelectedSensors = (state: State) => state.selectedSensors;\n\n\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nconst serverUrl = 'http://192.168.1.236:3000';\nexport const environment: any = {\n production: false,\n serverUrl: serverUrl,\n sensorUrl: serverUrl + '/sensors'\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import {enableProdMode} from '@angular/core';\nimport {platformBrowserDynamic} from '@angular/platform-browser-dynamic';\n\nimport {AppModule} from './app/app.module';\nimport {environment} from './environments/environment';\nimport 'hammerjs';\n\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/Frontend/src/app/modules/home/components/edit/edit.component.html b/Frontend/src/app/modules/home/components/edit/edit.component.html index 9e5d45c..6c255e0 100755 --- a/Frontend/src/app/modules/home/components/edit/edit.component.html +++ b/Frontend/src/app/modules/home/components/edit/edit.component.html @@ -14,7 +14,7 @@ diff --git a/Frontend/src/app/modules/home/components/edit/edit.component.ts b/Frontend/src/app/modules/home/components/edit/edit.component.ts index 64d8449..5e2da97 100755 --- a/Frontend/src/app/modules/home/components/edit/edit.component.ts +++ b/Frontend/src/app/modules/home/components/edit/edit.component.ts @@ -33,12 +33,12 @@ export class EditComponent implements OnInit { const editedSensor = { id: formValue.deviceId, period: formValue.period, - status: this.selectedSensor.status + status: this.selectedSensor.status, + name: !formValue.deviceName || (formValue.deviceName && formValue.deviceName.length === 0) + ? null + : formValue.deviceName }; - if (formValue.deviceName) { - editedSensor['name'] = formValue.deviceName; - } this.sensorService.updateSensors(editedSensor).subscribe(res => { this.onUpdated.emit(editedSensor); }); diff --git a/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.html b/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.html index 1f7b0d0..3336b08 100755 --- a/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.html +++ b/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.html @@ -8,7 +8,7 @@ *ngFor="let device of sensors; let i = index" [value]="device">
-
+
{{device.name ? device.name : device.id}}
diff --git a/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.scss b/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.scss index a5a2d21..a665000 100755 --- a/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.scss +++ b/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.scss @@ -76,4 +76,10 @@ input[type="time"]:focus { box-shadow: 0px 0px 1px 3px rgba(68,139,252,1); } +.description { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + diff --git a/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.ts b/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.ts index 77f309f..605dbd3 100755 --- a/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.ts +++ b/Frontend/src/app/modules/home/components/filter-bar/filter-bar.component.ts @@ -17,7 +17,7 @@ import {UpdateSensorsSAction} from 'store/actions/sensors'; }) export class FilterBarComponent implements OnInit { form: FormGroup; - sensors: Sensor[]; + sensors: Sensor[] = []; @Output() onChangedValue = new EventEmitter(); isLoading: boolean; diff --git a/Frontend/src/app/modules/home/pages/home-page.component.ts b/Frontend/src/app/modules/home/pages/home-page.component.ts index c596428..b6b64f7 100755 --- a/Frontend/src/app/modules/home/pages/home-page.component.ts +++ b/Frontend/src/app/modules/home/pages/home-page.component.ts @@ -4,6 +4,9 @@ import {SensorService} from '../services/sensor.service'; import {Store} from '@ngrx/store'; import * as fromRoot from 'store/reducers'; import {SensorsLoadedFailAction, SensorsLoadedSuccessAction, SensorsLoadingAction} from 'store/actions/sensors'; +import {interval} from 'rxjs'; +import {flatMap} from 'tslint/lib/utils'; +import {tap} from 'rxjs/internal/operators'; @Component({ selector: 'app-homepage', @@ -22,9 +25,16 @@ export class HomePageComponent implements OnInit { } ngOnInit() { - setTimeout(() => { - this.getAllSensors(); - }, 500); + // interval(60 * 60 * 1000) + // .pipe( + // tap(() => { + setTimeout(() => { + this.getAllSensors(); + }, 500); + // }) + // ) + // .subscribe(); + } @@ -45,29 +55,11 @@ export class HomePageComponent implements OnInit { } private getAllSensors() { - // this.isLoading = true; this.store.dispatch(new SensorsLoadingAction()); - // const testData = [ - // { - // id: 'test12', - // name: '345', - // period: 456, - // status: SensorStatus.CONNECTED - // }, - // { - // id: 'thahah', - // name: 'hoho', - // period: 456, - // status: SensorStatus.DISCONNECTED - // }]; - // this.store.dispatch(new SensorsLoadedSuccessAction(testData)); - // this.isLoading = false; this.sensorService.getAllSenors().subscribe(sensorList => { this.store.dispatch(new SensorsLoadedSuccessAction(sensorList)); - // this.isLoading = false; }, error1 => { this.store.dispatch(new SensorsLoadedFailAction()); - // this.isLoading = false; }); }