|
1
|
|
|
import ListenerAdapter from '../Observer/ListenerAdapter'; |
|
2
|
|
|
import Observer from '../Observer/Observer'; |
|
3
|
|
|
import DataStorage from '../Storage/DataStorage'; |
|
4
|
|
|
import AjaxLoader from './Loader/Ajax'; |
|
5
|
|
|
import Manager from './Manager'; |
|
6
|
|
|
import ActiveTranslatorAdapter from './Manager/ActiveTranslatorAdapter'; |
|
7
|
|
|
import Translator from './Translator'; |
|
8
|
|
|
import TranslatorFactory from './Translator/Factory'; |
|
9
|
|
|
|
|
10
|
|
|
class Container { |
|
11
|
|
|
translatorFactory: TranslatorFactory; |
|
12
|
|
|
loader: AjaxLoader; |
|
13
|
|
|
manager: Manager; |
|
14
|
|
|
adapter: ListenerAdapter<string>; |
|
15
|
|
|
observer: Observer<string>; |
|
16
|
|
|
activeTranslator: Observer<Translator>; |
|
17
|
|
|
activeTranslatorAdapter: ActiveTranslatorAdapter; |
|
18
|
|
|
storage: DataStorage; |
|
19
|
|
|
|
|
20
|
|
|
constructor() { |
|
21
|
1 |
|
this.storage = new DataStorage('language', window.localStorage); |
|
22
|
|
|
|
|
23
|
1 |
|
this.translatorFactory = new TranslatorFactory(); |
|
24
|
1 |
|
this.loader = new AjaxLoader(); |
|
25
|
1 |
|
this.manager = new Manager(this.loader, this.translatorFactory); |
|
26
|
|
|
|
|
27
|
1 |
|
this.adapter = new ListenerAdapter<string>(); |
|
28
|
1 |
|
this.activeTranslator = new Observer<Translator>( |
|
29
|
|
|
new Translator({}), |
|
30
|
|
|
{onChange: (oldValue: Translator, newValue: Translator): void => {}} |
|
31
|
|
|
); |
|
32
|
1 |
|
this.activeTranslatorAdapter = new ActiveTranslatorAdapter(this.adapter, this.manager, this.activeTranslator); |
|
33
|
1 |
|
this.observer = |
|
34
|
|
|
new Observer<string>('', this.storage.attach<string>('languageSetup', this.activeTranslatorAdapter)); |
|
35
|
|
|
|
|
36
|
1 |
|
this.setupDefaults(); |
|
37
|
|
|
} |
|
38
|
|
|
|
|
39
|
|
|
protected setupDefaults(): void { |
|
40
|
1 |
|
this.observer.value = this.storage.loadData<string>('languageSetup', 'de-de'); |
|
41
|
|
|
} |
|
42
|
|
|
} |
|
43
|
|
|
|
|
44
|
|
|
export default new Container(); |