-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js.map
1 lines (1 loc) · 76 KB
/
main.js.map
1
{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.animation.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/home/welcome.component.ts","./src/app/home/welcome.component.html","./src/app/messages/message.service.ts","./src/app/page-not-found.component.ts","./src/app/products/product-data.ts","./src/app/products/product-detail.component.ts","./src/app/products/product-detail.component.html","./src/app/products/product-edit/product-edit-info.component.ts","./src/app/products/product-edit/product-edit-info.component.html","./src/app/products/product-edit/product-edit-tags.component.ts","./src/app/products/product-edit/product-edit-tags.component.html","./src/app/products/product-edit/product-edit.component.ts","./src/app/products/product-edit/product-edit.component.html","./src/app/products/product-edit/product-edit.guard.ts","./src/app/products/product-list.component.ts","./src/app/products/product-list.component.html","./src/app/products/product-resolver.service.ts","./src/app/products/product.module.ts","./src/app/products/product.service.ts","./src/app/selective-strategy.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/star.component.ts","./src/app/shared/star.component.html","./src/app/user/auth.service.ts","./src/app/user/login.component.ts","./src/app/user/login.component.html","./src/app/user/user.module.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { WelcomeComponent } from './home/welcome.component';\nimport { PageNotFoundComponent } from './page-not-found.component';\nimport { AuthGuard } from './user/auth.guard';\nimport { SelectiveStrategy } from './selective-strategy.service';\n\n@NgModule({\n imports: [\n RouterModule.forRoot([\n { path: 'welcome', component: WelcomeComponent },\n \n {\n path: 'products',\n //canActivate: [AuthGuard],\n data: { preload: false },\n loadChildren: () =>\n import('./products/product.module').then(m => m.ProductModule)\n },\n { path: '', redirectTo: 'welcome', pathMatch: 'full' },\n { path: '**', component: PageNotFoundComponent }\n ], { enableTracing: true, preloadingStrategy: SelectiveStrategy })\n ],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { trigger, animate, transition, style, group, query } from '@angular/animations';\n\nexport const slideInAnimation = trigger('slideInAnimation', [\n\n transition('* <=> *', [\n \n query(':enter, :leave', style({ position: 'fixed', width: '100%', zIndex: 2 }), { optional: true }),\n \n group([\n query(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('0.5s ease-out', style({ transform: 'translateX(0%)' }))\n ], { optional: true }),\n query(':leave', [\n style({ transform: 'translateX(0%)' }),\n animate('0.5s ease-out', style({ transform: 'translateX(-100%)' }))\n ], { optional: true })\n ])\n ])\n]);\n","import { Component } from '@angular/core';\nimport { Router, Event, NavigationStart, NavigationEnd, NavigationError, NavigationCancel } from '@angular/router';\n\nimport { AuthService } from './user/auth.service';\nimport { slideInAnimation } from './app.animation';\n\n@Component({\n selector: 'pm-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css'],\n animations: [slideInAnimation]\n})\nexport class AppComponent {\n pageTitle = 'Flowers & Roses';\n loading = true;\n\n get isLoggedIn(): boolean {\n return this.authService.isLoggedIn;\n }\n\n \n\n get userName(): string {\n if (this.authService.currentUser) {\n return this.authService.currentUser.userName;\n }\n return '';\n }\n\n constructor(private authService: AuthService,\n private router: Router,\n ) {\n router.events.subscribe((routerEvent: Event) => {\n this.checkRouterEvent(routerEvent);\n });\n }\n\n checkRouterEvent(routerEvent: Event): void {\n if (routerEvent instanceof NavigationStart) {\n this.loading = true;\n }\n\n if (routerEvent instanceof NavigationEnd ||\n routerEvent instanceof NavigationCancel ||\n routerEvent instanceof NavigationError) {\n this.loading = false;\n }\n }\n\n \n\n \n\n logOut(): void {\n this.authService.logout();\n this.router.navigateByUrl('/welcome');\n }\n}\n","<span class=\"fa fa-spinner spinner\"\n *ngIf=\"loading\"></span>\n\n\n<nav class=\"navbar navbar-expand navbar-light bg-light\">\n <a class=\"navbar-brand\">{{pageTitle}}</a>\n <ul class=\"navbar-nav\">\n <li class=\"nav-item\">\n <a class=\"nav-link\"\n [routerLink]=\"['/welcome']\"\n routerLinkActive=\"active\">Home</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" *ngIf=\"isLoggedIn==false\"\n [routerLink]=\"['/products']\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact : true}\">Product List User</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" *ngIf=\"isLoggedIn\"\n [routerLink]=\"['/products']\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact : true}\">Product List Admin</a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" *ngIf=\"isLoggedIn\"\n [routerLink]=\"['/products', 0, 'edit']\"\n routerLinkActive=\"active\">Add Product</a>\n </li>\n </ul>\n\n <!-- Left justified part of the menu -->\n <ul class=\"navbar-nav ml-auto\">\n <li class=\"nav-item\"\n *ngIf=\"isLoggedIn\">\n <a class=\"nav-link\"\n [routerLink]=\"['/login']\">Welcome {{ userName }}</a>\n </li>\n \n <li class=\"nav-item\"\n *ngIf=\"!isLoggedIn\">\n <a class=\"nav-link\"\n [routerLink]=\"['/login']\">Log In</a>\n </li>\n <li class=\"nav-item\"\n *ngIf=\"isLoggedIn\">\n <a class=\"nav-link\"\n (click)=\"logOut()\">Log Out</a>\n </li>\n </ul>\n</nav>\n\n<div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-10\"\n [@slideInAnimation]=\"o.isActivated ? o.activatedRoute : ''\">\n <router-outlet #o=\"outlet\"></router-outlet>\n </div>\n <div class=\"col-md-2\">\n <router-outlet name=\"popup\"></router-outlet>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HttpClientModule } from '@angular/common/http';\n\n\nimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';\nimport { ProductData } from './products/product-data';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { WelcomeComponent } from './home/welcome.component';\nimport { PageNotFoundComponent } from './page-not-found.component';\n\n\nimport { UserModule } from './user/user.module';\nimport { ProductModule } from './products/product.module';\n\n@NgModule({\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n HttpClientModule,\n InMemoryWebApiModule.forRoot(ProductData, { delay: 1000 }),\n UserModule,\n AppRoutingModule,\n ProductModule\n ],\n declarations: [\n AppComponent,\n WelcomeComponent,\n PageNotFoundComponent\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector:\"WL\",\n templateUrl: './welcome.component.html'\n})\nexport class WelcomeComponent {\n public pageTitle = 'Flowers & Roses Online shop';\n}\n","<div class=\"card\">\n <div class=\"card-header\">\n <h2 style=\"text-align: center;\"> {{pageTitle}}</h2>\n </div>\n <div class=\"card-body\">\n <div class=\"container-fluid\">\n <div class=\"text-center\">\n <h5>Academic Angular Project</h5>\n \n <img src=\"./assets/images/logo.jpg\"\n class=\"img-responsive center-block\"\n style=\"max-height:300px;padding-bottom:50px\" />\n </div>\n\n <div class=\"text-center\">Developed by:</div>\n <div class=\"text-center\">\n <h3>Zied AOUIDENE</h3>\n <h4> Supervised by: Mrs. Raja Abdelmoumen</h4>\n \n </div>\n </div>\n</div>","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n private _messages: string[] = [];\n isDisplayed = false;\n\n get messages(): string[] {\n return this._messages;\n }\n\n addMessage(message: string): void {\n const currentDate = new Date();\n this.messages.unshift(message + ' at ' + currentDate.toLocaleString());\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n template: `\n <h1>This is not the page you were looking for!</h1>\n `\n})\nexport class PageNotFoundComponent { }\n","import { InMemoryDbService } from 'angular-in-memory-web-api';\n\nimport { Product } from './product';\n\nexport class ProductData implements InMemoryDbService {\n\n createDb(): { products: Product[]} {\n const products: Product[] = [\n {\n id: 1,\n productName: 'Peony',\n productCode: 'PEO-0011',\n releaseDate: 'March 19, 2021',\n description: 'Peony (or paeony) is a name for plants in the genus Paeonia, the only genus in the flowering plant family Paeoniaceae. ',\n price: 19.95,\n starRating: 3.2,\n imageUrl: 'assets/images/peony2.jpg',\n category: 'Garden',\n tags: ['Peony', 'Garden', 'home']\n },\n {\n id: 2,\n productName: 'Lisianthus',\n productCode: 'LIS-0023',\n releaseDate: 'March 18, 2021',\n description: 'Eustoma, commonly known as lisianthus or prairie gentian, is a small genus in the gentian family. They are native to warm regions of the southern United States, Mexico, Caribbean and northern South America.',\n price: 32.99,\n starRating: 4.2,\n imageUrl: 'assets/images/lisianthus.jpg',\n category: 'Garden',\n tags: ['Peony', 'Garden', 'home']\n },\n {\n id: 5,\n productName: 'Pompon',\n productCode: 'TBX-0048',\n releaseDate: 'May 21, 2021',\n description: 'Many different flower forms and colors are available, and breeders are continuously offering new varieties, including novelties. Pompons are spray chrysanthemums that have been created by pinching the center bud of the chrysanthemum plant. ',\n price: 8.9,\n starRating: 4.8,\n imageUrl: 'assets/images/pompon.jpg',\n category: 'Flower',\n tags: ['Flower', 'Pompon', 'Gaarden']\n },\n {\n id: 8,\n productName: 'Freesia',\n productCode: 'FRS-0022',\n releaseDate: 'May 15, 2021',\n description: \"FREESIA'S Symbolize innocence and thoughtfulness. \"\n +\"The Freesia is a genus of about 20 species of South African flowering plants of the Iris Family Iridaceae\",\n price: 11.55,\n starRating: 3.7,\n imageUrl: 'assets/images/ORANGEFREESIA.jpg',\n category: 'Freesia,Orange'\n },\n {\n id: 10,\n productName: 'Violet',\n productCode: 'VLT-0042',\n releaseDate: 'October 15, 2021',\n description: 'Violets are a flexible flower! Widely cultivated for thousands of years they are used for eating and medicine; as well as a beautiful plant for decoration! Their scientific name is Viola spp from the family Violaceae.',\n price: 35.95,\n starRating: 4.6,\n imageUrl: 'assets/images/violet.jpg',\n category: 'Flower'\n },\n\n {\n id: 84,\n productName: 'Ranunculus',\n productCode: 'RNC-0011',\n releaseDate: 'March 19, 2021',\n description: 'Ranunculus is native to the eastern region of the Mediterranean.The name Ranunculus comes from rana, which is Latin forfrog, and refers to the wet boggy places where these plants are found in the wild.',\n price: 19.95,\n starRating: 3.2,\n imageUrl: 'assets/images/yellow-ranunculus.jpg',\n category: 'Garden',\n tags: ['gerbera', 'yard','Ranunculus', 'home']\n },\n \n\n ];\n return { products };\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Product, ProductResolved } from './product';\n\n@Component({\n templateUrl: './product-detail.component.html',\n styleUrls: ['./product-detail.component.css']\n})\nexport class ProductDetailComponent implements OnInit {\n pageTitle = 'Product Detail';\n product: Product;\n errorMessage: string;\n\n constructor(private route: ActivatedRoute) { }\n \n\n ngOnInit(): void {\n const resolvedData: ProductResolved =\n this.route.snapshot.data['resolvedData'];\n this.errorMessage = resolvedData.error;\n this.onProductRetrieved(resolvedData.product);\n }\n getUser(){\n console.log(localStorage.getItem('user')); \n \n if (localStorage.getItem('user')==\"admin\"){\n return true;}else {\n return false ; \n }\n }\n onProductRetrieved(product: Product): void {\n this.product = product;\n\n if (this.product) {\n this.pageTitle = `Product Detail: ${this.product.productName}`;\n } else {\n this.pageTitle = 'No product found';\n }\n }\n}\n","<div class=\"card\">\n <div class=\"card-header\">\n {{pageTitle}}\n </div>\n\n <div class=\"card-body\"\n *ngIf=\"product\">\n\n <div class=\"row\">\n\n <div class=\"col-md-8\">\n <div class=\"row\">\n <div class=\"col-md-3\">Name:</div>\n <div class=\"col-md-6\">{{product.productName}}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">Code:</div>\n <div class=\"col-md-6\">{{product.productCode}}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">Description:</div>\n <div class=\"col-md-6\">{{product.description}}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">Availability:</div>\n <div class=\"col-md-6\">{{product.releaseDate}}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">Price:</div>\n <div class=\"col-md-6\">{{product.price|currency:\"EUR \":\"symbol\"}}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">5 Star Rating:</div>\n <div class=\"col-md-6\">\n <pm-star [rating]=\"product.starRating\">\n </pm-star>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">Category:</div>\n <div class=\"col-md-6\">{{product.category}}</div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3\">Tags:</div>\n <div class=\"col-md-6\">{{product.tags}}</div>\n </div>\n </div>\n\n <div class=\"col-md-4\"\n *ngIf=\"product.imageUrl\">\n <img class=\"img-fluid ; max-width: 100%; height: auto;\"\n [style.height.px]=\"228\"\n [style.width.px]=\"368\"\n [style.margin.px]=\"2\"\n [src]=\"product.imageUrl\"\n [title]=\"product.productName\">\n </div>\n </div>\n\n <div class=\"row mt-4\">\n <div class=\"col-md-4\">\n <button class=\"btn btn-outline-secondary mr-3\"\n style=\"width:80px\"\n [routerLink]=\"['/products']\"\n queryParamsHandling=\"preserve\">\n <i class=\"fa fa-chevron-left\"></i> Back\n </button>\n <button class=\"btn btn-outline-primary\" \n *ngIf=\"getUser\"\n style=\"width:80px\"\n [routerLink]=\"['edit']\"\n >\n Edit\n </button>\n </div>\n </div>\n\n </div>\n</div>\n\n<div class=\"alert alert-danger\"\n *ngIf=\"errorMessage\">{{errorMessage}}\n</div>","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { NgForm } from '@angular/forms';\n\nimport { Product } from '../product';\n\n@Component({\n templateUrl: './product-edit-info.component.html'\n})\nexport class ProductEditInfoComponent implements OnInit {\n @ViewChild(NgForm) productForm: NgForm;\n\n errorMessage: string;\n product: Product;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit(): void {\n this.route.parent.data.subscribe(data => {\n if (this.productForm) {\n this.productForm.reset();\n }\n\n this.product = data['resolvedData'].product;\n });\n }\n\n}\n","<div class=\"card-body\">\n <form novalidate\n #productForm=\"ngForm\">\n <fieldset>\n <legend>Basic Product Information</legend>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form-label\"\n for=\"productNameId\">Product Name</label>\n <div class=\"col-md-8\">\n <input class=\"form-control\"\n id=\"productNameId\"\n type=\"text\"\n placeholder=\"Name (required)\"\n required\n minlength=\"3\"\n [(ngModel)]=product.productName\n name=\"productName\"\n #productNameVar=\"ngModel\"\n [ngClass]=\"{'is-invalid': (productNameVar.touched || \n productNameVar.dirty ||\n product.id !== 0) && \n !productNameVar.valid }\" />\n <span class=\"invalid-feedback\">\n <span *ngIf=\"productNameVar.errors?.required\">\n Product name is required.\n </span>\n <span *ngIf=\"productNameVar.errors?.minlength\">\n Product name must be at least three characters.\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form-label\"\n for=\"productCodeId\">Product Code</label>\n <div class=\"col-md-8\">\n <input class=\"form-control\"\n id=\"productCodeId\"\n type=\"text\"\n placeholder=\"Code (required)\"\n required\n [(ngModel)]=product.productCode\n name=\"productCode\"\n #productCodeVar=\"ngModel\"\n [ngClass]=\"{'is-invalid': (productCodeVar.touched || \n productCodeVar.dirty ||\n product.id !== 0) &&\n !productCodeVar.valid }\" />\n <span class=\"invalid-feedback\">\n <span *ngIf=\"productCodeVar.errors?.required\">\n Product code is required.\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form-label\"\n for=\"descriptionId\">Description</label>\n <div class=\"col-md-8\">\n <textarea class=\"form-control\"\n id=\"descriptionId\"\n placeholder=\"Description\"\n rows=3\n [(ngModel)]=product.description\n name=\"description\"></textarea>\n </div>\n </div>\n </fieldset>\n </form>\n</div>\n\n<div class='alert alert-danger'\n *ngIf='errorMessage'>{{errorMessage}}\n</div>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Product } from '../product';\n\n@Component({\n templateUrl: './product-edit-tags.component.html'\n})\nexport class ProductEditTagsComponent implements OnInit {\n errorMessage: string;\n newTags = '';\n product: Product;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit(): void {\n this.route.parent.data.subscribe(data => {\n this.product = data['resolvedData'].product;\n });\n }\n\n \n addTags(): void {\n if (!this.newTags) {\n this.errorMessage = 'Enter the search keywords separated by commas and then press Add';\n } else {\n const tagArray = this.newTags.split(',');\n this.product.tags = this.product.tags ? this.product.tags.concat(tagArray) : tagArray;\n this.newTags = '';\n this.errorMessage = '';\n }\n }\n\n \n removeTag(idx: number): void {\n this.product.tags.splice(idx, 1);\n }\n}\n","<div class=\"card-body\">\n <form novalidate>\n <fieldset>\n <legend>Product Search Tags</legend>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form-label\"\n for=\"categoryId\">Category</label>\n <div class=\"col-md-8\">\n <input class=\"form-control\"\n id=\"categoryId\"\n type=\"text\"\n placeholder=\"Category (required)\"\n required\n minlength=\"3\"\n [(ngModel)]=\"product.category\"\n name=\"category\"\n #categoryVar=\"ngModel\"\n [ngClass]=\"{'is-invalid': (categoryVar.touched ||\n categoryVar.dirty || \n product.id !== 0) &&\n !categoryVar.valid }\" />\n <span class=\"invalid-feedback\">\n <span *ngIf=\"categoryVar.errors?.required\">\n A category must be entered.\n </span>\n <span *ngIf=\"categoryVar.errors?.minlength\">\n The category must be at least 3 characters in length.\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form-label\"\n for=\"tagsId\">Search Tags</label>\n <div class=\"col-md-8\">\n <input class=\"form-control\"\n id=\"tagsId\"\n type=\"text\"\n placeholder=\"Search keywords separated by commas\"\n [(ngModel)]=\"newTags\"\n name=\"tags\" />\n </div>\n <div class=\"col-md-1\">\n <button class=\"btn btn-outline-primary\"\n type=\"button\"\n title=\"Enter the search keywords separated by commas and then press Add\"\n (click)=\"addTags()\">\n Add\n </button>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-8 offset-md-2\">\n <span *ngFor=\"let tag of product.tags; let i = index\">\n <button class=\"btn btn-outline-secondary\"\n style=\"font-size:smaller;margin-bottom:12px;margin-right:2px\"\n title=\"Click to remove this tag\"\n (click)=\"removeTag(i)\">\n {{tag}}\n <span class=\"fa fa-times-circle\"></span>\n </button>\n </span>\n </div>\n </div>\n\n </fieldset>\n </form>\n</div>\n\n<div class=\"alert alert-danger\"\n *ngIf=\"errorMessage\">{{errorMessage}}\n</div>","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MessageService } from '../../messages/message.service';\n\nimport { Product, ProductResolved } from '../product';\nimport { ProductService } from '../product.service';\n\n@Component({\n templateUrl: './product-edit.component.html',\n styleUrls: ['./product-edit.component.css'] \n})\nexport class ProductEditComponent implements OnInit {\n pageTitle = 'Product Edit';\n errorMessage: string;\n\n private dataIsValid: { [key: string]: boolean } = {};\n\n get isDirty(): boolean {\n return JSON.stringify(this.originalProduct) !== JSON.stringify(this.currentProduct);\n }\n\n private currentProduct: Product;\n private originalProduct: Product;\n\n get product(): Product {\n return this.currentProduct;\n }\n set product(value: Product) {\n this.currentProduct = value;\n \n this.originalProduct = value ? { ...value } : null;\n }\n\n constructor(private productService: ProductService,\n private messageService: MessageService,\n private route: ActivatedRoute,\n private router: Router) { }\n\n ngOnInit(): void {\n this.route.data.subscribe(data => {\n const resolvedData: ProductResolved = data['resolvedData'];\n this.errorMessage = resolvedData.error;\n this.onProductRetrieved(resolvedData.product);\n });\n }\n\n onProductRetrieved(product: Product): void {\n this.product = product;\n\n if (!this.product) {\n this.pageTitle = 'No product found';\n } else {\n if (this.product.id === 0) {\n this.pageTitle = 'Add Product';\n } else {\n this.pageTitle = `Edit Product: ${this.product.productName}`;\n }\n }\n }\n\n deleteProduct(): void {\n if (this.product.id === 0) {\n \n this.onSaveComplete(`${this.product.productName} was deleted`);\n } else {\n if (confirm(`Really delete the product: ${this.product.productName}?`)) {\n this.productService.deleteProduct(this.product.id).subscribe({\n next: () => this.onSaveComplete(`${this.product.productName} was deleted`),\n error: err => this.errorMessage = err\n });\n }\n }\n }\n\n isValid(path?: string): boolean {\n this.validate();\n if (path) {\n return this.dataIsValid[path];\n }\n return (this.dataIsValid &&\n Object.keys(this.dataIsValid).every(d => this.dataIsValid[d] === true));\n }\n \n\n reset(): void {\n this.dataIsValid = null;\n this.currentProduct = null;\n this.originalProduct = null;\n }\n\n saveProduct(): void {\n if (this.isValid()) {\n if (this.product.id === 0) {\n this.productService.createProduct(this.product).subscribe({\n next: () => this.onSaveComplete(`The new ${this.product.productName} was saved`),\n error: err => this.errorMessage = err\n });\n } else {\n this.productService.updateProduct(this.product).subscribe({\n next: () => this.onSaveComplete(`The updated ${this.product.productName} was saved`),\n error: err => this.errorMessage = err\n });\n }\n } else {\n this.errorMessage = 'Please correct the validation errors.';\n }\n }\n\n onSaveComplete(message?: string): void {\n if (message) {\n this.messageService.addMessage(message);\n }\n this.reset();\n\n \n this.router.navigate(['/products']);\n }\n\n validate(): void {\n \n this.dataIsValid = {};\n\n\n if (this.product.productName &&\n this.product.productName.length >= 3 &&\n this.product.productCode) {\n this.dataIsValid['info'] = true;\n } else {\n this.dataIsValid['info'] = false;\n }\n\n \n if (this.product.category &&\n this.product.category.length >= 3) {\n this.dataIsValid['tags'] = true;\n } else {\n this.dataIsValid['tags'] = false;\n }\n }\n\n}\n","<div class=\"card\">\n <div class=\"card-header\">\n {{pageTitle}}\n </div>\n\n <div class=\"card-body\"\n *ngIf=\"product\">\n <div class=\"wizard\">\n <a [routerLink]=\"['info']\"\n routerLinkActive=\"active\">\n Basic Information<span [ngClass]=\"{'fa fa-exclamation': !isValid('info')}\"></span>\n </a>\n <a [routerLink]=\"['tags']\"\n routerLinkActive=\"active\">\n Search Tags<span [ngClass]=\"{'fa fa-exclamation': !isValid('tags')}\"></span>\n </a>\n </div>\n\n <router-outlet></router-outlet>\n\n <div class=\"row mb-2\">\n <div class=\"col-md-4\">\n <button class=\"btn btn-primary mr-3\"\n style=\"width:80px\"\n type=\"button\"\n [title]=\"isValid() ? 'Save your entered data' : 'Disabled until the form data is valid'\"\n [disabled]=\"!isValid()\"\n (click)=\"saveProduct()\">\n Save\n </button>\n <button class=\"btn btn-outline-secondary mr-3\"\n style=\"width:80px\"\n type=\"button\"\n title=\"Cancel your edits\"\n [routerLink]=\"['/products']\">\n Cancel\n </button>\n <button class=\"btn btn-outline-warning\"\n style=\"width:80px\"\n type=\"button\"\n title=\"Delete this product\"\n (click)=\"deleteProduct()\">\n Delete\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"alert alert-danger\"\n *ngIf=\"errorMessage\">{{errorMessage}}\n</div>","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { ProductEditComponent } from './product-edit.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductEditGuard implements CanDeactivate<ProductEditComponent> {\n\n canDeactivate(component: ProductEditComponent,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\n\n if (component.isDirty) {\n const productName = component.product.productName || 'New Product';\n return confirm(`Navigate away and lose all changes to ${productName}?`);\n }\n return true;\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Product } from './product';\nimport { ProductService } from './product.service';\n\n@Component({\n templateUrl: './product-list.component.html',\n styleUrls: ['./product-list.component.css']\n})\nexport class ProductListComponent implements OnInit {\n pageTitle = 'Product List';\n imageWidth = 286;\n imageHeight = 180;\n imageMargin = 2;\n showImage = false;\n errorMessage = '';\n\n _listFilter = '';\n get listFilter(): string {\n return this._listFilter;\n }\n set listFilter(value: string) {\n this._listFilter = value;\n this.filteredProducts = this.listFilter ? this.performFilter(this.listFilter) : this.products;\n }\n\n filteredProducts: Product[] = [];\n products: Product[] = [];\n\n constructor(private productService: ProductService,\n private route: ActivatedRoute) { }\n\n ngOnInit(): void {\n this.listFilter = this.route.snapshot.queryParamMap.get('filterBy') || '';\n this.showImage = this.route.snapshot.queryParamMap.get('showImage') === 'true';\n\n this.productService.getProducts().subscribe({\n next: products => {\n this.products = products;\n this.filteredProducts = this.performFilter(this.listFilter);\n },\n error: err => this.errorMessage = err\n });\n }\n\n performFilter(filterBy: string): Product[] {\n filterBy = filterBy.toLocaleLowerCase();\n return this.products.filter((product: Product) =>\n product.productName.toLocaleLowerCase().indexOf(filterBy) !== -1);\n }\n\n}\n","<div class=\"card\">\n <div class=\"card-header\">\n {{pageTitle}}\n </div>\n \n<div class=\"card-body\">\n <div class=\"row\">\n \n <div class=\"col-md-12\">\n <input class=\"form-control mr-sm-2\" type=\"search\" autofocus placeholder=\"Search\" aria-label=\"Search\"\n [(ngModel)]=\"listFilter\" />\n </div>\n </div>\n <div class=\"row\"\n *ngIf=\"listFilter\">\n <div class=\"col-md-6\">\n <h4>Filtered by: {{listFilter}}</h4>\n </div>\n </div>\n\n<div *ngFor=\"let product of filteredProducts\" class=\"card\" style=\"width: 290px;height: 310px;display: inline-block\">\n <img class=\"card-img-top\" [src]=\"product.imageUrl\" \n [style.width.px]=\"imageWidth\"\n [style.margin.px]=\"imageMargin\" \n [style.height.px]=\"imageHeight\"\n alt=\"Card image cap\">\n <div class=\"card-body\">\n <div>\n <h5 class=\"card-title\" style=\"display:inline ;float:inline-start\"> {{product.productName}}</h5>\n \n <pm-star style=\"text-align: right; display:inline-block; float:right;\" [rating]=\"product.starRating\"></pm-star>\n </div>\n \n <a class=\"btn btn-info btn-lg btn-block\" [routerLink]=\"[product.id]\">Details</a>\n \n </div>\n\n</div>\n\n","import { Injectable } from '@angular/core';\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nimport { Observable, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\nimport { ProductResolved } from './product';\nimport { ProductService } from './product.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductResolver implements Resolve<ProductResolved> {\n\n constructor(private productService: ProductService) { }\n\n resolve(route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable<ProductResolved> {\n const id = route.paramMap.get('id');\n if (isNaN(+id)) {\n const message = `Product id was not a number: ${id}`;\n console.error(message);\n return of({ product: null, error: message });\n }\n\n return this.productService.getProduct(+id)\n .pipe(\n map(product => ({ product })),\n catchError(error => {\n const message = `Retrieval error: ${error}`;\n console.error(message);\n return of({ product: null, error: message });\n })\n );\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n\n\n\nimport { ProductListComponent } from './product-list.component';\nimport { ProductDetailComponent } from './product-detail.component';\nimport { ProductEditComponent } from './product-edit/product-edit.component';\nimport { ProductEditInfoComponent } from './product-edit/product-edit-info.component';\nimport { ProductEditTagsComponent } from './product-edit/product-edit-tags.component';\nimport { ProductResolver } from './product-resolver.service';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ProductEditGuard } from './product-edit/product-edit.guard';\nimport { AuthGuard } from '../user/auth.guard';\n\n@NgModule({\n imports: [\n SharedModule,\n \n RouterModule.forChild([\n \n {\n path: '',\n component: ProductListComponent\n },\n {\n path: ':id',\n component: ProductDetailComponent,\n \n\n resolve: { resolvedData: ProductResolver }\n },\n \n {\n path: ':id/edit',\n component: ProductEditComponent,\n canDeactivate: [ProductEditGuard],\n resolve: { resolvedData: ProductResolver },\n children: [\n { path: '', redirectTo: 'info', pathMatch: 'full' },\n { path: 'info', component: ProductEditInfoComponent },\n { path: 'tags', component: ProductEditTagsComponent }\n ]\n }\n ])\n ],\n declarations: [\n ProductListComponent,\n ProductDetailComponent,\n ProductEditComponent,\n ProductEditInfoComponent,\n ProductEditTagsComponent,\n \n ],\n \n})\nexport class ProductModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, tap, map } from 'rxjs/operators';\n\nimport { Product } from './product';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductService {\n private productsUrl = 'api/products';\n\n constructor(private http: HttpClient) { }\n\n getProducts(): Observable<Product[]> {\n return this.http.get<Product[]>(this.productsUrl)\n .pipe(\n tap(data => console.log(JSON.stringify(data))),\n catchError(this.handleError)\n );\n }\n\n getProduct(id: number): Observable<Product> {\n if (id === 0) {\n return of(this.initializeProduct());\n }\n const url = `${this.productsUrl}/${id}`;\n return this.http.get<Product>(url)\n .pipe(\n tap(data => console.log('getProduct: ' + JSON.stringify(data))),\n catchError(this.handleError)\n );\n }\n\n createProduct(product: Product): Observable<Product> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n product.id = null;\n return this.http.post<Product>(this.productsUrl, product, { headers })\n .pipe(\n tap(data => console.log('createProduct: ' + JSON.stringify(data))),\n catchError(this.handleError)\n );\n }\n\n deleteProduct(id: number): Observable<{}> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n const url = `${this.productsUrl}/${id}`;\n return this.http.delete<Product>(url, { headers })\n .pipe(\n tap(data => console.log('deleteProduct: ' + id)),\n catchError(this.handleError)\n );\n }\n\n updateProduct(product: Product): Observable<Product> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n const url = `${this.productsUrl}/${product.id}`;\n return this.http.put<Product>(url, product, { headers })\n .pipe(\n tap(() => console.log('updateProduct: ' + product.id)),\n \n map(() => product),\n catchError(this.handleError)\n );\n }\n\n private handleError(err: any): Observable<never> {\n \n let errorMessage: string;\n if (err.error instanceof ErrorEvent) {\n \n errorMessage = `An error occurred: ${err.error.message}`;\n } else {\n \n errorMessage = `Backend returned code ${err.status}: ${err.body.error}`;\n }\n console.error(err);\n return throwError(errorMessage);\n }\n\n private initializeProduct(): Product {\n\n return {\n id: 0,\n productName: null,\n productCode: null,\n category: null,\n tags: [],\n releaseDate: null,\n price: null,\n description: null,\n starRating: null,\n imageUrl: null\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Route, PreloadingStrategy } from '@angular/router';\n\nimport { Observable, of } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SelectiveStrategy implements PreloadingStrategy {\n\n preload(route: Route, load: Function): Observable<any> {\n if (route.data && route.data['preload']) {\n return load();\n }\n return of(null);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { StarComponent } from './star.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n StarComponent\n ],\n exports: [\n StarComponent,\n CommonModule,\n FormsModule\n ]\n})\nexport class SharedModule { }\n","import { Component, OnChanges, Input, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'pm-star',\n templateUrl: './star.component.html',\n styleUrls: ['./star.component.css']\n})\nexport class StarComponent implements OnChanges {\n @Input() rating = 0;\n starWidth = 0;\n @Output() ratingClicked: EventEmitter<string> =\n new EventEmitter<string>();\n\n ngOnChanges(): void {\n this.starWidth = this.rating * 75 / 5;\n }\n\n onClick(): void {\n this.ratingClicked.emit(`The rating ${this.rating} was clicked!`);\n }\n}\n","<div class=\"crop\"\n [style.width.px]=\"starWidth\"\n [title]=\"rating\"\n (click)=\"onClick()\">\n <div style=\"width: 75px\">\n <span class=\"fa fa-star\"></span>\n <span class=\"fa fa-star\"></span>\n <span class=\"fa fa-star\"></span>\n <span class=\"fa fa-star\"></span>\n <span class=\"fa fa-star\"></span>\n </div>\n</div>","import { Injectable } from '@angular/core';\n\nimport { User } from './user';\nimport { MessageService } from '../messages/message.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n currentUser: User;\n redirectUrl: string;\n\n get isLoggedIn(): boolean {\n return !!this.currentUser;\n }\n\n constructor(private messageService: MessageService) { }\n\n login(userName: string, password: string): void {\n if (!userName || !password) {\n this.messageService.addMessage('Please enter your userName and password');\n return;\n }\n if (userName === 'admin') {\n this.currentUser = {\n id: 1,\n userName,\n isAdmin: true,\n };\n localStorage.setItem('user','admin'), \n this.messageService.addMessage('Admin login');\n return;\n }\n this.currentUser = {\n id: 2,\n userName,\n isAdmin: false\n };\n this.messageService.addMessage(`User: ${this.currentUser.userName} logged in`);\n localStorage.setItem('user',`${this.currentUser.userName}`);\n\n }\n\n logout(): void {\n this.currentUser = null;\n }\n}\n","import { Component } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { AuthService } from './auth.service';\n\n@Component({\n templateUrl: './login.component.html'\n})\nexport class LoginComponent {\n errorMessage: string;\n pageTitle = 'Log In';\n\n constructor(private authService: AuthService,\n private router: Router) { }\n\n login(loginForm: NgForm): void {\n if (loginForm && loginForm.valid) {\n const userName = loginForm.form.value.userName;\n const password = loginForm.form.value.password;\n this.authService.login(userName, password);\n\n \n if (this.authService.redirectUrl) {\n this.router.navigateByUrl(this.authService.redirectUrl);\n } else {\n this.router.navigate(['/products']);\n }\n } else {\n this.errorMessage = 'Please enter a user name and password.';\n }\n }\n}\n","<div class=\"card\">\n <div class=\"card-header\">\n {{pageTitle}}\n </div>\n\n <div class=\"card-body\">\n <form novalidate\n (ngSubmit)=\"login(loginForm)\"\n #loginForm=\"ngForm\"\n autocomplete=\"off\">\n <fieldset>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form-label\"\n for=\"userNameId\">User Name</label>\n <div class=\"col-md-8\">\n <input class=\"form-control\"\n id=\"userNameId\"\n type=\"text\"\n placeholder=\"User Name (required)\"\n required\n ngModel\n name=\"userName\"\n #userNameVar=\"ngModel\"\n [ngClass]=\"{'is-invalid': (userNameVar.touched || userNameVar.dirty) && !userNameVar.valid }\" />\n <span class=\"invalid-feedback\">\n <span *ngIf=\"userNameVar.errors?.required\">\n User name is required.\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-md-2 col-form--label\"\n for=\"passwordId\">Password</label>\n\n <div class=\"col-md-8\">\n <input class=\"form-control\"\n id=\"passwordId\"\n type=\"password\"\n placeholder=\"Password (required)\"\n required\n ngModel\n name=\"password\"\n #passwordVar=\"ngModel\"\n [ngClass]=\"{'is-invalid': (passwordVar.touched || passwordVar.dirty) && !passwordVar.valid }\" />\n <span class=\"invalid-feedback\">\n <span *ngIf=\"passwordVar.errors?.required\">\n Password is required.\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-4 offset-md-2\">\n <button class=\"btn btn-primary mr-3\"\n type=\"submit\"\n style=\"width:80px\"\n [disabled]=\"!loginForm.valid\">\n Log In\n </button>\n <button class=\"btn btn-outline-secondary\"\n type=\"button\"\n style=\"width:80px\"\n [routerLink]=\"['/welcome']\">\n Cancel\n </button>\n </div>\n </div>\n </fieldset>\n </form>\n </div>\n\n <div class=\"alert alert-danger\"\n *ngIf=\"errorMessage\">{{errorMessage}}\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { LoginComponent } from './login.component';\n\nimport { SharedModule } from '../shared/shared.module';\n\n@NgModule({\n imports: [\n SharedModule,\n RouterModule.forChild([\n { path: 'login', component: LoginComponent }\n ])\n ],\n declarations: [\n LoginComponent\n ],\n \n})\nexport class UserModule { }\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":"webpack:///"}