* configurable kanban board added * iframe slide type added * many to many implementation of team-slide connection
54 lines
1.3 KiB
TypeScript
Executable File
54 lines
1.3 KiB
TypeScript
Executable File
import { Injectable } from '@angular/core';
|
|
import { Observable, Subject } from 'rxjs';
|
|
import { Team } from '../team';
|
|
|
|
const DEFAULT_SLIDE_INTERVAL = 30000;
|
|
|
|
const SLIDE_INTERVAL_KEY = 'slide_interval';
|
|
const SELECTED_TEAM_KEY = 'team';
|
|
|
|
@Injectable()
|
|
export class SettingsService {
|
|
|
|
private teamSubject: Subject<Team> = new Subject<Team>();
|
|
private intervalSubject: Subject<number> = new Subject<number>();
|
|
|
|
constructor() {}
|
|
|
|
get team(): Team {
|
|
try {
|
|
const team = JSON.parse(localStorage.getItem(SELECTED_TEAM_KEY));
|
|
return team !== null ? team : new Team;
|
|
} catch (e) {
|
|
return new Team;
|
|
}
|
|
}
|
|
|
|
set team(team: Team) {
|
|
localStorage.setItem(SELECTED_TEAM_KEY, JSON.stringify(team));
|
|
this.teamSubject.next(team);
|
|
}
|
|
|
|
get slideInterval(): number {
|
|
try {
|
|
const interval = JSON.parse(localStorage.getItem(SLIDE_INTERVAL_KEY));
|
|
return interval !== null ? interval : DEFAULT_SLIDE_INTERVAL;
|
|
} catch (e) {
|
|
return DEFAULT_SLIDE_INTERVAL;
|
|
}
|
|
}
|
|
|
|
set slideInterval(interval: number) {
|
|
localStorage.setItem(SLIDE_INTERVAL_KEY, JSON.stringify(interval));
|
|
this.intervalSubject.next(interval);
|
|
}
|
|
|
|
get slideIntervalChanged(): Observable<number> {
|
|
return this.intervalSubject.asObservable();
|
|
}
|
|
|
|
get teamChanged(): Observable<Team> {
|
|
return this.teamSubject.asObservable();
|
|
}
|
|
}
|