skirda-backend/documentation.json

10313 lines
538 KiB
JSON
Raw Permalink Normal View History

2022-08-24 12:08:22 +00:00
{
"pipes": [
{
"name": "CapitalizePipe",
"id": "pipe-CapitalizePipe-77e8181fc318d34f561ef330a4019ae0ab3b71e4a99ef679e6ab32345cda951a4961961152b8e29b2c9ee298b7d42701bfa9ad4ed2390d61fd7c94c213a02105",
"file": "src/app/shared/pipes/capitalize.pipe.ts",
"type": "pipe",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"properties": [],
"methods": [
{
"name": "transform",
"args": [
{
"name": "value",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 6,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "value",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"ngname": "capitalize",
"sourceCode": "import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'capitalize' })\nexport class CapitalizePipe implements PipeTransform {\n\n transform(value: any) {\n return typeof value === 'string' && value.charAt(0).toUpperCase() + value.slice(1) || value;\n }\n}\n"
},
{
"name": "TrimPipe",
"id": "pipe-TrimPipe-5fc7c1a6d56cfb76dd6605f77ee2298c9509decaaeab9e9527071a761fffee11d521591e3194a213f9db5f914997af77cce6963aec4bf87cd85f93cfc4665704",
"file": "src/app/shared/pipes/trim.pipe.ts",
"type": "pipe",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"properties": [],
"methods": [
{
"name": "transform",
"args": [
{
"name": "value",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 5,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "value",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"ngname": "trim",
"sourceCode": "import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'trim'})\nexport class TrimPipe implements PipeTransform {\n transform(value: any) {\n if (!value) {\n return '';\n }\n return value.trim();\n }\n}\n"
}
],
"interfaces": [
{
"name": "IApiResponse",
"id": "interface-IApiResponse-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "error",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": true,
"description": "",
"line": 52
},
{
"name": "status",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 51
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "ICustomer",
"id": "interface-ICustomer-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "address",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 9
},
{
"name": "city",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 10
},
{
"name": "firstName",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 6
},
{
"name": "gender",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 8
},
{
"name": "id",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 5
},
{
"name": "lastName",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 7
},
{
"name": "latitude",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": true,
"description": "",
"line": 14
},
{
"name": "longitude",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": true,
"description": "",
"line": 15
},
{
"name": "orders",
"deprecated": false,
"deprecationMessage": "",
"type": "IOrder[]",
"optional": true,
"description": "",
"line": 12
},
{
"name": "orderTotal",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": true,
"description": "",
"line": 13
},
{
"name": "state",
"deprecated": false,
"deprecationMessage": "",
"type": "IState",
"optional": false,
"description": "",
"line": 11
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IMapDataPoint",
"id": "interface-IMapDataPoint-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "latitutde",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 20
},
{
"name": "longitude",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 19
},
{
"name": "markerText",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": true,
"description": "",
"line": 21
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IModalContent",
"id": "interface-IModalContent-936b74fdaaf3d605f1d258329b92f68d126a1e02f6b3fddb1148a1c28b7b815022a18f91068ffeee08bb99fb6340eb1439706e92f8f971c1583717b110b3379a",
"file": "src/app/core/modal/modal.service.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { ModalComponent } from './modal.component';\n\nexport interface IModalContent {\n header?: string;\n body?: string;\n cancelButtonText?: string;\n OKButtonText?: string;\n cancelButtonVisible?: boolean;\n}\n\n@Injectable()\nexport class ModalService {\n\n constructor() { }\n\n show: (modalContent: IModalContent) => Promise<boolean> = () => { return {} as Promise<boolean>; };\n hide: () => void = () => {};\n\n}\n",
"properties": [
{
"name": "body",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": true,
"description": "",
"line": 6
},
{
"name": "cancelButtonText",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": true,
"description": "",
"line": 7
},
{
"name": "cancelButtonVisible",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": true,
"description": "",
"line": 9
},
{
"name": "header",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": true,
"description": "",
"line": 5
},
{
"name": "OKButtonText",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": true,
"description": "",
"line": 8
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IOrder",
"id": "interface-IOrder-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "itemCost",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 31
},
{
"name": "productName",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 30
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IOrderItem",
"id": "interface-IOrderItem-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "id",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 35
},
{
"name": "itemCost",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 37
},
{
"name": "productName",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 36
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IPagedResults",
"id": "interface-IPagedResults-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "results",
"deprecated": false,
"deprecationMessage": "",
"type": "T",
"optional": false,
"description": "",
"line": 42
},
{
"name": "totalRecords",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 41
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IState",
"id": "interface-IState-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "abbreviation",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 25
},
{
"name": "name",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 26
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "IUserLogin",
"id": "interface-IUserLogin-e438bbdb4fe2453206cd2a7f524078cf417ceb4f9276a9de071236951320220a072680af072c90413d1f856b8351119b161fdfecd0de91190a8cf0f3d7dc999a",
"file": "src/app/shared/interfaces.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "import { ModuleWithProviders } from '@angular/core';\nimport { Routes } from '@angular/router';\n\nexport interface ICustomer {\n id: number;\n firstName: string;\n lastName: string;\n gender: string;\n address: string;\n city: string;\n state: IState;\n orders?: IOrder[];\n orderTotal?: number;\n latitude?: number;\n longitude?: number;\n}\n\nexport interface IMapDataPoint {\n longitude: number;\n latitutde: number;\n markerText?: string;\n}\n\nexport interface IState {\n abbreviation: string;\n name: string;\n}\n\nexport interface IOrder {\n productName: string;\n itemCost: number;\n}\n\nexport interface IOrderItem {\n id: number;\n productName: string;\n itemCost: number;\n}\n\nexport interface IPagedResults<T> {\n totalRecords: number;\n results: T;\n}\n\nexport interface IUserLogin {\n email: string;\n password: string;\n}\n\nexport interface IApiResponse {\n status: boolean;\n error?: string;\n}\n",
"properties": [
{
"name": "email",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 46
},
{
"name": "password",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 47
}
],
"indexSignatures": [],
"kind": 165,
"methods": []
},
{
"name": "User",
"id": "interface-User-9c7e5f1bbbab702cb032307d130876cb68969b0cd4eedef32a0c8cad8081a54e5f8f577ed6ad4539c1b99a1d246cb34031d198c2ea8eba440e64e91b14f01fdc",
"file": "src/stories/User.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "interface",
"sourceCode": "export interface User {}\n",
"properties": [],
"indexSignatures": [],
"methods": []
}
],
"injectables": [
{
"name": "AuthService",
"id": "injectable-AuthService-200163aa207b432798031585907e81b04c821ed7fe174c22831be450a3c8abe7aaf0873ad8e70b6220ad0f319584d5c81e4f08d27b8c761a55185d25ff159c62",
"file": "src/app/core/services/auth.service.ts",
"properties": [
{
"name": "authUrl",
"defaultValue": "this.baseUrl + '/api/auth'",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 13
},
{
"name": "baseUrl",
"defaultValue": "this.utilitiesService.getApiUrl()",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 12
},
{
"name": "isAuthenticated",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 14
},
{
"name": "redirectUrl",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 15
}
],
"methods": [
{
"name": "handleError",
"args": [
{
"name": "error",
"type": "HttpErrorResponse",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 48,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
],
"jsdoctags": [
{
"name": "error",
"type": "HttpErrorResponse",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "login",
"args": [
{
"name": "userLogin",
"type": "IUserLogin",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<boolean>",
"typeParameters": [],
"line": 24,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "userLogin",
"type": "IUserLogin",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "logout",
"args": [],
"optional": false,
"returnType": "Observable<boolean>",
"typeParameters": [],
"line": 36,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "userAuthChanged",
"args": [
{
"name": "status",
"type": "boolean",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 20,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
],
"jsdoctags": [
{
"name": "status",
"type": "boolean",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable, Output, EventEmitter, Inject, Directive } from '@angular/core';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\n\nimport { Observable, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { IUserLogin } from '../../shared/interfaces';\nimport { UtilitiesService } from './utilities.service';\n\n@Injectable()\nexport class AuthService {\n baseUrl = this.utilitiesService.getApiUrl();\n authUrl = this.baseUrl + '/api/auth';\n isAuthenticated = false;\n redirectUrl: string = '';\n @Output() authChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private http: HttpClient, private utilitiesService: UtilitiesService) { }\n\n private userAuthChanged(status: boolean) {\n this.authChanged.emit(status); // Raise changed event\n }\n\n login(userLogin: IUserLogin): Observable<boolean> {\n return this.http.post<boolean>(this.authUrl + '/login', userLogin)\n .pipe(\n map(loggedIn => {\n this.isAuthenticated = loggedIn;\n this.userAuthChanged(loggedIn);\n return loggedIn;\n }),\n catchError(this.handleError)\n );\n }\n\n logout(): Observable<boolean> {\n return this.http.post<boolean>(this.authUrl + '/logout', null)\n .pipe(\n map(loggedOut => {\n this.isAuthenticated = !loggedOut;\n this.userAuthChanged(!loggedOut); // Return loggedIn status\n return loggedOut;\n }),\n catchError(this.handleError)\n );\n }\n\n private handleError(error: HttpErrorResponse) {\n console.error('server error:', error);\n if (error.error instanceof Error) {\n const errMessage = error.error.message;\n return throwError(() => errMessage);\n // return Observable.throw(err.text() || 'backend server error');\n }\n return throwError(() => error || 'Server error');\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "http",
"type": "HttpClient",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "utilitiesService",
"type": "UtilitiesService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 16,
"jsdoctags": [
{
"name": "http",
"type": "HttpClient",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "utilitiesService",
"type": "UtilitiesService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "injectable"
},
{
"name": "DataService",
"id": "injectable-DataService-f4792b4c79a487ce89768fb18a1fa76c969a48c586a86d2245bba51ce079452cdb898a91a9b3e79faa0bc459aaf941acf258e5385c775e380c3b52fc26ad1798",
"file": "src/app/core/services/data.service.ts",
"properties": [
{
"name": "baseUrl",
"defaultValue": "this.utilitiesService.getApiUrl()",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 12
},
{
"name": "customersBaseUrl",
"defaultValue": "this.baseUrl + '/api/customers'",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 13
},
{
"name": "orders",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "IOrder[]",
"optional": false,
"description": "",
"line": 15
},
{
"name": "ordersBaseUrl",
"defaultValue": "this.baseUrl + '/api/orders'",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 14
},
{
"name": "states",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "IState[]",
"optional": false,
"description": "",
"line": 16
}
],
"methods": [
{
"name": "calculateCustomersOrderTotal",
"args": [
{
"name": "customers",
"type": "ICustomer[]",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 98,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "customers",
"type": "ICustomer[]",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "deleteCustomer",
"args": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<boolean>",
"typeParameters": [],
"line": 74,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getCustomer",
"args": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<ICustomer>",
"typeParameters": [],
"line": 50,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getCustomers",
"args": [],
"optional": false,
"returnType": "Observable<ICustomer[]>",
"typeParameters": [],
"line": 39,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "getCustomersPage",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "pageSize",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<IPagedResults<ICustomer[]>>",
"typeParameters": [],
"line": 20,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "pageSize",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getStates",
"args": [],
"optional": false,
"returnType": "Observable<IState[]>",
"typeParameters": [],
"line": 82,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "handleError",
"args": [
{
"name": "error",
"type": "HttpErrorResponse",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 87,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
],
"jsdoctags": [
{
"name": "error",
"type": "HttpErrorResponse",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "insertCustomer",
"args": [
{
"name": "customer",
"type": "ICustomer",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<ICustomer>",
"typeParameters": [],
"line": 61,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "customer",
"type": "ICustomer",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "updateCustomer",
"args": [
{
"name": "customer",
"type": "ICustomer",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<boolean>",
"typeParameters": [],
"line": 66,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "customer",
"type": "ICustomer",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\n\nimport { Observable, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { ICustomer, IOrder, IState, IPagedResults, IApiResponse } from '../../shared/interfaces';\nimport { UtilitiesService } from './utilities.service';\n\n@Injectable()\nexport class DataService {\n baseUrl = this.utilitiesService.getApiUrl();\n customersBaseUrl = this.baseUrl + '/api/customers';\n ordersBaseUrl = this.baseUrl + '/api/orders';\n orders: IOrder[] = [];\n states: IState[] = [];\n\n constructor(private http: HttpClient, private utilitiesService: UtilitiesService) { }\n\n getCustomersPage(page: number, pageSize: number): Observable<IPagedResults<ICustomer[]>> {\n return this.http.get<ICustomer[]>(\n `${this.customersBaseUrl}/page/${page}/${pageSize}`,\n { observe: 'response' })\n .pipe(\n map(res => {\n const xInlineCount = res.headers.get('X-InlineCount');\n const totalRecords = Number(xInlineCount);\n const customers = res.body as ICustomer[];\n this.calculateCustomersOrderTotal(customers);\n return {\n results: customers,\n totalRecords: totalRecords\n };\n }),\n catchError(this.handleError)\n );\n }\n\n getCustomers(): Observable<ICustomer[]> {\n return this.http.get<ICustomer[]>(this.customersBaseUrl)\n .pipe(\n map(customers => {\n this.calculateCustomersOrderTotal(customers);\n return customers;\n }),\n catchError(this.handleError)\n );\n }\n\n getCustomer(id: number): Observable<ICustomer> {\n return this.http.get<ICustomer>(this.customersBaseUrl + '/' + id)\n .pipe(\n map(customer => {\n this.calculateCustomersOrderTotal([customer]);\n return customer;\n }),\n catchError(this.handleError)\n );\n }\n\n insertCustomer(customer: ICustomer): Observable<ICustomer> {\n return this.http.post<ICustomer>(this.customersBaseUrl, customer)\n .pipe(catchError(this.handleError));\n }\n\n updateCustomer(customer: ICustomer): Observable<boolean> {\n return this.http.put<IApiResponse>(this.customersBaseUrl + '/' + customer.id, customer)\n .pipe(\n map(res => res.status),\n catchError(this.handleError)\n );\n }\n\n deleteCustomer(id: number): Observable<boolean> {\n return this.http.delete<IApiResponse>(this.customersBaseUrl + '/' + id)\n .pipe(\n map(res => res.status),\n catchError(this.handleError)\n );\n }\n\n getStates(): Observable<IState[]> {\n return this.http.get<IState[]>(this.baseUrl + '/api/states')\n .pipe(catchError(this.handleError));\n }\n\n private handleError(error: HttpErrorResponse) {\n console.error('server error:', error);\n if (error.error instanceof Error) {\n const errMessage = error.error.message;\n return throwError(() => errMessage);\n // Use the following instead if using lite-server\n // return Observable.throw(err.text() || 'backend server error');\n }\n return throwError(() => error || 'Node.js server error');\n }\n\n calculateCustomersOrderTotal(customers: ICustomer[]) {\n for (const customer of customers) {\n if (customer && customer.orders) {\n let total = 0;\n for (const order of customer.orders) {\n total += order.itemCost;\n }\n customer.orderTotal = total;\n }\n
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "http",
"type": "HttpClient",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "utilitiesService",
"type": "UtilitiesService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 16,
"jsdoctags": [
{
"name": "http",
"type": "HttpClient",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "utilitiesService",
"type": "UtilitiesService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "injectable"
},
{
"name": "DialogService",
"id": "injectable-DialogService-3bb4c252708dc41b02cfaec47711fcb523827ab5d7423b21779733508eb33ca1a8924ebdf36aae2b6516f2a54b58cd811ef9a4febf569fd4bcc1571165a7bc7c",
"file": "src/app/core/services/dialog.service.ts",
"properties": [
{
"name": "message",
"defaultValue": "'Is it OK?'",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 7
},
{
"name": "promise",
"defaultValue": "{} as Promise<boolean>",
"deprecated": false,
"deprecationMessage": "",
"type": "Promise<boolean>",
"optional": false,
"description": "",
"line": 6
}
],
"methods": [
{
"name": "confirm",
"args": [
{
"name": "message",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"optional": true
}
],
"optional": false,
"returnType": "Promise<boolean>",
"typeParameters": [],
"line": 9,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "message",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"optional": true,
"tagName": {
"text": "param"
}
}
]
},
{
"name": "resolver",
"args": [
{
"name": "resolve",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 15,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "resolve",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DialogService {\n\n promise: Promise<boolean> = {} as Promise<boolean>;\n message = 'Is it OK?';\n\n confirm(message?: string) {\n if (message) { this.message = message; }\n this.promise = new Promise<boolean>(this.resolver);\n return this.promise;\n }\n\n resolver(resolve: any) {\n return resolve(window.confirm('Is it OK?'));\n }\n\n}\n",
"type": "injectable"
},
{
"name": "EventBusService",
"id": "injectable-EventBusService-9c7b561e0e2116da23c54c08ee76ea2c8318ad31d705df23f0d544faac45864c183a333dd3e073a25793c3899e205b19d0e7c6cb456c722cae75194fa517cd69",
"file": "src/app/core/services/event-bus.service.ts",
"properties": [
{
"name": "subject",
"defaultValue": "new Subject<any>()",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 8
}
],
"methods": [
{
"name": "emit",
"args": [
{
"name": "event",
"type": "EmitEvent",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 25,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "event",
"type": "EmitEvent",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "on",
"args": [
{
"name": "event",
"type": "Events",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "action",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Subscription",
"typeParameters": [],
"line": 12,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "event",
"type": "Events",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "action",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { Subject, Subscription, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable()\nexport class EventBusService {\n\n subject = new Subject<any>();\n\n constructor() { }\n\n on(event: Events, action: any): Subscription {\n return this.subject\n .pipe(\n filter((e: EmitEvent) => {\n return e.name === event;\n }),\n map((e: EmitEvent) => {\n return e.value;\n })\n )\n .subscribe(action);\n }\n\n emit(event: EmitEvent) {\n this.subject.next(event);\n }\n}\n\nexport class EmitEvent {\n\n constructor(public name: any, public value?: any) { }\n\n}\n\nexport enum Events {\n httpRequest,\n httpResponse\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 8
},
"type": "injectable"
},
{
"name": "FilterService",
"id": "injectable-FilterService-7b23a479dd7cadb7a1663c8314ef5f87326dd5b35b767ea25cc0cc18fce88d685ba95dccda26617b23a8cde4a89c8c529f6ba3463de3564f3160398352b284ab",
"file": "src/app/core/services/filter.service.ts",
"properties": [],
"methods": [
{
"name": "filter",
"args": [
{
"name": "items",
"type": "T[]",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "data",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "props",
"type": "string[]",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [
"T"
],
"line": 10,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "items",
"type": "T[]",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "data",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "props",
"type": "string[]",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\n\nimport { PropertyResolver } from '../../core/services/property-resolver';\n\n@Injectable()\nexport class FilterService {\n\n constructor() { }\n\n filter<T>(items: T[], data: string, props: string[]) {\n return items.filter((item: T) => {\n let match = false;\n for (const prop of props) {\n if (prop.indexOf('.') > -1) {\n const value = PropertyResolver.resolve(prop, item);\n if (value && value.toUpperCase().indexOf(data) > -1) {\n match = true;\n break;\n }\n continue;\n }\n\n if ((item as any)[prop].toString().toUpperCase().indexOf(data) > -1) {\n match = true;\n break;\n }\n }\n return match;\n });\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 6
},
"type": "injectable"
},
{
"name": "GrowlerService",
"id": "injectable-GrowlerService-8b77dd919c477d27b1a41238443f396d97ed8bd8dc01e016985defc48b62217bb7654b0be5e7394379fae0f8148eebaec8c6b1e04ad1405fe26cf5158cf8308c",
"file": "src/app/core/growler/growler.service.ts",
"properties": [
{
"name": "growl",
"defaultValue": "() => {...}",
"deprecated": false,
"deprecationMessage": "",
"type": "function",
"optional": false,
"description": "",
"line": 8
}
],
"methods": [],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class GrowlerService {\n\n constructor() { }\n\n growl: (message: string, growlType: GrowlerMessageType) => number = () => 0;\n\n}\n\nexport enum GrowlerMessageType {\n Success,\n Danger,\n Warning,\n Info\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 4
},
"type": "injectable"
},
{
"name": "LoggerService",
"id": "injectable-LoggerService-cdf70ace6f1d77e5fb658aa8dc4527e0fbc6e0b1e3741bef8749322614cbbffc248156ba0e8e927e9fe4fde8a0f70d4ed5777fd5cda3c15cae69cd37395f19f2",
"file": "src/app/core/services/logger.service.ts",
"properties": [],
"methods": [
{
"name": "log",
"args": [
{
"name": "msg",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 11,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "msg",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "logError",
"args": [
{
"name": "msg",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 21,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "msg",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggerService {\n\n constructor() { }\n\n log(msg: string) {\n if (!environment.production) {\n console.log(msg);\n }\n else {\n // AppInsights\n }\n\n }\n\n logError(msg: string) {\n if (!environment.production) {\n console.error(msg);\n }\n else {\n // AppInsights\n }\n\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 7
},
"type": "injectable"
},
{
"name": "ModalService",
"id": "injectable-ModalService-936b74fdaaf3d605f1d258329b92f68d126a1e02f6b3fddb1148a1c28b7b815022a18f91068ffeee08bb99fb6340eb1439706e92f8f971c1583717b110b3379a",
"file": "src/app/core/modal/modal.service.ts",
"properties": [
{
"name": "hide",
"defaultValue": "() => {...}",
"deprecated": false,
"deprecationMessage": "",
"type": "function",
"optional": false,
"description": "",
"line": 18
},
{
"name": "show",
"defaultValue": "() => {...}",
"deprecated": false,
"deprecationMessage": "",
"type": "function",
"optional": false,
"description": "",
"line": 17
}
],
"methods": [],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { ModalComponent } from './modal.component';\n\nexport interface IModalContent {\n header?: string;\n body?: string;\n cancelButtonText?: string;\n OKButtonText?: string;\n cancelButtonVisible?: boolean;\n}\n\n@Injectable()\nexport class ModalService {\n\n constructor() { }\n\n show: (modalContent: IModalContent) => Promise<boolean> = () => { return {} as Promise<boolean>; };\n hide: () => void = () => {};\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 13
},
"type": "injectable"
},
{
"name": "PreloadModulesStrategy",
"id": "injectable-PreloadModulesStrategy-5ab30a5e7b043ea092547924ea202594da951f5fb76ee12067041ff8d3067407d291d4c0983b7842cda33612b4f298a4ebc1a2563cccb8a207f07612668f9a86",
"file": "src/app/core/strategies/preload-modules.strategy.ts",
"properties": [],
"methods": [
{
"name": "preload",
"args": [
{
"name": "route",
"type": "Route",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "load",
"type": "function",
"deprecated": false,
"deprecationMessage": "",
"function": []
}
],
"optional": false,
"returnType": "Observable<any>",
"typeParameters": [],
"line": 13,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "route",
"type": "Route",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "load",
"type": "function",
"deprecated": false,
"deprecationMessage": "",
"function": [],
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { PreloadingStrategy, Route } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { LoggerService } from '../services/logger.service';\n\n@Injectable()\nexport class PreloadModulesStrategy implements PreloadingStrategy {\n\n constructor(private logger: LoggerService) {}\n\n preload(route: Route, load: () => Observable<any>): Observable<any> {\n if (route.data && route.data['preload']) {\n this.logger.log('Preloaded: ' + route.path);\n return load();\n } else {\n return of(null);\n }\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 9,
"jsdoctags": [
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "injectable"
},
{
"name": "SorterService",
"id": "injectable-SorterService-09eb6582e6eb9e1bf2d35828da80bcb3fb3545154c9333cf91edff880db0e3a176339ed09bd9c6635d5826faa76146590ffc7ee2e40d2cf149220c2ca2ab2a41",
"file": "src/app/core/services/sorter.service.ts",
"properties": [
{
"name": "direction",
"defaultValue": "1",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 11
},
{
"name": "property",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 10
}
],
"methods": [
{
"name": "isString",
"args": [
{
"name": "val",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "boolean",
"typeParameters": [],
"line": 51,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "val",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "sort",
"args": [
{
"name": "collection",
"type": "any[]",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "prop",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "reverseSort",
"type": "",
"deprecated": false,
"deprecationMessage": "",
"defaultValue": "true"
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 13,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "collection",
"type": "any[]",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "prop",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "reverseSort",
"type": "",
"deprecated": false,
"deprecationMessage": "",
"defaultValue": "true",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\n\nimport { PropertyResolver } from './property-resolver';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SorterService {\n\n property: string = '';\n direction = 1;\n\n sort(collection: any[], prop: any, reverseSort = true) {\n this.property = prop;\n if (reverseSort) {\n this.direction = (this.property === prop) ? this.direction * -1 : 1;\n }\n\n return collection.sort((a: any, b: any) => {\n let aVal: any;\n let bVal: any;\n\n // Handle resolving complex properties such as 'state.name' for prop value\n if (prop && prop.indexOf('.') > -1) {\n aVal = PropertyResolver.resolve(prop, a);\n bVal = PropertyResolver.resolve(prop, b);\n } else {\n aVal = a[prop];\n bVal = b[prop];\n }\n\n // Fix issues that spaces before/after string value can cause such as ' San Francisco'\n if (this.isString(aVal)) {\n aVal = aVal.trim().toUpperCase();\n }\n\n if (this.isString(bVal)) {\n bVal = bVal.trim().toUpperCase();\n }\n\n if (aVal === bVal) {\n return 0;\n } else if (aVal > bVal) {\n return this.direction * -1;\n } else {\n return this.direction * 1;\n }\n });\n }\n\n isString(val: any): boolean {\n return (val && (typeof val === 'string' || val instanceof String));\n }\n\n}\n",
"type": "injectable"
},
{
"name": "TrackByService",
"id": "injectable-TrackByService-65c4ec81be84e32eac1bf42f4c0836731cc1ccf8f0d35e1f0a0f1ce11207438bc215bf4a40b84ddd5c9399133192f5c00954390d668452af45c33c0e81087869",
"file": "src/app/core/services/trackby.service.ts",
"properties": [],
"methods": [
{
"name": "customer",
"args": [
{
"name": "index",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "customer",
"type": "ICustomer",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 8,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "index",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "customer",
"type": "ICustomer",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "order",
"args": [
{
"name": "index",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "order",
"type": "IOrder",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "number",
"typeParameters": [],
"line": 12,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "index",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "order",
"type": "IOrder",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\n\nimport { ICustomer, IOrder } from '../../shared/interfaces';\n\n@Injectable()\nexport class TrackByService {\n\n customer(index: number, customer: ICustomer) {\n return customer.id;\n }\n\n order(index: number, order: IOrder) {\n return index;\n }\n\n\n\n}\n",
"type": "injectable"
},
{
"name": "UtilitiesService",
"id": "injectable-UtilitiesService-5caa42b8139da6d20ced77064bf394822e1c577980abae6e67c06c31a079913f317b292a6c9d117a432704c34fb2b8fc61db3d391b0574082fad2cd31cbe6583",
"file": "src/app/core/services/utilities.service.ts",
"properties": [],
"methods": [
{
"name": "getApiUrl",
"args": [],
"optional": false,
"returnType": "string",
"typeParameters": [],
"line": 7,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "getPort",
"args": [],
"optional": false,
"returnType": "string",
"typeParameters": [],
"line": 12,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable, Inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class UtilitiesService { \n constructor(@Inject('Window') private window: Window) { }\n\n getApiUrl() {\n const port = this.getPort();\n return `${this.window.location.protocol}//${this.window.location.hostname}${port}`;\n }\n\n private getPort() {\n const port = this.window.location.port;\n if (port) {\n // for running with Azure Functions local emulator\n if (port === '4200') {\n // Local run with 'npm run' also started in api folder for Azure Functions\n return ':7071'; // for debugging Azure Functions locally\n }\n // Running with local node (which serves Angular and the API)\n return ':' + this.window.location.port;\n }\n else {\n // for running locally with Docker/Kubernetes\n if (this.window.location.hostname === 'localhost') {\n return ':8080';\n }\n }\n return '';\n }\n}",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "window",
"type": "Window",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 4,
"jsdoctags": [
{
"name": "window",
"type": "Window",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "injectable"
}
],
"guards": [
{
"name": "CanActivateGuard",
"id": "injectable-CanActivateGuard-db4c2e7add04a47ff4e12fae8a9397f4ae013a194408a9e41992866234dd405ee682b7b2365df3954cc9381b3d8fef17afb7e3060fcb53bf72b0e729510b3b1e",
"file": "src/app/customer/guards/can-activate.guard.ts",
"properties": [],
"methods": [
{
"name": "canActivate",
"args": [
{
"name": "route",
"type": "ActivatedRouteSnapshot",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "state",
"type": "RouterStateSnapshot",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable | Promise | boolean",
"typeParameters": [],
"line": 12,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "route",
"type": "ActivatedRouteSnapshot",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "state",
"type": "RouterStateSnapshot",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { AuthService } from '../../core/services/auth.service';\n\n@Injectable()\nexport class CanActivateGuard implements CanActivate {\n\n constructor(private authService: AuthService, private router: Router) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n if (this.authService.isAuthenticated) {\n return true;\n }\n\n // Track URL user is trying to go to so we can send them there after logging in\n this.authService.redirectUrl = state.url;\n this.router.navigate(['/login']);\n return false;\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "authService",
"type": "AuthService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 8,
"jsdoctags": [
{
"name": "authService",
"type": "AuthService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "guard"
},
{
"name": "CanDeactivateGuard",
"id": "injectable-CanDeactivateGuard-8e5e57f3c2d001a364929edbc55ef2cbe56630b3f41ab38e7cbef5d780c7bb6e6c6b42e88fd013eaa6d43fdfe9e73f6ce619436bbe1a3375f1fc681476eaa4a6",
"file": "src/app/customer/guards/can-deactivate.guard.ts",
"properties": [],
"methods": [
{
"name": "canDeactivate",
"args": [
{
"name": "component",
"type": "CustomerEditComponent",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "route",
"type": "ActivatedRouteSnapshot",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "state",
"type": "RouterStateSnapshot",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable | Promise | boolean",
"typeParameters": [],
"line": 13,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "component",
"type": "CustomerEditComponent",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "route",
"type": "ActivatedRouteSnapshot",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "state",
"type": "RouterStateSnapshot",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { CustomerEditComponent } from '../customer-edit/customer-edit.component';\nimport { LoggerService } from '../../core/services/logger.service';\n\n@Injectable()\nexport class CanDeactivateGuard implements CanDeactivate<CustomerEditComponent> {\n\n constructor(private logger: LoggerService) {}\n\n canDeactivate(\n component: CustomerEditComponent,\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n\n this.logger.log(`CustomerId: ${route.parent?.params['id']} URL: ${state.url}`);\n\n // Check with component to see if we're able to deactivate\n return component.canDeactivate();\n }\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 9,
"jsdoctags": [
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "guard"
}
],
"interceptors": [
{
"name": "AuthInterceptor",
"id": "injectable-AuthInterceptor-816bf346cb49f9595e5cc3b0fa4e965034e48f2e6d366d7076b8428723ecb863eb728f9ebb93d5e301b483e69e34eb5298d870cbc272e7374ebb733d48bfdc54",
"file": "src/app/core/interceptors/auth.interceptor.ts",
"properties": [],
"methods": [
{
"name": "intercept",
"args": [
{
"name": "req",
"type": "HttpRequest<any>",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "next",
"type": "HttpHandler",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<HttpEvent<any>>",
"typeParameters": [],
"line": 9,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "req",
"type": "HttpRequest<any>",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "next",
"type": "HttpHandler",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import {Injectable} from '@angular/core';\nimport {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n constructor() {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // Get the auth header (fake value is shown here)\n const authHeader = '49a5kdkv409fd39'; // this.authService.getAuthHeader();\n const authReq = req.clone({headers: req.headers.set('Authorization', authHeader)});\n return next.handle(authReq);\n }\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 6
},
"type": "interceptor"
},
{
"name": "OverlayRequestResponseInterceptor",
"id": "injectable-OverlayRequestResponseInterceptor-e875f0b06414b986d6b8e65d05479c768daf35e2409d7ee41ab0a8e5e765ec16210c48a7a61f98eb7e7bdde84993b2d567163d8d8a4d3323439f1ed6935ad07b",
"file": "src/app/core/overlay/overlay-request-response.interceptor.ts",
"properties": [],
"methods": [
{
"name": "getRandomIntInclusive",
"args": [
{
"name": "min",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "max",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 35,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "min",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "max",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "intercept",
"args": [
{
"name": "req",
"type": "HttpRequest<any>",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "next",
"type": "HttpHandler",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<HttpEvent<any>>",
"typeParameters": [],
"line": 14,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "req",
"type": "HttpRequest<any>",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "next",
"type": "HttpHandler",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\n\nimport { Observable, of } from 'rxjs';\nimport { tap, delay, catchError } from 'rxjs/operators';\n\nimport { EventBusService, EmitEvent, Events } from '../services/event-bus.service';\n\n@Injectable()\nexport class OverlayRequestResponseInterceptor implements HttpInterceptor {\n\n constructor(private eventBus: EventBusService) { }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const randomTime = this.getRandomIntInclusive(0, 1500);\n const started = Date.now();\n this.eventBus.emit(new EmitEvent(Events.httpRequest));\n return next\n .handle(req)\n .pipe(\n // delay(randomTime), // Simulate random Http call delays\n tap(event => {\n if (event instanceof HttpResponse) {\n const elapsed = Date.now() - started;\n this.eventBus.emit(new EmitEvent(Events.httpResponse));\n }\n }),\n catchError(err => {\n this.eventBus.emit(new EmitEvent(Events.httpResponse));\n return of({}) as Observable<HttpEvent<any>>;\n })\n );\n }\n\n getRandomIntInclusive(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min; // The maximum is inclusive and the minimum is inclusive\n}\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "eventBus",
"type": "EventBusService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 10,
"jsdoctags": [
{
"name": "eventBus",
"type": "EventBusService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"type": "interceptor"
}
],
"classes": [
{
"name": "EmitEvent",
"id": "class-EmitEvent-9c7b561e0e2116da23c54c08ee76ea2c8318ad31d705df23f0d544faac45864c183a333dd3e073a25793c3899e205b19d0e7c6cb456c722cae75194fa517cd69",
"file": "src/app/core/services/event-bus.service.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "import { Injectable } from '@angular/core';\nimport { Subject, Subscription, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable()\nexport class EventBusService {\n\n subject = new Subject<any>();\n\n constructor() { }\n\n on(event: Events, action: any): Subscription {\n return this.subject\n .pipe(\n filter((e: EmitEvent) => {\n return e.name === event;\n }),\n map((e: EmitEvent) => {\n return e.value;\n })\n )\n .subscribe(action);\n }\n\n emit(event: EmitEvent) {\n this.subject.next(event);\n }\n}\n\nexport class EmitEvent {\n\n constructor(public name: any, public value?: any) { }\n\n}\n\nexport enum Events {\n httpRequest,\n httpResponse\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "name",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "value",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"optional": true
}
],
"line": 30,
"jsdoctags": [
{
"name": "name",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "value",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"optional": true,
"tagName": {
"text": "param"
}
}
]
},
"properties": [
{
"name": "name",
"deprecated": false,
"deprecationMessage": "",
"type": "any",
"optional": false,
"description": "",
"line": 32,
"modifierKind": [
123
]
},
{
"name": "value",
"deprecated": false,
"deprecationMessage": "",
"type": "any",
"optional": true,
"description": "",
"line": 32,
"modifierKind": [
123
]
}
],
"methods": [],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
},
{
"name": "EnsureModuleLoadedOnceGuard",
"id": "class-EnsureModuleLoadedOnceGuard-f4698f9bf50521a2dfc6773ec258384ea3f7c6bdd0bd2994037297f4af0bbe1aee27aa2f1a17ef9c59d774fc242920518865b917fbad61a4cb58497ac69405db",
"file": "src/app/core/ensure-module-loaded-once.guard.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "export class EnsureModuleLoadedOnceGuard {\n\n constructor(targetModule: any) {\n if (targetModule) {\n throw new Error(`${targetModule.constructor.name} has already been loaded. Import this module in the AppModule only.`);\n }\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "targetModule",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 1,
"jsdoctags": [
{
"name": "targetModule",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"properties": [],
"methods": [],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
},
{
"name": "Growl",
"id": "class-Growl-48f5a0fd816c6b355b58a3a34a66ea921f513fd639d282db7fb88d7513dc1548e823b9c2e4f04c042cca5cb26db31e7370ff0acea53d913e199b86691eb97ed0",
"file": "src/app/core/growler/growler.component.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { GrowlerService, GrowlerMessageType } from './growler.service';\nimport { LoggerService } from '../services/logger.service';\n\n@Component({\n selector: 'cm-growler',\n template: `\n <div [ngClass]=\"position\" class=\"growler\">\n <div *ngFor=\"let growl of growls\" [ngClass]=\"{active: growl.enabled}\"\n class=\"growl alert {{ growl.messageType }}\">\n <span class=\"growl-message\">{{ growl.message }}</span>\n </div>\n </div>\n `,\n styleUrls: ['growler.component.css']\n})\nexport class GrowlerComponent implements OnInit {\n\n private growlCount = 0;\n growls: Growl[] = [];\n\n @Input() position = 'bottom-right';\n @Input() timeout = 3000;\n\n constructor(private growlerService: GrowlerService,\n private logger: LoggerService) {\n growlerService.growl = this.growl.bind(this);\n }\n\n ngOnInit() { }\n\n /**\n * Displays a growl message.\n *\n * @param {string} message - The message to display.\n * @param {GrowlMessageType} growlType - The type of message to display (a GrowlMessageType enumeration)\n * @return {number} id - Returns the ID for the generated growl\n */\n growl(message: string, growlType: GrowlerMessageType): number {\n this.growlCount++;\n const bootstrapAlertType = GrowlerMessageType[growlType].toLowerCase();\n const messageType = `alert-${ bootstrapAlertType }`;\n\n const growl = new Growl(this.growlCount, message, messageType, this.timeout, this);\n this.growls.push(growl);\n return growl.id;\n }\n\n removeGrowl(id: number) {\n this.growls.forEach((growl: Growl, index: number) => {\n if (growl.id === id) {\n this.growls.splice(index, 1);\n this.growlCount--;\n this.logger.log('removed ' + id);\n }\n });\n }\n}\n\nclass Growl {\n\n enabled: boolean = false;\n timeoutId: number = 0;\n\n constructor(public id: number,\n public message: string,\n public messageType: string,\n private timeout: number,\n private growlerContainer: GrowlerComponent) {\n this.show();\n }\n\n show() {\n window.setTimeout(() => {\n this.enabled = true;\n this.setTimeout();\n }, 0);\n }\n\n setTimeout() {\n window.setTimeout(() => {\n this.hide();\n }, this.timeout);\n }\n\n hide() {\n this.enabled = false;\n window.setTimeout(() => {\n this.growlerContainer.removeGrowl(this.id);\n }, this.timeout);\n }\n\n}\n",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "message",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "messageType",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "timeout",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "growlerContainer",
"type": "GrowlerComponent",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 64,
"jsdoctags": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "message",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "messageType",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "timeout",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "growlerContainer",
"type": "GrowlerComponent",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"properties": [
{
"name": "enabled",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 63
},
{
"name": "id",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 66,
"modifierKind": [
123
]
},
{
"name": "message",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 67,
"modifierKind": [
123
]
},
{
"name": "messageType",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 68,
"modifierKind": [
123
]
},
{
"name": "timeoutId",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 64
}
],
"methods": [
{
"name": "hide",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 87,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "setTimeout",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 81,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "show",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 74,
"deprecated": false,
"deprecationMessage": ""
}
],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
},
{
"name": "MockActivatedRoute",
"id": "class-MockActivatedRoute-4f0b5d60873d2354e3ac09535f8b2197d50c458fd3fbf19add86a9919944cc70cfee07c88dddee386c29abc842bf20e99b3cd988ec171591ff3b76894defe8d7",
"file": "src/app/shared/mocks.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "import { Type } from '@angular/core';\nimport { ActivatedRouteSnapshot, ActivatedRoute, UrlSegment, Params, Data, Route, ParamMap } from '@angular/router';\n\nimport { Observable, of } from 'rxjs';\n\nimport { ICustomer, IPagedResults } from './interfaces';\n\nexport class MockDataService {\n constructor() {}\n\n getCustomer(id: number): Observable<ICustomer> {\n if (id === 1) {\n return of(customers.slice(0, 1)[0]);\n } else {\n return of({} as ICustomer);\n }\n }\n\n getCustomersPage(page: number, pageSize: number): Observable<IPagedResults<ICustomer[]>> {\n const topVal = pageSize,\n skipVal = page,\n skip = (isNaN(skipVal)) ? 0 : +skipVal;\n let top = (isNaN(topVal)) ? 10 : skip + (+topVal);\n\n if (top > customers.length) {\n top = skip + (customers.length - skip);\n }\n\n return of({\n totalRecords: customers.length,\n results: customers.slice(skip, top)\n });\n }\n\n getCustomers(): Observable<ICustomer[]> {\n return of(customers);\n }\n}\n\nexport class MockActivatedRoute implements ActivatedRoute {\n snapshot: ActivatedRouteSnapshot = {} as ActivatedRouteSnapshot;\n url: Observable<UrlSegment[]> = {} as Observable<UrlSegment[]>;\n params: Observable<Params> = {} as Observable<Params>;\n queryParams: Observable<Params> = {} as Observable<Params>;\n fragment: Observable<string> = {} as Observable<string>;\n data: Observable<Data> = {} as Observable<Data>;\n outlet: string = '';\n component: Type<any> | null = null;\n routeConfig: Route = {} as Route;\n root: ActivatedRoute = {} as ActivatedRoute;\n parent: ActivatedRoute = {} as ActivatedRoute;\n firstChild: ActivatedRoute = {} as ActivatedRoute;\n children: ActivatedRoute[] = [];\n pathFromRoot: ActivatedRoute[] = [];\n paramMap: Observable<ParamMap> = {} as Observable<ParamMap>;\n queryParamMap: Observable<ParamMap> = {} as Observable<ParamMap>;\n toString(): string {\n return '';\n }\n}\n\nexport function getActivatedRouteWithParent(params: any[]) {\n const route = new MockActivatedRoute();\n route.parent = new MockActivatedRoute() as ActivatedRoute;\n if (params) {\n for (const param of params) {\n // var keyNames = Object.keys(param);\n route.parent.params = of(param);\n }\n }\n\n return route;\n}\n\nexport const customers = [\n {\n 'id': 1,\n 'firstName': 'ted',\n 'lastName': 'james',\n 'gender': 'male',\n 'address': '1234 Anywhere St.',\n 'city': ' Phoenix ',\n 'state': {\n 'abbreviation': 'AZ',\n 'name': 'Arizona'\n },\n 'orders': [\n { 'productName': 'Basketball', 'itemCost': 7.99 },\n { 'productName': 'Shoes', 'itemCost': 199.99 }\n ],\n 'latitude': 33.299,\n 'longitude': -111.963\n },\n {\n 'id': 2,\n 'firstName': 'Michelle',\n 'lastName': 'Thompson',\n 'gender': 'female',\n 'address': '345 Cedar Point Ave.',\n 'city': 'Encinitas ',\n 'state': {\n 'abbreviation': 'CA',\n 'name': 'California'\n },\n 'orders': [\n { 'productName': 'Frisbee', 'itemCost': 2.99 },\n { 'productName': 'Hat', 'itemCost': 5.99 }\n ],\n 'latitude': 33.037,\n 'longitude': -117.291\n },\n {\n 'id': 3,\n 'firstName': 'Zed',\n 'lastName': 'Bishop',\n 'gender': 'male',\n 'address': '1822 Long Bay Dr.',\n 'city': ' Seattle ',\n 'state': {\n 'abbreviation': 'WA',\n 'name': 'Washington'\n },\n 'orders': [\n { 'productName': 'Boomerang', 'itemCost': 29.99 },\n { 'productName': 'Helmet', 'itemCost': 19.99 },\n { 'productName': 'Kangaroo Saddle', 'itemCost': 179.99 }\n ],\n 'latitude': 47.596,
"properties": [
{
"name": "children",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "ActivatedRoute[]",
"optional": false,
"description": "",
"line": 53
},
{
"name": "component",
"defaultValue": "null",
"deprecated": false,
"deprecationMessage": "",
"type": "Type<any> | null",
"optional": false,
"description": "",
"line": 48
},
{
"name": "data",
"defaultValue": "{} as Observable<Data>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<Data>",
"optional": false,
"description": "",
"line": 46
},
{
"name": "firstChild",
"defaultValue": "{} as ActivatedRoute",
"deprecated": false,
"deprecationMessage": "",
"type": "ActivatedRoute",
"optional": false,
"description": "",
"line": 52
},
{
"name": "fragment",
"defaultValue": "{} as Observable<string>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<string>",
"optional": false,
"description": "",
"line": 45
},
{
"name": "outlet",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 47
},
{
"name": "paramMap",
"defaultValue": "{} as Observable<ParamMap>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<ParamMap>",
"optional": false,
"description": "",
"line": 55
},
{
"name": "params",
"defaultValue": "{} as Observable<Params>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<Params>",
"optional": false,
"description": "",
"line": 43
},
{
"name": "parent",
"defaultValue": "{} as ActivatedRoute",
"deprecated": false,
"deprecationMessage": "",
"type": "ActivatedRoute",
"optional": false,
"description": "",
"line": 51
},
{
"name": "pathFromRoot",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "ActivatedRoute[]",
"optional": false,
"description": "",
"line": 54
},
{
"name": "queryParamMap",
"defaultValue": "{} as Observable<ParamMap>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<ParamMap>",
"optional": false,
"description": "",
"line": 56
},
{
"name": "queryParams",
"defaultValue": "{} as Observable<Params>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<Params>",
"optional": false,
"description": "",
"line": 44
},
{
"name": "root",
"defaultValue": "{} as ActivatedRoute",
"deprecated": false,
"deprecationMessage": "",
"type": "ActivatedRoute",
"optional": false,
"description": "",
"line": 50
},
{
"name": "routeConfig",
"defaultValue": "{} as Route",
"deprecated": false,
"deprecationMessage": "",
"type": "Route",
"optional": false,
"description": "",
"line": 49
},
{
"name": "snapshot",
"defaultValue": "{} as ActivatedRouteSnapshot",
"deprecated": false,
"deprecationMessage": "",
"type": "ActivatedRouteSnapshot",
"optional": false,
"description": "",
"line": 41
},
{
"name": "url",
"defaultValue": "{} as Observable<UrlSegment[]>",
"deprecated": false,
"deprecationMessage": "",
"type": "Observable<UrlSegment[]>",
"optional": false,
"description": "",
"line": 42
}
],
"methods": [
{
"name": "toString",
"args": [],
"optional": false,
"returnType": "string",
"typeParameters": [],
"line": 57,
"deprecated": false,
"deprecationMessage": ""
}
],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": [],
"implements": [
"ActivatedRoute"
]
},
{
"name": "MockDataService",
"id": "class-MockDataService-4f0b5d60873d2354e3ac09535f8b2197d50c458fd3fbf19add86a9919944cc70cfee07c88dddee386c29abc842bf20e99b3cd988ec171591ff3b76894defe8d7",
"file": "src/app/shared/mocks.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "import { Type } from '@angular/core';\nimport { ActivatedRouteSnapshot, ActivatedRoute, UrlSegment, Params, Data, Route, ParamMap } from '@angular/router';\n\nimport { Observable, of } from 'rxjs';\n\nimport { ICustomer, IPagedResults } from './interfaces';\n\nexport class MockDataService {\n constructor() {}\n\n getCustomer(id: number): Observable<ICustomer> {\n if (id === 1) {\n return of(customers.slice(0, 1)[0]);\n } else {\n return of({} as ICustomer);\n }\n }\n\n getCustomersPage(page: number, pageSize: number): Observable<IPagedResults<ICustomer[]>> {\n const topVal = pageSize,\n skipVal = page,\n skip = (isNaN(skipVal)) ? 0 : +skipVal;\n let top = (isNaN(topVal)) ? 10 : skip + (+topVal);\n\n if (top > customers.length) {\n top = skip + (customers.length - skip);\n }\n\n return of({\n totalRecords: customers.length,\n results: customers.slice(skip, top)\n });\n }\n\n getCustomers(): Observable<ICustomer[]> {\n return of(customers);\n }\n}\n\nexport class MockActivatedRoute implements ActivatedRoute {\n snapshot: ActivatedRouteSnapshot = {} as ActivatedRouteSnapshot;\n url: Observable<UrlSegment[]> = {} as Observable<UrlSegment[]>;\n params: Observable<Params> = {} as Observable<Params>;\n queryParams: Observable<Params> = {} as Observable<Params>;\n fragment: Observable<string> = {} as Observable<string>;\n data: Observable<Data> = {} as Observable<Data>;\n outlet: string = '';\n component: Type<any> | null = null;\n routeConfig: Route = {} as Route;\n root: ActivatedRoute = {} as ActivatedRoute;\n parent: ActivatedRoute = {} as ActivatedRoute;\n firstChild: ActivatedRoute = {} as ActivatedRoute;\n children: ActivatedRoute[] = [];\n pathFromRoot: ActivatedRoute[] = [];\n paramMap: Observable<ParamMap> = {} as Observable<ParamMap>;\n queryParamMap: Observable<ParamMap> = {} as Observable<ParamMap>;\n toString(): string {\n return '';\n }\n}\n\nexport function getActivatedRouteWithParent(params: any[]) {\n const route = new MockActivatedRoute();\n route.parent = new MockActivatedRoute() as ActivatedRoute;\n if (params) {\n for (const param of params) {\n // var keyNames = Object.keys(param);\n route.parent.params = of(param);\n }\n }\n\n return route;\n}\n\nexport const customers = [\n {\n 'id': 1,\n 'firstName': 'ted',\n 'lastName': 'james',\n 'gender': 'male',\n 'address': '1234 Anywhere St.',\n 'city': ' Phoenix ',\n 'state': {\n 'abbreviation': 'AZ',\n 'name': 'Arizona'\n },\n 'orders': [\n { 'productName': 'Basketball', 'itemCost': 7.99 },\n { 'productName': 'Shoes', 'itemCost': 199.99 }\n ],\n 'latitude': 33.299,\n 'longitude': -111.963\n },\n {\n 'id': 2,\n 'firstName': 'Michelle',\n 'lastName': 'Thompson',\n 'gender': 'female',\n 'address': '345 Cedar Point Ave.',\n 'city': 'Encinitas ',\n 'state': {\n 'abbreviation': 'CA',\n 'name': 'California'\n },\n 'orders': [\n { 'productName': 'Frisbee', 'itemCost': 2.99 },\n { 'productName': 'Hat', 'itemCost': 5.99 }\n ],\n 'latitude': 33.037,\n 'longitude': -117.291\n },\n {\n 'id': 3,\n 'firstName': 'Zed',\n 'lastName': 'Bishop',\n 'gender': 'male',\n 'address': '1822 Long Bay Dr.',\n 'city': ' Seattle ',\n 'state': {\n 'abbreviation': 'WA',\n 'name': 'Washington'\n },\n 'orders': [\n { 'productName': 'Boomerang', 'itemCost': 29.99 },\n { 'productName': 'Helmet', 'itemCost': 19.99 },\n { 'productName': 'Kangaroo Saddle', 'itemCost': 179.99 }\n ],\n 'latitude': 47.596,
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 8
},
"properties": [],
"methods": [
{
"name": "getCustomer",
"args": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<ICustomer>",
"typeParameters": [],
"line": 11,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getCustomers",
"args": [],
"optional": false,
"returnType": "Observable<ICustomer[]>",
"typeParameters": [],
"line": 35,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "getCustomersPage",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "pageSize",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "Observable<IPagedResults<ICustomer[]>>",
"typeParameters": [],
"line": 19,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "pageSize",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
},
{
"name": "PropertyResolver",
"id": "class-PropertyResolver-7e0697300ab11c6109865465d62e623dbdf7dce93a77978c33b5126933b5615e3eddc8d8f43f5c8616c6bb596073cefe2eb6c5fa022b5549b3b02ecf212cb430",
"file": "src/app/core/services/property-resolver.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "export class PropertyResolver {\n static resolve(path: string, obj: any) {\n return path.split('.').reduce((prev, curr) => {\n return (prev ? prev[curr] : undefined);\n }, obj || self);\n }\n}\n",
"properties": [],
"methods": [
{
"name": "resolve",
"args": [
{
"name": "path",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "obj",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 2,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
124
],
"jsdoctags": [
{
"name": "path",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "obj",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
},
{
"name": "SandboxesDefined",
"id": "class-SandboxesDefined-357c44ad5077ccc1d066390c137a148d64ba2688fcd4cdb1ba1e85b67ccdd93f8ad98280fe6c10fbc02dabeb844a2ec27ec7b3681a68dc67e569fc09682407c4",
"file": ".angular-playground/sandboxes.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "export class SandboxesDefined {\n getSandbox(path: string): any {\n /*GET_SANDBOX*/\n switch(path) {\ncase './app/about/about.component.sandbox':\n return import( /* webpackMode: \"lazy\" */ '/Users/danwahlin/Desktop/demos/angular-jumpstart/src/app/about/about.component.sandbox').then(function(_){ return _.default.serialize('./app/about/about.component.sandbox'); });\ncase './app/customer/customer-details/customer-details.component.sandbox':\n return import( /* webpackMode: \"lazy\" */ '/Users/danwahlin/Desktop/demos/angular-jumpstart/src/app/customer/customer-details/customer-details.component.sandbox').then(function(_){ return _.default.serialize('./app/customer/customer-details/customer-details.component.sandbox'); });\ncase './app/customer/customer-orders/customer-orders.component.sandbox':\n return import( /* webpackMode: \"lazy\" */ '/Users/danwahlin/Desktop/demos/angular-jumpstart/src/app/customer/customer-orders/customer-orders.component.sandbox').then(function(_){ return _.default.serialize('./app/customer/customer-orders/customer-orders.component.sandbox'); });\ncase './app/customers/customers-card/customers-card.component.sandbox':\n return import( /* webpackMode: \"lazy\" */ '/Users/danwahlin/Desktop/demos/angular-jumpstart/src/app/customers/customers-card/customers-card.component.sandbox').then(function(_){ return _.default.serialize('./app/customers/customers-card/customers-card.component.sandbox'); });\ncase './app/customers/customers-grid/customers-grid.component.sandbox':\n return import( /* webpackMode: \"lazy\" */ '/Users/danwahlin/Desktop/demos/angular-jumpstart/src/app/customers/customers-grid/customers-grid.component.sandbox').then(function(_){ return _.default.serialize('./app/customers/customers-grid/customers-grid.component.sandbox'); });\ncase './app/customers/customers.component.sandbox':\n return import( /* webpackMode: \"lazy\" */ '/Users/danwahlin/Desktop/demos/angular-jumpstart/src/app/customers/customers.component.sandbox').then(function(_){ return _.default.serialize('./app/customers/customers.component.sandbox'); });\n}\n \n/*END_GET_SANDBOX*/\n }\n getSandboxMenuItems(): any {\n /*GET_SANDBOX_MENU_ITEMS*/\n return [{\"key\":\"./app/about/about.component.sandbox\",\"srcPath\":\"/Users/danwahlin/Desktop/demos/angular-jumpstart/src\",\"searchKey\":\"AboutComponent\",\"name\":\"AboutComponent\",\"label\":\"\",\"scenarioMenuItems\":[{\"key\":1,\"description\":\"About Component\"}]},{\"key\":\"./app/customer/customer-details/customer-details.component.sandbox\",\"srcPath\":\"/Users/danwahlin/Desktop/demos/angular-jumpstart/src\",\"searchKey\":\"CustomerDetailsComponent\",\"name\":\"CustomerDetailsComponent\",\"label\":\"\",\"scenarioMenuItems\":[{\"key\":1,\"description\":\"With a Customer\"},{\"key\":2,\"description\":\"Without a Customer\"}]},{\"key\":\"./app/customer/customer-orders/customer-orders.component.sandbox\",\"srcPath\":\"/Users/danwahlin/Desktop/demos/angular-jumpstart/src\",\"searchKey\":\"CustomerOrdersComponent\",\"name\":\"CustomerOrdersComponent\",\"label\":\"\",\"scenarioMenuItems\":[{\"key\":1,\"description\":\"With Orders\"},{\"key\":2,\"description\":\"Without Orders\"}]},{\"key\":\"./app/customers/customers-card/customers-card.component.sandbox\",\"srcPath\":\"/Users/danwahlin/Desktop/demos/angular-jumpstart/src\",\"searchKey\":\"CustomersCardComponent\",\"name\":\"CustomersCardComponent\",\"label\":\"\",\"scenarioMenuItems\":[{\"key\":1,\"description\":\"With Many Customers\"},{\"key\":2,\"description\":\"With 10 Customers\"},{\"key\":3,\"description\":\"With 4 Customers\"},{\"key\":4,\"description\":\"Without Customers\"}]},{\"key\":\"./app/customers/customers-grid/customers-grid.component.sandbox\",\"srcPath\":\"/Users/danwahlin/Desktop/demos/angular-jumpstart/src\",\"searchKey\":\"CustomersGridComponent\",\"name\":\"CustomersGridComponent\",\"label\":\"\",\"scenarioMenuItems\":[{\"key\":1,\"description\":\"With Many Customers\"},{\"key\":2,\"description\":\"With 10 Customers\"},{\"key\":3,\"description\":\"With 4 Customers
"properties": [],
"methods": [
{
"name": "getSandbox",
"args": [
{
"name": "path",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 5,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "path",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getSandboxMenuItems",
"args": [],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 24,
"deprecated": false,
"deprecationMessage": ""
}
],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
},
{
"name": "ValidationService",
"id": "class-ValidationService-c76cbeeceb5e22667127e797db450d820dded1a974490d4b1e69daa1991163f93db5a41d41ad42d45784f960843cb55ea87a383c81c4c5dd8eb1a1c1a8543674",
"file": "src/app/core/services/validation.service.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "class",
"sourceCode": "import { AbstractControl } from '@angular/forms';\n\nexport class ValidationService {\n\n static getValidatorErrorMessage(code: string) {\n const config: any = {\n 'required': 'Required',\n 'invalidCreditCard': 'Is invalid credit card number',\n 'invalidEmailAddress': 'Invalid email address',\n 'invalidPassword': 'Invalid password. Password must be at least 6 characters long, and contain a number.'\n };\n return config[code];\n }\n\n static creditCardValidator(control: AbstractControl) {\n // Visa, MasterCard, American Express, Diners Club, Discover, JCB\n // tslint:disable-next-line\n if (control.value.match(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/)) {\n return null;\n } else {\n return { 'invalidCreditCard': true };\n }\n }\n\n static emailValidator(control: AbstractControl) {\n // RFC 2822 compliant regex\n // tslint:disable-next-line\n if (control.value.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/)) {\n return null;\n } else {\n return { 'invalidEmailAddress': true };\n }\n }\n\n static passwordValidator(control: AbstractControl) {\n // {6,100} - Assert password is between 6 and 100 characters\n // (?=.*[0-9]) - Assert a string has at least one number\n // (?!.*\\s) - Spaces are not allowed\n // tslint:disable-next-line\n if (control.value.match(/^(?=.*\\d)(?=.*[a-zA-Z!@#$%^&*])(?!.*\\s).{6,100}$/)) {\n return null;\n } else {\n return { 'invalidPassword': true };\n }\n }\n}\n",
"properties": [],
"methods": [
{
"name": "creditCardValidator",
"args": [
{
"name": "control",
"type": "AbstractControl",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "{ invalidCreditCard: boolean; }",
"typeParameters": [],
"line": 16,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
124
],
"jsdoctags": [
{
"name": "control",
"type": "AbstractControl",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "emailValidator",
"args": [
{
"name": "control",
"type": "AbstractControl",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "{ invalidEmailAddress: boolean; }",
"typeParameters": [],
"line": 26,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
124
],
"jsdoctags": [
{
"name": "control",
"type": "AbstractControl",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getValidatorErrorMessage",
"args": [
{
"name": "code",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 6,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
124
],
"jsdoctags": [
{
"name": "code",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "passwordValidator",
"args": [
{
"name": "control",
"type": "AbstractControl",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "{ invalidPassword: boolean; }",
"typeParameters": [],
"line": 36,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
124
],
"jsdoctags": [
{
"name": "control",
"type": "AbstractControl",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"indexSignatures": [],
"inputsClass": [],
"outputsClass": [],
"hostBindings": [],
"hostListeners": []
}
],
"directives": [
{
"name": "SortByDirective",
"id": "directive-SortByDirective-3185cd9e0f59b504b68db8d5e28b9917cb15bdaf674a55a11446e89ff0b806ca13efe3759cef5fa5ee7484482a49fc81587c1d787bda97acd45e4d58e71d212c",
"file": "src/app/shared/directives/sortby.directive.ts",
"type": "directive",
"description": "",
"rawdescription": "\n",
"sourceCode": "import { Directive, Input, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[cmSortBy]'\n})\nexport class SortByDirective {\n\n private sortProperty: string = '';\n\n @Output()\n sorted: EventEmitter<string> = new EventEmitter<string>();\n\n constructor() { }\n\n @Input('cmSortBy')\n set sortBy(value: string) {\n this.sortProperty = value;\n }\n\n @HostListener('click', ['$event'])\n onClick(e: Event) {\n e.preventDefault();\n this.sorted.next(this.sortProperty); // Raise clicked event\n }\n\n\n\n\n}\n",
"selector": "[cmSortBy]",
"providers": [],
"inputsClass": [
{
"name": "cmSortBy",
"deprecated": false,
"deprecationMessage": "",
"line": 16,
"type": "string",
"decorators": []
}
],
"outputsClass": [
{
"name": "sorted",
"defaultValue": "new EventEmitter<string>()",
"deprecated": false,
"deprecationMessage": "",
"line": 11,
"type": "EventEmitter<string>"
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [
{
"name": "click",
"args": [
{
"name": "e",
"type": "Event",
"deprecated": false,
"deprecationMessage": ""
}
],
"argsDecorator": [
"$event"
],
"deprecated": false,
"deprecationMessage": "",
"line": 21
}
],
"propertiesClass": [
{
"name": "sortProperty",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 8,
"modifierKind": [
121
]
}
],
"methodsClass": [
{
"name": "onClick",
"args": [
{
"name": "e",
"type": "Event",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 21,
"deprecated": false,
"deprecationMessage": "",
"decorators": [
{
"name": "HostListener",
"stringifiedArguments": "'click', ['$event']"
}
],
"jsdoctags": [
{
"name": "e",
"type": "Event",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 11
},
"accessors": {
"sortBy": {
"name": "sortBy",
"setSignature": {
"name": "sortBy",
"type": "void",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "value",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"returnType": "void",
"line": 16,
"jsdoctags": [
{
"name": "value",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
}
}
}
],
"components": [
{
"name": "AboutComponent",
"id": "component-AboutComponent-d59d9dbb433115546c5cfccf8f010c3cc21815a3d500350d960451d8edd2997d43b36896c4e63cb3641df045ad6fe391320aff3d56cc1cc87974955dfb89e1a0",
"file": "src/app/about/about.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-about",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./about.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [],
"methodsClass": [
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 11,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'cm-about',\n templateUrl: './about.component.html'\n})\nexport class AboutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 7
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"view\">\n <div class=\"container\">\n <header>\n <h3><span class=\"glyphicon glyphicon-info-sign\"></span> About</h3>\n </header>\n <br />\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-2\">Created by:</div>\n <div class=\"col-md-10\"><a href=\"http://twitter.com/DanWahlin\" target=\"_blank\">Dan Wahlin</a></div>\n </div>\n <br />\n <div class=\"row\">\n <div class=\"col-md-2\">Blog:</div>\n <div class=\"col-md-10\"><a href=\"http://blog.codewithdan.com\" target=\"_blank\">https://blog.codewithdan.com</a></div>\n </div>\n <br />\n <div class=\"row\">\n <div class=\"col-md-2\">GitHub:</div>\n <div class=\"col-md-10\"><a href=\"https://github.com/DanWahlin/Angular-JumpStart\" target=\"_blank\">https://github.com/DanWahlin/Angular-JumpStart</a></div>\n </div>\n </div>\n </div>\n</div>"
},
{
"name": "AppComponent",
"id": "component-AppComponent-3a385b85c0341a84bb09ccf96cd3dca77a277dbd79ec8eaa657f8be897200c5cb11af701293a9327a7dddf0b65d2c61135b51961cd67f3dfe430fe58df63643f",
"file": "src/app/app.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-app-component",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./app.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [],
"methodsClass": [],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'cm-app-component',\n templateUrl: './app.component.html'\n})\nexport class AppComponent {\n\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"templateData": "<main class=\"container\">\n <cm-navbar></cm-navbar>\n <router-outlet></router-outlet>\n <cm-growler position=\"top-right\" [timeout]=\"2000\"></cm-growler>\n <cm-modal></cm-modal>\n <cm-overlay [delay]=\"300\">\n <span class=\"spinner\"></span>&nbsp;&nbsp;&nbsp;Loading\n </cm-overlay>\n</main>\n<br /><br />"
},
{
"name": "ButtonComponent",
"id": "component-ButtonComponent-4ef205c97a334c309aa4001c8ab4a6d9571dcae18d0e85aaf0d367467ab5d3a9f13ab3573726f1fcb409bc9b49894dadfb80b1bbe1b6ba7041455ad9d4922004",
"file": "src/stories/button.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "storybook-button",
"styleUrls": [
"./button.css"
],
"styles": [],
"template": "<button type=\"button\"\n (click)=\"onClick.emit($event)\"\n [ngClass]=\"classes\"\n [ngStyle]=\"{ 'background-color': backgroundColor }\"\n >\n {{ label }}\n </button>",
"templateUrl": [],
"viewProviders": [],
"inputsClass": [
{
"name": "backgroundColor",
"deprecated": false,
"deprecationMessage": "",
"rawdescription": "\n\nWhat background color to use\n",
"description": "<p>What background color to use</p>\n",
"line": 26,
"type": "string",
"decorators": []
},
{
"name": "label",
"defaultValue": "'Button'",
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"pos": 711,
"end": 724,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 325,
"tagName": {
"pos": 712,
"end": 720,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"escapedText": "required"
},
"comment": ""
}
],
"rawdescription": "\n\nButton contents\n\n",
"description": "<p>Button contents</p>\n",
"line": 40,
"type": "string",
"decorators": []
},
{
"name": "primary",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"rawdescription": "\n\nIs this the principal call to action on the page?\n",
"description": "<p>Is this the principal call to action on the page?</p>\n",
"line": 20,
"type": "boolean",
"decorators": []
},
{
"name": "size",
"defaultValue": "'medium'",
"deprecated": false,
"deprecationMessage": "",
"rawdescription": "\n\nHow large should the button be?\n",
"description": "<p>How large should the button be?</p>\n",
"line": 32,
"type": "\"small\" | \"medium\" | \"large\"",
"decorators": []
}
],
"outputsClass": [
{
"name": "onClick",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"rawdescription": "\n\nOptional click handler\n",
"description": "<p>Optional click handler</p>\n",
"line": 46,
"type": "EventEmitter"
}
],
"propertiesClass": [],
"methodsClass": [],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'storybook-button',\n template: ` <button\n type=\"button\"\n (click)=\"onClick.emit($event)\"\n [ngClass]=\"classes\"\n [ngStyle]=\"{ 'background-color': backgroundColor }\"\n >\n {{ label }}\n </button>`,\n styleUrls: ['./button.css'],\n})\nexport default class ButtonComponent {\n /**\n * Is this the principal call to action on the page?\n */\n @Input()\n primary = false;\n\n /**\n * What background color to use\n */\n @Input()\n backgroundColor?: string;\n\n /**\n * How large should the button be?\n */\n @Input()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Button contents\n *\n * @required\n */\n @Input()\n label = 'Button';\n\n /**\n * Optional click handler\n */\n @Output()\n onClick = new EventEmitter<Event>();\n\n public get classes(): string[] {\n const mode = this.primary ? 'storybook-button--primary' : 'storybook-button--secondary';\n\n return ['storybook-button', `storybook-button--${this.size}`, mode];\n }\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".storybook-button {\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-weight: 700;\n border: 0;\n border-radius: 3em;\n cursor: pointer;\n display: inline-block;\n line-height: 1;\n}\n.storybook-button--primary {\n color: white;\n background-color: #1ea7fd;\n}\n.storybook-button--secondary {\n color: #333;\n background-color: transparent;\n box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;\n}\n.storybook-button--small {\n font-size: 12px;\n padding: 10px 16px;\n}\n.storybook-button--medium {\n font-size: 14px;\n padding: 11px 20px;\n}\n.storybook-button--large {\n font-size: 16px;\n padding: 12px 24px;\n}\n",
"styleUrl": "./button.css"
}
],
"stylesData": "",
"accessors": {
"classes": {
"name": "classes",
"getSignature": {
"name": "classes",
"type": "[]",
"returnType": "string[]",
"line": 48
}
}
}
},
{
"name": "CustomerComponent",
"id": "component-CustomerComponent-67de2143a23dc7ea05a550a21135e444028fdaeeb210f5fde5f8b5a393d771d314961d34469e295d362f0a4706a25c2d7411ed3837652083a74a670e0e2c1a45",
"file": "src/app/customer/customer.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-orders",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./customer.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [],
"methodsClass": [
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 15,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'cm-orders',\n templateUrl: './customer.component.html'\n})\nexport class CustomerComponent implements OnInit {\n\n // displayMode: CustomerDisplayModeEnum;\n // displayModeEnum = CustomerDisplayModeEnum;\n\n constructor(private router: Router) { }\n\n ngOnInit() {\n\n // No longer needed due to routerLinkActive feature in Angular\n // const path = this.router.url.split('/')[3];\n // switch (path) {\n // case 'details':\n // this.displayMode = CustomerDisplayModeEnum.Details;\n // break;\n // case 'orders':\n // this.displayMode = CustomerDisplayModeEnum.Orders;\n // break;\n // case 'edit':\n // this.displayMode = CustomerDisplayModeEnum.Edit;\n // break;\n // }\n }\n\n}\n\n// enum CustomerDisplayModeEnum {\n// Details=0,\n// Orders=1,\n// Edit=2\n// }\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 8,
"jsdoctags": [
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"orders view\">\n <div class=\"container\">\n <header>\n <h3><span class=\"glyphicon glyphicon-user\"></span>&nbsp;&nbsp;Customer Information</h3>\n </header>\n <br />\n <div class=\"navbar\">\n <ul class=\"nav navbar-nav\">\n <li class=\"toolbar-item\">\n <a routerLink=\"details\" routerLinkActive=\"active\">\n <span class=\"glyphicon glyphicon-list\"></span>&nbsp;&nbsp;Customer Details\n </a>\n </li>\n <li class=\"toolbar-item\">\n <a routerLink=\"orders\" routerLinkActive=\"active\">\n <span class=\"glyphicon glyphicon-tags\"></span>&nbsp;&nbsp;Customer Orders\n </a>\n </li>\n <li class=\"toolbar-item\">\n <a routerLink=\"edit\" routerLinkActive=\"active\">\n <span class=\"glyphicon glyphicon-edit\"></span>&nbsp;&nbsp;Edit Customer\n </a>\n </li>\n </ul>\n </div>\n <div class=\"container\">\n <router-outlet></router-outlet>\n <br />\n <br />\n <a routerLink=\"/customers\">View all Customers</a>\n </div>\n </div>\n</div>\n\n\n\n\n\n\n"
},
{
"name": "CustomerDetailsComponent",
"id": "component-CustomerDetailsComponent-ce986c8d87c666bbf715cc597382142bb020d6e2a8cbd3de73860519054e8e1788f993e51e0ecfe60515d518a944ef60297f9673b5f754dc0a884103c5d324f1",
"file": "src/app/customer/customer-details/customer-details.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customer-details",
"styleUrls": [
"./customer-details.component.css"
],
"styles": [],
"templateUrl": [
"./customer-details.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "customer",
"defaultValue": "null",
"deprecated": false,
"deprecationMessage": "",
"type": "ICustomer | null",
"optional": false,
"description": "",
"line": 14
},
{
"name": "mapComponentRef",
"defaultValue": "{} as ComponentRef<any>",
"deprecated": false,
"deprecationMessage": "",
"type": "ComponentRef<any>",
"optional": false,
"description": "",
"line": 16
},
{
"name": "mapEnabled",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 15
},
{
"name": "mapsViewContainerRef",
"defaultValue": "{} as ViewContainerRef",
"deprecated": false,
"deprecationMessage": "",
"type": "ViewContainerRef",
"optional": false,
"description": "",
"line": 19,
"decorators": [
{
"name": "ViewChild",
"stringifiedArguments": "'mapsContainer', {read: ViewContainerRef}"
}
],
"modifierKind": [
121
]
}
],
"methodsClass": [
{
"name": "lazyLoadMapComponent",
"args": [],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 42,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
131
]
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 25,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, ComponentRef, ViewChild, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\n\nimport { ICustomer } from '../../shared/interfaces';\nimport { DataService } from '../../core/services/data.service';\n\n@Component({\n selector: 'cm-customer-details',\n templateUrl: './customer-details.component.html',\n styleUrls: ['./customer-details.component.css']\n})\nexport class CustomerDetailsComponent implements OnInit {\n\n customer: ICustomer | null = null;\n mapEnabled: boolean = false;\n mapComponentRef: ComponentRef<any> = {} as ComponentRef<any>;\n\n @ViewChild('mapsContainer', { read: ViewContainerRef }) \n private mapsViewContainerRef: ViewContainerRef = {} as ViewContainerRef;\n\n constructor(private route: ActivatedRoute, \n private dataService: DataService,\n private componentFactoryResolver: ComponentFactoryResolver) { }\n\n ngOnInit() {\n // Subscribe to params so if it changes we pick it up. Could use this.route.parent.snapshot.params[\"id\"] to simplify it.\n this.route.parent?.params.subscribe((params: Params) => {\n const id = +params['id'];\n if (id) {\n this.dataService.getCustomer(id)\n .subscribe((customer: ICustomer) => {\n this.customer = customer;\n if (this.customer && this.customer.latitude) {\n this.lazyLoadMapComponent();\n // this.mapEnabled = true; // For eager loading map\n }\n });\n }\n });\n }\n\n async lazyLoadMapComponent() {\n if (!this.mapsViewContainerRef.length) {\n // Lazy load MapComponent\n const { MapComponent } = await import('../../shared/map/map.component');\n console.log('Lazy loaded map component!');\n const component = this.componentFactoryResolver.resolveComponentFactory(MapComponent);\n this.mapComponentRef = this.mapsViewContainerRef.createComponent(component);\n this.mapComponentRef.instance.zoom = 10;\n this.mapComponentRef.instance.customer = this.customer;\n this.mapComponentRef.instance.enabled = true;\n }\n }\n\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".details-image {\n height:100px;width:100px;margin-top:10px;\n}",
"styleUrl": "./customer-details.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "route",
"type": "ActivatedRoute",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "componentFactoryResolver",
"type": "ComponentFactoryResolver",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 19,
"jsdoctags": [
{
"name": "route",
"type": "ActivatedRoute",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "componentFactoryResolver",
"type": "ComponentFactoryResolver",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"container\">\n <div class=\"row\" *ngIf=\"customer\">\n <div class=\"col-md-2\">\n <img src=\"assets/images/{{customer.gender | lowercase}}.png\" class=\"details-image\" title=\"customer picture\" />\n </div>\n <div class=\"col-md-10\">\n <h4> \n {{ customer.firstName | capitalize }} {{ customer.lastName | capitalize }}&nbsp; \n </h4>\n <br />\n {{ customer.address }}\n <br />\n {{ customer.city }}, {{ customer.state.name }}\n </div>\n </div> \n <br /><br />\n <div class=\"row\">\n <div class=\"col-md-12\">\n <!-- <cm-map [latitude]=\"customer.latitude\" \n [longitude]=\"customer.longitude\" \n [zoom]=\"10\" \n [enabled]=\"mapEnabled\"\n [markerText]=\"'<h3>' + customer.firstName + ' ' + customer.lastName + '</h3>' + customer.city + ', ' + customer.state.name\"></cm-map> -->\n \n <!-- lazy load the map component -->\n <div>\n <ng-container #mapsContainer></ng-container>\n </div>\n </div>\n </div>\n</div> \n<div *ngIf=\"!customer\" class=\"container\">\n No customer found\n</div> "
},
{
"name": "CustomerEditComponent",
"id": "component-CustomerEditComponent-788d55b60c90741874c87b0c829b0768ffb360b610f730a58d3edcdb7336c5ef881a3a62e7520b6f0992e48b28e99bc7d5c694371590aefbda4f0063009f62f5",
"file": "src/app/customer/customer-edit/customer-edit.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customer-edit",
"styleUrls": [
"./customer-edit.component.css"
],
"styles": [],
"templateUrl": [
"./customer-edit.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "customer",
"defaultValue": "{\n id: 0,\n firstName: '',\n lastName: '',\n gender: '',\n address: '',\n city: '',\n state: {\n abbreviation: '',\n name: ''\n }\n }",
"deprecated": false,
"deprecationMessage": "",
"type": "ICustomer",
"optional": false,
"description": "",
"line": 18
},
{
"name": "customerForm",
"defaultValue": "{} as NgForm",
"deprecated": false,
"deprecationMessage": "",
"type": "NgForm",
"optional": false,
"description": "",
"line": 35,
"decorators": [
{
"name": "ViewChild",
"stringifiedArguments": "'customerForm', {static: true}"
}
]
},
{
"name": "deleteMessageEnabled",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 33
},
{
"name": "errorMessage",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 32
},
{
"name": "operationText",
"defaultValue": "'Insert'",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 34
},
{
"name": "states",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "IState[]",
"optional": false,
"description": "",
"line": 31
}
],
"methodsClass": [
{
"name": "cancel",
"args": [
{
"name": "event",
"type": "Event",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 98,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "event",
"type": "Event",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "canDeactivate",
"args": [],
"optional": false,
"returnType": "Promise | boolean",
"typeParameters": [],
"line": 117,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "delete",
"args": [
{
"name": "event",
"type": "Event",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 104,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "event",
"type": "Event",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getCustomer",
"args": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 59,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 44,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "submit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 65,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { NgForm } from '@angular/forms';\n\nimport { DataService } from '../../core/services/data.service';\nimport { ModalService, IModalContent } from '../../core/modal/modal.service';\nimport { ICustomer, IState } from '../../shared/interfaces';\nimport { GrowlerService, GrowlerMessageType } from '../../core/growler/growler.service';\nimport { LoggerService } from '../../core/services/logger.service';\n\n@Component({\n selector: 'cm-customer-edit',\n templateUrl: './customer-edit.component.html',\n styleUrls: ['./customer-edit.component.css']\n})\nexport class CustomerEditComponent implements OnInit {\n\n customer: ICustomer =\n {\n id: 0,\n firstName: '',\n lastName: '',\n gender: '',\n address: '',\n city: '',\n state: {\n abbreviation: '',\n name: ''\n }\n };\n states: IState[] = [];\n errorMessage: string = '';\n deleteMessageEnabled: boolean = false;\n operationText = 'Insert';\n @ViewChild('customerForm', { static: true }) customerForm: NgForm = {} as NgForm;\n\n constructor(private router: Router,\n private route: ActivatedRoute,\n private dataService: DataService,\n private growler: GrowlerService,\n private modalService: ModalService,\n private logger: LoggerService) { }\n\n ngOnInit() {\n // Subscribe to params so if it changes we pick it up. Don't technically need that here\n // since param won't be changing while component is alive.\n // Could use this.route.parent.snapshot.params[\"id\"] to simplify it.\n this.route.parent?.params.subscribe((params: Params) => {\n const id = +params['id'];\n if (id !== 0) {\n this.operationText = 'Update';\n this.getCustomer(id);\n }\n });\n\n this.dataService.getStates().subscribe((states: IState[]) => this.states = states);\n }\n\n getCustomer(id: number) {\n this.dataService.getCustomer(id).subscribe((customer: ICustomer) => {\n this.customer = customer;\n });\n }\n\n submit() {\n if (this.customer.id === 0) {\n this.dataService.insertCustomer(this.customer)\n .subscribe((insertedCustomer: ICustomer) => {\n if (insertedCustomer) {\n // Mark form as pristine so that CanDeactivateGuard won't prompt before navigation\n this.customerForm.form.markAsPristine();\n this.router.navigate(['/customers']);\n } else {\n const msg = 'Unable to insert customer';\n this.growler.growl(msg, GrowlerMessageType.Danger);\n this.errorMessage = msg;\n }\n },\n (err: any) => this.logger.log(err));\n } else {\n this.dataService.updateCustomer(this.customer)\n .subscribe((status: boolean) => {\n if (status) {\n // Mark form as pristine so that CanDeactivateGuard won't prompt before navigation\n this.customerForm.form.markAsPristine();\n this.growler.growl('Operation performed successfully.', GrowlerMessageType.Success);\n // this.router.navigate(['/customers']);\n } else {\n const msg = 'Unable to update customer';\n this.growler.growl(msg, GrowlerMessageType.Danger);\n this.errorMessage = msg;\n }\n },\n (err: any) => this.logger.log(err));\n }\n }\n\n cancel(event: Event) {\n event.preventDefault();\n // Route guard will take care of showing modal dialog service if data is dirty\n this.router.navigate(['/customers']);\n }\n\n delete(event: Event) {\n event.preventDefault();\n this.dataService.deleteCustomer(this.customer.id)\n .subscribe((status: boolean) => {\n if (status) {\n this.router.navigate(['/customers']);\n } else {\n this.errorMessage = 'Unable to delete customer';\n }\n },\n (err) => this.logger.log(err));\n }\n\n canDeactivate(): Promise<boolean>
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".customer-form input[type='text'], \n.customer-form input[type='number'],\n.customer-form input[type='email'],\n.customer-form select {\n width:100%;\n}\n\n.customer-form .ng-invalid {\n border-left: 5px solid #a94442;\n}\n\n.customer-form .ng-valid {\n border-left: 5px solid #42A948;\n}",
"styleUrl": "./customer-edit.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "route",
"type": "ActivatedRoute",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "growler",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "modalService",
"type": "ModalService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 35,
"jsdoctags": [
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "route",
"type": "ActivatedRoute",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "growler",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "modalService",
"type": "ModalService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div>\n <form (ngSubmit)=\"submit()\" #customerForm=\"ngForm\" class=\"customer-form\" novalidate>\n <div class=\"form-group\">\n <label>First Name</label>\n <input title=\"first name\" type=\"text\" class=\"form-control\" name=\"firstName\" [(ngModel)]=\"customer.firstName\" #firstName=\"ngModel\" required>\n <div class=\"alert alert-danger\" [hidden]=\"firstName.pristine || firstName.valid\">First Name is required</div>\n </div>\n <div class=\"form-group\">\n <label>Last Name</label>\n <input title=\"last name\" type=\"text\" class=\"form-control\" name=\"lastName\" [(ngModel)]=\"customer.lastName\" #lastName=\"ngModel\" required>\n <div class=\"alert alert-danger\" [hidden]=\"lastName.pristine || lastName.valid\">Last Name is required</div>\n </div>\n <div class=\"form-group\">\n <label>Address</label>\n <input title=\"address\" type=\"text\" class=\"form-control\" name=\"address\" [(ngModel)]=\"customer.address\" #address=\"ngModel\" required>\n <div class=\"alert alert-danger\" [hidden]=\"address.pristine || address.valid\">Address is required</div>\n </div>\n <div class=\"form-group\">\n <label>City</label>\n <input title=\"city\" type=\"text\" class=\"form-control\" name=\"city\" [(ngModel)]=\"customer.city\" #city=\"ngModel\" required>\n <div class=\"alert alert-danger\" [hidden]=\"city.pristine || city.valid\">City is required</div>\n </div>\n <div class=\"form-group\">\n <label>State</label>\n <select class=\"form-control\" title=\"states\"\n [(ngModel)]=\"customer.state.abbreviation\"\n name=\"state\" \n required>\n <option *ngFor=\"let state of states\" [ngValue]=\"state.abbreviation\">{{state.name}}</option>\n </select>\n </div>\n <div *ngIf=\"customer\">\n <div class=\"alert alert-warning\" *ngIf=\"customer.id && deleteMessageEnabled\">\n Delete Customer?&nbsp;&nbsp;<button class=\"btn btn-danger\" (click)=\"delete($event)\">Yes</button>&nbsp;&nbsp;\n <button class=\"btn btn-default\" (click)=\"deleteMessageEnabled = false\">No</button>\n </div>\n <button class=\"btn btn-danger\" *ngIf=\"customer.id && !deleteMessageEnabled\" (click)=\"deleteMessageEnabled = true\">Delete</button>&nbsp;&nbsp;\n\n <div class=\"pull-right\" *ngIf=\"!deleteMessageEnabled\">\n <button class=\"btn btn-default\" (click)=\"cancel($event)\">Cancel</button>&nbsp;&nbsp;\n <button type=\"submit\" class=\"btn btn-success\" [disabled]=\"customerForm.pristine || !customerForm.valid\">{{ operationText }}</button>\n </div>\n </div>\n <div class=\"alert alert-danger\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n </form>\n <br />\n</div>"
},
{
"name": "CustomerOrdersComponent",
"id": "component-CustomerOrdersComponent-aa2cd65111fa0857835b46dd08abaf46db7cc879f29871f9a0709810e52c825612323c56913e35c5efb7937e9eb625335cdf438821ee66ea6c0823b46a1ee324",
"file": "src/app/customer/customer-orders/customer-orders.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customer-orders",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./customer-orders.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "customer",
"defaultValue": "{} as ICustomer",
"deprecated": false,
"deprecationMessage": "",
"type": "ICustomer",
"optional": false,
"description": "",
"line": 14
},
{
"name": "orders",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "IOrder[]",
"optional": false,
"description": "",
"line": 13
}
],
"methodsClass": [
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 18,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ordersTrackBy",
"args": [
{
"name": "index",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "orderItem",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "number",
"typeParameters": [],
"line": 28,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "index",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "orderItem",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\n\nimport { DataService } from '../../core/services/data.service';\nimport { ICustomer, IOrder, IOrderItem } from '../../shared/interfaces';\n\n@Component({\n selector: 'cm-customer-orders',\n templateUrl: './customer-orders.component.html'\n})\nexport class CustomerOrdersComponent implements OnInit {\n\n orders: IOrder[] = [];\n customer: ICustomer = {} as ICustomer;\n\n constructor(private route: ActivatedRoute, private dataService: DataService) { }\n\n ngOnInit() {\n // Subscribe to params so if it changes we pick it up. Could use this.route.parent.snapshot.params[\"id\"] to simplify it.\n this.route.parent?.params.subscribe((params: Params) => {\n const id = +params['id'];\n this.dataService.getCustomer(id).subscribe((customer: ICustomer) => {\n this.customer = customer;\n });\n });\n }\n\n ordersTrackBy(index: number, orderItem: any) {\n return index;\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "route",
"type": "ActivatedRoute",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 14,
"jsdoctags": [
{
"name": "route",
"type": "ActivatedRoute",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"container\">\n <div class=\"row\" *ngIf=\"customer && customer.orders\">\n <h4>Orders for {{ customer.firstName | capitalize }} {{ customer.lastName | capitalize }}</h4>\n <br />\n <table class=\"table table-striped table-hover orders-table\">\n <tr *ngFor=\"let order of customer.orders;trackBy:ordersTrackBy\">\n <td>{{ order.productName }}</td>\n <td class=\"text-right\">{{ order.itemCost | currency:'USD':'symbol' }}</td> \n </tr>\n <tr class=\"summary-border\">\n <td>&nbsp;</td>\n <td class=\"text-right\">{{ customer.orderTotal | currency:'USD':'symbol' }}</td>\n </tr>\n </table>\n </div>\n <div *ngIf=\"customer && !customer.orders\" class=\"row\">\n No orders found\n </div> \n <div *ngIf=\"!customer\" class=\"row\">\n No customer found\n </div> \n</div>"
},
{
"name": "CustomersCardComponent",
"id": "component-CustomersCardComponent-424ec723b1dec94c993792252c9bd42db20da5c940d49b9202f4b3fae40e62faf4c2586d4270bb10ef614f83517d5b3db2745a524a44c26e3b05fad6a6c432d1",
"file": "src/app/customers/customers-card/customers-card.component.ts",
"changeDetection": "ChangeDetectionStrategy.OnPush",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customers-card",
"styleUrls": [
"./customers-card.component.css"
],
"styles": [],
"templateUrl": [
"./customers-card.component.html"
],
"viewProviders": [],
"inputsClass": [
{
"name": "customers",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"line": 17,
"type": "ICustomer[]",
"decorators": []
}
],
"outputsClass": [],
"propertiesClass": [
{
"name": "trackbyService",
"deprecated": false,
"deprecationMessage": "",
"type": "TrackByService",
"optional": false,
"description": "",
"line": 19,
"modifierKind": [
123
]
}
],
"methodsClass": [
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 21,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\nimport { ICustomer } from '../../shared/interfaces';\nimport { TrackByService } from '../../core/services/trackby.service';\n\n@Component({\n selector: 'cm-customers-card',\n templateUrl: './customers-card.component.html',\n styleUrls: [ './customers-card.component.css' ],\n // When using OnPush detectors, then the framework will check an OnPush\n // component when any of its input properties changes, when it fires\n // an event, or when an observable fires an event ~ Victor Savkin (Angular Team)\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CustomersCardComponent implements OnInit {\n\n @Input() customers: ICustomer[] = [];\n\n constructor(public trackbyService: TrackByService) { }\n\n ngOnInit() {\n\n }\n\n}\n\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".card-container {\n width:85%;\n}\n\n.card {\n background-color:#fff;\n border: 1px solid #d4d4d4;\n height:120px;\n margin-bottom: 20px;\n position: relative;\n}\n\n.card-header {\n background-color:#027FF4;\n font-size:14pt;\n color:white;\n padding:5px;\n width:100%;\n}\n\n.card-close {\n color: white;\n font-weight:bold;\n margin-right:5px;\n}\n\n.card-body {\n padding-left: 5px;\n}\n\n.card-body-left {\n margin-top: -5px;\n}\n\n.card-body-right {\n margin-left: 20px;\n margin-top: 2px;\n}\n\n.card-body-content {\n width: 100px;\n}\n\n.card-image {\n height:50px;width:50px;margin-top:10px;\n}\n\n.white {\n color: white;\n}\n\n.white:hover {\n color: white;\n}",
"styleUrl": "./customers-card.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "trackbyService",
"type": "TrackByService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 17,
"jsdoctags": [
{
"name": "trackbyService",
"type": "TrackByService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"container\">\n <div class=\"row card-container\">\n <div class=\"col-sm-6 col-md-4 col-lg-3\" *ngFor=\"let customer of customers;trackBy:trackbyService.customer\">\n <div class=\"card\">\n <div class=\"card-header\">\n <a [routerLink]=\"['/customers',customer.id,'details']\" class=\"white\">\n {{customer.firstName | capitalize }} {{ customer.lastName | capitalize }} \n </a>\n <a [routerLink]=\"['/customers',customer.id,'edit']\">\n <i title=\"Edit\" \n class=\"pull-right glyphicon glyphicon-edit edit-icon white\"></i>\n </a>\n </div>\n <div class=\"card-body\">\n <div class=\"clearfix\">\n <div class=\"pull-left card-body-left\">\n <a href=\"#\" class=\"white\">\n <img src=\"assets/images/{{customer.gender | lowercase}}.png\" class=\"card-image\" />\n </a>\n </div>\n <div class=\"pull-left card-body-right\">\n <div class=\"card-body-content\">{{customer.city | trim }}, {{customer.state.name}}</div>\n <a [routerLink]=\"['/customers',customer.id,'orders']\">View Orders</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!customers.length\">\n No Records Found\n </div>\n </div>\n</div>"
},
{
"name": "CustomersComponent",
"id": "component-CustomersComponent-f18e3bc33e55e33862c69aeaaae28524d36ec718bfcababebf97fac194bf709fbe1b51a7a4d18c191b183bd626a5c87f931bd7dc4c8c3ff1058c6daf83615e21",
"file": "src/app/customers/customers.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customers",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./customers.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "_filteredCustomers",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "ICustomer[]",
"optional": false,
"description": "",
"line": 24
},
{
"name": "customers",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "ICustomer[]",
"optional": false,
"description": "",
"line": 18
},
{
"name": "displayMode",
"defaultValue": "DisplayModeEnum.Card",
"deprecated": false,
"deprecationMessage": "",
"type": "DisplayModeEnum",
"optional": false,
"description": "",
"line": 19
},
{
"name": "displayModeEnum",
"defaultValue": "DisplayModeEnum",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 20
},
{
"name": "filterText",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 17
},
{
"name": "mapComponentRef",
"defaultValue": "{} as ComponentRef<any>",
"deprecated": false,
"deprecationMessage": "",
"type": "ComponentRef<any>",
"optional": false,
"description": "",
"line": 23
},
{
"name": "mapsViewContainerRef",
"defaultValue": "{} as ViewContainerRef",
"deprecated": false,
"deprecationMessage": "",
"type": "ViewContainerRef",
"optional": false,
"description": "",
"line": 36,
"decorators": [
{
"name": "ViewChild",
"stringifiedArguments": "'mapsContainer', {read: ViewContainerRef}"
}
],
"modifierKind": [
121
]
},
{
"name": "pageSize",
"defaultValue": "10",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 22
},
{
"name": "title",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 16
},
{
"name": "totalRecords",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 21
}
],
"methodsClass": [
{
"name": "changeDisplayMode",
"args": [
{
"name": "mode",
"type": "DisplayModeEnum",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 51,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "mode",
"type": "DisplayModeEnum",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "filterChanged",
"args": [
{
"name": "data",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 69,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "data",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "getCustomersPage",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 59,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "lazyLoadMapComponent",
"args": [],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 79,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
131
]
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 43,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "pageChanged",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 55,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "updateMapComponentDataPoints",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 93,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, ViewChild, \n ViewContainerRef, ComponentFactoryResolver, ComponentRef } from '@angular/core';\n\nimport { DataService } from '../core/services/data.service';\nimport { ICustomer, IPagedResults } from '../shared/interfaces';\nimport { FilterService } from '../core/services/filter.service';\nimport { LoggerService } from '../core/services/logger.service';\n\n\n@Component({\n selector: 'cm-customers',\n templateUrl: './customers.component.html'\n})\nexport class CustomersComponent implements OnInit {\n\n title: string = '';\n filterText: string = '';\n customers: ICustomer[] = [];\n displayMode: DisplayModeEnum = DisplayModeEnum.Card;\n displayModeEnum = DisplayModeEnum;\n totalRecords = 0;\n pageSize = 10;\n mapComponentRef: ComponentRef<any> = {} as ComponentRef<any>;\n _filteredCustomers: ICustomer[] = [];\n\n get filteredCustomers() {\n return this._filteredCustomers;\n }\n\n set filteredCustomers(value: ICustomer[]) {\n this._filteredCustomers = value;\n this.updateMapComponentDataPoints();\n }\n\n @ViewChild('mapsContainer', { read: ViewContainerRef }) \n private mapsViewContainerRef: ViewContainerRef = {} as ViewContainerRef;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private dataService: DataService,\n private filterService: FilterService,\n private logger: LoggerService) { }\n\n ngOnInit() {\n this.title = 'Customers';\n this.filterText = 'Filter Customers:';\n this.displayMode = DisplayModeEnum.Card;\n\n this.getCustomersPage(1);\n }\n\n changeDisplayMode(mode: DisplayModeEnum) {\n this.displayMode = mode;\n }\n\n pageChanged(page: number) {\n this.getCustomersPage(page);\n }\n\n getCustomersPage(page: number) {\n this.dataService.getCustomersPage((page - 1) * this.pageSize, this.pageSize)\n .subscribe((response: IPagedResults<ICustomer[]>) => {\n this.customers = this.filteredCustomers = response.results;\n this.totalRecords = response.totalRecords;\n },\n (err: any) => this.logger.log(err),\n () => this.logger.log('getCustomersPage() retrieved customers for page: ' + page));\n }\n\n filterChanged(data: string) {\n if (data && this.customers) {\n data = data.toUpperCase();\n const props = ['firstName', 'lastName', 'city', 'state.name'];\n this.filteredCustomers = this.filterService.filter<ICustomer>(this.customers, data, props);\n } else {\n this.filteredCustomers = this.customers;\n }\n }\n\n async lazyLoadMapComponent() {\n this.changeDisplayMode(DisplayModeEnum.Map);\n if (!this.mapsViewContainerRef.length) {\n // Lazy load MapComponent\n const { MapComponent } = await import('../shared/map/map.component');\n console.log('Lazy loaded map component!');\n const component = this.componentFactoryResolver.resolveComponentFactory(MapComponent);\n this.mapComponentRef = this.mapsViewContainerRef.createComponent(component);\n this.mapComponentRef.instance.zoom = 2;\n this.mapComponentRef.instance.dataPoints = this.filteredCustomers;\n this.mapComponentRef.instance.enabled = true;\n }\n }\n\n updateMapComponentDataPoints() {\n if (this.mapComponentRef && this.mapComponentRef.instance) {\n this.mapComponentRef.instance.dataPoints = this.filteredCustomers;\n }\n }\n\n\n}\n\nenum DisplayModeEnum {\n Card = 0,\n Grid = 1,\n Map = 2\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "componentFactoryResolver",
"type": "ComponentFactoryResolver",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "filterService",
"type": "FilterService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 36,
"jsdoctags": [
{
"name": "componentFactoryResolver",
"type": "ComponentFactoryResolver",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "filterService",
"type": "FilterService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"accessors": {
"filteredCustomers": {
"name": "filteredCustomers",
"setSignature": {
"name": "filteredCustomers",
"type": "void",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "value",
"type": "ICustomer[]",
"deprecated": false,
"deprecationMessage": ""
}
],
"returnType": "void",
"line": 30,
"jsdoctags": [
{
"name": "value",
"type": "ICustomer[]",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"getSignature": {
"name": "filteredCustomers",
"type": "",
"returnType": "",
"line": 26
}
}
},
"templateData": "<div class=\"customers view indent\">\n <div class=\"container\">\n <header>\n <h3>\n <span class=\"glyphicon glyphicon-user\"></span>\n {{ title }}\n </h3>\n </header>\n <br />\n <div class=\"row\">\n <div class=\"col-md-10\">\n <div class=\"navbar\">\n <ul class=\"nav navbar-nav\">\n <li class=\"toolbar-item\">\n <a (click)=\"changeDisplayMode(displayModeEnum.Card)\" [class.active]=\"displayMode === displayModeEnum.Card\">\n <span class=\"glyphicon glyphicon-th-large\"></span> Card View\n </a>\n </li>\n <li class=\"toolbar-item\">\n <a (click)=\"changeDisplayMode(displayModeEnum.Grid)\" [class.active]=\"displayMode === displayModeEnum.Grid\">\n <span class=\"glyphicon glyphicon-align-justify\"></span> List View\n </a>\n </li>\n <li class=\"toolbar-item\">\n <a (click)=\"lazyLoadMapComponent()\" [class.active]=\"displayMode === displayModeEnum.Map\">\n <span class=\"glyphicon glyphicon-map-marker\"></span> Map View\n </a>\n </li>\n <li class=\"toolbar-item\">\n <a routerLink=\"/customers/0/edit\">\n <span class=\"glyphicon glyphicon-plus\"></span> New Customer\n </a>\n </li>\n </ul>\n <cm-filter-textbox class=\"navbar-right\"\n (changed)=\"filterChanged($event)\"></cm-filter-textbox>\n </div>\n </div>\n </div>\n \n <cm-customers-card \n [customers]=\"filteredCustomers\" \n [hidden]=\"displayMode !== displayModeEnum.Card\"></cm-customers-card>\n \n <cm-customers-grid \n [customers]=\"filteredCustomers\" \n [hidden]=\"displayMode !== displayModeEnum.Grid\"></cm-customers-grid>\n\n <!-- lazy load the map component -->\n <div [hidden]=\"displayMode !== displayModeEnum.Map\">\n <ng-container #mapsContainer></ng-container>\n </div>\n\n <!-- \n This could be used to eagerly load the map component.\n Would need to import MapModule into either SharedModule (and export it) or \n into CustomersModule to use it this way.\n -->\n <!-- <cm-map *ngIf=\"filteredCustomers.length\" \n [zoom]=\"2\" \n [enabled]=\"displayMode === displayModeEnum.Map\" \n [hidden]=\"displayMode !== displayModeEnum.Map\">\n <cm-map-point \n *ngFor=\"let customer of filteredCustomers\" \n [latitude]=\"customer.latitude\" \n [longitude]=\"customer.longitude\"\n [markerText]=\"'<h3>' + customer.firstName + ' ' + customer.lastName + '</h3>' + customer.city + ', ' + customer.state.name\"></cm-map-point>\n </cm-map> -->\n\n <cm-pagination\n [totalItems]=\"totalRecords\" \n [pageSize]=\"pageSize\" \n (pageChanged)=\"pageChanged($event)\"></cm-pagination>\n \n </div>\n</div>\n"
},
{
"name": "CustomersGridComponent",
"id": "component-CustomersGridComponent-2badf79b81a214e9c258a754a8785406dd41079dbeea26df6000e870f653b56ecb34b6a2c8d13a29664e171a0af1e4dd3c16ab6e69859f6146bac03e6657e1f7",
"file": "src/app/customers/customers-grid/customers-grid.component.ts",
"changeDetection": "ChangeDetectionStrategy.OnPush",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customers-grid",
"styleUrls": [
"./customers-grid.component.css"
],
"styles": [],
"templateUrl": [
"./customers-grid.component.html"
],
"viewProviders": [],
"inputsClass": [
{
"name": "customers",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"line": 18,
"type": "ICustomer[]",
"decorators": []
}
],
"outputsClass": [],
"propertiesClass": [
{
"name": "trackbyService",
"deprecated": false,
"deprecationMessage": "",
"type": "TrackByService",
"optional": false,
"description": "",
"line": 20,
"modifierKind": [
123
]
}
],
"methodsClass": [
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 22,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "sort",
"args": [
{
"name": "prop",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 26,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "prop",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\nimport { SorterService } from '../../core/services/sorter.service';\nimport { TrackByService } from '../../core/services/trackby.service';\nimport { ICustomer } from '../../shared/interfaces';\n\n@Component({\n selector: 'cm-customers-grid',\n templateUrl: './customers-grid.component.html',\n styleUrls: ['./customers-grid.component.css'],\n // When using OnPush detectors, then the framework will check an OnPush\n // component when any of its input properties changes, when it fires\n // an event, or when an observable fires an event ~ Victor Savkin (Angular Team)\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CustomersGridComponent implements OnInit {\n\n @Input() customers: ICustomer[] = [];\n\n constructor(private sorterService: SorterService, public trackbyService: TrackByService) { }\n\n ngOnInit() {\n\n }\n\n sort(prop: string) {\n this.customers = this.sorterService.sort(this.customers, prop);\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".grid-container div {\n padding-left: 0px;\n}\n\n.grid-container td {\n vertical-align: middle;\n}\n\n.grid-image {\n height:50px;width:50px;margin-top:10px;\n}",
"styleUrl": "./customers-grid.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "sorterService",
"type": "SorterService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "trackbyService",
"type": "TrackByService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 18,
"jsdoctags": [
{
"name": "sorterService",
"type": "SorterService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "trackbyService",
"type": "TrackByService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"container\">\n <div class=\"row grid-container\">\n <div class=\"col-md-10\">\n <div class=\"table\">\n <table class=\"table table-striped table-hover\">\n <thead>\n <tr>\n <th>&nbsp;</th>\n <th cmSortBy=\"firstName\" (sorted)=\"sort($event)\">First Name</th>\n <th cmSortBy=\"lastName\" (sorted)=\"sort($event)\">Last Name</th>\n <th cmSortBy=\"address\" (sorted)=\"sort($event)\">Address</th>\n <th cmSortBy=\"city\" (sorted)=\"sort($event)\">City</th>\n <th cmSortBy=\"state.name\" (sorted)=\"sort($event)\">State</th>\n <!-- Or you can do this directly rather than using sort-by directive -->\n <th (click)=\"sort('orderTotal')\">Order Total</th>\n <th>&nbsp;</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let customer of customers;trackBy:trackbyService.customer\">\n <td><img src=\"assets/images/{{ customer.gender | lowercase }}.png\"\n class=\"grid-image\" alt=\"Customer Image\" /></td>\n <td><a [routerLink]=\"['/customers',customer.id,'details']\">{{ customer.firstName | capitalize }}</a></td>\n <td>{{ customer.lastName | capitalize }}</td>\n <td>{{ customer.address }}</td>\n <td>{{ customer.city | trim }}</td>\n <td>{{ customer.state.name }}</td>\n <td>{{ customer.orderTotal | currency:'USD':'symbol' }}</td>\n <td><a [routerLink]=\"['/customers',customer.id,'orders']\">View Orders</a></td>\n </tr>\n <tr *ngIf=\"!customers.length\">\n <td>&nbsp;</td>\n <td colspan=\"7\">No Records Found</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n</div>\n"
},
{
"name": "FilterTextboxComponent",
"id": "component-FilterTextboxComponent-b2a344cc26c99bbaf1a353392bfa472a08caa5a7181fa02d717029d741db26fa45e96cccb9ae6d5f3ea6647b095ed5b8f3b1531b49b6d4dbf88617db133e9ebf",
"file": "src/app/shared/filter-textbox/filter-textbox.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-filter-textbox",
"styleUrls": [
"./filter-textbox.component.css"
],
"styles": [],
"templateUrl": [
"./filter-textbox.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [
{
"name": "changed",
"defaultValue": "new EventEmitter<string>()",
"deprecated": false,
"deprecationMessage": "",
"line": 13,
"type": "EventEmitter<string>"
}
],
"propertiesClass": [
{
"name": "model",
"defaultValue": "{ filter: '' }",
"deprecated": false,
"deprecationMessage": "",
"type": "literal type",
"optional": false,
"description": "",
"line": 10
}
],
"methodsClass": [
{
"name": "filterChanged",
"args": [
{
"name": "event",
"type": "any",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 15,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "event",
"type": "any",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'cm-filter-textbox',\n templateUrl: './filter-textbox.component.html',\n styleUrls: [ './filter-textbox.component.css' ]\n})\nexport class FilterTextboxComponent {\n\n model: { filter: string } = { filter: '' };\n\n @Output()\n changed: EventEmitter<string> = new EventEmitter<string>();\n\n filterChanged(event: any) {\n event.preventDefault();\n this.changed.emit(this.model.filter); // Raise changed event\n }\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": "cm-filter-textbox {\n margin-top: 5px;\n}\n",
"styleUrl": "./filter-textbox.component.css"
}
],
"stylesData": "",
"templateData": "<form>\n Filter:\n <input type=\"text\" name=\"filter\"\n [(ngModel)]=\"model.filter\" \n (keyup)=\"filterChanged($event)\" />\n</form>"
},
{
"name": "GrowlerComponent",
"id": "component-GrowlerComponent-48f5a0fd816c6b355b58a3a34a66ea921f513fd639d282db7fb88d7513dc1548e823b9c2e4f04c042cca5cb26db31e7370ff0acea53d913e199b86691eb97ed0",
"file": "src/app/core/growler/growler.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-growler",
"styleUrls": [
"growler.component.css"
],
"styles": [],
"template": "<div [ngClass]=\"position\" class=\"growler\">\n <div *ngFor=\"let growl of growls\" [ngClass]=\"{active: growl.enabled}\"\n class=\"growl alert {{ growl.messageType }}\">\n <span class=\"growl-message\">{{ growl.message }}</span>\n </div>\n</div>\n",
"templateUrl": [],
"viewProviders": [],
"inputsClass": [
{
"name": "position",
"defaultValue": "'bottom-right'",
"deprecated": false,
"deprecationMessage": "",
"line": 23,
"type": "string",
"decorators": []
},
{
"name": "timeout",
"defaultValue": "3000",
"deprecated": false,
"deprecationMessage": "",
"line": 24,
"type": "number",
"decorators": []
}
],
"outputsClass": [],
"propertiesClass": [
{
"name": "growlCount",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 20,
"modifierKind": [
121
]
},
{
"name": "growls",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "Growl[]",
"optional": false,
"description": "",
"line": 21
}
],
"methodsClass": [
{
"name": "growl",
"args": [
{
"name": "message",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "growlType",
"type": "GrowlerMessageType",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "number",
"typeParameters": [],
"line": 40,
"deprecated": false,
"deprecationMessage": "",
"rawdescription": "\n\nDisplays a growl message.\n\n",
"description": "<p>Displays a growl message.</p>\n",
"jsdoctags": [
{
"name": {
"pos": 973,
"end": 980,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"escapedText": "message"
},
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"pos": 958,
"end": 963,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"escapedText": "param"
},
"comment": "<ul>\n<li>The message to display.</li>\n</ul>\n",
"typeExpression": {
"pos": 964,
"end": 972,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 307,
"type": {
"pos": 965,
"end": 971,
"flags": 4194304,
"modifierFlagsCache": 0,
"transformFlags": 1,
"kind": 149
}
}
},
{
"name": {
"pos": 1037,
"end": 1046,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"escapedText": "growlType"
},
"type": "GrowlerMessageType",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"pos": 1012,
"end": 1017,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"escapedText": "param"
},
"comment": "<ul>\n<li>The type of message to display (a GrowlMessageType enumeration)</li>\n</ul>\n",
"typeExpression": {
"pos": 1018,
"end": 1036,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 307,
"type": {
"pos": 1019,
"end": 1035,
"flags": 4194304,
"modifierFlagsCache": 0,
"transformFlags": 1,
"kind": 177,
"typeName": {
"pos": 1019,
"end": 1035,
"flags": 4194304,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"escapedText": "GrowlMessageType"
}
}
}
},
{
"tagName": {
"pos": 1118,
"end": 1124,
"flags": 4227072,
"modifierFlagsCache": 0,
"transformFlags": 0,
"kind": 79,
"originalKeywordKind": 105,
"escapedText": "return"
},
"comment": "<p>id - Returns the ID for the generated growl</p>\n",
"returnType": "number"
}
]
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 31,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "removeGrowl",
"args": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 50,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "id",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { GrowlerService, GrowlerMessageType } from './growler.service';\nimport { LoggerService } from '../services/logger.service';\n\n@Component({\n selector: 'cm-growler',\n template: `\n <div [ngClass]=\"position\" class=\"growler\">\n <div *ngFor=\"let growl of growls\" [ngClass]=\"{active: growl.enabled}\"\n class=\"growl alert {{ growl.messageType }}\">\n <span class=\"growl-message\">{{ growl.message }}</span>\n </div>\n </div>\n `,\n styleUrls: ['growler.component.css']\n})\nexport class GrowlerComponent implements OnInit {\n\n private growlCount = 0;\n growls: Growl[] = [];\n\n @Input() position = 'bottom-right';\n @Input() timeout = 3000;\n\n constructor(private growlerService: GrowlerService,\n private logger: LoggerService) {\n growlerService.growl = this.growl.bind(this);\n }\n\n ngOnInit() { }\n\n /**\n * Displays a growl message.\n *\n * @param {string} message - The message to display.\n * @param {GrowlMessageType} growlType - The type of message to display (a GrowlMessageType enumeration)\n * @return {number} id - Returns the ID for the generated growl\n */\n growl(message: string, growlType: GrowlerMessageType): number {\n this.growlCount++;\n const bootstrapAlertType = GrowlerMessageType[growlType].toLowerCase();\n const messageType = `alert-${ bootstrapAlertType }`;\n\n const growl = new Growl(this.growlCount, message, messageType, this.timeout, this);\n this.growls.push(growl);\n return growl.id;\n }\n\n removeGrowl(id: number) {\n this.growls.forEach((growl: Growl, index: number) => {\n if (growl.id === id) {\n this.growls.splice(index, 1);\n this.growlCount--;\n this.logger.log('removed ' + id);\n }\n });\n }\n}\n\nclass Growl {\n\n enabled: boolean = false;\n timeoutId: number = 0;\n\n constructor(public id: number,\n public message: string,\n public messageType: string,\n private timeout: number,\n private growlerContainer: GrowlerComponent) {\n this.show();\n }\n\n show() {\n window.setTimeout(() => {\n this.enabled = true;\n this.setTimeout();\n }, 0);\n }\n\n setTimeout() {\n window.setTimeout(() => {\n this.hide();\n }, this.timeout);\n }\n\n hide() {\n this.enabled = false;\n window.setTimeout(() => {\n this.growlerContainer.removeGrowl(this.id);\n }, this.timeout);\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": " .growler {\n position: fixed;\n z-index: 999999;\n }\n \n .growler.close-button:focus {\n outline: 0;\n }\n \n .growler.top-left {\n top: 12px;\n left: 12px;\n }\n \n .growler.top-right {\n top: 12px;\n right: 12px;\n }\n \n .growler.bottom-right {\n bottom: 12px;\n right: 12px;\n }\n \n .growler.bottom-left {\n bottom: 12px;\n left: 12px;\n }\n \n .growler.top-center {\n top: 12px;\n left: 50%;\n -webkit-transform: translate(-50%, 0%);\n transform: translate(-50%, 0%);\n }\n \n .growler.bottom-center {\n bottom: 12px;\n left: 50%;\n -webkit-transform: translate(-50%, 0%);\n transform: translate(-50%, 0%);\n }\n \n .growl {\n cursor: pointer;\n padding: 5;\n width: 285px;\n height: 65px; \n opacity: 0; \n display: flex;\n align-items: center;\n justify-content: center;\n \n -webkit-transition: opacity 1s;\n -moz-transition: opacity 1s; \n -o-transition: opacity 1s;\n transition: opacity 1s; \n } \n \n .growl.active { \n opacity: 1;\n } \n \n .growl-message {\n\n }",
"styleUrl": "growler.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "growlerService",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 24,
"jsdoctags": [
{
"name": "growlerService",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
]
},
{
"name": "HeaderComponent",
"id": "component-HeaderComponent-0cd94fbc94a83702e45bf987cb3b3f9074d69cd27e6ca2e4fbac0dc5b5047bd4dc3a9ce8a77f6bd9ab7ae3e6ca8e49b34bed529ca0da0fa428fec544a0324870",
"file": "src/stories/header.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "storybook-header",
"styleUrls": [
"./header.css"
],
"styles": [],
"template": "<header> <div class=\"wrapper\">\n <div>\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z\"\n fill=\"#555AB9\"\n />\n <path\n d=\"M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z\"\n fill=\"#91BAF8\"\n />\n </g>\n </svg>\n <h1>Acme</h1>\n </div>\n <div>\n <storybook-button\n *ngIf=\"user\"\n size=\"small\"\n (onClick)=\"onLogout.emit($event)\"\n label=\"Log out\"\n ></storybook-button>\n <storybook-button\n *ngIf=\"!user\"\n size=\"small\"\n (onClick)=\"onLogin.emit($event)\"\n label=\"Log in\"\n ></storybook-button>\n <storybook-button\n *ngIf=\"!user\"\n primary\n size=\"small\"\n (onClick)=\"onCreateAccount.emit($event)\"\n label=\"Sign up\"\n ></storybook-button>\n </div>\n </div>\n </header>",
"templateUrl": [],
"viewProviders": [],
"inputsClass": [
{
"name": "user",
"defaultValue": "null",
"deprecated": false,
"deprecationMessage": "",
"line": 54,
"type": "User | null",
"decorators": []
}
],
"outputsClass": [
{
"name": "onCreateAccount",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"line": 63,
"type": "EventEmitter"
},
{
"name": "onLogin",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"line": 57,
"type": "EventEmitter"
},
{
"name": "onLogout",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"line": 60,
"type": "EventEmitter"
}
],
"propertiesClass": [],
"methodsClass": [],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { User } from './User';\n\n@Component({\n selector: 'storybook-header',\n template: `<header>\n <div class=\"wrapper\">\n <div>\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z\"\n fill=\"#555AB9\"\n />\n <path\n d=\"M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z\"\n fill=\"#91BAF8\"\n />\n </g>\n </svg>\n <h1>Acme</h1>\n </div>\n <div>\n <storybook-button\n *ngIf=\"user\"\n size=\"small\"\n (onClick)=\"onLogout.emit($event)\"\n label=\"Log out\"\n ></storybook-button>\n <storybook-button\n *ngIf=\"!user\"\n size=\"small\"\n (onClick)=\"onLogin.emit($event)\"\n label=\"Log in\"\n ></storybook-button>\n <storybook-button\n *ngIf=\"!user\"\n primary\n size=\"small\"\n (onClick)=\"onCreateAccount.emit($event)\"\n label=\"Sign up\"\n ></storybook-button>\n </div>\n </div>\n </header>`,\n styleUrls: ['./header.css'],\n})\nexport default class HeaderComponent {\n @Input()\n user: User | null = null;\n\n @Output()\n onLogin = new EventEmitter<Event>();\n\n @Output()\n onLogout = new EventEmitter<Event>();\n\n @Output()\n onCreateAccount = new EventEmitter<Event>();\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".wrapper {\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding: 15px 20px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\nsvg {\n display: inline-block;\n vertical-align: top;\n}\n\nh1 {\n font-weight: 900;\n font-size: 20px;\n line-height: 1;\n margin: 6px 0 6px 10px;\n display: inline-block;\n vertical-align: top;\n}\n\nbutton + button {\n margin-left: 10px;\n}\n",
"styleUrl": "./header.css"
}
],
"stylesData": ""
},
{
"name": "LoginComponent",
"id": "component-LoginComponent-622a1dd2024a9df9bc64681d3068855fac9c5b278dd4fd0a4c0eb956ec4d9e419f7ceb2679d2306ec3535a8743bb04c36d89db4312141f93737a50c61c68025e",
"file": "src/app/login/login.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-login",
"styleUrls": [
"./login.component.css"
],
"styles": [],
"templateUrl": [
"./login.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "errorMessage",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 18
},
{
"name": "loginForm",
"defaultValue": "{} as FormGroup",
"deprecated": false,
"deprecationMessage": "",
"type": "FormGroup",
"optional": false,
"description": "",
"line": 17
}
],
"methodsClass": [
{
"name": "buildForm",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 33,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 29,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "submit",
"args": [
{
"type": "literal type",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 40,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"type": "literal type",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\n\nimport { AuthService } from '../core/services/auth.service';\nimport { ValidationService } from '../core/services/validation.service';\nimport { IUserLogin } from '../shared/interfaces';\nimport { GrowlerService, GrowlerMessageType } from '../core/growler/growler.service';\nimport { LoggerService } from '../core/services/logger.service';\n\n@Component({\n selector: 'cm-login',\n templateUrl: './login.component.html',\n styleUrls: [ './login.component.css' ]\n})\nexport class LoginComponent implements OnInit {\n loginForm: FormGroup = {} as FormGroup;\n errorMessage: string = '';\n get f(): { [key: string]: AbstractControl } {\n return this.loginForm.controls;\n }\n\n constructor(private formBuilder: FormBuilder,\n private router: Router,\n private authService: AuthService,\n private growler: GrowlerService,\n private logger: LoggerService) { }\n\n ngOnInit() {\n this.buildForm();\n }\n\n buildForm() {\n this.loginForm = this.formBuilder.group({\n email: ['', [ Validators.required, ValidationService.emailValidator ]],\n password: ['', [ Validators.required, ValidationService.passwordValidator ]]\n });\n }\n\n submit({ value, valid }: { value: IUserLogin, valid: boolean }) {\n this.authService.login(value)\n .subscribe((status: boolean) => {\n if (status) {\n this.growler.growl('Logged in', GrowlerMessageType.Info);\n if (this.authService.redirectUrl) {\n const redirectUrl = this.authService.redirectUrl;\n this.authService.redirectUrl = '';\n this.router.navigate([redirectUrl]);\n } else {\n this.router.navigate(['/customers']);\n }\n } else {\n const loginError = 'Unable to login';\n this.errorMessage = loginError;\n this.growler.growl(loginError, GrowlerMessageType.Danger);\n }\n },\n (err: any) => this.logger.log(err));\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".login-form input[type='text'], \n.login-form input[type='email'],\n.login-form input[type='password'] {\n width:75%;\n}\n\n.login-form .ng-invalid {\n border-left: 5px solid #a94442;\n}\n\n.login-form .ng-valid {\n border-left: 5px solid #42A948;\n}\n",
"styleUrl": "./login.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "formBuilder",
"type": "FormBuilder",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "authService",
"type": "AuthService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "growler",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 21,
"jsdoctags": [
{
"name": "formBuilder",
"type": "FormBuilder",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "authService",
"type": "AuthService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "growler",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"accessors": {
"f": {
"name": "f",
"getSignature": {
"name": "f",
"type": "literal type",
"returnType": "literal type",
"line": 19
}
}
},
"templateData": "<div class=\"view\">\n <div class=\"container\">\n <header>\n <h3><span class=\"glyphicon glyphicon-lock\"></span> Login</h3>\n </header>\n <br />\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submit(loginForm)\" class=\"login-form\" novalidate>\n <div class=\"login\">\n <div class=\"row\">\n <div class=\"col-md-2\">\n Email:\n </div>\n <div class=\"col-md-10\">\n <input title=\"email\" type=\"email\" name=\"email\" class=\"form-control\" formControlName=\"email\" />\n <div class=\"alert alert-danger\" data-cy=\"email-error\" [hidden]=\"f['email'].untouched || f['email'].valid\">\n A valid email address is required\n </div>\n </div>\n </div>\n <br />\n <div class=\"row\">\n <div class=\"col-md-2\">\n Password:\n </div>\n <div class=\"col-md-10\">\n <input title=\"password\" type=\"password\" name=\"password\" class=\"form-control\" formControlName=\"password\" />\n <div class=\"alert alert-danger\" data-cy=\"password-error\" [hidden]=\"f['password'].untouched || f['password'].valid\">\n Password is required (6 or more characters with at least one number)\n </div>\n </div>\n </div>\n <br />\n <div class=\"row\">\n <div class=\"col-md-12\">\n <button type=\"submit\" class=\"btn btn-success\" [disabled]=\"!loginForm.valid\">Login</button>\n </div>\n </div>\n <br />\n <div class=\"statusRow\">\n <br />\n <div class=\"label label-important\" *ngIf=\"errorMessage\">\n <span class=\"glyphicon glyphicon-thumbs-down icon-white\"></span>&nbsp;&nbsp;Error: {{ errorMessage }}\n </div>\n </div>\n </div>\n </form>\n \n </div>\n</div>"
},
{
"name": "MapComponent",
"id": "component-MapComponent-4e80d23935688ca0ef1d36ac7b747c2fb38e342c198ed0054b6a445e1bb0c226fea55ce172ca39b2c44da657cce29e61aaf25b6e0e24d36678d5ae0738ec4139",
"file": "src/app/shared/map/map.component.ts",
"changeDetection": "ChangeDetectionStrategy.OnPush",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-map",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./map.component.html"
],
"viewProviders": [],
"inputsClass": [
{
"name": "dataPoints",
"deprecated": false,
"deprecationMessage": "",
"line": 36,
"type": "{}",
"decorators": []
},
{
"name": "enabled",
"deprecated": false,
"deprecationMessage": "",
"line": 47,
"type": "boolean",
"decorators": []
},
{
"name": "height",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"line": 29,
"type": "number",
"decorators": []
},
{
"name": "latitude",
"defaultValue": "34.5133",
"deprecated": false,
"deprecationMessage": "",
"line": 31,
"type": "number",
"decorators": []
},
{
"name": "longitude",
"defaultValue": "-94.1629",
"deprecated": false,
"deprecationMessage": "",
"line": 32,
"type": "number",
"decorators": []
},
{
"name": "markerText",
"defaultValue": "'Your Location'",
"deprecated": false,
"deprecationMessage": "",
"line": 33,
"type": "string",
"decorators": []
},
{
"name": "width",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"line": 30,
"type": "number",
"decorators": []
},
{
"name": "zoom",
"defaultValue": "8",
"deprecated": false,
"deprecationMessage": "",
"line": 34,
"type": "number",
"decorators": []
}
],
"outputsClass": [],
"propertiesClass": [
{
"name": "_dataPoints",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "IMapDataPoint[]",
"optional": false,
"description": "",
"line": 35,
"modifierKind": [
121
]
},
{
"name": "isEnabled",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 22,
"modifierKind": [
121
]
},
{
"name": "loadingScript",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 23,
"modifierKind": [
121
]
},
{
"name": "map",
"defaultValue": "{} as google.maps.Map",
"deprecated": false,
"deprecationMessage": "",
"type": "google.maps.Map",
"optional": false,
"description": "",
"line": 24,
"modifierKind": [
121
]
},
{
"name": "mapDiv",
"defaultValue": "{} as ElementRef",
"deprecated": false,
"deprecationMessage": "",
"type": "ElementRef",
"optional": false,
"description": "",
"line": 56,
"decorators": [
{
"name": "ViewChild",
"stringifiedArguments": "'mapContainer', {static: true}"
}
]
},
{
"name": "mapHeight",
"defaultValue": "null",
"deprecated": false,
"deprecationMessage": "",
"type": "string | null",
"optional": false,
"description": "",
"line": 26
},
{
"name": "mapPoints",
"defaultValue": "{} as QueryList<MapPointComponent>",
"deprecated": false,
"deprecationMessage": "",
"type": "QueryList<MapPointComponent>",
"optional": false,
"description": "",
"line": 57,
"decorators": [
{
"name": "ContentChildren",
"stringifiedArguments": "MapPointComponent"
}
]
},
{
"name": "mapWidth",
"defaultValue": "null",
"deprecated": false,
"deprecationMessage": "",
"type": "string | null",
"optional": false,
"description": "",
"line": 27
},
{
"name": "markers",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "google.maps.Marker[]",
"optional": false,
"description": "",
"line": 25,
"modifierKind": [
121
]
}
],
"methodsClass": [
{
"name": "clearMapPoints",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 169,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
]
},
{
"name": "createLatLong",
"args": [
{
"name": "latitude",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "longitude",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 148,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
],
"jsdoctags": [
{
"name": "latitude",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "longitude",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "createMarker",
"args": [
{
"name": "position",
"type": "google.maps.LatLng",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "title",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 176,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
],
"jsdoctags": [
{
"name": "position",
"type": "google.maps.LatLng",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "title",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "ensureScript",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 108,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
]
},
{
"name": "getWindowHeightWidth",
"args": [
{
"name": "document",
"type": "Document",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "{ height: any; width: any; }",
"typeParameters": [],
"line": 94,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
],
"jsdoctags": [
{
"name": "document",
"type": "Document",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "init",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 86,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngAfterContentInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 74,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 61,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "renderMap",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 129,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
]
},
{
"name": "renderMapPoints",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 152,
"deprecated": false,
"deprecationMessage": "",
"modifierKind": [
121
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import {\n Component, OnInit, AfterContentInit, Input, ViewChild,\n ContentChildren, ElementRef, QueryList, ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { debounceTime } from 'rxjs/operators';\nimport { MapPointComponent } from './map-point.component';\nimport { IMapDataPoint } from '../../shared/interfaces';\n\n@Component({\n selector: 'cm-map',\n templateUrl: './map.component.html',\n // When using OnPush detectors, then the framework will check an OnPush\n // component when any of its input properties changes, when it fires\n // an event, or when an observable fires an event ~ Victor Savkin (Angular Team)\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MapComponent implements OnInit, AfterContentInit {\n\n private isEnabled: boolean = false;\n private loadingScript: boolean = false;\n private map: google.maps.Map = {} as google.maps.Map;\n private markers: google.maps.Marker[] = [];\n mapHeight: string | null = null;\n mapWidth: string | null = null;\n\n @Input() height: number = 0;\n @Input() width: number = 0;\n @Input() latitude = 34.5133;\n @Input() longitude = -94.1629;\n @Input() markerText = 'Your Location';\n @Input() zoom = 8;\n private _dataPoints: IMapDataPoint[] = [];\n @Input() public get dataPoints() {\n return this._dataPoints as IMapDataPoint[];\n }\n\n public set dataPoints(value: any[]) {\n this._dataPoints = value;\n this.renderMapPoints();\n }\n\n // Necessary since a map rendered while container is hidden\n // will not load the map tiles properly and show a grey screen\n @Input() get enabled(): boolean {\n return this.isEnabled;\n }\n\n set enabled(isEnabled: boolean) {\n this.isEnabled = isEnabled;\n this.init();\n }\n\n @ViewChild('mapContainer', { static: true }) mapDiv: ElementRef = {} as ElementRef;\n @ContentChildren(MapPointComponent) mapPoints: QueryList<MapPointComponent> = {} as QueryList<MapPointComponent>;\n\n constructor() { }\n\n ngOnInit() {\n if (this.latitude && this.longitude) {\n if (this.mapHeight && this.mapWidth) {\n this.mapHeight = this.height + 'px';\n this.mapWidth = this.width + 'px';\n } else {\n const hw = this.getWindowHeightWidth(this.mapDiv.nativeElement.ownerDocument);\n this.mapHeight = hw.height / 2 + 'px';\n this.mapWidth = hw.width + 'px';\n }\n }\n }\n\n ngAfterContentInit() {\n this.mapPoints.changes\n .pipe(\n debounceTime(500)\n )\n .subscribe(() => {\n if (this.enabled) { \n this.renderMapPoints(); \n }\n });\n }\n\n init() {\n // Need slight delay to avoid grey box when google script has previously been loaded.\n // Otherwise map <div> container may not be visible yet which causes the grey box.\n setTimeout(() => {\n this.ensureScript();\n }, 200);\n }\n\n private getWindowHeightWidth(document: Document) {\n let width = window.innerWidth\n || document.documentElement.clientWidth\n || document.body.clientWidth;\n\n const height = window.innerHeight\n || document.documentElement.clientHeight\n || document.body.clientHeight;\n\n if (width > 900) { width = 900; }\n\n return { height: height, width: width };\n }\n\n private ensureScript() {\n this.loadingScript = true;\n const document = this.mapDiv.nativeElement.ownerDocument;\n const script = <HTMLScriptElement>document.querySelector('script[id=\"googlemaps\"]');\n if (script) {\n if (this.isEnabled) { this.renderMap(); }\n } else {\n const mapsScript = document.createElement('script');\n mapsScript.id = 'googlemaps';\n mapsScript.type = 'text/javascript';\n mapsScript.async = true;\n mapsScript.defer = true;\n mapsScript.src = 'https://maps.googleapis.com/maps/api/js?key=AIzaSyCG1KDldeF_2GzaTXrEHR0l6cyCS7AnmBw';\n mapsScript.onload = () => {\n this.loadingScript = false;\n if (this.isEnabled) { this.renderMap(); }\n };\n document.body.app
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 57
},
"implements": [
"OnInit",
"AfterContentInit"
],
"accessors": {
"dataPoints": {
"name": "dataPoints",
"setSignature": {
"name": "dataPoints",
"type": "void",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "value",
"type": "any[]",
"deprecated": false,
"deprecationMessage": ""
}
],
"returnType": "void",
"line": 40,
"jsdoctags": [
{
"name": "value",
"type": "any[]",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"getSignature": {
"name": "dataPoints",
"type": "",
"returnType": "",
"line": 36
}
},
"enabled": {
"name": "enabled",
"setSignature": {
"name": "enabled",
"type": "void",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "isEnabled",
"type": "boolean",
"deprecated": false,
"deprecationMessage": ""
}
],
"returnType": "void",
"line": 51,
"jsdoctags": [
{
"name": "isEnabled",
"type": "boolean",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"getSignature": {
"name": "enabled",
"type": "boolean",
"returnType": "boolean",
"line": 47
}
}
},
"templateData": "<div #mapContainer [style.height]=\"mapHeight\" [style.width]=\"mapWidth\">Map Loading....</div>"
},
{
"name": "MapPointComponent",
"id": "component-MapPointComponent-9d0dda82f8b14d746691ec7b5c35f93579646c251262cabdfd39767d10e0d43bff9b2e5588453ea00d2bfbd39a3bbe29e457f496d49e932bdf9fc76dcca3efcb",
"file": "src/app/shared/map/map-point.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-map-point",
"styleUrls": [],
"styles": [],
"template": "",
"templateUrl": [],
"viewProviders": [],
"inputsClass": [
{
"name": "latitude",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"line": 10,
"type": "number",
"decorators": []
},
{
"name": "longitude",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"line": 9,
"type": "number",
"decorators": []
},
{
"name": "markerText",
"defaultValue": "''",
"deprecated": false,
"deprecationMessage": "",
"line": 11,
"type": "string",
"decorators": []
}
],
"outputsClass": [],
"propertiesClass": [],
"methodsClass": [
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 15,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'cm-map-point',\n template: ``\n})\nexport class MapPointComponent implements OnInit {\n\n @Input() longitude: number = 0;\n @Input() latitude: number = 0;\n @Input() markerText: string = '';\n\n constructor() { }\n\n ngOnInit() {\n\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 11
},
"implements": [
"OnInit"
]
},
{
"name": "ModalComponent",
"id": "component-ModalComponent-de3d00e35a66a8586f0cb3dfe75ae003765ef56ccec320f3303917db2bd0f04b7c134f2636f290465310fc211047fd3885cb54502fcaeb0a49fcf4ec1572a0f8",
"file": "src/app/core/modal/modal.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-modal",
"styleUrls": [
"./modal.component.css"
],
"styles": [],
"templateUrl": [
"./modal.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "cancel",
"defaultValue": "() => {...}",
"deprecated": false,
"deprecationMessage": "",
"type": "function",
"optional": false,
"description": "",
"line": 15
},
{
"name": "defaultModalContent",
"defaultValue": "{\n header: 'Please Confirm',\n body: 'Are you sure you want to continue?',\n cancelButtonText: 'Cancel',\n OKButtonText: 'OK',\n cancelButtonVisible: true\n }",
"deprecated": false,
"deprecationMessage": "",
"type": "IModalContent",
"optional": false,
"description": "",
"line": 17
},
{
"name": "modalContent",
"defaultValue": "{}",
"deprecated": false,
"deprecationMessage": "",
"type": "IModalContent",
"optional": false,
"description": "",
"line": 14
},
{
"name": "modalVisible",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 12
},
{
"name": "modalVisibleAnimate",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 13
},
{
"name": "ok",
"defaultValue": "() => {...}",
"deprecated": false,
"deprecationMessage": "",
"type": "function",
"optional": false,
"description": "",
"line": 16
}
],
"methodsClass": [
{
"name": "hide",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 52,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 30,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "show",
"args": [
{
"name": "modalContent",
"type": "IModalContent",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "any",
"typeParameters": [],
"line": 34,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "modalContent",
"type": "IModalContent",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, EventEmitter } from '@angular/core';\n\nimport { ModalService, IModalContent } from './modal.service';\n\n@Component({\n selector: 'cm-modal',\n templateUrl: './modal.component.html',\n styleUrls: [ './modal.component.css' ]\n})\nexport class ModalComponent implements OnInit {\n\n modalVisible = false;\n modalVisibleAnimate = false;\n modalContent: IModalContent = {};\n cancel: () => void = () => {};\n ok: () => void = () => {};\n defaultModalContent: IModalContent = {\n header: 'Please Confirm',\n body: 'Are you sure you want to continue?',\n cancelButtonText: 'Cancel',\n OKButtonText: 'OK',\n cancelButtonVisible: true\n };\n\n constructor(private modalService: ModalService) {\n modalService.show = this.show.bind(this);\n modalService.hide = this.hide.bind(this);\n }\n\n ngOnInit() {\n\n }\n\n show(modalContent: IModalContent) {\n this.modalContent = Object.assign(this.defaultModalContent, modalContent);\n this.modalVisible = true;\n setTimeout(() => this.modalVisibleAnimate = true);\n\n const promise = new Promise<boolean>((resolve, reject) => {\n this.cancel = () => {\n this.hide();\n resolve(false);\n };\n this.ok = () => {\n this.hide();\n resolve(true);\n };\n });\n return promise;\n }\n\n hide() {\n this.modalVisibleAnimate = false;\n setTimeout(() => this.modalVisible = false, 300);\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".modal {\n background: rgba(0,0,0,0.6);\n}",
"styleUrl": "./modal.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "modalService",
"type": "ModalService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 23,
"jsdoctags": [
{
"name": "modalService",
"type": "ModalService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"modal fade\" tabindex=\"-1\" [ngClass]=\"{'in': modalVisibleAnimate}\"\n [ngStyle]=\"{'display': modalVisible ? 'block' : 'none', 'opacity': modalVisibleAnimate ? 1 : 0}\">\n <div class=\"modal-dialog\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"cancel()\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>\n <h4 class=\"modal-title\">{{ modalContent.header }}</h4>\n </div>\n <div class=\"modal-body\">\n {{ modalContent.body }}\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-default\" (click)=\"cancel()\" *ngIf=\"modalContent.cancelButtonVisible\">{{ modalContent.cancelButtonText }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ modalContent.OKButtonText }}</button>\n </div>\n </div>\n </div>\n</div>"
},
{
"name": "NavbarComponent",
"id": "component-NavbarComponent-901352739697484dbf90386032c04c046aac0e6ade40da8b84a015e65638ab8a13a38e5e7da17f02b7c2e0787820a7ecd709ac65d391f8e3e67c2d703d45d2e8",
"file": "src/app/core/navbar/navbar.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-navbar",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./navbar.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "isCollapsed",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "boolean",
"optional": false,
"description": "",
"line": 16
},
{
"name": "loginLogoutText",
"defaultValue": "'Login'",
"deprecated": false,
"deprecationMessage": "",
"type": "string",
"optional": false,
"description": "",
"line": 17
},
{
"name": "sub",
"defaultValue": "{} as Subscription",
"deprecated": false,
"deprecationMessage": "",
"type": "Subscription",
"optional": false,
"description": "",
"line": 18
}
],
"methodsClass": [
{
"name": "loginOrOut",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 37,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngOnDestroy",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 33,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 25,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "redirectToLogin",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 52,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "setLoginLogoutText",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 56,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\n\nimport { AuthService } from '../services/auth.service';\nimport { GrowlerService, GrowlerMessageType } from '../growler/growler.service';\nimport { LoggerService } from '../services/logger.service';\n\n@Component({\n selector: 'cm-navbar',\n templateUrl: './navbar.component.html'\n})\nexport class NavbarComponent implements OnInit, OnDestroy {\n\n isCollapsed: boolean = false;\n loginLogoutText = 'Login';\n sub: Subscription = {} as Subscription;\n\n constructor(private router: Router,\n private authservice: AuthService,\n private growler: GrowlerService,\n private logger: LoggerService) { }\n\n ngOnInit() {\n this.sub = this.authservice.authChanged\n .subscribe((loggedIn: boolean) => {\n this.setLoginLogoutText();\n },\n (err: any) => this.logger.log(err));\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n loginOrOut() {\n const isAuthenticated = this.authservice.isAuthenticated;\n if (isAuthenticated) {\n this.authservice.logout()\n .subscribe((status: boolean) => {\n this.setLoginLogoutText();\n this.growler.growl('Logged Out', GrowlerMessageType.Info);\n this.router.navigate(['/customers']);\n return;\n },\n (err: any) => this.logger.log(err));\n }\n this.redirectToLogin();\n }\n\n redirectToLogin() {\n this.router.navigate(['/login']);\n }\n\n setLoginLogoutText() {\n this.loginLogoutText = (this.authservice.isAuthenticated) ? 'Logout' : 'Login';\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "authservice",
"type": "AuthService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "growler",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 18,
"jsdoctags": [
{
"name": "router",
"type": "Router",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "authservice",
"type": "AuthService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "growler",
"type": "GrowlerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "logger",
"type": "LoggerService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit",
"OnDestroy"
],
"templateData": "<nav class=\"navbar navbar-inner navbar-fixed-top\">\n <div class=\"container\">\n <div class=\"navbar-header\" style=\"\">\n <button type=\"button\" class=\"navbar-toggle\" \n (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"sr-only\">Toggle navigation</span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n <a class=\"navbar-brand\" routerLink=\"/customers\">\n <img src=\"assets/images/people.png\" alt=\"logo\" />\n <span class=\"app-title\">Customer Manager</span>\n </a>\n <span class=\"navbar-collapse\" [attr.data-collapse]=\"isCollapsed\">\n <ul class=\"nav navbar-nav nav-pills navBarPadding\">\n <li routerLinkActive=\"active\"><a routerLink=\"/customers\">Customers</a></li>\n <li routerLinkActive=\"active\"><a routerLink=\"/orders\">Orders</a></li>\n <li routerLinkActive=\"active\"><a routerLink=\"/about\">About</a></li>\n <li routerLinkActive=\"active\" (click)=\"loginOrOut()\" data-cy=\"login-logout\"><a>{{ loginLogoutText }}</a></li>\n </ul>\n </span>\n </div>\n </div>\n</nav>"
},
{
"name": "OrdersComponent",
"id": "component-OrdersComponent-a1a1b3700af6429febeabb8e679fcf87efcf921d5c6bad2a6e73055856b4e0d5a411eb3b7a82d2450aa99ac4b8a8304400d7a550babe75cb2842466032ab9d64",
"file": "src/app/orders/orders.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-customers-orders",
"styleUrls": [],
"styles": [],
"templateUrl": [
"./orders.component.html"
],
"viewProviders": [],
"inputsClass": [],
"outputsClass": [],
"propertiesClass": [
{
"name": "customers",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "ICustomer[]",
"optional": false,
"description": "",
"line": 13
},
{
"name": "pageSize",
"defaultValue": "5",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 15
},
{
"name": "totalRecords",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 14
},
{
"name": "trackbyService",
"deprecated": false,
"deprecationMessage": "",
"type": "TrackByService",
"optional": false,
"description": "",
"line": 17,
"modifierKind": [
123
]
}
],
"methodsClass": [
{
"name": "getCustomersPage",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 27,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 19,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "pageChanged",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 23,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit } from '@angular/core';\n\nimport { DataService } from '../core/services/data.service';\nimport { ICustomer, IPagedResults } from '../shared/interfaces';\nimport { TrackByService } from '../core/services/trackby.service';\n\n@Component({\n selector: 'cm-customers-orders',\n templateUrl: './orders.component.html'\n})\nexport class OrdersComponent implements OnInit {\n\n customers: ICustomer[] = [];\n totalRecords = 0;\n pageSize = 5;\n\n constructor(private dataService: DataService, public trackbyService: TrackByService) { }\n\n ngOnInit() {\n this.getCustomersPage(1);\n }\n\n pageChanged(page: number) {\n this.getCustomersPage(page);\n }\n\n getCustomersPage(page: number) {\n this.dataService.getCustomersPage((page - 1) * this.pageSize, this.pageSize)\n .subscribe((response: IPagedResults<ICustomer[]>) => {\n this.totalRecords = response.totalRecords;\n this.customers = response.results;\n });\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": "",
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "trackbyService",
"type": "TrackByService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 15,
"jsdoctags": [
{
"name": "dataService",
"type": "DataService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "trackbyService",
"type": "TrackByService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit"
],
"templateData": "<div class=\"customers view indent\">\n <div class=\"container\">\n <header>\n <h3>\n <span class=\"glyphicon glyphicon-folder-open\"></span>&nbsp;&nbsp;Orders\n </h3>\n </header>\n <br />\n\n <div class=\"container\">\n <div *ngIf=\"customers && customers.length\">\n\n <div class=\"row\" *ngFor=\"let customer of customers;trackBy:trackbyService.customer\">\n <h4>{{ customer.firstName | capitalize }} {{ customer.lastName | capitalize }}</h4>\n <br />\n <table *ngIf=\"customer.orders && customer.orders.length\" class=\"table table-striped table-hover orders-table\">\n <tr *ngFor=\"let order of customer.orders;trackBy:trackbyService.order\">\n <td>{{order.productName}}</td>\n <td class=\"text-right\">{{ order.itemCost | currency:'USD':'symbol' }}</td> \n </tr>\n <tr class=\"summary-border\">\n <td>&nbsp;</td>\n <td class=\"text-right\">{{ customer.orderTotal | currency:'USD':'symbol' }}\n </tr>\n </table>\n <div *ngIf=\"!customer.orders || !customer.orders.length\">\n No orders found\n </div> \n </div>\n\n <cm-pagination [hidden]=\"!customers || !customers.length\"\n [totalItems]=\"totalRecords\" \n [pageSize]=\"pageSize\" \n (pageChanged)=\"pageChanged($event)\"></cm-pagination>\n\n </div>\n <div *ngIf=\"!customers || !customers.length\">\n No customers found\n </div>\n </div>\n\n </div>\n</div>\n"
},
{
"name": "OverlayComponent",
"id": "component-OverlayComponent-4fdb15e2ea429e8c5a6c9a1c3e4c60bc832f57ecdd1d6ba9f6f881cf6e90e3e4a7321a0856b40f29ff9b2d92083f749583988b41dd3d63db34abcf243b916394",
"file": "src/app/core/overlay/overlay.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-overlay",
"styleUrls": [
"./overlay.component.css"
],
"styles": [],
"templateUrl": [
"./overlay.component.html"
],
"viewProviders": [],
"inputsClass": [
{
"name": "delay",
"defaultValue": "500",
"deprecated": false,
"deprecationMessage": "",
"line": 20,
"type": "number",
"decorators": []
}
],
"outputsClass": [],
"propertiesClass": [
{
"name": "enabled",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 15
},
{
"name": "httpRequestSub",
"defaultValue": "{} as Subscription",
"deprecated": false,
"deprecationMessage": "",
"type": "Subscription",
"optional": false,
"description": "",
"line": 13
},
{
"name": "httpResponseSub",
"defaultValue": "{} as Subscription",
"deprecated": false,
"deprecationMessage": "",
"type": "Subscription",
"optional": false,
"description": "",
"line": 14
},
{
"name": "queue",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "any[]",
"optional": false,
"description": "",
"line": 16
},
{
"name": "timerHideId",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 18
},
{
"name": "timerId",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 17
}
],
"methodsClass": [
{
"name": "ngOnDestroy",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 52,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 24,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, Input, OnDestroy } from '@angular/core';\n\nimport { EventBusService, Events } from '../services/event-bus.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'cm-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.css']\n})\nexport class OverlayComponent implements OnInit, OnDestroy {\n\n httpRequestSub: Subscription = {} as Subscription;\n httpResponseSub: Subscription = {} as Subscription;\n enabled = false;\n queue: any[] = [];\n timerId: number = 0;\n timerHideId: number = 0;\n\n @Input() delay = 500;\n\n constructor(private eventBus: EventBusService) { }\n\n ngOnInit() {\n // Handle request\n this.httpRequestSub = this.eventBus.on(Events.httpRequest, (() => {\n this.queue.push({});\n if (this.queue.length === 1) {\n // Only show if we have an item in the queue after the delay time\n setTimeout(() => {\n if (this.queue.length) { this.enabled = true; }\n }, this.delay);\n }\n }));\n\n // Handle response\n this.httpResponseSub = this.eventBus.on(Events.httpResponse, (() => {\n this.queue.pop();\n if (this.queue.length === 0) {\n // Since we don't know if another XHR request will be made, pause before\n // hiding the overlay. If another XHR request comes in then the overlay\n // will stay visible which prevents a flicker\n setTimeout(() => {\n // Make sure queue is still 0 since a new XHR request may have come in\n // while timer was running\n if (this.queue.length === 0) { this.enabled = false; }\n }, this.delay);\n }\n }));\n }\n\n ngOnDestroy() {\n this.httpRequestSub.unsubscribe();\n this.httpResponseSub.unsubscribe();\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".overlay {\n display:none;\n}\n\n.overlay.active { \n display: block;\n} \n\n.overlay-background {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: block;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n background-color:rgba(0,0,0,0.6);\n}\n\n.overlay-content {\n\n}\n\n.overlay-content {\n position: fixed;\n z-index: 999999;\n top: 50%;\n left: 50%;\n background-color: white;\n border: 1px solid rgb(94, 94, 94);\n -webkit-transform: translate(-50%, 0%);\n transform: translate(-50%, 0%);\n\n cursor: pointer;\n padding: 5;\n width: 285px;\n height: 100px; \n display: flex;\n align-items: center;\n justify-content: center;\n \n \n -webkit-transition: opacity 1s;\n -moz-transition: opacity 1s; \n -o-transition: opacity 1s;\n transition: opacity 1s; \n} \n",
"styleUrl": "./overlay.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "eventBus",
"type": "EventBusService",
"deprecated": false,
"deprecationMessage": ""
}
],
"line": 20,
"jsdoctags": [
{
"name": "eventBus",
"type": "EventBusService",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"implements": [
"OnInit",
"OnDestroy"
],
"templateData": "<div class=\"overlay\" [class.active]=\"enabled\">\n <div class=\"overlay-background\"></div>\n <div class=\"overlay-content\">\n <ng-content></ng-content>\n </div>\n</div>"
},
{
"name": "PageComponent",
"id": "component-PageComponent-432c9ae0bcf6e2e1f46701f7565a67376cb10145b7d049c5fe930cf8f075c6e02e24151589750b18cbaa8266f7c61393b95c4d833fbfd71ee228904aa014349f",
"file": "src/stories/page.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "storybook-page",
"styleUrls": [
"./page.css"
],
"styles": [],
"template": "<article> <storybook-header\n [user]=\"user\"\n (onLogout)=\"onLogout.emit($event)\"\n (onLogin)=\"onLogin.emit($event)\"\n (onCreateAccount)=\"onCreateAccount.emit($event)\"\n ></storybook-header>\n <section>\n <h2>Pages in Storybook</h2>\n <p>\n We recommend building UIs with a\n <a href=\"https://componentdriven.org\" target=\"_blank\" rel=\"noopener noreferrer\">\n <strong>component-driven</strong>\n </a>\n process starting with atomic components and ending with pages.\n </p>\n <p>\n Render pages with mock data. This makes it easy to build and review page states without\n needing to navigate to them in your app. Here are some handy patterns for managing page data\n in Storybook:\n </p>\n <ul>\n <li>\n Use a higher-level connected component. Storybook helps you compose such data from the\n \"args\" of child component stories\n </li>\n <li>\n Assemble data in the page component from your services. You can mock these services out\n using Storybook.\n </li>\n </ul>\n <p>\n Get a guided tutorial on component-driven development at\n <a href=\"https://storybook.js.org/tutorials/\" target=\"_blank\" rel=\"noopener noreferrer\">\n Storybook tutorials\n </a>\n . Read more in the\n <a href=\"https://storybook.js.org/docs\" target=\"_blank\" rel=\"noopener noreferrer\"> docs </a>\n .\n </p>\n <div class=\"tip-wrapper\">\n <span class=\"tip\">Tip</span> Adjust the width of the canvas with the\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z\"\n id=\"a\"\n fill=\"#999\"\n />\n </g>\n </svg>\n Viewports addon in the toolbar\n </div>\n </section>\n </article>",
"templateUrl": [],
"viewProviders": [],
"inputsClass": [
{
"name": "user",
"defaultValue": "null",
"deprecated": false,
"deprecationMessage": "",
"line": 65,
"type": "User | null",
"decorators": []
}
],
"outputsClass": [
{
"name": "onCreateAccount",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"line": 74,
"type": "EventEmitter"
},
{
"name": "onLogin",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"line": 68,
"type": "EventEmitter"
},
{
"name": "onLogout",
"defaultValue": "new EventEmitter<Event>()",
"deprecated": false,
"deprecationMessage": "",
"line": 71,
"type": "EventEmitter"
}
],
"propertiesClass": [],
"methodsClass": [],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { User } from './User';\n\n@Component({\n selector: 'storybook-page',\n template: `<article>\n <storybook-header\n [user]=\"user\"\n (onLogout)=\"onLogout.emit($event)\"\n (onLogin)=\"onLogin.emit($event)\"\n (onCreateAccount)=\"onCreateAccount.emit($event)\"\n ></storybook-header>\n <section>\n <h2>Pages in Storybook</h2>\n <p>\n We recommend building UIs with a\n <a href=\"https://componentdriven.org\" target=\"_blank\" rel=\"noopener noreferrer\">\n <strong>component-driven</strong>\n </a>\n process starting with atomic components and ending with pages.\n </p>\n <p>\n Render pages with mock data. This makes it easy to build and review page states without\n needing to navigate to them in your app. Here are some handy patterns for managing page data\n in Storybook:\n </p>\n <ul>\n <li>\n Use a higher-level connected component. Storybook helps you compose such data from the\n \"args\" of child component stories\n </li>\n <li>\n Assemble data in the page component from your services. You can mock these services out\n using Storybook.\n </li>\n </ul>\n <p>\n Get a guided tutorial on component-driven development at\n <a href=\"https://storybook.js.org/tutorials/\" target=\"_blank\" rel=\"noopener noreferrer\">\n Storybook tutorials\n </a>\n . Read more in the\n <a href=\"https://storybook.js.org/docs\" target=\"_blank\" rel=\"noopener noreferrer\"> docs </a>\n .\n </p>\n <div class=\"tip-wrapper\">\n <span class=\"tip\">Tip</span> Adjust the width of the canvas with the\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 12 12\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z\"\n id=\"a\"\n fill=\"#999\"\n />\n </g>\n </svg>\n Viewports addon in the toolbar\n </div>\n </section>\n </article>`,\n styleUrls: ['./page.css'],\n})\nexport default class PageComponent {\n @Input()\n user: User | null = null;\n\n @Output()\n onLogin = new EventEmitter<Event>();\n\n @Output()\n onLogout = new EventEmitter<Event>();\n\n @Output()\n onCreateAccount = new EventEmitter<Event>();\n}\n\n// export const Page = ({ user, onLogin, onLogout, onCreateAccount }) => (\n// <article>\n// <Header user={user} onLogin={onLogin} onLogout={onLogout} onCreateAccount={onCreateAccount} />\n\n// );\n// Page.propTypes = {\n// user: PropTypes.shape({}),\n// onLogin: PropTypes.func.isRequired,\n// onLogout: PropTypes.func.isRequired,\n// onCreateAccount: PropTypes.func.isRequired,\n// };\n\n// Page.defaultProps = {\n// user: null,\n// };\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": "section {\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 24px;\n padding: 48px 20px;\n margin: 0 auto;\n max-width: 600px;\n color: #333;\n}\n\nsection h2 {\n font-weight: 900;\n font-size: 32px;\n line-height: 1;\n margin: 0 0 4px;\n display: inline-block;\n vertical-align: top;\n}\n\nsection p {\n margin: 1em 0;\n}\n\nsection a {\n text-decoration: none;\n color: #1ea7fd;\n}\n\nsection ul {\n padding-left: 30px;\n margin: 1em 0;\n}\n\nsection li {\n margin-bottom: 8px;\n}\n\nsection .tip {\n display: inline-block;\n border-radius: 1em;\n font-size: 11px;\n line-height: 12px;\n font-weight: 700;\n background: #e7fdd8;\n color: #66bf3c;\n padding: 4px 12px;\n margin-right: 10px;\n vertical-align: top;\n}\n\nsection .tip-wrapper {\n font-size: 13px;\n line-height: 20px;\n margin-top: 40px;\n margin-bottom: 40px;\n}\n\nsection .tip-wrapper svg {\n display: inline-block;\n height: 12px;\n width: 12px;\n margin-right: 4px;\n vertical-align: top;\n margin-top: 3px;\n}\n\nsection .tip-wrapper svg path {\n fill: #1ea7fd;\n}\n",
"styleUrl": "./page.css"
}
],
"stylesData": ""
},
{
"name": "PaginationComponent",
"id": "component-PaginationComponent-9d67a1888117b51b7c6c7ffda5140d3d462020b73f441cb3123618279e4d16527c9c430850e82dbb106e67f62e396eb6bdd2c72ef5b007ffc4422ea77810a45b",
"file": "src/app/shared/pagination/pagination.component.ts",
"encapsulation": [],
"entryComponents": [],
"inputs": [],
"outputs": [],
"providers": [],
"selector": "cm-pagination",
"styleUrls": [
"./pagination.component.css"
],
"styles": [],
"templateUrl": [
"./pagination.component.html"
],
"viewProviders": [],
"inputsClass": [
{
"name": "pageSize",
"deprecated": false,
"deprecationMessage": "",
"line": 21,
"type": "number",
"decorators": []
},
{
"name": "totalItems",
"deprecated": false,
"deprecationMessage": "",
"line": 30,
"type": "number",
"decorators": []
}
],
"outputsClass": [
{
"name": "pageChanged",
"defaultValue": "new EventEmitter()",
"deprecated": false,
"deprecationMessage": "",
"line": 39,
"type": "EventEmitter<number>"
}
],
"propertiesClass": [
{
"name": "currentPage",
"defaultValue": "1",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 16
},
{
"name": "isVisible",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 17
},
{
"name": "nextEnabled",
"defaultValue": "true",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 19
},
{
"name": "pagerPageSize",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 12,
"modifierKind": [
121
]
},
{
"name": "pagerTotalItems",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 11,
"modifierKind": [
121
]
},
{
"name": "pages",
"defaultValue": "[]",
"deprecated": false,
"deprecationMessage": "",
"type": "number[]",
"optional": false,
"description": "",
"line": 15
},
{
"name": "previousEnabled",
"defaultValue": "false",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"optional": false,
"description": "",
"line": 18
},
{
"name": "totalPages",
"defaultValue": "0",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"optional": false,
"description": "",
"line": 14
}
],
"methodsClass": [
{
"name": "changePage",
"args": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "event",
"type": "MouseEvent",
"deprecated": false,
"deprecationMessage": "",
"optional": true
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 72,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "page",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "event",
"type": "MouseEvent",
"deprecated": false,
"deprecationMessage": "",
"optional": true,
"tagName": {
"text": "param"
}
}
]
},
{
"name": "ngOnInit",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 43,
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "previousNext",
"args": [
{
"name": "direction",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "event",
"type": "MouseEvent",
"deprecated": false,
"deprecationMessage": "",
"optional": true
}
],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 62,
"deprecated": false,
"deprecationMessage": "",
"jsdoctags": [
{
"name": "direction",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
},
{
"name": "event",
"type": "MouseEvent",
"deprecated": false,
"deprecationMessage": "",
"optional": true,
"tagName": {
"text": "param"
}
}
]
},
{
"name": "update",
"args": [],
"optional": false,
"returnType": "void",
"typeParameters": [],
"line": 47,
"deprecated": false,
"deprecationMessage": ""
}
],
"deprecated": false,
"deprecationMessage": "",
"hostBindings": [],
"hostListeners": [],
"description": "",
"rawdescription": "\n",
"type": "component",
"sourceCode": "import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'cm-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: [ './pagination.component.css' ]\n})\n\nexport class PaginationComponent implements OnInit {\n\n private pagerTotalItems: number = 0;\n private pagerPageSize: number = 0;\n\n totalPages: number = 0;\n pages: number[] = [];\n currentPage = 1;\n isVisible = false;\n previousEnabled = false;\n nextEnabled = true;\n\n @Input() get pageSize(): number {\n return this.pagerPageSize;\n }\n\n set pageSize(size: number) {\n this.pagerPageSize = size;\n this.update();\n }\n\n @Input() get totalItems(): number {\n return this.pagerTotalItems;\n }\n\n set totalItems(itemCount: number) {\n this.pagerTotalItems = itemCount;\n this.update();\n }\n\n @Output() pageChanged: EventEmitter<number> = new EventEmitter();\n\n constructor() { }\n\n ngOnInit() {\n\n }\n\n update() {\n if (this.pagerTotalItems && this.pagerPageSize) {\n this.totalPages = Math.ceil(this.pagerTotalItems / this.pageSize);\n this.isVisible = true;\n if (this.totalItems >= this.pageSize) {\n for (let i = 1; i < this.totalPages + 1; i++) {\n this.pages.push(i);\n }\n }\n return;\n }\n\n this.isVisible = false;\n }\n\n previousNext(direction: number, event?: MouseEvent) {\n let page: number = this.currentPage;\n if (direction === -1) {\n if (page > 1) { page--; }\n } else {\n if (page < this.totalPages) { page++; }\n }\n this.changePage(page, event);\n }\n\n changePage(page: number, event?: MouseEvent) {\n if (event) {\n event.preventDefault();\n }\n if (this.currentPage === page) { return; }\n this.currentPage = page;\n this.previousEnabled = this.currentPage > 1;\n this.nextEnabled = this.currentPage < this.totalPages;\n this.pageChanged.emit(page);\n }\n\n}\n",
"assetsDirs": [],
"styleUrlsData": [
{
"data": ".pagination>.active>a, \n.pagination>.active>a:focus, \n.pagination>.active>a:hover, \n.pagination>.active>span, \n.pagination>.active>span:focus, \n.pagination>.active>span:hover {\n background-color: #027FF4;\n border-color: #027FF4;\n}\n\n.pagination a {\n cursor: pointer;\n}",
"styleUrl": "./pagination.component.css"
}
],
"stylesData": "",
"constructorObj": {
"name": "constructor",
"description": "",
"deprecated": false,
"deprecationMessage": "",
"args": [],
"line": 39
},
"implements": [
"OnInit"
],
"accessors": {
"pageSize": {
"name": "pageSize",
"setSignature": {
"name": "pageSize",
"type": "void",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "size",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"returnType": "void",
"line": 25,
"jsdoctags": [
{
"name": "size",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"getSignature": {
"name": "pageSize",
"type": "number",
"returnType": "number",
"line": 21
}
},
"totalItems": {
"name": "totalItems",
"setSignature": {
"name": "totalItems",
"type": "void",
"deprecated": false,
"deprecationMessage": "",
"args": [
{
"name": "itemCount",
"type": "number",
"deprecated": false,
"deprecationMessage": ""
}
],
"returnType": "void",
"line": 34,
"jsdoctags": [
{
"name": "itemCount",
"type": "number",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
"getSignature": {
"name": "totalItems",
"type": "number",
"returnType": "number",
"line": 30
}
}
},
"templateData": "<nav [hidden]=\"!isVisible\">\n <ul class=\"pagination\">\n <li [class.disabled]=\"!previousEnabled\" (click)=\"previousNext(-1, $event)\">\n <a aria-label=\"Previous\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n <li *ngFor=\"let page of pages\" (click)=\"changePage(page, $event)\" [class.active]=\"currentPage === page\">\n <a>{{ page }}</a>\n </li>\n <li [class.disabled]=\"!nextEnabled\" (click)=\"previousNext(1, $event)\">\n <a aria-label=\"Next\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n</nav>"
}
],
"modules": [
{
"name": "AboutModule",
"id": "module-AboutModule-0fea291390caa7f43aa6fee82c3524a69be0bdb7bcb3e1e8aa4a24d94501d8705886ca69d2183d6c9cd974c31a5f9efdee16935758dd19d9232c28f7dee04344",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/about/about.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\n\nimport { AboutRoutingModule } from './about-routing.module';\n\n@NgModule({\n imports: [ AboutRoutingModule ],\n declarations: [ AboutRoutingModule.components ]\n})\nexport class AboutModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": [
{
"name": "AboutRoutingModule"
}
]
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "AboutRoutingModule",
"id": "module-AboutRoutingModule-b31000df8518ebc794d2d58b2990d54e4bf492d013de9a02448ef296b784c01cafa463bce6f1b77372415edaead19ef97e8f262e51ce9ddb9a0c351f6df19479",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/about/about-routing.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { AboutComponent } from './about.component';\n\nconst routes: Routes = [\n { path: '', component: AboutComponent }\n];\n\n@NgModule({\n imports: [ RouterModule.forChild(routes) ],\n exports: [ RouterModule ]\n})\nexport class AboutRoutingModule {\n static components = [ AboutComponent ];\n}\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "AppModule",
"id": "module-AppModule-68be586abe9e86cfae85c65b0923858ee7b95fd2d43d01a8150cf22efcf534a4fffa11d75cdcbb190396b5694e7b554ad20ae58780feed767f32a74d4fd25b2d",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/app.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { AppComponent } from './app.component';\nimport { AppRoutingModule } from './app-routing.module';\n\nimport { LoginModule } from './login/login.module';\nimport { CoreModule } from './core/core.module';\nimport { SharedModule } from './shared/shared.module';\n\n@NgModule({\n imports: [\n BrowserModule,\n LoginModule, // Eager loaded since we may need to go here right away as browser loads based on route user enters\n AppRoutingModule, // Main routes for application\n CoreModule, // Singleton objects (services, components that are loaded only once, etc.)\n SharedModule // Shared (multi-instance) objects\n ],\n declarations: [AppComponent],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": [
{
"name": "AppComponent"
}
]
},
{
"type": "imports",
"elements": [
{
"name": "AppRoutingModule"
},
{
"name": "CoreModule"
},
{
"name": "LoginModule"
},
{
"name": "SharedModule"
}
]
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": [
{
"name": "AppComponent"
}
]
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "AppRoutingModule",
"id": "module-AppRoutingModule-bca749a297d1e5fca526deeac0e6436565579c0a1f4692c63e5c177b9a4a49c447cc6b9923c6096f1a338a299bb9ddbe141cbc4bbb61d15547545491e8abf9fa",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/app-routing.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes, PreloadAllModules, NoPreloading } from '@angular/router';\n\nimport { PreloadModulesStrategy } from './core/strategies/preload-modules.strategy';\n\nconst app_routes: Routes = [\n { path: '', pathMatch: 'full', redirectTo: '/customers' },\n { path: 'customers/:id', data: { preload: true }, loadChildren: () => \"import('./customer/customer.module').then(m => m.CustomerModule)\" },\n { path: 'customers', loadChildren: () => \"import('./customers/customers.module').then(m => m.CustomersModule)\" },\n { path: 'orders', data: { preload: true }, loadChildren: () => \"import('./orders/orders.module').then(m => m.OrdersModule)\" },\n { path: 'about', loadChildren: () => \"import('./about/about.module').then(m => m.AboutModule)\" },\n { path: '**', pathMatch: 'full', redirectTo: '/customers' } // catch any unfound routes and redirect to home page\n\n // NOTE: If you're using Angular 7 or lower you'll lazy loads routes the following way\n \n // { path: 'customers/:id', data: { preload: true }, loadChildren: 'app/customer/customer.module#CustomerModule' },\n // { path: 'customers', loadChildren: 'app/customers/customers.module#CustomersModule' },\n // { path: 'orders', data: { preload: true }, loadChildren: 'app/orders/orders.module#OrdersModule' },\n // { path: 'about', loadChildren: 'app/about/about.module#AboutModule' },\n\n];\n\n@NgModule({\n imports: [ RouterModule.forRoot(app_routes, { preloadingStrategy: PreloadModulesStrategy, relativeLinkResolution: 'legacy' }) ],\n exports: [ RouterModule ],\n providers: [PreloadModulesStrategy]\n})\nexport class AppRoutingModule { }\n",
"children": [
{
"type": "providers",
"elements": [
{
"name": "PreloadModulesStrategy"
}
]
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "CoreModule",
"id": "module-CoreModule-5ff30bacdd1eae65a6dcc9fae6da4c5c1ceb988ab595ed429f2272c168e6a122b9782c94e4095351db63cfef4bef462f4ed9630f14fc177e15c217664b357660",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/core/core.module.ts",
"methods": [],
"sourceCode": "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { GrowlerModule } from './growler/growler.module';\nimport { ModalModule } from './modal/modal.module';\nimport { OverlayModule } from './overlay/overlay.module';\n\nimport { DataService } from './services/data.service';\nimport { NavbarComponent } from './navbar/navbar.component';\nimport { FilterService } from './services/filter.service';\nimport { SorterService } from './services/sorter.service';\nimport { TrackByService } from './services/trackby.service';\nimport { DialogService } from './services/dialog.service';\nimport { EnsureModuleLoadedOnceGuard } from './ensure-module-loaded-once.guard';\nimport { AuthService } from './services/auth.service';\nimport { EventBusService } from './services/event-bus.service';\nimport { AuthInterceptor } from './interceptors/auth.interceptor';\n\n@NgModule({\n imports: [CommonModule, RouterModule, HttpClientModule, GrowlerModule, ModalModule, OverlayModule],\n exports: [GrowlerModule, RouterModule, HttpClientModule, ModalModule, OverlayModule, NavbarComponent],\n declarations: [NavbarComponent],\n providers: [SorterService, FilterService, DataService, TrackByService,\n DialogService, AuthService, EventBusService,\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n { provide: 'Window', useFactory: () => window }\n ] // these should be singleton\n})\nexport class CoreModule extends EnsureModuleLoadedOnceGuard { // Ensure that CoreModule is only loaded into AppModule\n\n // Looks for the module in the parent injector to see if it's already been loaded (only want it loaded once)\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n super(parentModule);\n }\n\n}\n\n\n\n",
"children": [
{
"type": "providers",
"elements": [
{
"name": "AuthInterceptor"
},
{
"name": "AuthService"
},
{
"name": "DataService"
},
{
"name": "DialogService"
},
{
"name": "EventBusService"
},
{
"name": "FilterService"
},
{
"name": "SorterService"
},
{
"name": "TrackByService"
}
]
},
{
"type": "declarations",
"elements": [
{
"name": "NavbarComponent"
}
]
},
{
"type": "imports",
"elements": [
{
"name": "GrowlerModule"
},
{
"name": "ModalModule"
},
{
"name": "OverlayModule"
}
]
},
{
"type": "exports",
"elements": [
{
"name": "GrowlerModule"
},
{
"name": "ModalModule"
},
{
"name": "NavbarComponent"
},
{
"name": "OverlayModule"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "CustomerModule",
"id": "module-CustomerModule-67ce9acfa01b363ad76b831c2c11d3ee2d7710e09c72a3c58c1b56d5e0c31785a44675839affa398d0aee4091dce861c04e98629a8c96b213061e49f9ad66efe",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/customer/customer.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { CustomerRoutingModule } from './customer-routing.module';\n\n@NgModule({\n imports: [CustomerRoutingModule, SharedModule],\n declarations: [CustomerRoutingModule.components]\n})\nexport class CustomerModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": [
{
"name": "CustomerRoutingModule"
},
{
"name": "SharedModule"
}
]
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "CustomerRoutingModule",
"id": "module-CustomerRoutingModule-40d7c0dad5fe26168799f8c66dca4e1f3e2e14f1abd8eb2250988b00c3cf750aee23922ecbeca5529ff0ddca10ce4a29e21c7d3c648de82bd9925395a8ea6fc3",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/customer/customer-routing.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CustomerComponent } from './customer.component';\nimport { CustomerOrdersComponent } from './customer-orders/customer-orders.component';\nimport { CustomerDetailsComponent } from './customer-details/customer-details.component';\nimport { CustomerEditComponent } from './customer-edit/customer-edit.component';\nimport { CanActivateGuard } from './guards/can-activate.guard';\nimport { CanDeactivateGuard } from './guards/can-deactivate.guard';\n\nconst routes: Routes = [\n {\n path: '',\n component: CustomerComponent,\n children: [\n { path: 'orders', component: CustomerOrdersComponent },\n { path: 'details', component: CustomerDetailsComponent },\n {\n path: 'edit',\n component: CustomerEditComponent,\n canActivate: [CanActivateGuard],\n canDeactivate: [CanDeactivateGuard]\n }\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n providers: [CanActivateGuard, CanDeactivateGuard]\n})\nexport class CustomerRoutingModule {\n static components = [CustomerComponent, CustomerOrdersComponent, CustomerDetailsComponent, CustomerEditComponent];\n}\n\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "CustomersModule",
"id": "module-CustomersModule-1f20e9d2ae07be87cb3c143a26e3a069f62037e0f4a681bf8cc2e2abcff0cf905782cf450ab9a5b41c37340b3e4013cde16ea61168f825e9212adacf31bfd9a8",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/customers/customers.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { CustomersRoutingModule } from './customers-routing.module';\n\n@NgModule({\n imports: [CustomersRoutingModule, SharedModule],\n declarations: [CustomersRoutingModule.components]\n})\nexport class CustomersModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": [
{
"name": "CustomersRoutingModule"
},
{
"name": "SharedModule"
}
]
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "CustomersRoutingModule",
"id": "module-CustomersRoutingModule-0dbad897e9bc4ae3b2fb0221460d0d4aa4caaca66c15b880b623beb28c5391fc87d9127072d33478f382d85fbf1179838cd6e6b6483b75c3dcbeaaacc6fe6044",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/customers/customers-routing.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CustomersComponent } from './customers.component';\nimport { CustomersCardComponent } from './customers-card/customers-card.component';\nimport { CustomersGridComponent } from './customers-grid/customers-grid.component';\n\nconst routes: Routes = [\n { path: '', component: CustomersComponent }\n];\n\n@NgModule({\n imports: [ RouterModule.forChild(routes) ],\n exports: [ RouterModule ]\n})\nexport class CustomersRoutingModule {\n static components = [ CustomersComponent, CustomersCardComponent, CustomersGridComponent ];\n}\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "FilterTextboxModule",
"id": "module-FilterTextboxModule-9498405e6eb7280d1d0f88ab49c6f8c167686681547ecc3125885cf9422bbbbce9e2e504e0b620306f70904a7cc0fa9ee4bdf6de06e84e460b44e4882474febc",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/shared/filter-textbox/filter-textbox.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FilterTextboxComponent } from './filter-textbox.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n exports: [FilterTextboxComponent],\n declarations: [FilterTextboxComponent]\n})\nexport class FilterTextboxModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": [
{
"name": "FilterTextboxComponent"
}
]
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": [
{
"name": "FilterTextboxComponent"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "GrowlerModule",
"id": "module-GrowlerModule-50ebdeee66ddbdd8f9caab4e8bb229e5d2d47868c62ca6c9e9efa34f7897a0a0091f9c7a729809035abaca9501de4cd5b4de4890fb890b17ede99358c02ae1b8",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/core/growler/growler.module.ts",
"methods": [],
"sourceCode": "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { GrowlerComponent } from './growler.component';\nimport { GrowlerService } from './growler.service';\nimport { EnsureModuleLoadedOnceGuard } from '../ensure-module-loaded-once.guard';\n\n@NgModule({\n imports: [CommonModule],\n exports: [GrowlerComponent],\n providers: [GrowlerService],\n declarations: [GrowlerComponent]\n})\nexport class GrowlerModule extends EnsureModuleLoadedOnceGuard { // Ensure that GrowlerModule is only loaded into AppModule\n\n // Looks for the module in the parent injector to see if it's already been loaded (only want it loaded once)\n constructor(@Optional() @SkipSelf() parentModule: GrowlerModule) {\n super(parentModule);\n }\n}\n",
"children": [
{
"type": "providers",
"elements": [
{
"name": "GrowlerService"
}
]
},
{
"type": "declarations",
"elements": [
{
"name": "GrowlerComponent"
}
]
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": [
{
"name": "GrowlerComponent"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "LoginModule",
"id": "module-LoginModule-d32af22e0466dc8064d533f73b8afb6ddadfb9ef2062cc87094845d20d545e90087294d93a3181568f66b21c4d911d9e90f5e8bde0919c42403d8a9d91516762",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/login/login.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { LoginRoutingModule } from './login-routing.module';\n\n@NgModule({\n imports: [ ReactiveFormsModule, SharedModule, LoginRoutingModule ],\n declarations: [ LoginRoutingModule.components ]\n})\nexport class LoginModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": [
{
"name": "LoginRoutingModule"
},
{
"name": "SharedModule"
}
]
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "LoginRoutingModule",
"id": "module-LoginRoutingModule-ce23cb8d718e090c5ff0712dbb32a8bec2b544b38963350fdf667e7adae289bce47bc7223577b83689ad0a5f5998242ccea3ab6538e1628db538fc645f4dc97d",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/login/login-routing.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { LoginComponent } from './login.component';\n\nconst routes: Routes = [\n { path: 'login', component: LoginComponent }\n];\n\n@NgModule({\n imports: [ RouterModule.forChild(routes) ],\n exports: [ RouterModule ]\n})\nexport class LoginRoutingModule {\n static components = [ LoginComponent ];\n}\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "MapModule",
"id": "module-MapModule-8359c4f9ceaaf2924ca7a2ea687067552228b27e549b8dc0a6249a6c5a29c0098319a6c28263a9d56091171fdd96302b0a056646758a1920ee34ae9970c80d4c",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/shared/map/map.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MapComponent } from './map.component';\nimport { MapPointComponent } from './map-point.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [MapComponent, MapPointComponent],\n declarations: [MapComponent, MapPointComponent]\n})\nexport class MapModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": [
{
"name": "MapComponent"
},
{
"name": "MapPointComponent"
}
]
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": [
{
"name": "MapComponent"
},
{
"name": "MapPointComponent"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "ModalModule",
"id": "module-ModalModule-954364f74ce2d08ac40b82051df2b9150dcfa6f7ff40362e0904fe9266283831abd2db5ca02453a81d630be3e5c566c2a2633f55c49b4a8fb9879863f3505a41",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/core/modal/modal.module.ts",
"methods": [],
"sourceCode": "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalComponent } from './modal.component';\nimport { ModalService } from './modal.service';\nimport { EnsureModuleLoadedOnceGuard } from '../ensure-module-loaded-once.guard';\n\n@NgModule({\n imports: [CommonModule],\n exports: [ModalComponent],\n declarations: [ModalComponent],\n providers: [ModalService]\n})\nexport class ModalModule extends EnsureModuleLoadedOnceGuard { // Ensure that ModalModule is only loaded into AppModule\n\n // Looks for the module in the parent injector to see if it's already been loaded (only want it loaded once)\n constructor(@Optional() @SkipSelf() parentModule: ModalModule) {\n super(parentModule);\n }\n\n}\n",
"children": [
{
"type": "providers",
"elements": [
{
"name": "ModalService"
}
]
},
{
"type": "declarations",
"elements": [
{
"name": "ModalComponent"
}
]
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": [
{
"name": "ModalComponent"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "OrdersModule",
"id": "module-OrdersModule-f4173d321d33f832ac88c7bf2296c7f784f7592a26201448b398f68b6837c10897e499461aa08ec42dfcf35891df07b9afb61516c1fb865c80c6988fba74b485",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/orders/orders.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { OrdersRoutingModule } from './orders-routing.module';\n\n@NgModule({\n imports: [SharedModule, OrdersRoutingModule],\n declarations: [OrdersRoutingModule.components]\n})\nexport class OrdersModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": [
{
"name": "OrdersRoutingModule"
},
{
"name": "SharedModule"
}
]
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "OrdersRoutingModule",
"id": "module-OrdersRoutingModule-81be2ea31907871cdc8e917db526014ebcdcf50a885b2a382ec2e94f90be2d903c1acd512488fb30ac70162215f55d9574bcfcb832a181c39a771cba806539cc",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/orders/orders-routing.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { OrdersComponent } from './orders.component';\n\nconst routes: Routes = [\n { path: '', component: OrdersComponent }\n];\n\n@NgModule({\n imports: [ RouterModule.forChild(routes) ],\n exports: [ RouterModule ]\n})\nexport class OrdersRoutingModule {\n static components = [ OrdersComponent ];\n}\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": []
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": []
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "OverlayModule",
"id": "module-OverlayModule-2a15c24a5315b7a743bef4ff68eeab7519d79fce69a6919939f9f7ed3bf0e04157090d3d55b7594f6af69b96e4af9fa312c12b75e6e2ce7729b0dd86de8edac9",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/core/overlay/overlay.module.ts",
"methods": [],
"sourceCode": "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { OverlayRequestResponseInterceptor } from './overlay-request-response.interceptor';\nimport { OverlayComponent } from './overlay.component';\nimport { EnsureModuleLoadedOnceGuard } from '../ensure-module-loaded-once.guard';\n\n\n@NgModule({\n imports: [CommonModule],\n exports: [OverlayComponent],\n declarations: [OverlayComponent],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: OverlayRequestResponseInterceptor,\n multi: true,\n }\n ]\n})\nexport class OverlayModule extends EnsureModuleLoadedOnceGuard { // Ensure that OverlayModule is only loaded into AppModule\n\n // Looks for the module in the parent injector to see if it's already been loaded (only want it loaded once)\n constructor(@Optional() @SkipSelf() parentModule: OverlayModule) {\n super(parentModule);\n }\n}\n",
"children": [
{
"type": "providers",
"elements": [
{
"name": "OverlayRequestResponseInterceptor"
}
]
},
{
"type": "declarations",
"elements": [
{
"name": "OverlayComponent"
}
]
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": [
{
"name": "OverlayComponent"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "PaginationModule",
"id": "module-PaginationModule-1e2b267f0a4ace0dd7f2e53a3260f0b151ed3baedb479b1c7673287e9b09d6f38439a57a5eccce8bc60658ac9a371eb1e16cea46eeae75a492ae0f6d0dd3c258",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/shared/pagination/pagination.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [PaginationComponent],\n declarations: [PaginationComponent]\n})\nexport class PaginationModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": [
{
"name": "PaginationComponent"
}
]
},
{
"type": "imports",
"elements": []
},
{
"type": "exports",
"elements": [
{
"name": "PaginationComponent"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
},
{
"name": "SharedModule",
"id": "module-SharedModule-bbf26de0130a6a081ab35faa1e77a704e1cf8cc3308ea8cec17e74435b0b4924a5be2a5eeb1698423cf6074cc78fb36013f4d6ff290d974fed2767dc610a49e1",
"description": "",
"deprecationMessage": "",
"deprecated": false,
"file": "src/app/shared/shared.module.ts",
"methods": [],
"sourceCode": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FilterTextboxModule } from './filter-textbox/filter-textbox.module';\nimport { PaginationModule } from './pagination/pagination.module';\n\nimport { CapitalizePipe } from './pipes/capitalize.pipe';\nimport { TrimPipe } from './pipes/trim.pipe';\nimport { SortByDirective } from './directives/sortby.directive';\n\n@NgModule({\n imports: [CommonModule, FilterTextboxModule, PaginationModule ],\n exports: [ CommonModule, FormsModule, CapitalizePipe, TrimPipe, SortByDirective, FilterTextboxModule, PaginationModule ],\n declarations: [ CapitalizePipe, TrimPipe, SortByDirective ]\n})\nexport class SharedModule { }\n",
"children": [
{
"type": "providers",
"elements": []
},
{
"type": "declarations",
"elements": [
{
"name": "CapitalizePipe"
},
{
"name": "SortByDirective"
},
{
"name": "TrimPipe"
}
]
},
{
"type": "imports",
"elements": [
{
"name": "FilterTextboxModule"
},
{
"name": "PaginationModule"
}
]
},
{
"type": "exports",
"elements": [
{
"name": "CapitalizePipe"
},
{
"name": "FilterTextboxModule"
},
{
"name": "PaginationModule"
},
{
"name": "SortByDirective"
},
{
"name": "TrimPipe"
}
]
},
{
"type": "bootstrap",
"elements": []
},
{
"type": "classes",
"elements": []
}
]
}
],
"miscellaneous": {
"variables": [
{
"name": "About",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/About.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "context",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/test.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "require.context('./', true, /\\.spec\\.ts$/)"
},
{
"name": "CustomerCards",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "CustomerCards10",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "CustomerCards4",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "CustomerCardsNone",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "customers",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "deno/routes.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "JSON.parse(loadFile('../data/customers.json'))"
},
{
"name": "customers",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/shared/mocks.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "[]",
"defaultValue": "[\n {\n 'id': 1,\n 'firstName': 'ted',\n 'lastName': 'james',\n 'gender': 'male',\n 'address': '1234 Anywhere St.',\n 'city': ' Phoenix ',\n 'state': {\n 'abbreviation': 'AZ',\n 'name': 'Arizona'\n },\n 'orders': [\n { 'productName': 'Basketball', 'itemCost': 7.99 },\n { 'productName': 'Shoes', 'itemCost': 199.99 }\n ],\n 'latitude': 33.299,\n 'longitude': -111.963\n },\n {\n 'id': 2,\n 'firstName': 'Michelle',\n 'lastName': 'Thompson',\n 'gender': 'female',\n 'address': '345 Cedar Point Ave.',\n 'city': 'Encinitas ',\n 'state': {\n 'abbreviation': 'CA',\n 'name': 'California'\n },\n 'orders': [\n { 'productName': 'Frisbee', 'itemCost': 2.99 },\n { 'productName': 'Hat', 'itemCost': 5.99 }\n ],\n 'latitude': 33.037,\n 'longitude': -117.291\n },\n {\n 'id': 3,\n 'firstName': 'Zed',\n 'lastName': 'Bishop',\n 'gender': 'male',\n 'address': '1822 Long Bay Dr.',\n 'city': ' Seattle ',\n 'state': {\n 'abbreviation': 'WA',\n 'name': 'Washington'\n },\n 'orders': [\n { 'productName': 'Boomerang', 'itemCost': 29.99 },\n { 'productName': 'Helmet', 'itemCost': 19.99 },\n { 'productName': 'Kangaroo Saddle', 'itemCost': 179.99 }\n ],\n 'latitude': 47.596,\n 'longitude': -122.331\n },\n {\n 'id': 4,\n 'firstName': 'Tina',\n 'lastName': 'Adams',\n 'gender': 'female',\n 'address': '79455 Pinetop Way',\n 'city': 'Chandler',\n 'state': {\n 'abbreviation': 'AZ',\n 'name': ' Arizona '\n },\n 'orders': [\n { 'productName': 'Budgie Smugglers', 'itemCost': 19.99 },\n { 'productName': 'Swimming Cap', 'itemCost': 5.49 }\n ],\n 'latitude': 33.299,\n 'longitude': -111.963\n },\n {\n 'id': 5,\n 'firstName': 'Igor',\n 'lastName': 'Minar',\n 'gender': 'male',\n 'address': '576 Crescent Blvd.',\n 'city': ' Dallas',\n 'state': {\n 'abbreviation': 'TX',\n 'name': 'Texas'\n },\n 'orders': [\n { 'productName': 'Bow', 'itemCost': 399.99 },\n { 'productName': 'Arrows', 'itemCost': 69.99 }\n ],\n 'latitude': 32.782927,\n 'longitude': -96.806191\n },\n {\n 'id': 6,\n 'firstName': 'Brad',\n 'lastName': 'Green',\n 'gender': 'male',\n 'address': '9874 Center St.',\n 'city': 'Orlando ',\n 'state': {\n 'abbreviation': 'FL',\n 'name': 'Florida'\n },\n 'orders': [\n { 'productName': 'Baseball', 'itemCost': 9.99 },\n { 'productName': 'Bat', 'itemCost': 19.99 }\n ],\n 'latitude': 28.384238,\n 'longitude': -81.564103\n },\n {\n 'id': 7,\n 'firstName': 'Misko',\n 'lastName': 'Hevery',\n 'gender': 'male',\n 'address': '9812 Builtway Appt #1',\n 'city': 'Carey ',\n 'state': {\n 'abbreviation': 'NC',\n 'name': 'North Carolina'\n },\n 'orders': [\n { 'productName': 'Surfboard', 'itemCost': 299.99 },\n { 'productName': 'Wax', 'itemCost': 5.99 },\n { 'productName': 'Shark Repellent', 'itemCost': 15.99 }\n ],\n 'latitude': 35.727985,\n 'longitude': -78.797594\n },\n {\n 'id': 8,\n 'firstName': 'Heedy',\n 'lastName': 'Wahlin',\n 'gender': 'female',\n 'address': '4651 Tuvo St.',\n 'city': 'Anaheim',\n 'state': {\n 'abbreviation': 'CA',\n 'name': 'California'\n },\n 'orders': [\n { 'productName': 'Saddle', 'i
},
{
"name": "Deno",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "deno/loadfile.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "any"
},
{
"name": "environment",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/environments/environment.prod.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n production: true\n}"
},
{
"name": "environment",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/environments/environment.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n production: false\n}"
},
{
"name": "Large",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "LoggedIn",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Header.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "LoggedIn",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Page.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "LoggedOut",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Header.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "LoggedOut",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Page.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "port",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "deno/server.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"defaultValue": "8080"
},
{
"name": "Primary",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "require",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/test.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "literal type"
},
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customers/customers.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule, RouterTestingModule ],\n declarations: [ CustomersCardComponent, CustomersGridComponent ],\n providers: [\n { provide: DataService, useClass: MockDataService }\n],\n label: 'Customers Component'\n}"
},
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customers/customers-grid/customers-grid.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule, RouterTestingModule ],\n label: 'Customers Grid Component'\n}"
},
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customers/customers-card/customers-card.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule, RouterTestingModule ],\n label: 'Customers Card Component'\n}"
},
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customer/customer-details/customer-details.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule ],\n providers: [\n { provide: DataService, useClass: MockDataService },\n { provide: ActivatedRoute, useFactory: () => {\n const route = getActivatedRouteWithParent([{ id: '1' }]);\n return route;\n }}\n ],\n label: 'Customer Details Component'\n}"
},
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customer/customer-orders/customer-orders.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule ],\n providers: [\n { provide: DataService, useClass: MockDataService },\n { provide: ActivatedRoute, useFactory: () => {\n const route = getActivatedRouteWithParent([{ id: '1' }]);\n return route;\n }}\n ],\n label: 'Customer Orders Component'\n}"
},
{
"name": "Secondary",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Small",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/About.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<AboutComponent>",
"defaultValue": "(args: AboutComponent) => ({\n component: AboutComponent,\n props: args,\n})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<Button>",
"defaultValue": "(args: Button) => ({\n props: args,\n})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<CustomersCardComponent>",
"defaultValue": "(args: CustomersCardComponent) => ({\n component: CustomersCardComponent,\n props: args,\n})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Header.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<Header>",
"defaultValue": "(args: Header) => ({\n props: args,\n})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Page.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<Page>",
"defaultValue": "(args: Page) => ({\n props: args,\n})"
}
],
"functions": [
{
"name": "getActivatedRouteWithParent",
"file": "src/app/shared/mocks.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": [
{
"name": "params",
"deprecated": false,
"deprecationMessage": ""
}
],
"jsdoctags": [
{
"name": "params",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "loadFile",
"file": "deno/loadfile.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": [
{
"name": "file",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"jsdoctags": [
{
"name": "file",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
},
{
"name": "routerTransition",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToBottom",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToLeft",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToRight",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToTop",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
}
],
"typealiases": [],
"enumerations": [
{
"name": "DisplayModeEnum",
"childs": [
{
"name": "Card",
"deprecated": false,
"deprecationMessage": "",
"value": 0
},
{
"name": "Grid",
"deprecated": false,
"deprecationMessage": "",
"value": 1
},
{
"name": "Map",
"deprecated": false,
"deprecationMessage": "",
"value": 2
}
],
"ctype": "miscellaneous",
"subtype": "enum",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"file": "src/app/customers/customers.component.ts"
},
{
"name": "Events",
"childs": [
{
"name": "httpRequest",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "httpResponse",
"deprecated": false,
"deprecationMessage": ""
}
],
"ctype": "miscellaneous",
"subtype": "enum",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"file": "src/app/core/services/event-bus.service.ts"
},
{
"name": "GrowlerMessageType",
"childs": [
{
"name": "Success",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "Danger",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "Warning",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "Info",
"deprecated": false,
"deprecationMessage": ""
}
],
"ctype": "miscellaneous",
"subtype": "enum",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"file": "src/app/core/growler/growler.service.ts"
}
],
"groupedVariables": {
"src/stories/About.stories.ts": [
{
"name": "About",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/About.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/About.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<AboutComponent>",
"defaultValue": "(args: AboutComponent) => ({\n component: AboutComponent,\n props: args,\n})"
}
],
"src/test.ts": [
{
"name": "context",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/test.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "require.context('./', true, /\\.spec\\.ts$/)"
},
{
"name": "require",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/test.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "literal type"
}
],
"src/stories/Customers-card.stories.ts": [
{
"name": "CustomerCards",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "CustomerCards10",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "CustomerCards4",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "CustomerCardsNone",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Customers-card.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<CustomersCardComponent>",
"defaultValue": "(args: CustomersCardComponent) => ({\n component: CustomersCardComponent,\n props: args,\n})"
}
],
"deno/routes.ts": [
{
"name": "customers",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "deno/routes.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "JSON.parse(loadFile('../data/customers.json'))"
}
],
"src/app/shared/mocks.ts": [
{
"name": "customers",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/shared/mocks.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "[]",
"defaultValue": "[\n {\n 'id': 1,\n 'firstName': 'ted',\n 'lastName': 'james',\n 'gender': 'male',\n 'address': '1234 Anywhere St.',\n 'city': ' Phoenix ',\n 'state': {\n 'abbreviation': 'AZ',\n 'name': 'Arizona'\n },\n 'orders': [\n { 'productName': 'Basketball', 'itemCost': 7.99 },\n { 'productName': 'Shoes', 'itemCost': 199.99 }\n ],\n 'latitude': 33.299,\n 'longitude': -111.963\n },\n {\n 'id': 2,\n 'firstName': 'Michelle',\n 'lastName': 'Thompson',\n 'gender': 'female',\n 'address': '345 Cedar Point Ave.',\n 'city': 'Encinitas ',\n 'state': {\n 'abbreviation': 'CA',\n 'name': 'California'\n },\n 'orders': [\n { 'productName': 'Frisbee', 'itemCost': 2.99 },\n { 'productName': 'Hat', 'itemCost': 5.99 }\n ],\n 'latitude': 33.037,\n 'longitude': -117.291\n },\n {\n 'id': 3,\n 'firstName': 'Zed',\n 'lastName': 'Bishop',\n 'gender': 'male',\n 'address': '1822 Long Bay Dr.',\n 'city': ' Seattle ',\n 'state': {\n 'abbreviation': 'WA',\n 'name': 'Washington'\n },\n 'orders': [\n { 'productName': 'Boomerang', 'itemCost': 29.99 },\n { 'productName': 'Helmet', 'itemCost': 19.99 },\n { 'productName': 'Kangaroo Saddle', 'itemCost': 179.99 }\n ],\n 'latitude': 47.596,\n 'longitude': -122.331\n },\n {\n 'id': 4,\n 'firstName': 'Tina',\n 'lastName': 'Adams',\n 'gender': 'female',\n 'address': '79455 Pinetop Way',\n 'city': 'Chandler',\n 'state': {\n 'abbreviation': 'AZ',\n 'name': ' Arizona '\n },\n 'orders': [\n { 'productName': 'Budgie Smugglers', 'itemCost': 19.99 },\n { 'productName': 'Swimming Cap', 'itemCost': 5.49 }\n ],\n 'latitude': 33.299,\n 'longitude': -111.963\n },\n {\n 'id': 5,\n 'firstName': 'Igor',\n 'lastName': 'Minar',\n 'gender': 'male',\n 'address': '576 Crescent Blvd.',\n 'city': ' Dallas',\n 'state': {\n 'abbreviation': 'TX',\n 'name': 'Texas'\n },\n 'orders': [\n { 'productName': 'Bow', 'itemCost': 399.99 },\n { 'productName': 'Arrows', 'itemCost': 69.99 }\n ],\n 'latitude': 32.782927,\n 'longitude': -96.806191\n },\n {\n 'id': 6,\n 'firstName': 'Brad',\n 'lastName': 'Green',\n 'gender': 'male',\n 'address': '9874 Center St.',\n 'city': 'Orlando ',\n 'state': {\n 'abbreviation': 'FL',\n 'name': 'Florida'\n },\n 'orders': [\n { 'productName': 'Baseball', 'itemCost': 9.99 },\n { 'productName': 'Bat', 'itemCost': 19.99 }\n ],\n 'latitude': 28.384238,\n 'longitude': -81.564103\n },\n {\n 'id': 7,\n 'firstName': 'Misko',\n 'lastName': 'Hevery',\n 'gender': 'male',\n 'address': '9812 Builtway Appt #1',\n 'city': 'Carey ',\n 'state': {\n 'abbreviation': 'NC',\n 'name': 'North Carolina'\n },\n 'orders': [\n { 'productName': 'Surfboard', 'itemCost': 299.99 },\n { 'productName': 'Wax', 'itemCost': 5.99 },\n { 'productName': 'Shark Repellent', 'itemCost': 15.99 }\n ],\n 'latitude': 35.727985,\n 'longitude': -78.797594\n },\n {\n 'id': 8,\n 'firstName': 'Heedy',\n 'lastName': 'Wahlin',\n 'gender': 'female',\n 'address': '4651 Tuvo St.',\n 'city': 'Anaheim',\n 'state': {\n 'abbreviation': 'CA',\n 'name': 'California'\n },\n 'orders': [\n { 'productName': 'Saddle'
}
],
"deno/loadfile.ts": [
{
"name": "Deno",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "deno/loadfile.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "any"
}
],
"src/environments/environment.prod.ts": [
{
"name": "environment",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/environments/environment.prod.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n production: true\n}"
}
],
"src/environments/environment.ts": [
{
"name": "environment",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/environments/environment.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n production: false\n}"
}
],
"src/stories/Button.stories.ts": [
{
"name": "Large",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Primary",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Secondary",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Small",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Button.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<Button>",
"defaultValue": "(args: Button) => ({\n props: args,\n})"
}
],
"src/stories/Header.stories.ts": [
{
"name": "LoggedIn",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Header.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "LoggedOut",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Header.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Header.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<Header>",
"defaultValue": "(args: Header) => ({\n props: args,\n})"
}
],
"src/stories/Page.stories.ts": [
{
"name": "LoggedIn",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Page.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "LoggedOut",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Page.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "",
"defaultValue": "Template.bind({})"
},
{
"name": "Template",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/stories/Page.stories.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "Story<Page>",
"defaultValue": "(args: Page) => ({\n props: args,\n})"
}
],
"deno/server.ts": [
{
"name": "port",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "deno/server.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "number",
"defaultValue": "8080"
}
],
"src/app/customers/customers.component.sandbox.ts": [
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customers/customers.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule, RouterTestingModule ],\n declarations: [ CustomersCardComponent, CustomersGridComponent ],\n providers: [\n { provide: DataService, useClass: MockDataService }\n],\n label: 'Customers Component'\n}"
}
],
"src/app/customers/customers-grid/customers-grid.component.sandbox.ts": [
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customers/customers-grid/customers-grid.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule, RouterTestingModule ],\n label: 'Customers Grid Component'\n}"
}
],
"src/app/customers/customers-card/customers-card.component.sandbox.ts": [
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customers/customers-card/customers-card.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule, RouterTestingModule ],\n label: 'Customers Card Component'\n}"
}
],
"src/app/customer/customer-details/customer-details.component.sandbox.ts": [
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customer/customer-details/customer-details.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule ],\n providers: [\n { provide: DataService, useClass: MockDataService },\n { provide: ActivatedRoute, useFactory: () => {\n const route = getActivatedRouteWithParent([{ id: '1' }]);\n return route;\n }}\n ],\n label: 'Customer Details Component'\n}"
}
],
"src/app/customer/customer-orders/customer-orders.component.sandbox.ts": [
{
"name": "sandboxConfig",
"ctype": "miscellaneous",
"subtype": "variable",
"file": "src/app/customer/customer-orders/customer-orders.component.sandbox.ts",
"deprecated": false,
"deprecationMessage": "",
"type": "object",
"defaultValue": "{\n imports: [ SharedModule, CoreModule ],\n providers: [\n { provide: DataService, useClass: MockDataService },\n { provide: ActivatedRoute, useFactory: () => {\n const route = getActivatedRouteWithParent([{ id: '1' }]);\n return route;\n }}\n ],\n label: 'Customer Orders Component'\n}"
}
]
},
"groupedFunctions": {
"src/app/shared/mocks.ts": [
{
"name": "getActivatedRouteWithParent",
"file": "src/app/shared/mocks.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": [
{
"name": "params",
"deprecated": false,
"deprecationMessage": ""
}
],
"jsdoctags": [
{
"name": "params",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"deno/loadfile.ts": [
{
"name": "loadFile",
"file": "deno/loadfile.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": [
{
"name": "file",
"type": "string",
"deprecated": false,
"deprecationMessage": ""
}
],
"jsdoctags": [
{
"name": "file",
"type": "string",
"deprecated": false,
"deprecationMessage": "",
"tagName": {
"text": "param"
}
}
]
}
],
"src/app/shared/router.animations.ts": [
{
"name": "routerTransition",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToBottom",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToLeft",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToRight",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
},
{
"name": "slideToTop",
"file": "src/app/shared/router.animations.ts",
"ctype": "miscellaneous",
"subtype": "function",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"args": []
}
]
},
"groupedEnumerations": {
"src/app/customers/customers.component.ts": [
{
"name": "DisplayModeEnum",
"childs": [
{
"name": "Card",
"deprecated": false,
"deprecationMessage": "",
"value": 0
},
{
"name": "Grid",
"deprecated": false,
"deprecationMessage": "",
"value": 1
},
{
"name": "Map",
"deprecated": false,
"deprecationMessage": "",
"value": 2
}
],
"ctype": "miscellaneous",
"subtype": "enum",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"file": "src/app/customers/customers.component.ts"
}
],
"src/app/core/services/event-bus.service.ts": [
{
"name": "Events",
"childs": [
{
"name": "httpRequest",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "httpResponse",
"deprecated": false,
"deprecationMessage": ""
}
],
"ctype": "miscellaneous",
"subtype": "enum",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"file": "src/app/core/services/event-bus.service.ts"
}
],
"src/app/core/growler/growler.service.ts": [
{
"name": "GrowlerMessageType",
"childs": [
{
"name": "Success",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "Danger",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "Warning",
"deprecated": false,
"deprecationMessage": ""
},
{
"name": "Info",
"deprecated": false,
"deprecationMessage": ""
}
],
"ctype": "miscellaneous",
"subtype": "enum",
"deprecated": false,
"deprecationMessage": "",
"description": "",
"file": "src/app/core/growler/growler.service.ts"
}
]
},
"groupedTypeAliases": {}
},
"routes": {
"name": "<root>",
"kind": "module",
"className": "AppModule",
"children": [
{
"name": "app_routes",
"filename": "src/app/app-routing.module.ts",
"module": "AppRoutingModule",
"children": [
{
"path": "",
"pathMatch": "full",
"redirectTo": "/customers"
},
{
"path": "customers/:id",
"data": {
"preload": true
},
"loadChildren": "./customer/customer.module#CustomerModule",
"children": [
{
"kind": "module",
"children": [
{
"name": "routes",
"filename": "src/app/customer/customer-routing.module.ts",
"module": "CustomerRoutingModule",
"children": [
{
"path": "",
"component": "CustomerComponent",
"children": [
{
"path": "orders",
"component": "CustomerOrdersComponent"
},
{
"path": "details",
"component": "CustomerDetailsComponent"
},
{
"path": "edit",
"component": "CustomerEditComponent",
"canActivate": [
"CanActivateGuard"
],
"canDeactivate": [
"CanDeactivateGuard"
]
}
]
}
],
"kind": "module"
}
],
"module": "CustomerModule"
}
]
},
{
"path": "customers",
"loadChildren": "./customers/customers.module#CustomersModule",
"children": [
{
"kind": "module",
"children": [
{
"name": "routes",
"filename": "src/app/customers/customers-routing.module.ts",
"module": "CustomersRoutingModule",
"children": [
{
"path": "",
"component": "CustomersComponent"
}
],
"kind": "module"
}
],
"module": "CustomersModule"
}
]
},
{
"path": "orders",
"data": {
"preload": true
},
"loadChildren": "./orders/orders.module#OrdersModule",
"children": [
{
"kind": "module",
"children": [
{
"name": "routes",
"filename": "src/app/orders/orders-routing.module.ts",
"module": "OrdersRoutingModule",
"children": [
{
"path": "",
"component": "OrdersComponent"
}
],
"kind": "module"
}
],
"module": "OrdersModule"
}
]
},
{
"path": "about",
"loadChildren": "./about/about.module#AboutModule",
"children": [
{
"kind": "module",
"children": [
{
"name": "routes",
"filename": "src/app/about/about-routing.module.ts",
"module": "AboutRoutingModule",
"children": [
{
"path": "",
"component": "AboutComponent"
}
],
"kind": "module"
}
],
"module": "AboutModule"
}
]
},
{
"path": "**",
"pathMatch": "full",
"redirectTo": "/customers"
}
],
"kind": "module"
},
{
"name": "routes",
"filename": "src/app/login/login-routing.module.ts",
"module": "LoginRoutingModule",
"children": [
{
"path": "login",
"component": "LoginComponent"
}
],
"kind": "module"
}
]
},
"coverage": {
"count": 0,
"status": "low",
"files": [
{
"filePath": ".angular-playground/sandboxes.ts",
"type": "class",
"linktype": "classe",
"name": "SandboxesDefined",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "deno/loadfile.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "loadFile",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "deno/loadfile.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Deno",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "deno/routes.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "customers",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "deno/server.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "port",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/about/about.component.ts",
"type": "component",
"linktype": "component",
"name": "AboutComponent",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/app.component.ts",
"type": "component",
"linktype": "component",
"name": "AppComponent",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/core/ensure-module-loaded-once.guard.ts",
"type": "class",
"linktype": "classe",
"name": "EnsureModuleLoadedOnceGuard",
"coveragePercent": 0,
"coverageCount": "0/2",
"status": "low"
},
{
"filePath": "src/app/core/growler/growler.component.ts",
"type": "component",
"linktype": "component",
"name": "GrowlerComponent",
"coveragePercent": 11,
"coverageCount": "1/9",
"status": "low"
},
{
"filePath": "src/app/core/growler/growler.component.ts",
"type": "class",
"linktype": "classe",
"name": "Growl",
"coveragePercent": 0,
"coverageCount": "0/10",
"status": "low"
},
{
"filePath": "src/app/core/growler/growler.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "GrowlerService",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/core/interceptors/auth.interceptor.ts",
"type": "interceptor",
"linktype": "interceptor",
"name": "AuthInterceptor",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/core/modal/modal.component.ts",
"type": "component",
"linktype": "component",
"name": "ModalComponent",
"coveragePercent": 0,
"coverageCount": "0/11",
"status": "low"
},
{
"filePath": "src/app/core/modal/modal.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "ModalService",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/core/modal/modal.service.ts",
"type": "interface",
"linktype": "interface",
"name": "IModalContent",
"coveragePercent": 0,
"coverageCount": "0/6",
"status": "low"
},
{
"filePath": "src/app/core/navbar/navbar.component.ts",
"type": "component",
"linktype": "component",
"name": "NavbarComponent",
"coveragePercent": 0,
"coverageCount": "0/10",
"status": "low"
},
{
"filePath": "src/app/core/overlay/overlay-request-response.interceptor.ts",
"type": "interceptor",
"linktype": "interceptor",
"name": "OverlayRequestResponseInterceptor",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/core/overlay/overlay.component.ts",
"type": "component",
"linktype": "component",
"name": "OverlayComponent",
"coveragePercent": 0,
"coverageCount": "0/11",
"status": "low"
},
{
"filePath": "src/app/core/services/auth.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "AuthService",
"coveragePercent": 0,
"coverageCount": "0/10",
"status": "low"
},
{
"filePath": "src/app/core/services/data.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "DataService",
"coveragePercent": 0,
"coverageCount": "0/16",
"status": "low"
},
{
"filePath": "src/app/core/services/dialog.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "DialogService",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/app/core/services/event-bus.service.ts",
"type": "class",
"linktype": "classe",
"name": "EmitEvent",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/core/services/event-bus.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "EventBusService",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/app/core/services/filter.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "FilterService",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/core/services/logger.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "LoggerService",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/core/services/property-resolver.ts",
"type": "class",
"linktype": "classe",
"name": "PropertyResolver",
"coveragePercent": 0,
"coverageCount": "0/2",
"status": "low"
},
{
"filePath": "src/app/core/services/sorter.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "SorterService",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/app/core/services/trackby.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "TrackByService",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/core/services/utilities.service.ts",
"type": "injectable",
"linktype": "injectable",
"name": "UtilitiesService",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/core/services/validation.service.ts",
"type": "class",
"linktype": "classe",
"name": "ValidationService",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/app/core/strategies/preload-modules.strategy.ts",
"type": "injectable",
"linktype": "injectable",
"name": "PreloadModulesStrategy",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/customer/customer-details/customer-details.component.sandbox.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "sandboxConfig",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/customer/customer-details/customer-details.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomerDetailsComponent",
"coveragePercent": 0,
"coverageCount": "0/8",
"status": "low"
},
{
"filePath": "src/app/customer/customer-edit/customer-edit.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomerEditComponent",
"coveragePercent": 0,
"coverageCount": "0/14",
"status": "low"
},
{
"filePath": "src/app/customer/customer-orders/customer-orders.component.sandbox.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "sandboxConfig",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/customer/customer-orders/customer-orders.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomerOrdersComponent",
"coveragePercent": 0,
"coverageCount": "0/6",
"status": "low"
},
{
"filePath": "src/app/customer/customer.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomerComponent",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/customer/guards/can-activate.guard.ts",
"type": "guard",
"linktype": "guard",
"name": "CanActivateGuard",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/customer/guards/can-deactivate.guard.ts",
"type": "guard",
"linktype": "guard",
"name": "CanDeactivateGuard",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/customers/customers-card/customers-card.component.sandbox.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "sandboxConfig",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/customers/customers-card/customers-card.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomersCardComponent",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/app/customers/customers-grid/customers-grid.component.sandbox.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "sandboxConfig",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/customers/customers-grid/customers-grid.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomersGridComponent",
"coveragePercent": 0,
"coverageCount": "0/6",
"status": "low"
},
{
"filePath": "src/app/customers/customers.component.sandbox.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "sandboxConfig",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/customers/customers.component.ts",
"type": "component",
"linktype": "component",
"name": "CustomersComponent",
"coveragePercent": 0,
"coverageCount": "0/19",
"status": "low"
},
{
"filePath": "src/app/login/login.component.ts",
"type": "component",
"linktype": "component",
"name": "LoginComponent",
"coveragePercent": 0,
"coverageCount": "0/7",
"status": "low"
},
{
"filePath": "src/app/orders/orders.component.ts",
"type": "component",
"linktype": "component",
"name": "OrdersComponent",
"coveragePercent": 0,
"coverageCount": "0/9",
"status": "low"
},
{
"filePath": "src/app/shared/directives/sortby.directive.ts",
"type": "directive",
"linktype": "directive",
"name": "SortByDirective",
"coveragePercent": 0,
"coverageCount": "0/7",
"status": "low"
},
{
"filePath": "src/app/shared/filter-textbox/filter-textbox.component.ts",
"type": "component",
"linktype": "component",
"name": "FilterTextboxComponent",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IApiResponse",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "ICustomer",
"coveragePercent": 0,
"coverageCount": "0/12",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IMapDataPoint",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IOrder",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IOrderItem",
"coveragePercent": 0,
"coverageCount": "0/4",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IPagedResults",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IState",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/shared/interfaces.ts",
"type": "interface",
"linktype": "interface",
"name": "IUserLogin",
"coveragePercent": 0,
"coverageCount": "0/3",
"status": "low"
},
{
"filePath": "src/app/shared/map/map-point.component.ts",
"type": "component",
"linktype": "component",
"name": "MapPointComponent",
"coveragePercent": 0,
"coverageCount": "0/6",
"status": "low"
},
{
"filePath": "src/app/shared/map/map.component.ts",
"type": "component",
"linktype": "component",
"name": "MapComponent",
"coveragePercent": 0,
"coverageCount": "0/29",
"status": "low"
},
{
"filePath": "src/app/shared/mocks.ts",
"type": "class",
"linktype": "classe",
"name": "MockActivatedRoute",
"coveragePercent": 0,
"coverageCount": "0/18",
"status": "low"
},
{
"filePath": "src/app/shared/mocks.ts",
"type": "class",
"linktype": "classe",
"name": "MockDataService",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/app/shared/mocks.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "getActivatedRouteWithParent",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/mocks.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "customers",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/pagination/pagination.component.ts",
"type": "component",
"linktype": "component",
"name": "PaginationComponent",
"coveragePercent": 0,
"coverageCount": "0/17",
"status": "low"
},
{
"filePath": "src/app/shared/pipes/capitalize.pipe.ts",
"type": "pipe",
"linktype": "pipe",
"name": "CapitalizePipe",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/pipes/trim.pipe.ts",
"type": "pipe",
"linktype": "pipe",
"name": "TrimPipe",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/router.animations.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "routerTransition",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/router.animations.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "slideToBottom",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/router.animations.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "slideToLeft",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/router.animations.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "slideToRight",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/app/shared/router.animations.ts",
"type": "function",
"linktype": "miscellaneous",
"linksubtype": "function",
"name": "slideToTop",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/environments/environment.prod.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "environment",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/environments/environment.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "environment",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/About.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "About",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/About.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Template",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Button.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Large",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Button.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Primary",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Button.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Secondary",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Button.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Small",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Button.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Template",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Customers-card.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "CustomerCards",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Customers-card.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "CustomerCards10",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Customers-card.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "CustomerCards4",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Customers-card.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "CustomerCardsNone",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Customers-card.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Template",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Header.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "LoggedIn",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Header.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "LoggedOut",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Header.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Template",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Page.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "LoggedIn",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Page.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "LoggedOut",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/Page.stories.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "Template",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/User.ts",
"type": "interface",
"linktype": "interface",
"name": "User",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/stories/button.component.ts",
"type": "component",
"linktype": "component",
"name": "ButtonComponent",
"coveragePercent": 83,
"coverageCount": "5/6",
"status": "very-good"
},
{
"filePath": "src/stories/header.component.ts",
"type": "component",
"linktype": "component",
"name": "HeaderComponent",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/stories/page.component.ts",
"type": "component",
"linktype": "component",
"name": "PageComponent",
"coveragePercent": 0,
"coverageCount": "0/5",
"status": "low"
},
{
"filePath": "src/test.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "context",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
},
{
"filePath": "src/test.ts",
"type": "variable",
"linktype": "miscellaneous",
"linksubtype": "variable",
"name": "require",
"coveragePercent": 0,
"coverageCount": "0/1",
"status": "low"
}
]
}
}