Merge branch 'DEVELOP_FE' of ssh://git.eclipse.org:29418/elogbook/elogbookFE into DEVELOP_FE
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index f6094ed..01aff89 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -3,6 +3,7 @@
import { BaseDataLoaderService } from './services/jobs/base-data-loader.service';
import { ReminderCallerJobService } from './services/jobs/reminder-caller-job.service';
import { SessionContext } from './common/session-context';
+import { ImportFileCallerService } from './services/jobs/import-file-caller.service';
@Component({
selector: 'app-root',
@@ -16,7 +17,8 @@
constructor(public router: Router,
public baseDataLoader: BaseDataLoaderService,
private sessionContext: SessionContext,
- public reminderCallerJobService: ReminderCallerJobService) {
+ public reminderCallerJobService: ReminderCallerJobService,
+ public importFileCallerService: ImportFileCallerService) {
}
ngOnInit() {
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 317f8f2..a6c0307 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -51,8 +51,10 @@
import { BaseDataLoaderService } from './services/jobs/base-data-loader.service';
import { CurrentRemindersComponent } from './lists/current-reminders/current-reminders.component';
import { ReminderCallerJobService } from './services/jobs/reminder-caller-job.service';
+import { ImportFileCallerService } from './services/jobs/import-file-caller.service';
import { LoadingSpinnerComponent } from './dialogs/loading-spinner/loading-spinner.component';
import { SortingComponent } from './lists/sorting/sorting.component';
+import { ImportService } from './services/import.service';
@NgModule({
declarations: [
@@ -117,8 +119,10 @@
SessionContext,
BaseDataService,
ReminderCallerJobService,
+ ImportFileCallerService,
MessageService,
- BaseDataLoaderService ],
+ BaseDataLoaderService,
+ ImportService ],
bootstrap: [AppComponent]
})
export class AppModule { }
diff --git a/src/app/common/session-context.ts b/src/app/common/session-context.ts
index 0b55f2f..12750bb 100644
--- a/src/app/common/session-context.ts
+++ b/src/app/common/session-context.ts
@@ -21,6 +21,7 @@
private gridTerritories: GridTerritory[];
private globalSearchFilter: GlobalSearchFilter;
public reminderAvailable = false;
+ public importFileAvailable = false;
public filterExpanded = false;
private notificationHistoryExpansionStates: NotificationHistoryExpansionState[];
public sortingState: SortingState;
@@ -253,6 +254,14 @@
this.reminderAvailable = newStatus;
}
+ public isImportFileAvailable(): boolean {
+ return this.importFileAvailable;
+ }
+
+ public setImportFileAvailable(newStatus: boolean) {
+ this.importFileAvailable = newStatus;
+ }
+
setInitGlobalSearchFilterValues() {
this.globalSearchFilter = new GlobalSearchFilter;
this.globalSearchFilter.searchString = '';
diff --git a/src/app/pages/overview/overview.component.html b/src/app/pages/overview/overview.component.html
index b3a39ac..586d2cd 100644
--- a/src/app/pages/overview/overview.component.html
+++ b/src/app/pages/overview/overview.component.html
@@ -24,7 +24,7 @@
</button>
<!-- Datenimport starten -->
<!-- old: (click)="openDialogShiftChange() Schicht übergeben -->
- <button class="btn btn-primary" id="dataimport" (click)="openDialogDataImport()">
+ <button class="btn btn-primary" id="dataimport" [ngClass]="{'btn-warning': sessionContext.isImportFileAvailable()}" (click)="openDialogDataImport()">
Datenimport
</button>
</div>
diff --git a/src/app/services/import.service.ts b/src/app/services/import.service.ts
new file mode 100644
index 0000000..3419d13
--- /dev/null
+++ b/src/app/services/import.service.ts
@@ -0,0 +1,37 @@
+import { Injectable } from '@angular/core';
+import { Http, Response, Headers } from '@angular/http';
+import { Observable } from 'rxjs/Observable';
+import 'rxjs/add/operator/catch';
+import 'rxjs/add/operator/map';
+import 'rxjs/add/observable/throw';
+
+import { Notification } from '../model/notification';
+import { SessionContext } from '../common/session-context';
+import { Globals } from '../common/globals';
+import { BaseHttpService } from './base-http.service';
+
+
+@Injectable()
+export class ImportService extends BaseHttpService {
+
+ constructor(
+ private _http: Http,
+ private _sessionContext: SessionContext) {
+ super();
+ }
+
+ public getImportFiles(): Observable<boolean> {
+
+ const headers = new Headers();
+ this.createCommonHeaders(headers, this._sessionContext);
+ // TODO implement the correct WS
+ return new Observable(observer => {
+ observer.next(true);
+ observer.complete();
+ });
+ // return this._http.get(super.getBaseUrl() + '/importFiles', { headers: headers })
+ // .map(res => super.extractData(res, this._sessionContext))
+ // .catch(super.handleErrorPromise);
+ }
+
+}
\ No newline at end of file
diff --git a/src/app/services/jobs/import-file-caller.service.ts b/src/app/services/jobs/import-file-caller.service.ts
new file mode 100644
index 0000000..5c5c75e
--- /dev/null
+++ b/src/app/services/jobs/import-file-caller.service.ts
@@ -0,0 +1,76 @@
+import { Injectable, EventEmitter } from '@angular/core';
+import { OnInit, OnDestroy } from '@angular/core';
+import { Http, Response, Headers } from '@angular/http';
+import { Subscription, Observable } from 'rxjs/Rx';
+import { TimerObservable } from 'rxjs/observable/TimerObservable';
+import { ReminderSearchFilter } from '../../model/reminder-search-filter';
+import { ImportService } from '../../services/import.service';
+import { SessionContext } from '../../common/session-context';
+import { MessageService, MessageDefines } from '../../services/message.service';
+import { Globals } from '../../common/globals';
+
+
+@Injectable()
+export class ImportFileCallerService {
+
+ private timer;
+ private subscription: Subscription;
+ currentTime$: string;
+
+
+ constructor(
+ protected _sessionContext: SessionContext,
+ protected importFileService: ImportService,
+ protected msgService: MessageService
+ ) {
+ this.msgService.loginLogoff$.subscribe(msg => this.onLoginLogoff(msg));
+ }
+
+ onLoginLogoff(msg: string) {
+ if (msg === MessageDefines.MSG_LOG_IN_SUCCEEDED) {
+ this.init();
+ }
+ if (msg === MessageDefines.MSG_LOG_OFF) {
+ this.destroy();
+ }
+ }
+
+ init() {
+ this.timer = TimerObservable.create(Globals.REMINDER_JOB_POLLING_START_DELAY, Globals.REMINDER_JOB_POLLING_INTERVALL);
+ this.subscription = this.timer.subscribe(t => this.doJob(t));
+ }
+
+ destroy() {
+ if (this.subscription) {
+ this.subscription.unsubscribe();
+ }
+ }
+
+ doJob(tick: number) {
+ this.currentTime$ = new Date().toISOString();
+
+ this.importFileService.getImportFiles()
+ .subscribe(res => this.setImportFileAvailableStatus(res),
+ error => {
+ console.log(error);
+ this.setError(error);
+ });
+ }
+
+ protected setError(showErr: boolean) {
+ }
+
+
+
+ setImportFileAvailableStatus(file: boolean) {
+ if (file) {
+ // not empty; file available
+ this._sessionContext.setImportFileAvailable(true);
+ } else {
+ // empty; no file available
+ this._sessionContext.setImportFileAvailable(false);
+ }
+ }
+
+
+}