aodb/app/core/service/chromaStateService.ts
Martin Donnelly afe73b5baa upload
2016-12-22 00:00:06 +00:00

51 lines
1.2 KiB
TypeScript

import {Mod} from '../core.mod';
import {service} from '../../infrastructure/Dectorators/Components';
export interface IChromaStateService {
states: Array<any>;
addState(name: string, state: IState);
stateProvider: ng.ui.IStateProvider;
}
interface IState extends ng.ui.IState {
display: any;
icon: any;
subView: boolean;
}
@service(Mod, 'chromaState')
export class ChromaStateService implements ng.IServiceProvider {
public stateProvider: ng.ui.IStateProvider;
public states: Array<any> = new Array<any>();
public setStateProvider($stateProvider: ng.ui.IStateProvider) {
this.stateProvider = $stateProvider;
}
public $get(): IChromaStateService {
return {
stateProvider: this.stateProvider,
states: this.states,
addState: (name: string, state: IState) => {
let added = false;
this.states.forEach((s) => {
if (s.name === name) {
added = true;
}
});
if (!added) {
this.states.push({
name: name,
display: state.display,
icon: state.icon,
subView: state.subView
});
this.stateProvider.state(name, state);
}
}
};
}
}