|
21 | 21 |
|
22 | 22 | class App { |
23 | 23 | constructor(account) { |
24 | | - const root = document.getElementById('root'); |
25 | | - const header = createAndAppend('header', root, { class: 'header' }); |
26 | | - this.mainContainer = createAndAppend('main', root, { |
27 | | - id: 'main-container', |
28 | | - }); |
| 24 | + const containers = App.renderContainers(); |
29 | 25 |
|
30 | 26 | const model = new Model(account); |
31 | | - model.subscribe(this); |
32 | | - model.subscribe(new HeaderView(model, account, header)); |
33 | | - model.subscribe(new RepoView(this.mainContainer)); |
34 | | - model.subscribe(new ContributorsView(this.mainContainer)); |
35 | | - model.subscribe(new ErrorView(this.mainContainer)); |
36 | | - model.fetchData(); |
| 27 | + const fetchData = model.fetchData.bind(model); |
| 28 | + |
| 29 | + model.subscribe(new HeaderView(account, containers.header, fetchData)); |
| 30 | + model.subscribe(new RepoView(containers.repo)); |
| 31 | + model.subscribe(new ContributorsView(containers.contributors)); |
| 32 | + model.subscribe(new ErrorView(containers.error)); |
| 33 | + |
| 34 | + fetchData(); |
37 | 35 | } |
38 | 36 |
|
39 | | - update() { |
40 | | - this.mainContainer.innerHTML = ''; |
| 37 | + static renderContainers() { |
| 38 | + const root = document.getElementById('root'); |
| 39 | + const header = createAndAppend('header', root, { class: 'header' }); |
| 40 | + const error = createAndAppend('div', root); |
| 41 | + const main = createAndAppend('main', root, { |
| 42 | + id: 'main-container', |
| 43 | + }); |
| 44 | + const repo = createAndAppend('section', main, { |
| 45 | + class: 'repo-container whiteframe', |
| 46 | + }); |
| 47 | + const contributors = createAndAppend('section', main, { |
| 48 | + class: 'contributors-container whiteframe', |
| 49 | + }); |
| 50 | + return { header, error, main, repo, contributors }; |
41 | 51 | } |
42 | 52 | } |
43 | 53 |
|
44 | | - window.onload = () => new App(accounts.hyf); |
| 54 | + const ACCOUNT_KEY = 'hyf'; |
| 55 | + window.onload = () => new App(accounts[ACCOUNT_KEY]); |
45 | 56 | } |
0 commit comments