financial-assistant

Форк
0
70 строк · 2.3 Кб
1
import Router from "../app/route";
2
import { EventTypes, Links } from "../contracts/enums";
3
import Model from "../model/model";
4
import EventObserver from "../observer/observer";
5
import View from "../view/view";
6

7
class Controller {
8
  private view: View;
9
  private model: Model;
10
  public searchParams: URLSearchParams | null = null;
11

12
  constructor(observer: EventObserver, router: Router) {
13
    this.view = new View(observer);
14
    this.model = new Model(observer);
15
    this.setRouting(router);
16
  }
17

18
  private setUrlChangeHandler(path: Links, clickedValue: Links) {
19
    const buttons = this.view.knowledgeBase.buttonsTag;
20
    this.model.onButtonClicked(buttons, path, clickedValue);
21
  }
22

23
  private setRouting(router: Router): void {
24
    router.route(Links.home, () => {
25
      this.view.renderStartPage();
26
    });
27

28
    router.route(Links.assistant, () => {
29
      this.view.renderAssistantPage();
30
    });
31

32
    router.route(Links.banks, async () => {
33
      const banks = await this.model.getBanks();
34
      this.view.renderKnowledgeBasePage(banks);
35
      this.setUrlChangeHandler(Links.products, Links.banks);
36
    });
37

38
    router.route(Links.products, async () => {
39
      const products = await this.model.getProducts();
40
      this.view.renderKnowledgeBasePage(products);
41
      this.setUrlChangeHandler(Links.categories, Links.products);
42
    });
43

44
    router.route(Links.categories, async () => {
45
      const categories = await this.model.getProductCategories();
46
      this.view.renderKnowledgeBasePage(categories);
47
      this.setUrlChangeHandler(Links.category_subsections, Links.categories);
48
    });
49

50
    router.route(Links.category_subsections, async () => {
51
      const subsections = await this.model.getCategorySubsections();
52
      this.view.renderKnowledgeBasePage(subsections);
53
      this.setUrlChangeHandler(
54
        Links.subsection_details,
55
        Links.category_subsections
56
      );
57
    });
58
    router.route(Links.subsection_details, async () => {
59
      const details = await this.model.getSubsectionDetails();
60
      this.view.renderKnowledgeBasePage(details, true);
61
      this.setUrlChangeHandler(Links.detailed_data, Links.subsection_details);
62
    });
63
    router.route(Links.detailed_data, async () => {
64
      const detailedData = await this.model.getDetailedData();
65
      this.view.renderKnowledgeBaseTable(detailedData);
66
    });
67
  }
68
}
69

70
export default Controller;
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.