From 29a045212aac21dd718f16852ddeb47a1ab925c2 Mon Sep 17 00:00:00 2001 From: Boris Voropaev Date: Thu, 9 Nov 2023 10:46:55 +0300 Subject: [PATCH] fix double reques --- .../layout/header/header.component.ts | 16 +++-------- .../form/slider/slider-form.component.ts | 5 ++-- .../pages/menu/pages-menu.component.ts | 6 ++--- .../_modules/pages/page/page.component.html | 16 +++++------ src/app/_modules/pages/page/page.component.ts | 25 ----------------- src/app/_services/menu.service.ts | 27 +++++++++++++++++++ src/app/_services/pages.service.ts | 10 ------- 7 files changed, 45 insertions(+), 60 deletions(-) create mode 100644 src/app/_services/menu.service.ts diff --git a/src/app/_modules/layout/header/header.component.ts b/src/app/_modules/layout/header/header.component.ts index a34174c..0670a18 100644 --- a/src/app/_modules/layout/header/header.component.ts +++ b/src/app/_modules/layout/header/header.component.ts @@ -3,6 +3,7 @@ import {PagesService} from "@app/_services/pages.service"; import {AuthenticationService, ListsService} from "@app/_services"; import {Router} from "@angular/router"; import {Subscription} from "rxjs"; +import { MenuService } from '@app/_services/menu.service'; @Component({ selector: 'header', @@ -24,7 +25,8 @@ export class HeaderComponent { private router: Router, private pagesService: PagesService, public authenticationService: AuthenticationService, - private listsService: ListsService + private listsService: ListsService, + private menuService: MenuService ) { } @@ -36,13 +38,11 @@ export class HeaderComponent { this.listsService.result('showSettingSite').next(false); } this.controlsSubscriptionMenu = this.listsService.controls('headerMenu').subscribe(controls => { - - this.fetchMenu(); }); this.resultSubscriptionMenu = this.listsService.result('headerMenu').subscribe(res => { this.menuItems = res?.data || []; }); - this.listsService.changed.subscribe(event=>this.fetchMenu()) + this.menuService.setPagesTree() } ngOnDestroy() { @@ -51,14 +51,6 @@ export class HeaderComponent { this.resultSubscriptionMenu?.unsubscribe(); } - - fetchMenu() { - let include = ['children.children.children.children','parents','children.parents']; - this.pagesService.root({include: include.join(',')}).subscribe(res => { - this.menuItems = res.data; - }); - } - settingsSite() { let showSettingSite = localStorage.getItem('showSettingSite'); showSettingSite = showSettingSite === 'yes' ? 'no' : 'yes'; diff --git a/src/app/_modules/objects/form/slider/slider-form.component.ts b/src/app/_modules/objects/form/slider/slider-form.component.ts index cba1d02..b77c414 100644 --- a/src/app/_modules/objects/form/slider/slider-form.component.ts +++ b/src/app/_modules/objects/form/slider/slider-form.component.ts @@ -2,6 +2,7 @@ import {Component} from '@angular/core'; import {ActivatedRoute, Router} from "@angular/router"; import {FormControl, FormGroup} from "@angular/forms"; import {FormsService, ListsService} from "@app/_services"; +import { MenuService } from '@app/_services/menu.service'; import { PagesService } from '@app/_services/pages.service'; @@ -32,7 +33,7 @@ export class SliderFormComponent { private formsService: FormsService, private listsService: ListsService, private pagesService: PagesService, - + private menuService: MenuService ) { } @@ -131,7 +132,7 @@ export class SliderFormComponent { window.open(res.asset.data.links[res.action || 'download'], "_blank"); } else { this.listsService.refresh(this.list); - if(this.type=='page')this.pagesService.changedPages(); + if(this.type=='page')this.menuService.setPagesTree(); this.close(); } }, error => { diff --git a/src/app/_modules/pages/menu/pages-menu.component.ts b/src/app/_modules/pages/menu/pages-menu.component.ts index b0b0f81..d8c2d9c 100644 --- a/src/app/_modules/pages/menu/pages-menu.component.ts +++ b/src/app/_modules/pages/menu/pages-menu.component.ts @@ -1,6 +1,6 @@ import {Component, EventEmitter, Input, Output, OnInit} from '@angular/core'; import { Router } from '@angular/router'; -import { PagesService } from '@app/_services/pages.service'; +import { MenuService } from '@app/_services/menu.service'; @Component({ selector: 'pages-menu', @@ -16,7 +16,7 @@ export class PagesMenuComponent implements OnInit { private root = false; constructor( - private pagesService: PagesService, + private menuService: MenuService, private router: Router, ){ @@ -38,7 +38,7 @@ export class PagesMenuComponent implements OnInit { if (!this.items){ this.root = true; - this.pagesService.pagesTree.subscribe(res=>{ + this.menuService.pagesTree.subscribe(res=>{ this.items = res.data }); } diff --git a/src/app/_modules/pages/page/page.component.html b/src/app/_modules/pages/page/page.component.html index f9c2569..86ad120 100644 --- a/src/app/_modules/pages/page/page.component.html +++ b/src/app/_modules/pages/page/page.component.html @@ -2,14 +2,14 @@ -
- - - - - -

Page type {{page?.type?.name}} is undefined

-
+
+ + + + + +

Page type {{page?.type?.name}} is undefined

+
diff --git a/src/app/_modules/pages/page/page.component.ts b/src/app/_modules/pages/page/page.component.ts index 45b17c3..e1605b5 100644 --- a/src/app/_modules/pages/page/page.component.ts +++ b/src/app/_modules/pages/page/page.component.ts @@ -12,11 +12,8 @@ export class PageComponent { public page: any; public editMode: boolean; public loading = false; - public menuItems:any[] private url: string; private inited = false; - public subMenu:any; - public pageTopName:string; routeSubscription?: Subscription; subscription: Subscription; @@ -80,30 +77,8 @@ export class PageComponent { console.log('NextPage', this.page) this.pagesService.currentPage.next(this.page); this.loading = false; - this.fetchMenu(); }, error => { this.loading = false; }); } - - fetchMenu() { - let include = ['children.children.children.children']; - this.pagesService.root({include: include.join(',')}).subscribe(res => { - this.menuItems = res.data; - let topItem:any = null; - this.subMenu = []; - this.pageTopName = this.page.name; - - topItem = this.menuItems.find(item=>this.page.link.startsWith(item.link)); - this.subMenu = topItem?.children.data; - this.pageTopName = topItem?.name || this.pageTopName; - - topItem = this.subMenu?.find(item=>this.page.link.startsWith(item.link)); - this.pageTopName = topItem?.name || this.pageTopName; - this.subMenu = topItem?.children.data - }); - } - - - } diff --git a/src/app/_services/menu.service.ts b/src/app/_services/menu.service.ts new file mode 100644 index 0000000..c33b849 --- /dev/null +++ b/src/app/_services/menu.service.ts @@ -0,0 +1,27 @@ +import {Injectable} from '@angular/core'; +import {HttpClient} from '@angular/common/http'; +import {environment} from '@environments/environment'; +import {Observable, BehaviorSubject} from "rxjs"; + + +@Injectable({providedIn: 'root'}) +export class MenuService { + constructor( + private http: HttpClient + ){} + + public pagesTree = new BehaviorSubject({data:[]}); + + + setPagesTree(){ + let include = ['children.children.children.children.children.children.children']; + this.root({include: include.join(',')}).subscribe(res => { + this.pagesTree.next(res) + }); + } + + root(params?: {}): Observable { + return this.http.get(`${environment.apiUrl}/api/pages/root`, {params: params}); + } + +} \ No newline at end of file diff --git a/src/app/_services/pages.service.ts b/src/app/_services/pages.service.ts index 5af8029..a05d268 100644 --- a/src/app/_services/pages.service.ts +++ b/src/app/_services/pages.service.ts @@ -7,21 +7,11 @@ import {Observable, BehaviorSubject} from "rxjs"; @Injectable({providedIn: 'root'}) export class PagesService { constructor(private http: HttpClient) { - - this.changedPages() } public editMode = new BehaviorSubject(false); public currentPage = new BehaviorSubject({data:[]}); - public pagesTree = new BehaviorSubject({data:[]}); - - changedPages(){ - let include = ['children.children.children.children.children.children.children']; - this.root({include: include.join(',')}).subscribe(res => { - this.pagesTree.next(res) - }); - } root(params?: {}): Observable {