# ubuntugis package https://launchpad.net/~ubuntugis/+archive/ubuntu/ppa # update Angular version npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations} typescript@latest --save # Fix for NPM installing permission problems https://docs.npmjs.com/getting-started/fixing-npm-permissions # Build web app for production ng build --prod --aot --build-optimizer //--ssl 1 --ssl-key ../ssl/client-key.pem --ssl-cert ../ssl/client-cert.pem ================app-errorhandler.ts======================= import { Injectable, ErrorHandler } from "@angular/core"; import { Subject, Observable, empty } from "rxjs"; import { catchError } from "rxjs/operators"; export class APIError { text: string; tag: string; } @Injectable() export class AppErrorHandler implements ErrorHandler { private _error$: Subject; private _msgs: any; constructor(err$, msgs) { this._error$ = err$; this._msgs = msgs; } handleError = (source$: Observable) => source$.pipe( catchError(err => { const etag = err.error.error ? err.error.error['.tag'] || '' : ''; let etext = 'Unknown Error'; if (etag && this._msgs && etag in this._msgs) etext = this._msgs[etag]; this._error$.next({ text: etext, tag: etag }); return empty(); }) ) } // Local FF Dev path: ~/.local/share/umake/web/firefox-dev #====================================================================== Responsive Responsive layout is achieved by applying additional classes to the columns whereas ui-g-* define the default behavior. Four screen sizes are supported with different breakpoints. CODE: SELECT ALL Prefix Devices Media Query Example ui-sm-* Phones max-width: 40em (640px) ui-sm-6, ui-sm-4 ui-md-* Tablets min-width: 40.063em (641px) ui-md-2, ui-sm-8 ui-lg-* Desktops min-width: 64.063em (1025px) ui-lg-6, ui-sm-12 ui-xl-* Big screen monitors min-width: 90.063em (1441px) ui-xl-2, ui-sm-10 Most of the time, ui-md-* styles are used with default ui-g-* classes, to customize small or large screens apply ui-sm, ui-lg and ui-xl can be utilized. # My Dark Sky weather API key: 5cfb5e43ff89ab7b40ba08f57f5a7235 # PrimeNG Issue Template - to report bugs or issues with primeng components https://stackblitz.com/github/primefaces/primeng-issue-template # Install this for xliffmerge tool npm install -g ngx-i18nsupport // Angular - Custom form controls are simply components that implement the ControlValueAccessor interface. By implementing this interface, our custom controls can now work with Template and Reactive Forms APIs seamlessly providing a great developer experience to those using our components. // ng generate component ng g c /shared/profile-form --selector=user-profile-form --skip-tests -m=app-shared // GRecaptcha SiteKey 6Le2EAAnAAAAAJHA-UKaFb8IIpaq7wo-TSvvCnQF // GRecaptcha SecKey 6Le2EAAnAAAAABy_7enAqU0k1M4GiwcXtB14iMMB // Resolve peer dependencies unmatched issue: npm i --legacy-peer-deps or npm config set legacy-peer-deps true