+ ngx-admin
Oltre un’anno fa, stavo cercando una ‘dashboard’ nativa angular e non un port da jquery, per un sviluppare un progetto client/server (postgresql, php, web, client), che permettesse di concentrarsi più sulla ‘gestione dei dati’, cosa realmente importante, che sullo sviluppo interfaccia ma… anche l’occhio vuole la sua parte.
Dopo un po’ di ricerche ho deciso, di concentrarmi su un prodotto già preso in considerazione in passato ma poi, un po’ per tempo un po’ per pigrizia, avevo abbandonato: ngx-admin.
Se, come me, siete pigri ma curiosi esiste una demo online che vi permetterà immediatamente di valutare se fa al caso vostro.
… e se siete sviluppatori bravi e sapete bene l’inglese, non come me, potete anche farvi contattare ed esporre i vostri quesiti.
ngx-admin è basato su nebular e eva icon, comprese in ngx, insieme formano eva-design, commerciale; ma se fosse necessario, è possibile partire da zero… ma il target, al momento, è quello di mostrare gli stessi dati con un vestito nuovo, e piacevole…
premessa
Sono appunti presi come promemoria visto che è stato deciso di ‘ridisegnare’ tutto il prodotto, attualmente in produzione per migliorarlo; sicuramente, questo metodo non è l’unico ne il migliore e/o corretto, ma funziona…
Per lo stesso motivo mi soffermo su installazioni varie, node, npm, git etc. e versioni richieste.
cosa serve
Come detto sopra indico cosa utilizzo:
- Visual Studio Code con
remote ssh
perchè il progetto è su una macchina virtuale linux - su vm linux node e npm aggiornati, preferibilmente
setup ambiente
Come nelle indicazioni ufficiali creo un cartella per il progetto
$ mkdir ngx-admin7-ng12
$ cd ngx-admin7-ng12
clono ngx-admin
git clone https://github.com/akveo/ngx-admin.git
per avere diverse versioni nello stesso folder rinomino (mia idea) cartella generata e faccio partire installazione, installa anche angular:
$ mv ngx-admin ngx-admin7-ng12
$ cd ngx-admin7-ng12 && npm i
Adesso o apro un nuovo progetto su VisualCode oppure se voglio unirlo a un workspace esistente in VisualCode apro il mio file .code-workspace e aggiungo
{
"path": "my root path /ngx-admin7-ng12"
},
adesso posso continuare in VisualCode, mi posiziono su ngx-admin7-ng12
click destro e ‘Open In Integrated Terminal’ dal terminale aperto, faccio fix npm, per allineare versioni etc. e faccio prima prova partenza
$ npm audit fix
$ npm start
Se tutto su stesso ambiente e tutto corretto http://localhost:4200 si apre demo.
Per comodità utilizzo un proxy, ma comunque, accedendo in remoto browser da eerrore e non arica;
modifico package.json
aggiungendo a ng serve
–disable-host-check, che non controlla ip provenienza;ng serve
genera warning ma ssendo in intranet non interessa, in produzione evitare.
Ma se tutto andato bene adesso ngx-admin gira nell’ambiente privato e potete provare e modificare.
updating Angular
Al momento ngx-admin v.7 installa angular 11 quindi posso anche aggiornare versione quindi da update angular
$ ng update @angular/core@12 @angular/cli@12
se ci sono problemi on versioni node, come nel mio caso
aggiorniamo node con nvm come illustrato
$ sudo apt update
$ sudo apt install build-essential checkinstall libssl-dev
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash
$ nvm –version /* chiudo e riapro terminale prima */
$ nvm ls /* versioni locali */
$ nvm ls-remote. /* versioni disponibili */
$ nvm install [version.number]
se la demo è su una subdir web
ng build –prod –base-href /tuasubdir/
todo … update e auth
page, ng-content & select
page.component src/app/pages/pages.component.ts
è il componente principale, contiene il blocco principale layout:
originale
@Component({
selector: 'ngx-pages',
styleUrls: ['pages.component.scss'],
template: `
<ngx-one-column-layout>
<nb-menu [items]="menu"></nb-menu>
<router-outlet></router-outlet>
</ngx-one-column-layout>
`,
})
modificato
@Component({
selector: 'ngx-pages',
styleUrls: ['pages.component.scss'],
template: `
<ngx-gisp-tablet-layout>
<nb-menu [items]="menu" tag="left-menu"></nb-menu>
<router-outlet></router-outlet>
<nb-menu [items]="menu" tag="right-menu"></nb-menu>
</ngx-gisp-tablet-layout>
`,
})
Nella modifica duplico menu, uno a dx e uno sx, dove aggiungo tag che richiamo <ng-content select="[tag=left-menu]"></ng-content>
angular multiple router-outlet
Come idea per ogni route dovrò avere diversi menu a dx e sx, come documentazione parto da tutorial techdiaries e multiple outlets
elenco promemoria
- https://angular.io/api/router/RouterOutlet
- https://blog.angular-university.io/angular2-router/
- https://www.techiediaries.com/routing-angular-router/
- https://www.techiediaries.com/angular-router-multiple-outlets/
- http://guodongh.ca/2019/08/24/Angular-8-Content-Projection-Router-Pipe-and-Dependency-Injection/
- https://angular.io/guide/view-encapsulation
- https://stackoverflow.com/questions/42315058/ng-content-vs-router-outlet-in-angular-2
- https://stackoverflow.com/questions/51105244/my-angular-app-needs-two-columns-but-the-content-of-those-can-vary-significantl
- (content projection) https://medium.com/disney-streaming/content-projection-with-angular-dbc61c6c181