From bdb0e74a02929d386bd33ccdf682f0b4d8244401 Mon Sep 17 00:00:00 2001 From: Boris Voropaev Date: Thu, 9 Nov 2023 09:52:18 +0300 Subject: [PATCH 1/2] bugfix --- .../left-content/left-content.component.ts | 46 ++++++------------- .../form/slider/slider-form.component.ts | 6 +-- src/app/_modules/pages/page/page.component.ts | 4 +- .../_modules/viget/slider/slider.component.ts | 8 +++- src/app/_services/pages.service.ts | 6 ++- 5 files changed, 30 insertions(+), 40 deletions(-) diff --git a/src/app/_modules/layout/left-content/left-content.component.ts b/src/app/_modules/layout/left-content/left-content.component.ts index dc4fc0f..28bead7 100644 --- a/src/app/_modules/layout/left-content/left-content.component.ts +++ b/src/app/_modules/layout/left-content/left-content.component.ts @@ -29,48 +29,30 @@ export class LeftContentComponent { } ngOnInit(){ - this.routeSubscription = this.router.events.subscribe(event => { - if (event instanceof NavigationEnd) this.onNavigationEnd(event); - }); this.pagesService.editMode.subscribe( mode => { this.editMode = mode; } + ); + this.pagesService.currentPage.subscribe( + page => this.fetch(page) ) } - onNavigationEnd(event: NavigationEnd) { - let url = event.url.split('(')[0]; - url = url.split('?')[0]; - if (url !== this.url) { - this.url = url; - this.fetch() + fetch(page:any){ + if (page){ + this.background = page.image?.data?.links?.full; + if (this.background) this.background = `url(${this.background})`; + this.pageName = (page.parents?.data[2]||page).name; + this.editable = page.permissions?.edit || page.permissions?.anything; + this.pageID = page.id + }else{ + this.pageName = null; + this.editable = null; + this.pagesService.editMode.next(false) } } - fetch(){ - let include = [ - 'permissions', - 'parents' - ]; - this.pagesService.find(this.url, {include: include.join(',')}).subscribe( - resp => { - let page = resp?.data; - if (page){ - this.background = page.image?.data?.links?.full; - if (this.background) this.background = `url(${this.background})`; - this.pageName = (page.parents.data[2]||page).name; - this.editable = page.permissions.edit || page.permissions.anything; - this.pageID = page.id - }else{ - this.pageName = null; - this.editable = null; - this.pagesService.editMode.next(false) - } - } - ) - } - toggleEditMode(){ this.pagesService.editMode.next(!this.editMode) } 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 e1c12a2..cba1d02 100644 --- a/src/app/_modules/objects/form/slider/slider-form.component.ts +++ b/src/app/_modules/objects/form/slider/slider-form.component.ts @@ -2,7 +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 {WindowScrollingService} from "@app/_services/window-scrolling.service"; + import { PagesService } from '@app/_services/pages.service'; @@ -32,7 +32,7 @@ export class SliderFormComponent { private formsService: FormsService, private listsService: ListsService, private pagesService: PagesService, - private windowScrollingService: WindowScrollingService + ) { } @@ -57,7 +57,6 @@ export class SliderFormComponent { this.initFormGroup(JSON.parse(this.route.snapshot.queryParamMap.get('extraProps'))); this.formParams = JSON.parse(this.route.snapshot.queryParamMap.get('formParams')) || {}; this.fetch(); - this.windowScrollingService.disable(); } fetch() { @@ -146,7 +145,6 @@ export class SliderFormComponent { } close() { - this.windowScrollingService.enable(); this.router.navigate([{outlets: {slider: null}}]).then(); } } diff --git a/src/app/_modules/pages/page/page.component.ts b/src/app/_modules/pages/page/page.component.ts index a6e07f1..45b17c3 100644 --- a/src/app/_modules/pages/page/page.component.ts +++ b/src/app/_modules/pages/page/page.component.ts @@ -76,7 +76,9 @@ export class PageComponent { 'children.children' ]; this.pagesService.find(this.url, {include: include.join(',')}).subscribe(res => { - this.page = res?.data; + this.page = res?.data; + console.log('NextPage', this.page) + this.pagesService.currentPage.next(this.page); this.loading = false; this.fetchMenu(); }, error => { diff --git a/src/app/_modules/viget/slider/slider.component.ts b/src/app/_modules/viget/slider/slider.component.ts index 3990bbf..a921bdc 100644 --- a/src/app/_modules/viget/slider/slider.component.ts +++ b/src/app/_modules/viget/slider/slider.component.ts @@ -1,5 +1,6 @@ import { AfterViewInit, Component, Input, OnInit } from '@angular/core'; import { Router } from '@angular/router'; +import {WindowScrollingService} from "@app/_services/window-scrolling.service"; @Component({ selector: 'slider', @@ -13,7 +14,8 @@ export class SliderComponent implements OnInit { css:any; constructor( - private router:Router + private router:Router, + private windowScrollingService: WindowScrollingService ){} ngOnInit(){ @@ -21,6 +23,10 @@ export class SliderComponent implements OnInit { 'left-side': this.side=='left', 'right-side': this.side=='right' } + this.windowScrollingService.disable(); + } + ngOnDestroy(){ + this.windowScrollingService.enable(); } diff --git a/src/app/_services/pages.service.ts b/src/app/_services/pages.service.ts index c536f8e..5af8029 100644 --- a/src/app/_services/pages.service.ts +++ b/src/app/_services/pages.service.ts @@ -7,12 +7,14 @@ import {Observable, BehaviorSubject} from "rxjs"; @Injectable({providedIn: 'root'}) export class PagesService { constructor(private http: HttpClient) { - this.pagesTree = new BehaviorSubject({data:[]}) + this.changedPages() } - public pagesTree: BehaviorSubject + 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']; From 29a045212aac21dd718f16852ddeb47a1ab925c2 Mon Sep 17 00:00:00 2001 From: Boris Voropaev Date: Thu, 9 Nov 2023 10:46:55 +0300 Subject: [PATCH 2/2] 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 {