fix double reques

master
Boris Voropaev 2023-11-09 10:46:55 +03:00
parent bdb0e74a02
commit 29a045212a
7 changed files with 45 additions and 60 deletions

View File

@ -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';

View File

@ -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 => {

View File

@ -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
});
}

View File

@ -2,14 +2,14 @@
<!-- <div class="limiter">
<page-breadcrumbs [page]="page"></page-breadcrumbs>
</div> -->
<div class="pages" [ngSwitch]="page?.type?.name || page?.type">
<content-page *ngSwitchCase="'content'" [page]="page" [editMode]="editMode"></content-page>
<publications-page *ngSwitchCase="'publications'" [page]="page" [editMode]="editMode"></publications-page>
<registry-page *ngSwitchCase="'registry'" [page]="page" [editMode]="editMode"></registry-page>
<publication-page *ngSwitchCase="'publication'" [page]="page" [editMode]="editMode"></publication-page>
<tk-structure-page *ngSwitchCase="'tk-structure'" [page]="page" [editMode]="editMode"></tk-structure-page>
<p *ngSwitchDefault>Page type {{page?.type?.name}} is undefined</p>
</div>
<div class="pages" [ngSwitch]="page?.type?.name || page?.type">
<content-page *ngSwitchCase="'content'" [page]="page" [editMode]="editMode"></content-page>
<publications-page *ngSwitchCase="'publications'" [page]="page" [editMode]="editMode"></publications-page>
<registry-page *ngSwitchCase="'registry'" [page]="page" [editMode]="editMode"></registry-page>
<publication-page *ngSwitchCase="'publication'" [page]="page" [editMode]="editMode"></publication-page>
<tk-structure-page *ngSwitchCase="'tk-structure'" [page]="page" [editMode]="editMode"></tk-structure-page>
<p *ngSwitchDefault>Page type {{page?.type?.name}} is undefined</p>
</div>
</div>
<div class="content" *ngIf="!loading && !page">
<page-not-found></page-not-found>

View File

@ -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
});
}
}

View File

@ -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<any> {
return this.http.get(`${environment.apiUrl}/api/pages/root`, {params: params});
}
}

View File

@ -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<boolean>(false);
public currentPage = new BehaviorSubject<any>({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<any> {