Mise à jour articles et produits
This commit is contained in:
@@ -106,67 +106,75 @@
|
||||
</mat-menu>
|
||||
</div>
|
||||
<mat-nav-list appAccordion>
|
||||
@for (menuitem of menuItems.getMenuItems(); track menuitem) {
|
||||
@for (menuitem of getMenuItems(); track menuitem) {
|
||||
<mat-list-item appAccordionLink routerLinkActive="selected" group="{{menuitem.state}}">
|
||||
@if (menuitem.type === 'link') {
|
||||
@if (!menuitem.parent && menuitem.type === 'link') {
|
||||
<a appAccordionToggle [routerLink]="['/', menuitem.state]">
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 mr-2"></mat-icon>
|
||||
@if (menuitem.icontype === 'mat') {
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 me-2"></mat-icon>
|
||||
}
|
||||
@else {
|
||||
<i class="icosvg-{{menuitem.icon}} fs-3 mt-0 me-3"></i>
|
||||
}
|
||||
<span>{{ menuitem.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
@for (badge of menuitem.badge; track badge) {
|
||||
<span matBadge="{{ badge.value }}" matBadgeColor="warn" matBadgeOverlap="false"></span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
@if (menuitem.type === 'menu') {
|
||||
<a role="button" aria-hidden="true" (click)="toggleShowQCMMenu()" (keyup)="true">
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 mr-2"></mat-icon>
|
||||
}
|
||||
@if (menuitem.type === 'menu') {
|
||||
<a role="button" aria-hidden="true" (click)="toggleShowMenu(menuitem.state)" (keyup)="true">
|
||||
@if (menuitem.icontype === 'mat') {
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 me-2"></mat-icon>
|
||||
}
|
||||
@else {
|
||||
<i class="icosvg-{{menuitem.icon}} fs-3 mt-0 me-3"></i>
|
||||
}
|
||||
<span>{{ menuitem.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
@for (badge of menuitem.badge; track badge) {
|
||||
<span matBadge="{{ badge.value }}" matBadgeColor="warn" matBadgeOverlap="false"></span>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
}
|
||||
</mat-list-item>
|
||||
}
|
||||
@if (showQCMMenu) {
|
||||
<div>
|
||||
@for (menuqcm of menuItems.getMenuQCM(); track menuqcm) {
|
||||
<mat-list-item appAccordionLink routerLinkActive="selected" group="{{ menuqcm.state}}">
|
||||
@if ( menuqcm.type === 'link') {
|
||||
<a class="ps-4" appAccordionToggle [routerLink]="['/qcm', menuqcm.state]">
|
||||
<mat-icon [fontIcon]="menuqcm.icon" class="mt-0 mr-2"></mat-icon>
|
||||
<span>{{ menuqcm.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
</a>
|
||||
@if (menuitem.type === 'menu') {
|
||||
@for (submenuitem of getMenuItems(); track submenuitem) {
|
||||
@if ( isVisibleMenu(menuitem.state) === true && submenuitem.parent === menuitem.state && submenuitem.type === 'link') {
|
||||
<mat-list-item appAccordionLink routerLinkActive="selected" group="{{ submenuitem.state}}">
|
||||
<a class="ps-4" appAccordionToggle [routerLink]="['/' + submenuitem.parent, submenuitem.state]">
|
||||
@if (menuitem.icontype === 'mat') {
|
||||
<mat-icon [fontIcon]="submenuitem.icon" class="mt-0 me-2"></mat-icon>
|
||||
}
|
||||
@else {
|
||||
<i class="icosvg-{{submenuitem.icon}} fs-2 mt-0 me-2"></i>
|
||||
}
|
||||
<span>{{ submenuitem.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
</a>
|
||||
</mat-list-item>
|
||||
}
|
||||
</mat-list-item>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</mat-nav-list>
|
||||
</ng-container>
|
||||
<ng-container *appShowAuthed="false">
|
||||
<div class="user-profile">
|
||||
<!-- <div class="profile-img"> <img src="/assets/images/users/user.jpg" alt="user"> </div> -->
|
||||
<!-- <div class="profile-img"> <img src="/assets/images/avatars/default.jpg" alt="user"> </div> -->
|
||||
</div>
|
||||
<mat-nav-list appAccordion>
|
||||
@for (menuitem of menuItems.getMenuAuth(); track menuitem) {
|
||||
<mat-list-item appAccordionLink routerLinkActive="selected" group="{{menuitem.state}}">
|
||||
@if (menuitem.type === 'link') {
|
||||
<a appAccordionToggle [routerLink]="['/', menuitem.state]">
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 mr-2"></mat-icon>
|
||||
<span>{{ menuitem.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
@for (badge of menuitem.badge; track badge) {
|
||||
<span matBadge="{{ badge.value }}" matBadgeColor="warn" matBadgeOverlap="false"></span>
|
||||
@if (menuitem.icontype === 'mat') {
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 me-2"></mat-icon>
|
||||
}
|
||||
@else {
|
||||
<i class="icosvg-{{menuitem.icon}} fs-2 mt-0 me-2"></i>
|
||||
}
|
||||
</a>
|
||||
}
|
||||
@if (menuitem.type === 'menu') {
|
||||
<a role="button" aria-hidden="true" (click)="showQCMMenu = !showQCMMenu">
|
||||
<mat-icon [fontIcon]="menuitem.icon" class="mt-0 mr-2"></mat-icon>
|
||||
<span>{{ menuitem.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
@for (badge of menuitem.badge; track badge) {
|
||||
@@ -176,21 +184,6 @@
|
||||
}
|
||||
</mat-list-item>
|
||||
}
|
||||
@if (showQCMMenu) {
|
||||
<div>
|
||||
@for (menuqcm of menuItems.getMenuQCM(); track menuqcm) {
|
||||
<mat-list-item appAccordionLink routerLinkActive="selected" group="{{ menuqcm.state}}">
|
||||
@if ( menuqcm.type === 'link') {
|
||||
<a class="ps-4" appAccordionToggle [routerLink]="['/', menuqcm.state]">
|
||||
<mat-icon [fontIcon]="menuqcm.icon" class="mt-0 mr-2"></mat-icon>
|
||||
<span>{{ menuqcm.name }}</span>
|
||||
<span class="flex-spacer"></span>
|
||||
</a>
|
||||
}
|
||||
</mat-list-item>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</mat-nav-list>
|
||||
</ng-container>
|
||||
<app-layout-footer></app-layout-footer>
|
||||
|
||||
@@ -11,7 +11,7 @@ import { MatToolbarModule } from '@angular/material/toolbar';
|
||||
import { MatMenuModule } from '@angular/material/menu';
|
||||
import { Observable, Subscription } from 'rxjs';
|
||||
|
||||
import { User } from 'src/app/core/models';
|
||||
import { Menu, User } from 'src/app/core/models';
|
||||
import { UserService } from 'src/app/core/services';
|
||||
import { MenuItems, ShowAuthedDirective, AccordionAnchorDirective, AccordionLinkDirective, AccordionDirective } from 'src/app/components/shared';
|
||||
//import { SpinnerComponent } from 'src/app/components/shared';
|
||||
@@ -43,10 +43,12 @@ export class FullComponent implements OnInit, OnDestroy {
|
||||
private _mobileQueryListener: () => void;
|
||||
mobileQuery: MediaQueryList;
|
||||
currentUser: User = {} as User;
|
||||
showQCMMenu = false;
|
||||
today: number = Date.now();
|
||||
siteLink = 'https://www.rampeur.com';
|
||||
author = 'Solide Apps';
|
||||
siteLink = 'https://www.adastra-cbd.com';
|
||||
author = 'Ad Astra';
|
||||
links: Menu[] = [];
|
||||
visibleMenu: string[] = ['products', 'page'];
|
||||
//visibleMenu: string[] = ['products'];
|
||||
|
||||
constructor(
|
||||
private router: Router,
|
||||
@@ -65,10 +67,29 @@ export class FullComponent implements OnInit, OnDestroy {
|
||||
this._currentUser = user$.subscribe(
|
||||
(userData) => {
|
||||
this.currentUser = userData;
|
||||
if (this.currentUser.role === 'Admin') {
|
||||
//this.links = this.menuItems.getMenuItemsAdmin();
|
||||
this.links = this.menuItems.getMenuItems();
|
||||
} else {
|
||||
this.links = this.menuItems.getMenuItems();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
getMenuItems(): Menu[] {
|
||||
return this.links;
|
||||
}
|
||||
|
||||
isVisibleMenu(state: string): boolean {
|
||||
const indexOf: number = this.visibleMenu.indexOf(state);
|
||||
if (indexOf !== -1) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this._currentUser.unsubscribe();
|
||||
this.mobileQuery.removeListener(this._mobileQueryListener);
|
||||
@@ -78,8 +99,13 @@ export class FullComponent implements OnInit, OnDestroy {
|
||||
window.open('https://github.com/rampeur', '_blank');
|
||||
}
|
||||
|
||||
toggleShowQCMMenu() {
|
||||
this.showQCMMenu = !this.showQCMMenu;
|
||||
toggleShowMenu(state: string) {
|
||||
const indexOf: number = this.visibleMenu.indexOf(state);
|
||||
if (indexOf !== -1) {
|
||||
this.visibleMenu.splice(indexOf, 1);
|
||||
} else {
|
||||
this.visibleMenu.push(state);
|
||||
}
|
||||
}
|
||||
|
||||
logout() {
|
||||
|
||||
@@ -3,50 +3,67 @@ import { Injectable } from '@angular/core';
|
||||
import { Menu } from 'src/app/core/models/menu.model';
|
||||
|
||||
const MENUAUTH: Menu[] = [
|
||||
{ state: 'home', type: 'link', name: 'Accueil', icon: 'home', desc: '' },
|
||||
{ state: 'login', type: 'link', name: 'Se connecter', icon: 'fingerprint', desc: '' },
|
||||
{ state: 'register', type: 'link', name: 'Créer un compte', icon: 'person_add_alt', desc: '' }
|
||||
{ state: 'home', type: 'link', name: 'Accueil', icon: 'home', icontype: 'mat', desc: '' },
|
||||
{ state: 'login', type: 'link', name: 'Se connecter', icon: 'fingerprint', icontype: 'mat', desc: '' },
|
||||
{ state: 'register', type: 'link', name: 'Créer un compte', icon: 'person_add_alt', icontype: 'mat', desc: '' }
|
||||
];
|
||||
|
||||
const MENUITEMSADMIN: Menu[] = [
|
||||
{ state: 'home', type: 'link', name: 'Accueil', icon: 'home', icontype: 'mat', desc: '' },
|
||||
{ state: 'products', type: 'menu', name: 'Produits', icon: 'barcode', desc: '' },
|
||||
{ parent: 'products', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
|
||||
{ parent: 'products', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
|
||||
{ parent: 'products', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' },
|
||||
{ state: 'page', type: 'menu', name: 'Documentation', icon: 'books', desc: '' },
|
||||
{ parent: 'page', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
|
||||
{ parent: 'page', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
|
||||
{ parent: 'page', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' },
|
||||
{ state: 'dashboard', type: 'link', name: 'Dashboard', icon: 'dashboard', icontype: 'mat', desc: '' },
|
||||
{ state: 'logbook', type: 'link', name: 'Carnet de saut', icon: 'assignment_turned_in', icontype: 'mat', desc: '' },
|
||||
{ state: 'aeronefs', type: 'link', name: 'Aéronefs', icon: 'flight', icontype: 'mat', desc: '' },
|
||||
{ state: 'dropzones', type: 'link', name: 'Drop Zones', icon: 'flight_takeoff', icontype: 'mat', desc: '' },
|
||||
{ state: 'canopies', type: 'link', name: 'Voiles', icon: 'paragliding', icontype: 'mat', desc: '' },
|
||||
{ state: 'jumps', type: 'link', name: 'Sauts', icon: 'filter_drama', icontype: 'mat', desc: '' },
|
||||
{ state: 'calculator', type: 'link', name: 'Taille de voile', icon: 'calculate', icontype: 'mat', desc: '' },
|
||||
{ state: 'qcm', type: 'menu', name: 'QCM Brevets', icon: 'rule_folder', icontype: 'mat', desc: '' },
|
||||
{ parent: 'qcm', state: 'bpa', type: 'link', name: 'BPA', icon: 'rule', icontype: 'mat' },
|
||||
{ parent: 'qcm', state: 'c', type: 'link', name: 'Brevet C', icon: 'rule', icontype: 'mat' },
|
||||
{ parent: 'qcm', state: 'd', type: 'link', name: 'Brevet D', icon: 'rule', icontype: 'mat' }
|
||||
];
|
||||
|
||||
const MENUITEMS: Menu[] = [
|
||||
{ state: 'home', type: 'link', name: 'Accueil', icon: 'home', desc: '' },
|
||||
{ state: 'dashboard', type: 'link', name: 'Dashboard', icon: 'dashboard', desc: '' },
|
||||
{ state: 'logbook', type: 'link', name: 'Carnet de saut', icon: 'assignment_turned_in', desc: '' },
|
||||
{ state: 'aeronefs', type: 'link', name: 'Aéronefs', icon: 'flight', desc: '' },
|
||||
{ state: 'dropzones', type: 'link', name: 'Drop Zones', icon: 'flight_takeoff', desc: '' },
|
||||
{ state: 'canopies', type: 'link', name: 'Voiles', icon: 'paragliding', desc: '' },
|
||||
{ state: 'jumps', type: 'link', name: 'Sauts', icon: 'filter_drama', desc: '' },
|
||||
{ state: 'calculator', type: 'link', name: 'Taille de voile', icon: 'calculate', desc: '' },
|
||||
{ state: 'qcm', type: 'menu', name: 'QCM Brevets', icon: 'rule_folder', desc: '' }
|
||||
{ state: 'home', type: 'link', name: 'Accueil', icon: 'home', icontype: 'mat', desc: '' },
|
||||
{ state: 'products', type: 'menu', name: 'Produits', icon: 'barcode', desc: '' },
|
||||
{ parent: 'products', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
|
||||
{ parent: 'products', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
|
||||
{ parent: 'products', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' },
|
||||
{ state: 'page', type: 'menu', name: 'Documentation', icon: 'books', desc: '' },
|
||||
{ parent: 'page', state: 'les-fleurs', type: 'link', name: 'Fleurs', icon: 'marijuana', desc: '' },
|
||||
{ parent: 'page', state: 'les-resines', type: 'link', name: 'Résines', icon: 'butter', desc: '' },
|
||||
{ parent: 'page', state: 'les-molecules', type: 'link', name: 'Molécules', icon: 'molecule', desc: '' }
|
||||
];
|
||||
|
||||
const MENUPJUMP: Menu[] = [
|
||||
{ state: '#', type: 'link', name: 'Modifier', icon: 'edit', desc: '', color: 'primary' },
|
||||
{ state: '#', type: 'link', name: 'Supprimer', icon: 'delete', desc: '', color: 'raspberry' }
|
||||
];
|
||||
|
||||
const MENUQCM: Menu[] = [
|
||||
{ state: 'bpa', type: 'link', name: 'BPA', icon: 'rule' },
|
||||
{ state: 'c', type: 'link', name: 'Brevet C', icon: 'rule' },
|
||||
{ state: 'd', type: 'link', name: 'Brevet D', icon: 'rule' }
|
||||
{ state: '#', type: 'link', name: 'Modifier', icon: 'edit', icontype: 'mat', desc: '', color: 'primary' },
|
||||
{ state: '#', type: 'link', name: 'Supprimer', icon: 'delete', icontype: 'mat', desc: '', color: 'raspberry' }
|
||||
];
|
||||
|
||||
const MENUPANEL: Menu[] = [
|
||||
{ state: '#', type: 'link', name: 'Retirer du dashboard', icon: 'add_notes', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', desc: '' }
|
||||
{ state: '#', type: 'link', name: 'Retirer du dashboard', icon: 'add_notes', icontype: 'mat', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', icontype: 'mat', desc: '' }
|
||||
];
|
||||
|
||||
const MENUCALCULATOR: Menu[] = [
|
||||
{ state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Partager', icon: 'share', desc: '' }
|
||||
{ state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', icontype: 'mat', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', icontype: 'mat', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Partager', icon: 'share', icontype: 'mat', desc: '' }
|
||||
];
|
||||
|
||||
const MENULOGBOOK: Menu[] = [
|
||||
{ state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Recherche par participant', icon: 'person_search', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Import CSV', icon: 'upload_file', desc: '' }
|
||||
{ state: '#', type: 'link', name: 'Recherche avancée', icon: 'search', icontype: 'mat', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Recherche par participant', icon: 'person_search', icontype: 'mat', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Paramètres d\'affichage', icon: 'display_settings', icontype: 'mat', desc: '' },
|
||||
{ state: '#', type: 'link', name: 'Import CSV', icon: 'upload_file', icontype: 'mat', desc: '' }
|
||||
];
|
||||
|
||||
@Injectable()
|
||||
@@ -60,12 +77,12 @@ export class MenuItems {
|
||||
getMenuItems(): Menu[] {
|
||||
return MENUITEMS;
|
||||
}
|
||||
getMenuItemsAdmin(): Menu[] {
|
||||
return MENUITEMSADMIN;
|
||||
}
|
||||
getMenuLogbook(): Menu[] {
|
||||
return MENULOGBOOK;
|
||||
}
|
||||
getMenuQCM(): Menu[] {
|
||||
return MENUQCM;
|
||||
}
|
||||
getMenuPanel(): Menu[] {
|
||||
return MENUPANEL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user