From 3168b084d34719c64ff567ac16bdaae1a2221145 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 26 Jun 2018 23:14:42 +0200 Subject: [PATCH] configuration stuff not yet working --- server/src/main.ts | 1 + src/app/app.module.ts | 6 +++++- src/app/config.service.spec.ts | 15 +++++++++++++++ src/app/config.service.ts | 25 +++++++++++++++++++++++++ src/app/mqttclient.service.ts | 4 +++- src/assets/smartclient.json | 3 +++ 6 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 src/app/config.service.spec.ts create mode 100644 src/app/config.service.ts create mode 100644 src/assets/smartclient.json diff --git a/server/src/main.ts b/server/src/main.ts index 4524c0c..4e0aaab 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -11,6 +11,7 @@ let accessLogStream = fs.createWriteStream(path.join(__dirname, '/../../../acces app.use(morgan('combined', {stream: accessLogStream})) app.use('/', express.static(path.join(__dirname, '/../../../dist'))) +app.use('/config', express.static(path.join(__dirname, '/.././../config'))) app.listen(3000, () => { console.log('smartclient app listening on port 3000!') diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 5bda57f..7789482 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,6 +1,7 @@ import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { NgModule } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http' import { MatTabsModule } from '@angular/material/tabs'; import { MatExpansionModule } from '@angular/material/expansion'; @@ -8,6 +9,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatDividerModule } from '@angular/material/divider'; import { MqttclientService } from './mqttclient.service' +import { ConfigService } from './config.service' import { AppComponent } from './app.component'; import { LedindicatorComponent } from './ledindicator/ledindicator.component'; @@ -31,13 +33,15 @@ import { LedBoxComponent } from './led-box/led-box.component'; imports: [ BrowserModule, BrowserAnimationsModule, + HttpClientModule, MatTabsModule, MatExpansionModule, MatButtonModule, MatDividerModule ], providers: [ - MqttclientService + MqttclientService, + ConfigService ], bootstrap: [AppComponent] }) diff --git a/src/app/config.service.spec.ts b/src/app/config.service.spec.ts new file mode 100644 index 0000000..a20d4ba --- /dev/null +++ b/src/app/config.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { ConfigService } from './config.service'; + +describe('ConfigService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ConfigService] + }); + }); + + it('should be created', inject([ConfigService], (service: ConfigService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/src/app/config.service.ts b/src/app/config.service.ts new file mode 100644 index 0000000..7aa1e79 --- /dev/null +++ b/src/app/config.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core' +import { HttpClient } from '@angular/common/http' +import { Observable } from 'rxjs/Observable'; + +export interface Config { + mqttUrl: string +} + +@Injectable() +export class ConfigService { + + private configUrl : string = 'assets/smartclient.json' + private observableConfig : Observable = undefined + + constructor(private http: HttpClient) { + + } + + getConfig() : Observable { + if (this.observableConfig == undefined) { + this.observableConfig = this.http.get(this.configUrl) + } + return this.observableConfig + } +} diff --git a/src/app/mqttclient.service.ts b/src/app/mqttclient.service.ts index 19ba0d2..48f8dd2 100644 --- a/src/app/mqttclient.service.ts +++ b/src/app/mqttclient.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { ConfigService, Config } from './config.service' import * as Mqtt from 'mqtt' type callbackFunc = (message: string) => void @@ -7,8 +8,9 @@ type callbackFunc = (message: string) => void export class MqttclientService { private mqttClient : Mqtt.MqttClient private callbacks : Map = new Map() + private config : Config - constructor() { + constructor(private configService: ConfigService) { this.mqttClient = Mqtt.connect('ws://127.0.0.1:9001') this.mqttClient.on('connect', () => { console.log('MQTT connected') diff --git a/src/assets/smartclient.json b/src/assets/smartclient.json new file mode 100644 index 0000000..c1a3f6b --- /dev/null +++ b/src/assets/smartclient.json @@ -0,0 +1,3 @@ +{ + "mqttUrl": "ws://127.0.0.1:9100" +} \ No newline at end of file