From fdad79fa10bc9435a76a4d10c684cbbb3693ba81 Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Wed, 7 Dec 2016 19:52:14 +0200 Subject: [PATCH 01/20] Add ability to get categories --- API/src/main/java/app/core/controller/CategoriesController.java | 2 -- API/src/main/java/app/core/model/Categories.java | 2 +- client/src/app/book-search/book-search.component.html | 1 + 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/API/src/main/java/app/core/controller/CategoriesController.java b/API/src/main/java/app/core/controller/CategoriesController.java index 7278a6d..31a56d2 100644 --- a/API/src/main/java/app/core/controller/CategoriesController.java +++ b/API/src/main/java/app/core/controller/CategoriesController.java @@ -17,8 +17,6 @@ public class CategoriesController { @ResponseBody @RequestMapping(value = "/api/categories", method = RequestMethod.GET) public List allCategories() { - - System.out.println(service.getCategories()); return service.getCategories(); } diff --git a/API/src/main/java/app/core/model/Categories.java b/API/src/main/java/app/core/model/Categories.java index 95d4677..3953f0b 100644 --- a/API/src/main/java/app/core/model/Categories.java +++ b/API/src/main/java/app/core/model/Categories.java @@ -20,7 +20,7 @@ public class Categories { public String name; @JsonIgnore - @OneToMany(fetch = FetchType.LAZY, mappedBy = "categories") + @OneToMany(fetch = FetchType.EAGER, mappedBy = "categories") @Cascade({org.hibernate.annotations.CascadeType.DELETE}) public List categories = new ArrayList(); diff --git a/client/src/app/book-search/book-search.component.html b/client/src/app/book-search/book-search.component.html index fbdd464..449d337 100644 --- a/client/src/app/book-search/book-search.component.html +++ b/client/src/app/book-search/book-search.component.html @@ -1,6 +1,7 @@

Books Search

+
Date: Wed, 7 Dec 2016 19:56:24 +0200 Subject: [PATCH 02/20] Add ability to get categories --- .../dist/out-tsc/app/book/book.component.js | 4 +- client/src/styles.css | 46 ++++++++++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/client/dist/out-tsc/app/book/book.component.js b/client/dist/out-tsc/app/book/book.component.js index 0a9fa2b..f3e9a78 100644 --- a/client/dist/out-tsc/app/book/book.component.js +++ b/client/dist/out-tsc/app/book/book.component.js @@ -50,9 +50,9 @@ export var BookComponent = (function () { selector: 'books', templateUrl: 'book.component.html', styleUrls: ['book.component.css'] - }), + }), __metadata('design:paramtypes', [Router, BookService]) ], BookComponent); return BookComponent; }()); -//# sourceMappingURL=/home/employee/IdeaProjects/BookShop/client/src/app/book/book.component.js.map +//# sourceMappingURL=/home/employee/IdeaProjects/BookShop/client/src/app/book/book.component.js.map \ No newline at end of file diff --git a/client/src/styles.css b/client/src/styles.css index 90d4ee0..7d76042 100644 --- a/client/src/styles.css +++ b/client/src/styles.css @@ -1 +1,45 @@ -/* You can add global styles to this file, and also import other style files */ +body { + font-family: "Sans"; + font-size: 14px; + color: #252526; + background-color: #FFFFF0; +} + +input { + border-radius: 5px; + padding: 7px; + width: 400px; +} + +input[type=submit] { + background-color: #B0C4DE; + padding: 5px 10px; + border-radius: 5px; + border: 0px; + margin: 10px; +} + +select { + padding: 3px; + margin: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset; + -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset; + box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset; + background: #f8f8f8; + color: #888; + border: none; + outline: none; + display: inline-block; + -moz-appearance: none; + appearance: none; + cursor: pointer; + margin: 10px; +} +a{ + +} + + From a3078d321608ccd429a947f2e1ceea023b8f7254 Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Thu, 8 Dec 2016 20:26:00 +0200 Subject: [PATCH 03/20] Change dockerfile config --- API/Dockerfile | 18 +++++++++++++++ API/pom.xml | 5 ++-- API/src/main/java/app/config/DataBase.java | 8 ++----- API/src/main/resources/application.properties | 1 - API/start.sh | 5 ++++ client/Dockerfile | 7 +++--- client/package.json | 6 ++--- client/start.sh | 4 ++++ db/Dockerfile | 6 +++++ docker-compose.yml | 23 +++++++++++++------ 10 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 API/Dockerfile create mode 100644 API/start.sh create mode 100644 client/start.sh create mode 100644 db/Dockerfile diff --git a/API/Dockerfile b/API/Dockerfile new file mode 100644 index 0000000..b10bdcb --- /dev/null +++ b/API/Dockerfile @@ -0,0 +1,18 @@ +FROM java:8 + +RUN apt-get update +RUN apt-get install -y wget telnet + +RUN wget --no-verbose -O /tmp/apache-maven-3.2.2.tar.gz http://archive.apache.org/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz + +RUN tar xzf /tmp/apache-maven-3.2.2.tar.gz -C /opt/ +RUN ln -s /opt/apache-maven-3.2.2 /opt/maven +RUN ln -s /opt/maven/bin/mvn /usr/local/bin +RUN rm -f /tmp/apache-maven-3.2.2.tar.gz +ENV MAVEN_HOME /opt/maven + +RUN apt-get clean + +WORKDIR /api + +EXPOSE 8080 \ No newline at end of file diff --git a/API/pom.xml b/API/pom.xml index 68adf23..ca4297d 100644 --- a/API/pom.xml +++ b/API/pom.xml @@ -4,8 +4,9 @@ Library - Spring-boot - 1.8 + BookShop + 8 + UTF-8 app.Application diff --git a/API/src/main/java/app/config/DataBase.java b/API/src/main/java/app/config/DataBase.java index 3b44ce2..37a414a 100644 --- a/API/src/main/java/app/config/DataBase.java +++ b/API/src/main/java/app/config/DataBase.java @@ -18,7 +18,7 @@ public class DataBase { private String DB_PASSWORD="zabudska1985"; - private String DB_URL="jdbc:mysql://127.0.0.1:3306/Library?useSSL=false"; + private String DB_URL="jdbc:mysql://db:3306/Library?useSSL=false"; private String DB_USERNAME="root"; @@ -62,8 +62,4 @@ public HibernateTransactionManager transactionManager() { return transactionManager; } -} - - - - +} \ No newline at end of file diff --git a/API/src/main/resources/application.properties b/API/src/main/resources/application.properties index 3144392..3191b45 100644 --- a/API/src/main/resources/application.properties +++ b/API/src/main/resources/application.properties @@ -2,5 +2,4 @@ spring.thymeleaf.cache: false # Database - spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect \ No newline at end of file diff --git a/API/start.sh b/API/start.sh new file mode 100644 index 0000000..ac9eb35 --- /dev/null +++ b/API/start.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +mvn package + +java -jar /api/target/BookShop-8.jar \ No newline at end of file diff --git a/client/Dockerfile b/client/Dockerfile index 397e070..d7eddb8 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -1,10 +1,9 @@ FROM node:4.4 -RUN npm install -g npm +RUN npm install -g npm angular-cli RUN mkdir /client WORKDIR /client -COPY src ./ +EXPOSE 4200 -EXPOSE 3000:3001 -CMD["npm", "run", "api"] +CMD ["/bin/sh", "start.sh"] diff --git a/client/package.json b/client/package.json index 84fb76a..dc0bacb 100644 --- a/client/package.json +++ b/client/package.json @@ -4,13 +4,11 @@ "license": "MIT", "angular-cli": {}, "scripts": { - "start": "ng serve", + "start": "ng serve --host=0.0.0.0 --proxy-config proxy.config.json", "lint": "tslint \"src/**/*.ts\"", "test": "ng test", "pree2e": "webdriver-manager update", - "e2e": "protractor", - "api": "ng serve --proxy-config proxy.config.json" - + "e2e": "protractor" }, "private": true, "dependencies": { diff --git a/client/start.sh b/client/start.sh new file mode 100644 index 0000000..2603b0c --- /dev/null +++ b/client/start.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +npm install +npm start diff --git a/db/Dockerfile b/db/Dockerfile new file mode 100644 index 0000000..58ddb37 --- /dev/null +++ b/db/Dockerfile @@ -0,0 +1,6 @@ +FROM mysql:5.7 + +ENV MYSQL_ROOT_PASSWORD zabudska1985 +ENV MYSQL_DATABASE Library + +EXPOSE 3306 diff --git a/docker-compose.yml b/docker-compose.yml index 74bf224..7390b9b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,23 @@ +db: + build: ./db + ports: + - "3307:3306" + api: - build: ./api + build: ./API ports: - - "8080:8080" + - "8080:8080" + volumes: + - ./API:/api + command: /bin/sh /api/start.sh + links: + - db + client: build: ./client ports: - - "80:3000" - - "3000:3000" - - "3001:3001" + - "44200:4200" volumes: - - ./client:/client + - ./client:/client links: - - api \ No newline at end of file + - api \ No newline at end of file From dd343fc50a12303c293f3176f6b2c610a350ec83 Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Fri, 9 Dec 2016 17:31:37 +0200 Subject: [PATCH 04/20] Change docker configuration --- API/Dockerfile | 15 +------ .../app/core/controller/BooksController.java | 6 +++ API/src/main/java/app/core/dao/BooksDao.java | 1 + .../main/java/app/core/dao/BooksDaoImpl.java | 8 ++++ API/src/main/java/app/core/model/Book.java | 7 ++++ API/src/main/java/app/core/model/Shop.java | 16 ++++++++ .../app/core/service/BookServiceImpl.java | 4 ++ API/src/main/resources/application.properties | 1 + client/Dockerfile | 14 +++++-- .../app/book-search/book-search.component.js | 19 +++------ .../book-search/book-search.component.js.map | 2 +- .../app/book-search/book-search.service.js | 26 ++++++++++--- .../book-search/book-search.service.js.map | 2 +- client/proxy.config.json | 4 +- .../book-search/book-search.component.html | 2 +- .../app/book-search/book-search.component.ts | 21 +++++----- .../app/book-search/book-search.service.ts | 39 ++++++++++++++++--- client/src/app/shop.service.js | 32 +++++++++++++++ client/start.sh | 1 - db/Dockerfile | 4 +- docker-compose.yml | 3 +- 21 files changed, 164 insertions(+), 63 deletions(-) create mode 100644 client/src/app/shop.service.js diff --git a/API/Dockerfile b/API/Dockerfile index b10bdcb..d720ba3 100644 --- a/API/Dockerfile +++ b/API/Dockerfile @@ -1,17 +1,4 @@ -FROM java:8 - -RUN apt-get update -RUN apt-get install -y wget telnet - -RUN wget --no-verbose -O /tmp/apache-maven-3.2.2.tar.gz http://archive.apache.org/dist/maven/maven-3/3.2.2/binaries/apache-maven-3.2.2-bin.tar.gz - -RUN tar xzf /tmp/apache-maven-3.2.2.tar.gz -C /opt/ -RUN ln -s /opt/apache-maven-3.2.2 /opt/maven -RUN ln -s /opt/maven/bin/mvn /usr/local/bin -RUN rm -f /tmp/apache-maven-3.2.2.tar.gz -ENV MAVEN_HOME /opt/maven - -RUN apt-get clean +FROM maven:3.3.9-jdk-8 WORKDIR /api diff --git a/API/src/main/java/app/core/controller/BooksController.java b/API/src/main/java/app/core/controller/BooksController.java index 5fe1a1d..5d92130 100644 --- a/API/src/main/java/app/core/controller/BooksController.java +++ b/API/src/main/java/app/core/controller/BooksController.java @@ -22,6 +22,12 @@ public List allBooks() { return service.getBooks(); } + @ResponseBody + @RequestMapping(value = "/category", method = RequestMethod.GET) + public List getBooksByCategory(@RequestBody Integer id) { + return service.getBooksByCategory(id); + } + @ResponseBody @RequestMapping(value = "/", method = RequestMethod.POST) public void addBook(@RequestBody Book book) { diff --git a/API/src/main/java/app/core/dao/BooksDao.java b/API/src/main/java/app/core/dao/BooksDao.java index 744debb..b0f7239 100644 --- a/API/src/main/java/app/core/dao/BooksDao.java +++ b/API/src/main/java/app/core/dao/BooksDao.java @@ -14,5 +14,6 @@ interface BooksDao { public void updateBook(Book upBook); + public List getBooksByCategory(Integer id); } diff --git a/API/src/main/java/app/core/dao/BooksDaoImpl.java b/API/src/main/java/app/core/dao/BooksDaoImpl.java index f899512..40bd314 100644 --- a/API/src/main/java/app/core/dao/BooksDaoImpl.java +++ b/API/src/main/java/app/core/dao/BooksDaoImpl.java @@ -19,6 +19,14 @@ public List getBooks() { return sessionFactory.getCurrentSession().createCriteria(Book.class).list(); } + public List getBooksByCategory(Integer id){ + List books = (List) sessionFactory.getCurrentSession().createCriteria(Book.class) + .add(eq("id", id)) + .list(); + + return books; + } + public void addBook(Book book) { sessionFactory.getCurrentSession().save(book); } diff --git a/API/src/main/java/app/core/model/Book.java b/API/src/main/java/app/core/model/Book.java index e03e43a..ecc25ee 100644 --- a/API/src/main/java/app/core/model/Book.java +++ b/API/src/main/java/app/core/model/Book.java @@ -4,6 +4,11 @@ import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; +import javax.persistence.ManyToMany; + + import static javax.persistence.GenerationType.IDENTITY; @Entity @@ -31,6 +36,7 @@ public class Book { private Categories categories; + public Book() { } @@ -44,6 +50,7 @@ public Book(String name, String author, Integer category) { this.category = category; } + public Integer getId() { return this.id; } diff --git a/API/src/main/java/app/core/model/Shop.java b/API/src/main/java/app/core/model/Shop.java index 2789f37..4e1d24b 100644 --- a/API/src/main/java/app/core/model/Shop.java +++ b/API/src/main/java/app/core/model/Shop.java @@ -2,6 +2,7 @@ import javax.persistence.*; +import java.util.ArrayList; import java.util.List; import static javax.persistence.GenerationType.IDENTITY; @@ -20,4 +21,19 @@ public class Shop { public String name; + public Integer getId() { + return this.id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/API/src/main/java/app/core/service/BookServiceImpl.java b/API/src/main/java/app/core/service/BookServiceImpl.java index 4fc5811..a0bb8ab 100644 --- a/API/src/main/java/app/core/service/BookServiceImpl.java +++ b/API/src/main/java/app/core/service/BookServiceImpl.java @@ -18,6 +18,10 @@ public List getBooks() { return dao.getBooks(); } + public List getBooksByCategory(Integer id){ + return dao.getBooksByCategory(id); + } + public void addBook(Book book) { dao.addBook(book); } diff --git a/API/src/main/resources/application.properties b/API/src/main/resources/application.properties index 3191b45..3144392 100644 --- a/API/src/main/resources/application.properties +++ b/API/src/main/resources/application.properties @@ -2,4 +2,5 @@ spring.thymeleaf.cache: false # Database + spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect \ No newline at end of file diff --git a/client/Dockerfile b/client/Dockerfile index d7eddb8..42218c0 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -1,9 +1,17 @@ FROM node:4.4 -RUN npm install -g npm angular-cli + +RUN npm install -g npm RUN mkdir /client WORKDIR /client -EXPOSE 4200 -CMD ["/bin/sh", "start.sh"] + + + + + + + + + diff --git a/client/dist/out-tsc/app/book-search/book-search.component.js b/client/dist/out-tsc/app/book-search/book-search.component.js index 3ef8767..1cb9a0e 100644 --- a/client/dist/out-tsc/app/book-search/book-search.component.js +++ b/client/dist/out-tsc/app/book-search/book-search.component.js @@ -9,7 +9,6 @@ var __metadata = (this && this.__metadata) || function (k, v) { }; import { Component } from '@angular/core'; import { Router } from '@angular/router'; -import { Observable } from 'rxjs/Observable'; import { Subject } from 'rxjs/Subject'; import { BookSearchService } from './book-search.service'; export var BookSearchComponent = (function () { @@ -18,21 +17,15 @@ export var BookSearchComponent = (function () { this.router = router; this.searchTerms = new Subject(); } - BookSearchComponent.prototype.search = function (name) { + BookSearchComponent.prototype.search = function (id) { this.searchTerms.next(name); }; - BookSearchComponent.prototype.ngOnInit = function () { + BookSearchComponent.prototype.getBooks = function () { var _this = this; - this.books = this.searchTerms - .debounceTime(300) - .distinctUntilChanged() - .switchMap(function (term) { return term - ? _this.bookSearchService.search(term) - : Observable.of([]); }) - .catch(function (error) { - console.log(error); - return Observable.of([]); - }); + this.bookSearchService.getBooks().then(function (books) { return _this.books = books; }); + }; + BookSearchComponent.prototype.ngOnInit = function () { + this.getBooks(); }; BookSearchComponent = __decorate([ Component({ diff --git a/client/dist/out-tsc/app/book-search/book-search.component.js.map b/client/dist/out-tsc/app/book-search/book-search.component.js.map index 178407d..f65377c 100644 --- a/client/dist/out-tsc/app/book-search/book-search.component.js.map +++ b/client/dist/out-tsc/app/book-search/book-search.component.js.map @@ -1 +1 @@ -{"version":3,"file":"book-search.component.js","sourceRoot":"","sources":["book-search.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAiB,iBAAiB;OAC1C,EAAC,UAAU,EAAC,MAAa,iBAAiB;OAC1C,EAAC,OAAO,EAAC,MAAgB,cAAc;OACvC,EAAC,iBAAiB,EAAC,MAAM,uBAAuB;AASvD;IAIE,6BAAoB,iBAAoC,EACpC,MAAc;QADd,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,WAAM,GAAN,MAAM,CAAQ;QAH1B,gBAAW,GAAG,IAAI,OAAO,EAAU,CAAC;IAI5C,CAAC;IAED,oCAAM,GAAN,UAAO,IAAY;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAQ,GAAR;QAAA,iBAWC;QAVC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW;aAC1B,YAAY,CAAC,GAAG,CAAC;aACjB,oBAAoB,EAAE;aACtB,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI;cACnB,KAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;cACnC,UAAU,CAAC,EAAE,CAAS,EAAE,CAAC,EAFV,CAEU,CAAC;aAC7B,KAAK,CAAC,UAAA,KAAK;YACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAS,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IA9BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,SAAS,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;;2BAAA;IA0BF,0BAAC;AAAD,CAAC,AAzBD,IAyBC"} \ No newline at end of file +{"version":3,"file":"book-search.component.js","sourceRoot":"","sources":["book-search.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAiB,iBAAiB;OAE1C,EAAC,OAAO,EAAC,MAAgB,cAAc;OACvC,EAAC,iBAAiB,EAAC,MAAM,uBAAuB;AASvD;IAKE,6BAAoB,iBAAoC,EACpC,MAAc;QADd,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,WAAM,GAAN,MAAM,CAAQ;QAH1B,gBAAW,GAAG,IAAI,OAAO,EAAU,CAAC;IAI5C,CAAC;IAED,oCAAM,GAAN,UAAO,EAAU;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IACtE,CAAC;IAED,sCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IA1BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,SAAS,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;;2BAAA;IAuBF,0BAAC;AAAD,CAAC,AAtBD,IAsBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book-search/book-search.service.js b/client/dist/out-tsc/app/book-search/book-search.service.js index 6c6fb50..239d544 100644 --- a/client/dist/out-tsc/app/book-search/book-search.service.js +++ b/client/dist/out-tsc/app/book-search/book-search.service.js @@ -8,15 +8,31 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable } from '@angular/core'; -import { Http } from '@angular/http'; +import { Http, Headers } from '@angular/http'; +import 'rxjs/add/operator/toPromise'; export var BookSearchService = (function () { function BookSearchService(http) { this.http = http; + this.categoryUrl = '/api/books/category'; + this.headers = new Headers({ 'Content-Type': 'application/json' }); } - BookSearchService.prototype.search = function (name) { - return this.http - .get("api/books?q=" + name) - .map(function (r) { return r.json(); }); + BookSearchService.prototype.getBooks = function () { + return this.http.get(this.categoryUrl) + .toPromise() + .then(function (response) { return response.json(); }) + .catch(this.handleError); + }; + BookSearchService.prototype.getBook = function (id) { + return this.getBooks() + .then(function (books) { return books.find(function (book) { return book.category === id; }); }); + }; + BookSearchService.prototype.search = function (id) { + return this.getBook(id) + .then(function (books) { return books.find(function (book) { return book.category === id; }); }); + }; + BookSearchService.prototype.handleError = function (error) { + console.error('An error occurred', error); + return Promise.reject(error.message || error); }; BookSearchService = __decorate([ Injectable(), diff --git a/client/dist/out-tsc/app/book-search/book-search.service.js.map b/client/dist/out-tsc/app/book-search/book-search.service.js.map index 11de7fa..5663bce 100644 --- a/client/dist/out-tsc/app/book-search/book-search.service.js.map +++ b/client/dist/out-tsc/app/book-search/book-search.service.js.map @@ -1 +1 @@ -{"version":3,"file":"book-search.service.js","sourceRoot":"","sources":["book-search.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAU,eAAe;OACrC,EAAC,IAAI,EAAW,MAAM,eAAe;AAI5C;IACE,2BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IAC9B,CAAC;IAED,kCAAM,GAAN,UAAO,IAAY;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,iBAAe,IAAM,CAAC;aAC1B,GAAG,CAAC,UAAC,CAAW,IAAK,OAAA,CAAC,CAAC,IAAI,EAAY,EAAlB,CAAkB,CAAC,CAAC;IAC9C,CAAC;IATH;QAAC,UAAU,EAAE;;yBAAA;IAUb,wBAAC;AAAD,CAAC,AATD,IASC"} \ No newline at end of file +{"version":3,"file":"book-search.service.js","sourceRoot":"","sources":["book-search.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAU,eAAe;OACrC,EAAC,IAAI,EAAY,OAAO,EAAC,MAAM,eAAe;OAI9C,6BAA6B;AAKpC;IAOE,2BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,gBAAW,GAAG,qBAAqB,CAAC;QACpC,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAGD,oCAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,mCAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,KAAK,EAAE,EAApB,CAAoB,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7D,CAAC;IAED,kCAAM,GAAN,UAAO,EAAU;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;aACpB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,KAAK,EAAE,EAApB,CAAoB,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7D,CAAC;IAEO,uCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAjCH;QAAC,UAAU,EAAE;;yBAAA;IAkCb,wBAAC;AAAD,CAAC,AAjCD,IAiCC"} \ No newline at end of file diff --git a/client/proxy.config.json b/client/proxy.config.json index 8510743..6a1154f 100644 --- a/client/proxy.config.json +++ b/client/proxy.config.json @@ -1,6 +1,6 @@ { "/api": { - "target": "http://localhost:8080", + "target": "http://api:8080", "secure": false } -} \ No newline at end of file +} diff --git a/client/src/app/book-search/book-search.component.html b/client/src/app/book-search/book-search.component.html index 449d337..6c5a081 100644 --- a/client/src/app/book-search/book-search.component.html +++ b/client/src/app/book-search/book-search.component.html @@ -2,7 +2,7 @@

Books Search

- +
diff --git a/client/src/app/book-search/book-search.component.ts b/client/src/app/book-search/book-search.component.ts index 21ac6c3..a93101c 100644 --- a/client/src/app/book-search/book-search.component.ts +++ b/client/src/app/book-search/book-search.component.ts @@ -12,28 +12,25 @@ import {Book} from '../book'; providers: [BookSearchService] }) export class BookSearchComponent implements OnInit { - books: Observable; + books: Book[]; + private searchTerms = new Subject(); constructor(private bookSearchService: BookSearchService, private router: Router) { } - search(name: string): void { + search(id: number): void { this.searchTerms.next(name); } + getBooks(): void { + this.bookSearchService.getBooks().then(books => this.books = books); + } + ngOnInit(): void { - this.books = this.searchTerms - .debounceTime(300) - .distinctUntilChanged() - .switchMap(term => term - ? this.bookSearchService.search(term) - : Observable.of([])) - .catch(error => { - console.log(error); - return Observable.of([]); - }); + this.getBooks(); } + } diff --git a/client/src/app/book-search/book-search.service.ts b/client/src/app/book-search/book-search.service.ts index 717598a..99e4d85 100644 --- a/client/src/app/book-search/book-search.service.ts +++ b/client/src/app/book-search/book-search.service.ts @@ -1,15 +1,44 @@ import {Injectable} from '@angular/core'; -import {Http, Response} from '@angular/http'; +import {Http, Response, Headers} from '@angular/http'; import {Observable} from 'rxjs'; import {Book} from '../book'; + +import 'rxjs/add/operator/toPromise'; + +import {Category} from '../categories'; + @Injectable() export class BookSearchService { + + category: Category; + + private categoryUrl = '/api/books/category'; + private headers = new Headers({'Content-Type': 'application/json'}); + constructor(private http: Http) { } - search(name: string): Observable { - return this.http - .get(`api/books?q=${name}`) - .map((r: Response) => r.json() as Book[]); + + getBooks(): Promise { + return this.http.get(this.categoryUrl) + .toPromise() + .then(response => response.json() as Book[]) + .catch(this.handleError); + + } + + getBook(id: number): Promise { + return this.getBooks() + .then(books => books.find(book => book.category === id)); + } + + search(id: number): Promise { + return this.getBook(id) + .then(books => books.find(book => book.category === id)); + } + + private handleError(error: any): Promise { + console.error('An error occurred', error); + return Promise.reject(error.message || error); } } diff --git a/client/src/app/shop.service.js b/client/src/app/shop.service.js new file mode 100644 index 0000000..ea10302 --- /dev/null +++ b/client/src/app/shop.service.js @@ -0,0 +1,32 @@ +use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var core_1 = require('@angular/core'); +var http_1 = require('@angular/http'); +require('rxjs/add/operator/toPromise'); +var ShopService = (function () { + function ShopService(http) { + this.http = http; + this.shopUrl = '/api/shops/'; + this.headers = new http_1.Headers({ 'Content-Type': 'application/json' }); + } + ShopService.prototype.getShops = function () { + return this.http.get(this.shopUrl) + .toPromise() + .then(function (response) { return response.json(); }) + .catch(this.handleError); + }; + ShopService.prototype.handleError = function (error) { + console.error('An error occurred', error); + return Promise.reject(error.message || error); + }; + ShopService = __decorate([ + core_1.Injectable() + ], ShopService); + return ShopService; +}()); +exports.ShopService = ShopService; diff --git a/client/start.sh b/client/start.sh index 2603b0c..5edcf82 100644 --- a/client/start.sh +++ b/client/start.sh @@ -1,4 +1,3 @@ #!/usr/bin/env bash -npm install npm start diff --git a/db/Dockerfile b/db/Dockerfile index 58ddb37..ea8d439 100644 --- a/db/Dockerfile +++ b/db/Dockerfile @@ -1,6 +1,4 @@ FROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD zabudska1985 -ENV MYSQL_DATABASE Library - -EXPOSE 3306 +ENV MYSQL_DATABASE Library \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7390b9b..da08275 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,5 @@ db: build: ./db - ports: - - "3307:3306" api: build: ./API @@ -19,5 +17,6 @@ client: - "44200:4200" volumes: - ./client:/client + command: /bin/sh /client/start.sh links: - api \ No newline at end of file From 859003a9332b1f70ae6345471105ab1966d4982a Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Fri, 9 Dec 2016 19:49:50 +0200 Subject: [PATCH 05/20] Add show categories --- client/dist/out-tsc/app/book.service.js | 5 +++++ client/dist/out-tsc/app/book.service.js.map | 2 +- client/dist/out-tsc/app/book/book.component.js.map | 2 +- .../out-tsc/app/categories/categories.component.js | 9 +++++++-- .../app/categories/categories.component.js.map | 2 +- client/src/app/app.component.html | 1 + client/src/app/book-search/book-search.component.ts | 2 +- client/src/app/book.service.ts | 7 +++++++ client/src/app/book/book.component.html | 2 ++ client/src/app/book/book.component.ts | 1 + client/src/app/categories/categories.component.css | 6 ++++++ client/src/app/categories/categories.component.html | 8 ++++---- client/src/app/categories/categories.component.ts | 12 +++++++++++- client/src/styles.css | 13 +++++++++++-- docker-compose.yml | 2 ++ 15 files changed, 61 insertions(+), 13 deletions(-) diff --git a/client/dist/out-tsc/app/book.service.js b/client/dist/out-tsc/app/book.service.js index 48457b7..f886d30 100644 --- a/client/dist/out-tsc/app/book.service.js +++ b/client/dist/out-tsc/app/book.service.js @@ -26,6 +26,11 @@ export var BookService = (function () { return this.getBooks() .then(function (books) { return books.find(function (book) { return book.id === id; }); }); }; + BookService.prototype.getBooksByCategory = function (id) { + alert(id); + return this.getBooks() + .then(function (books) { return books.find(function (book) { return book.category === id; }); }); + }; BookService.prototype.create = function (book) { return this.http .post(this.bookUrl, JSON.stringify(book), { headers: this.headers }) diff --git a/client/dist/out-tsc/app/book.service.js.map b/client/dist/out-tsc/app/book.service.js.map index 61b0d60..dc072a0 100644 --- a/client/dist/out-tsc/app/book.service.js.map +++ b/client/dist/out-tsc/app/book.service.js.map @@ -1 +1 @@ -{"version":3,"file":"book.service.js","sourceRoot":"","sources":["book.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAGD,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,6BAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACvD,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aACjE,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAChE,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,EAAU;QACf,IAAM,GAAG,GAAM,IAAI,CAAC,OAAO,SAAI,EAAI,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAClD,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAjDH;QAAC,UAAU,EAAE;;mBAAA;IAkDb,kBAAC;AAAD,CAAC,AAjDD,IAiDC"} \ No newline at end of file +{"version":3,"file":"book.service.js","sourceRoot":"","sources":["book.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAGD,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,6BAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACvD,CAAC;IAED,wCAAkB,GAAlB,UAAmB,EAAU;QAC3B,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,KAAK,EAAE,EAApB,CAAoB,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7D,CAAC;IAGD,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aACjE,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAChE,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,EAAU;QACf,IAAM,GAAG,GAAM,IAAI,CAAC,OAAO,SAAI,EAAI,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAClD,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAxDH;QAAC,UAAU,EAAE;;mBAAA;IAyDb,kBAAC;AAAD,CAAC,AAxDD,IAwDC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book/book.component.js.map b/client/dist/out-tsc/app/book/book.component.js.map index bb62306..3bbcf42 100644 --- a/client/dist/out-tsc/app/book/book.component.js.map +++ b/client/dist/out-tsc/app/book/book.component.js.map @@ -1 +1 @@ -{"version":3,"file":"book.component.js","sourceRoot":"","sources":["book.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,WAAW,EAAC,MAAM,iBAAiB;AAQ3C;IAKE,uBAAoB,MAAc,EACd,WAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IAChE,CAAC;IAED,gCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,2BAAG,GAAH,UAAI,IAAU;QAAd,iBAMC;QALC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,UAAA,IAAI;YACR,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8BAAM,GAAN,UAAO,IAAU;QAAjB,iBAMC;QALC,IAAI,CAAC,WAAW;aACb,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,IAAI,CAAC;YACJ,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IA7CH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;;qBAAA;IA2CF,oBAAC;AAAD,CAAC,AA1CD,IA0CC"} \ No newline at end of file +{"version":3,"file":"book.component.js","sourceRoot":"","sources":["book.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,WAAW,EAAC,MAAM,iBAAiB;AAQ3C;IAKE,uBAAoB,MAAc,EACd,WAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IAChE,CAAC;IAGD,gCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,2BAAG,GAAH,UAAI,IAAU;QAAd,iBAMC;QALC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,UAAA,IAAI;YACR,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8BAAM,GAAN,UAAO,IAAU;QAAjB,iBAMC;QALC,IAAI,CAAC,WAAW;aACb,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,IAAI,CAAC;YACJ,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IA9CH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;;qBAAA;IA4CF,oBAAC;AAAD,CAAC,AA3CD,IA2CC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/categories/categories.component.js b/client/dist/out-tsc/app/categories/categories.component.js index 4b3177a..7d67a23 100644 --- a/client/dist/out-tsc/app/categories/categories.component.js +++ b/client/dist/out-tsc/app/categories/categories.component.js @@ -9,12 +9,17 @@ var __metadata = (this && this.__metadata) || function (k, v) { }; import { Component } from '@angular/core'; import { Router } from '@angular/router'; +import { BookService } from '../book.service'; import { CategoryService } from './categories.service'; export var CategoryComponent = (function () { - function CategoryComponent(router, categoryService) { + function CategoryComponent(router, categoryService, bookService) { this.router = router; this.categoryService = categoryService; + this.bookService = bookService; } + CategoryComponent.prototype.getBooksByCategory = function (id) { + this.bookService.getBooksByCategory(id); + }; CategoryComponent.prototype.getCategories = function () { var _this = this; this.categoryService.getCategories().then(function (categories) { return _this.categories = categories; }); @@ -29,7 +34,7 @@ export var CategoryComponent = (function () { templateUrl: 'categories.component.html', styleUrls: ['categories.component.css'] }), - __metadata('design:paramtypes', [Router, CategoryService]) + __metadata('design:paramtypes', [Router, CategoryService, BookService]) ], CategoryComponent); return CategoryComponent; }()); diff --git a/client/dist/out-tsc/app/categories/categories.component.js.map b/client/dist/out-tsc/app/categories/categories.component.js.map index f734c77..73ea16c 100644 --- a/client/dist/out-tsc/app/categories/categories.component.js.map +++ b/client/dist/out-tsc/app/categories/categories.component.js.map @@ -1 +1 @@ -{"version":3,"file":"categories.component.js","sourceRoot":"","sources":["categories.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAE/B,EAAC,eAAe,EAAC,MAAM,sBAAsB;AASpD;IAIE,2BAAoB,MAAc,EACd,eAAgC;QADhC,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAiB;IACpD,CAAC;IAED,yCAAa,GAAb;QAAA,iBAEC;QADC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B,CAAC,CAAC;IACxF,CAAC;IAED,oCAAQ,GAAR;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IApBH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,2BAA2B;YACxC,SAAS,EAAE,CAAC,0BAA0B,CAAC;SACxC,CAAC;;yBAAA;IAiBF,wBAAC;AAAD,CAAC,AAhBD,IAgBC"} \ No newline at end of file +{"version":3,"file":"categories.component.js","sourceRoot":"","sources":["categories.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAE/B,EAAE,WAAW,EAAE,MAAM,iBAAiB;OACtC,EAAC,eAAe,EAAC,MAAM,sBAAsB;AAUpD;IAKE,2BAAoB,MAAc,EACd,eAAgC,EAChC,WAAwB;QAFxB,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;IAE5C,CAAC;IAED,8CAAkB,GAAlB,UAAmB,EAAU;QAC3B,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE1C,CAAC;IAED,yCAAa,GAAb;QAAA,iBAEC;QADC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B,CAAC,CAAC;IACxF,CAAC;IAED,oCAAQ,GAAR;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IA5BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,2BAA2B;YACxC,SAAS,EAAE,CAAC,0BAA0B,CAAC;SACxC,CAAC;;yBAAA;IAyBF,wBAAC;AAAD,CAAC,AAxBD,IAwBC"} \ No newline at end of file diff --git a/client/src/app/app.component.html b/client/src/app/app.component.html index 81507d4..b84b0c9 100644 --- a/client/src/app/app.component.html +++ b/client/src/app/app.component.html @@ -1,5 +1,6 @@

{{title}}

diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index c6389b6..f19ba35 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -9,6 +9,7 @@ import {BookSearchService} from './book-search/book-search.service' import {BookSearchComponent} from './book-search/book-search.component' import {ShopService} from './shop/shop.service' import {ShopComponent} from './shop/shop.component' +import {AddBookComponent} from './add-book/add-book.component' import {CategoryComponent} from './categories/categories.component'; import {CategoryService} from './categories/categories.service'; @@ -28,6 +29,7 @@ import './rxjs-extensions'; declarations: [ AppComponent, BookComponent, + AddBookComponent, BooksDetailComponent, BookSearchComponent, ShopComponent, diff --git a/client/src/app/book.service.ts b/client/src/app/book.service.ts index 841514f..2b305d0 100644 --- a/client/src/app/book.service.ts +++ b/client/src/app/book.service.ts @@ -28,15 +28,13 @@ export class BookService { } getBooksByCategory(id: number): Promise { - alert(id); return this.getBooks() .then(books => books.find(book => book.category === id)); } - - create(book: Book): Promise { + create(bookName : string, author : string, category: number): Promise { return this.http - .post(this.bookUrl, JSON.stringify(book), {headers: this.headers}) + .post(this.bookUrl, JSON.stringify({name: bookName, author: author, category: category}), {headers: this.headers}) .toPromise() .then(res => res.json()) .catch(this.handleError); diff --git a/client/src/app/book.ts b/client/src/app/book.ts index a732092..de635cb 100644 --- a/client/src/app/book.ts +++ b/client/src/app/book.ts @@ -1,6 +1,6 @@ export class Book { id: number; name: string; - author: boolean; + author: string; category: number; } diff --git a/client/src/app/book/book.component.html b/client/src/app/book/book.component.html index 0ce4910..a3ab8d3 100644 --- a/client/src/app/book/book.component.html +++ b/client/src/app/book/book.component.html @@ -1,11 +1,12 @@

My Books

-
    -
  • - - {{book.author}} | - {{book.name}} - -
  • +
      +
    • + {{book.author}} | + {{book.name}} + +
    + diff --git a/client/src/app/book/book.component.ts b/client/src/app/book/book.component.ts index 804c002..318bc64 100644 --- a/client/src/app/book/book.component.ts +++ b/client/src/app/book/book.component.ts @@ -28,17 +28,9 @@ export class BookComponent implements OnInit { this.getBooks(); } - onSelect(book: Book): void { - this.selectedBook = book; - } - - add(book: Book): void { - alert(book); - this.bookService.create(book) - .then(book => { - this.books.push(book); - }); - } + onSelect(book: Book): void { + this.selectedBook = book; + } delete(book: Book): void { this.bookService From 7d4cd929d2061d4120611e03becdce8ce66fb116 Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Tue, 13 Dec 2016 14:39:40 +0200 Subject: [PATCH 07/20] Add new abilities. Fix ability to add books. Add filter for search. Change styles. --- .../app/core/controller/BooksController.java | 6 ---- .../core/controller/CategoriesController.java | 1 + .../java/app/core/dao/CategoriesDaoImpl.java | 3 +- API/src/main/java/app/core/model/Book.java | 16 +++++++++ .../main/java/app/core/model/Categories.java | 2 +- API/src/main/java/app/core/model/Shop.java | 11 ++++++ client/dist/out-tsc/app/app-routing.module.js | 4 ++- .../out-tsc/app/app-routing.module.js.map | 2 +- client/dist/out-tsc/app/app.component.js | 3 +- client/dist/out-tsc/app/app.component.js.map | 2 +- client/dist/out-tsc/app/app.module.js | 2 ++ client/dist/out-tsc/app/app.module.js.map | 2 +- .../book-details/book-details.component.js | 1 - .../book-details.component.js.map | 2 +- .../app/book-search/book-search.component.js | 9 ++--- .../book-search/book-search.component.js.map | 2 +- .../app/book-search/book-search.service.js | 11 +----- .../book-search/book-search.service.js.map | 2 +- client/dist/out-tsc/app/book.service.js | 6 +--- client/dist/out-tsc/app/book.service.js.map | 2 +- .../dist/out-tsc/app/book/book.component.js | 4 --- .../out-tsc/app/book/book.component.js.map | 2 +- client/dist/out-tsc/app/categories.js.map | 2 +- .../app/categories/categories.component.js | 14 ++++---- .../categories/categories.component.js.map | 2 +- .../app/categories/categories.service.js | 7 ++-- .../app/categories/categories.service.js.map | 2 +- .../dist/out-tsc/app/shop/shop.component.js | 1 - .../out-tsc/app/shop/shop.component.js.map | 2 +- .../dist/out-tsc/app/shop/shop.service.js.map | 2 +- .../src/app/add-book/add-book.component.html | 9 ++--- client/src/app/add-book/add-book.component.ts | 20 +++++++++-- client/src/app/app-routing.module.ts | 4 ++- client/src/app/app.component.css | 20 +++++++++++ client/src/app/app.component.html | 12 +++++-- client/src/app/app.component.ts | 4 +-- client/src/app/app.module.ts | 3 +- .../book-details/book-details.component.css | 3 ++ .../book-details/book-details.component.ts | 1 - .../book-search/book-search.component.html | 2 -- .../app/book-search/book-search.component.ts | 8 ++--- .../app/book-search/book-search.service.ts | 12 ------- client/src/app/book.service.ts | 8 +---- client/src/app/book/book.component.css | 7 ++++ client/src/app/book/book.component.html | 5 +-- client/src/app/book/book.component.ts | 7 ---- .../books-category.component.css | 0 .../books-category.component.html | 11 ++++++ .../books-category.component.ts | 34 +++++++++++++++++++ client/src/app/categories.ts | 3 ++ .../app/categories/categories.component.css | 18 +++++++--- .../app/categories/categories.component.html | 8 +++-- .../app/categories/categories.component.ts | 11 +++--- .../src/app/categories/categories.service.ts | 7 +++- client/src/app/shop/shop.component.ts | 1 - client/src/app/shop/shop.service.ts | 2 -- client/src/styles.css | 11 +++--- 57 files changed, 226 insertions(+), 132 deletions(-) create mode 100644 client/src/app/books-category/books-category.component.css create mode 100644 client/src/app/books-category/books-category.component.html create mode 100644 client/src/app/books-category/books-category.component.ts diff --git a/API/src/main/java/app/core/controller/BooksController.java b/API/src/main/java/app/core/controller/BooksController.java index 861f339..7334202 100644 --- a/API/src/main/java/app/core/controller/BooksController.java +++ b/API/src/main/java/app/core/controller/BooksController.java @@ -22,12 +22,6 @@ public List allBooks() { return service.getBooks(); } - @ResponseBody - @RequestMapping(value = "/category", method = RequestMethod.GET) - public List getBooksByCategory(@RequestBody Integer id) { - return service.getBooksByCategory(id); - } - @ResponseBody @RequestMapping(value = "", method = RequestMethod.POST) public Book addBook(@RequestBody Book book) { diff --git a/API/src/main/java/app/core/controller/CategoriesController.java b/API/src/main/java/app/core/controller/CategoriesController.java index 31a56d2..1fbb9ab 100644 --- a/API/src/main/java/app/core/controller/CategoriesController.java +++ b/API/src/main/java/app/core/controller/CategoriesController.java @@ -1,5 +1,6 @@ package app.core.controller; +import app.core.model.Book; import app.core.model.Categories; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/API/src/main/java/app/core/dao/CategoriesDaoImpl.java b/API/src/main/java/app/core/dao/CategoriesDaoImpl.java index a8c4d6a..d56c0fe 100644 --- a/API/src/main/java/app/core/dao/CategoriesDaoImpl.java +++ b/API/src/main/java/app/core/dao/CategoriesDaoImpl.java @@ -1,6 +1,7 @@ package app.core.dao; import app.core.model.Categories; +import org.hibernate.Criteria; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -14,6 +15,6 @@ public class CategoriesDaoImpl implements CategoriesDao { SessionFactory sessionFactory; public List getCategories() { - return sessionFactory.getCurrentSession().createCriteria(Categories.class).list(); + return sessionFactory.getCurrentSession().createCriteria(Categories.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); } } diff --git a/API/src/main/java/app/core/model/Book.java b/API/src/main/java/app/core/model/Book.java index 34ddcec..dd65323 100644 --- a/API/src/main/java/app/core/model/Book.java +++ b/API/src/main/java/app/core/model/Book.java @@ -35,6 +35,22 @@ public class Book { @JoinColumn(name = "category", insertable = false, updatable = false) private Categories categories; +// @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) +// @JoinTable(name = "book_shops", catalog = "Library", +// joinColumns = { +// @JoinColumn( name = "idBook", referencedColumnName = "id") +// }, +// inverseJoinColumns = {@JoinColumn(name = "idShop", referencedColumnName = "id" )}) +// public List shops = new ArrayList(); +// +// public List getShops() { +// return this.shops; +// } +// +// public void setShops(List shops) { +// this.shops = shops; +// } + public Book() { } diff --git a/API/src/main/java/app/core/model/Categories.java b/API/src/main/java/app/core/model/Categories.java index 7bf8235..ca08590 100644 --- a/API/src/main/java/app/core/model/Categories.java +++ b/API/src/main/java/app/core/model/Categories.java @@ -20,7 +20,7 @@ public class Categories { public String name; @JsonIgnore - @OneToMany(fetch = FetchType.LAZY, mappedBy = "categories") + @OneToMany(fetch = FetchType.EAGER, mappedBy = "categories") @Cascade({org.hibernate.annotations.CascadeType.DELETE}) public List books = new ArrayList(); diff --git a/API/src/main/java/app/core/model/Shop.java b/API/src/main/java/app/core/model/Shop.java index 4e1d24b..0eff7c1 100644 --- a/API/src/main/java/app/core/model/Shop.java +++ b/API/src/main/java/app/core/model/Shop.java @@ -2,6 +2,7 @@ import javax.persistence.*; +import java.awt.print.*; import java.util.ArrayList; import java.util.List; @@ -20,6 +21,16 @@ public class Shop { @Column(name = "name") public String name; +// @ManyToMany(fetch = FetchType.LAZY, mappedBy = "shops") +// private List books; + +// public void setBooks(List books) { +// this.books = books; +// } +// +// public List getBooks() { +// return this.books; +// } public Integer getId() { return this.id; diff --git a/client/dist/out-tsc/app/app-routing.module.js b/client/dist/out-tsc/app/app-routing.module.js index 60c3fa7..04df3c8 100644 --- a/client/dist/out-tsc/app/app-routing.module.js +++ b/client/dist/out-tsc/app/app-routing.module.js @@ -14,6 +14,7 @@ import { BooksDetailComponent } from './book-details/book-details.component'; import { BookSearchComponent } from './book-search/book-search.component'; import { AddBookComponent } from './add-book/add-book.component'; import { ShopComponent } from './shop/shop.component'; +import { BooksCategoryComponent } from './books-category/books-category.component'; import { CategoryComponent } from './categories/categories.component'; var routes = [ { path: '', redirectTo: '/books', pathMatch: 'full' }, @@ -22,7 +23,8 @@ var routes = [ { path: 'detail/:id', component: BooksDetailComponent }, { path: 'books/new', component: AddBookComponent }, { path: 'shop', component: ShopComponent }, - { path: 'categories', component: CategoryComponent } + { path: 'categories', component: CategoryComponent }, + { path: 'categories/:id', component: BooksCategoryComponent } ]; export var AppRoutingModule = (function () { function AppRoutingModule() { diff --git a/client/dist/out-tsc/app/app-routing.module.js.map b/client/dist/out-tsc/app/app-routing.module.js.map index b45d184..9747c39 100644 --- a/client/dist/out-tsc/app/app-routing.module.js.map +++ b/client/dist/out-tsc/app/app-routing.module.js.map @@ -1 +1 @@ -{"version":3,"file":"app-routing.module.js","sourceRoot":"","sources":["app-routing.module.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,QAAQ,EAAC,MAAkB,eAAe;OAC3C,EAAC,YAAY,EAAS,MAAM,iBAAiB;OAC7C,EAAC,aAAa,EAAC,MAAQ,uBAAuB;OAC9C,EAAC,oBAAoB,EAAC,MAAQ,uCAAuC;OACrE,EAAC,mBAAmB,EAAC,MAAS,qCAAqC;OACnE,EAAC,gBAAgB,EAAC,MAAS,+BAA+B;OAC1D,EAAC,aAAa,EAAC,MAAS,uBAAuB;OAC/C,EAAC,iBAAiB,EAAC,MAAS,mCAAmC;AAEtE,IAAM,MAAM,GAAW;IACrB,EAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC;IACnD,EAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAC;IACzC,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAC;IAChD,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAC;IACrD,EAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAC;IAChD,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAC;IACxC,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAC;CACnD,CAAC;AAKF;IAAA;IACA,CAAC;IALD;QAAC,QAAQ,CAAC;YACR,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,YAAY,CAAC;SACxB,CAAC;;wBAAA;IAEF,uBAAC;AAAD,CAAC,AADD,IACC"} \ No newline at end of file +{"version":3,"file":"app-routing.module.js","sourceRoot":"","sources":["app-routing.module.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,QAAQ,EAAC,MAAkB,eAAe;OAC3C,EAAC,YAAY,EAAS,MAAM,iBAAiB;OAC7C,EAAC,aAAa,EAAC,MAAQ,uBAAuB;OAC9C,EAAC,oBAAoB,EAAC,MAAQ,uCAAuC;OACrE,EAAC,mBAAmB,EAAC,MAAS,qCAAqC;OACnE,EAAC,gBAAgB,EAAC,MAAS,+BAA+B;OAC1D,EAAC,aAAa,EAAC,MAAS,uBAAuB;OAC/C,EAAC,sBAAsB,EAAC,MAAS,2CAA2C;OAC5E,EAAC,iBAAiB,EAAC,MAAS,mCAAmC;AAEtE,IAAM,MAAM,GAAW;IACrB,EAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC;IACnD,EAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAC;IACzC,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAC;IAChD,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAC;IACrD,EAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAC;IAChD,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAC;IACxC,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAC;IAClD,EAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAC;CAC5D,CAAC;AAKF;IAAA;IACA,CAAC;IALD;QAAC,QAAQ,CAAC;YACR,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,YAAY,CAAC;SACxB,CAAC;;wBAAA;IAEF,uBAAC;AAAD,CAAC,AADD,IACC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/app.component.js b/client/dist/out-tsc/app/app.component.js index 4801a65..8028f49 100644 --- a/client/dist/out-tsc/app/app.component.js +++ b/client/dist/out-tsc/app/app.component.js @@ -10,11 +10,10 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { Component } from '@angular/core'; export var AppComponent = (function () { function AppComponent() { - this.title = 'All books'; + this.title = 'Search me'; } AppComponent = __decorate([ Component({ - moduleId: module.id.toString(), selector: 'my-app', templateUrl: 'app.component.html', styleUrls: ['app.component.css'], diff --git a/client/dist/out-tsc/app/app.component.js.map b/client/dist/out-tsc/app/app.component.js.map index bb2547c..a75cb73 100644 --- a/client/dist/out-tsc/app/app.component.js.map +++ b/client/dist/out-tsc/app/app.component.js.map @@ -1 +1 @@ -{"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAC,MAAM,eAAe;AAQvC;IAAA;QACE,UAAK,GAAG,WAAW,CAAC;IAEtB,CAAC;IATD;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;;oBAAA;IAIF,mBAAC;AAAD,CAAC,AAHD,IAGC"} \ No newline at end of file +{"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAC,MAAM,eAAe;AAOvC;IAAA;QACE,UAAK,GAAG,WAAW,CAAC;IACtB,CAAC;IAPD;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;;oBAAA;IAGF,mBAAC;AAAD,CAAC,AAFD,IAEC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/app.module.js b/client/dist/out-tsc/app/app.module.js index 05ca9be..d550ba9 100644 --- a/client/dist/out-tsc/app/app.module.js +++ b/client/dist/out-tsc/app/app.module.js @@ -21,6 +21,7 @@ import { ShopComponent } from './shop/shop.component'; import { AddBookComponent } from './add-book/add-book.component'; import { CategoryComponent } from './categories/categories.component'; import { CategoryService } from './categories/categories.service'; +import { BooksCategoryComponent } from './books-category/books-category.component'; import { HttpModule } from '@angular/http'; import { AppRoutingModule } from './app-routing.module'; import './rxjs-extensions'; @@ -42,6 +43,7 @@ export var AppModule = (function () { BooksDetailComponent, BookSearchComponent, ShopComponent, + BooksCategoryComponent, CategoryComponent ], providers: [ diff --git a/client/dist/out-tsc/app/app.module.js.map b/client/dist/out-tsc/app/app.module.js.map index b499cb7..820999f 100644 --- a/client/dist/out-tsc/app/app.module.js.map +++ b/client/dist/out-tsc/app/app.module.js.map @@ -1 +1 @@ -{"version":3,"file":"app.module.js","sourceRoot":"","sources":["app.module.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,QAAQ,EAAC,MAAY,eAAe;OACrC,EAAC,aAAa,EAAC,MAAO,2BAA2B;OACjD,EAAC,WAAW,EAAC,MAAS,gBAAgB;OACtC,EAAC,YAAY,EAAC,MAAa,iBAAiB;OAC5C,EAAC,aAAa,EAAC,MAAO,uBAAuB;OAC7C,EAAC,oBAAoB,EAAC,MAAO,uCAAuC;OACpE,EAAC,WAAW,EAAC,MAAe,gBAAgB;OAC5C,EAAC,iBAAiB,EAAC,MAAU,mCAAmC;OAChE,EAAC,mBAAmB,EAAC,MAAU,qCAAqC;OACpE,EAAC,WAAW,EAAC,MAAU,qBAAqB;OAC5C,EAAC,aAAa,EAAC,MAAU,uBAAuB;OAChD,EAAC,gBAAgB,EAAC,MAAU,+BAA+B;OAC3D,EAAC,iBAAiB,EAAC,MAAO,mCAAmC;OAC5D,EAAC,eAAe,EAAC,MAAQ,iCAAiC;OAG3D,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,gBAAgB,EAAC,MAAM,sBAAsB;OAC9C,mBAAmB;AA2B1B;IAAA;IACA,CAAC;IA1BD;QAAC,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,gBAAgB;aACjB;YAED,YAAY,EAAE;gBACZ,YAAY;gBACZ,aAAa;gBACb,gBAAgB;gBAChB,oBAAoB;gBACpB,mBAAmB;gBACnB,aAAa;gBACb,iBAAiB;aAClB;YACD,SAAS,EAAE;gBACT,WAAW;gBACX,iBAAiB;gBACjB,WAAW;gBACX,eAAe;aAChB;YACD,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;;iBAAA;IAEF,gBAAC;AAAD,CAAC,AADD,IACC"} \ No newline at end of file +{"version":3,"file":"app.module.js","sourceRoot":"","sources":["app.module.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,QAAQ,EAAC,MAAY,eAAe;OACrC,EAAC,aAAa,EAAC,MAAO,2BAA2B;OACjD,EAAC,WAAW,EAAC,MAAS,gBAAgB;OACtC,EAAC,YAAY,EAAC,MAAa,iBAAiB;OAC5C,EAAC,aAAa,EAAC,MAAO,uBAAuB;OAC7C,EAAC,oBAAoB,EAAC,MAAO,uCAAuC;OACpE,EAAC,WAAW,EAAC,MAAe,gBAAgB;OAC5C,EAAC,iBAAiB,EAAC,MAAU,mCAAmC;OAChE,EAAC,mBAAmB,EAAC,MAAU,qCAAqC;OACpE,EAAC,WAAW,EAAC,MAAU,qBAAqB;OAC5C,EAAC,aAAa,EAAC,MAAU,uBAAuB;OAChD,EAAC,gBAAgB,EAAC,MAAU,+BAA+B;OAC3D,EAAC,iBAAiB,EAAC,MAAO,mCAAmC;OAC5D,EAAC,eAAe,EAAC,MAAQ,iCAAiC;OAC1D,EAAC,sBAAsB,EAAC,MAAQ,2CAA2C;OAE5E,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,gBAAgB,EAAC,MAAM,sBAAsB;OAC9C,mBAAmB;AA4B1B;IAAA;IACA,CAAC;IA3BD;QAAC,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,gBAAgB;aACjB;YAED,YAAY,EAAE;gBACZ,YAAY;gBACZ,aAAa;gBACb,gBAAgB;gBAChB,oBAAoB;gBACpB,mBAAmB;gBACnB,aAAa;gBACb,sBAAsB;gBACtB,iBAAiB;aAClB;YACD,SAAS,EAAE;gBACT,WAAW;gBACX,iBAAiB;gBACjB,WAAW;gBACX,eAAe;aAChB;YACD,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;;iBAAA;IAEF,gBAAC;AAAD,CAAC,AADD,IACC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book-details/book-details.component.js b/client/dist/out-tsc/app/book-details/book-details.component.js index dc1086f..a83b381 100644 --- a/client/dist/out-tsc/app/book-details/book-details.component.js +++ b/client/dist/out-tsc/app/book-details/book-details.component.js @@ -34,7 +34,6 @@ export var BooksDetailComponent = (function () { }; BooksDetailComponent = __decorate([ Component({ - moduleId: module.id.toString(), selector: 'book-detail', templateUrl: 'book-details.component.html', styleUrls: ['book-details.component.css'] diff --git a/client/dist/out-tsc/app/book-details/book-details.component.js.map b/client/dist/out-tsc/app/book-details/book-details.component.js.map index 453ba35..15fa921 100644 --- a/client/dist/out-tsc/app/book-details/book-details.component.js.map +++ b/client/dist/out-tsc/app/book-details/book-details.component.js.map @@ -1 +1 @@ -{"version":3,"file":"book-details.component.js","sourceRoot":"","sources":["book-details.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,6BAA6B;OAC7B,EAAE,SAAS,EAAU,MAAW,eAAe;OAC/C,EAAE,cAAc,EAAU,MAAM,iBAAiB;OACjD,EAAE,QAAQ,EAAE,MAAoB,iBAAiB;OAGjD,EAAE,WAAW,EAAE,MAAO,iBAAiB;AAO9C;IAGE,8BACU,WAAwB,EACxB,KAAqB,EACrB,QAAkB;QAFlB,gBAAW,GAAX,WAAW,CAAa;QACxB,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;IACzB,CAAC;IAEJ,uCAAQ,GAAR;QAAA,iBAIC;QAHC,IAAI,CAAC,KAAK,CAAC,MAAM;aACd,SAAS,CAAC,UAAC,MAAc,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAvC,CAAuC,CAAC;aACtE,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,EAAhB,CAAgB,CAAC,CAAC;IACzC,CAAC;IAEA,mCAAI,GAAJ;QAAA,iBAGC;QAFC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aAC/B,IAAI,CAAC,UAAA,WAAW,IAAI,OAAA,KAAI,CAAC,MAAM,EAAE,EAAb,CAAa,CAAC,CAAC;IACxC,CAAC;IAEF,qCAAM,GAAN;QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IA5BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,6BAA6B;YAC1C,SAAS,EAAE,CAAC,4BAA4B,CAAC;SAC1C,CAAC;;4BAAA;IAwBF,2BAAC;AAAD,CAAC,AAvBD,IAuBC"} \ No newline at end of file +{"version":3,"file":"book-details.component.js","sourceRoot":"","sources":["book-details.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,6BAA6B;OAC7B,EAAE,SAAS,EAAU,MAAW,eAAe;OAC/C,EAAE,cAAc,EAAU,MAAM,iBAAiB;OACjD,EAAE,QAAQ,EAAE,MAAoB,iBAAiB;OAGjD,EAAE,WAAW,EAAE,MAAO,iBAAiB;AAM9C;IAGE,8BACU,WAAwB,EACxB,KAAqB,EACrB,QAAkB;QAFlB,gBAAW,GAAX,WAAW,CAAa;QACxB,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;IACzB,CAAC;IAEJ,uCAAQ,GAAR;QAAA,iBAIC;QAHC,IAAI,CAAC,KAAK,CAAC,MAAM;aACd,SAAS,CAAC,UAAC,MAAc,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAvC,CAAuC,CAAC;aACtE,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,EAAhB,CAAgB,CAAC,CAAC;IACzC,CAAC;IAEA,mCAAI,GAAJ;QAAA,iBAGC;QAFC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aAC/B,IAAI,CAAC,UAAA,WAAW,IAAI,OAAA,KAAI,CAAC,MAAM,EAAE,EAAb,CAAa,CAAC,CAAC;IACxC,CAAC;IAEF,qCAAM,GAAN;QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IA3BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,6BAA6B;YAC1C,SAAS,EAAE,CAAC,4BAA4B,CAAC;SAC1C,CAAC;;4BAAA;IAwBF,2BAAC;AAAD,CAAC,AAvBD,IAuBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book-search/book-search.component.js b/client/dist/out-tsc/app/book-search/book-search.component.js index 1cb9a0e..11b36ad 100644 --- a/client/dist/out-tsc/app/book-search/book-search.component.js +++ b/client/dist/out-tsc/app/book-search/book-search.component.js @@ -8,16 +8,14 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Component } from '@angular/core'; -import { Router } from '@angular/router'; import { Subject } from 'rxjs/Subject'; import { BookSearchService } from './book-search.service'; export var BookSearchComponent = (function () { - function BookSearchComponent(bookSearchService, router) { + function BookSearchComponent(bookSearchService) { this.bookSearchService = bookSearchService; - this.router = router; this.searchTerms = new Subject(); } - BookSearchComponent.prototype.search = function (id) { + BookSearchComponent.prototype.search = function (name) { this.searchTerms.next(name); }; BookSearchComponent.prototype.getBooks = function () { @@ -29,13 +27,12 @@ export var BookSearchComponent = (function () { }; BookSearchComponent = __decorate([ Component({ - moduleId: module.id.toString(), selector: 'book-search', templateUrl: 'book-search.component.html', styleUrls: ['book-search.component.css'], providers: [BookSearchService] }), - __metadata('design:paramtypes', [BookSearchService, Router]) + __metadata('design:paramtypes', [BookSearchService]) ], BookSearchComponent); return BookSearchComponent; }()); diff --git a/client/dist/out-tsc/app/book-search/book-search.component.js.map b/client/dist/out-tsc/app/book-search/book-search.component.js.map index f65377c..1ee7bf2 100644 --- a/client/dist/out-tsc/app/book-search/book-search.component.js.map +++ b/client/dist/out-tsc/app/book-search/book-search.component.js.map @@ -1 +1 @@ -{"version":3,"file":"book-search.component.js","sourceRoot":"","sources":["book-search.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAiB,iBAAiB;OAE1C,EAAC,OAAO,EAAC,MAAgB,cAAc;OACvC,EAAC,iBAAiB,EAAC,MAAM,uBAAuB;AASvD;IAKE,6BAAoB,iBAAoC,EACpC,MAAc;QADd,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,WAAM,GAAN,MAAM,CAAQ;QAH1B,gBAAW,GAAG,IAAI,OAAO,EAAU,CAAC;IAI5C,CAAC;IAED,oCAAM,GAAN,UAAO,EAAU;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IACtE,CAAC;IAED,sCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IA1BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,SAAS,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;;2BAAA;IAuBF,0BAAC;AAAD,CAAC,AAtBD,IAsBC"} \ No newline at end of file +{"version":3,"file":"book-search.component.js","sourceRoot":"","sources":["book-search.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OAGxC,EAAC,OAAO,EAAC,MAAgB,cAAc;OACvC,EAAC,iBAAiB,EAAC,MAAM,uBAAuB;AASvD;IAKE,6BAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAFhD,gBAAW,GAAG,IAAI,OAAO,EAAU,CAAC;IAG5C,CAAC;IAED,oCAAM,GAAN,UAAO,IAAY;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IACtE,CAAC;IAED,sCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAzBH;QAAC,SAAS,CAAC;YAET,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,SAAS,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;;2BAAA;IAqBF,0BAAC;AAAD,CAAC,AApBD,IAoBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book-search/book-search.service.js b/client/dist/out-tsc/app/book-search/book-search.service.js index 239d544..36b4574 100644 --- a/client/dist/out-tsc/app/book-search/book-search.service.js +++ b/client/dist/out-tsc/app/book-search/book-search.service.js @@ -8,13 +8,12 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable } from '@angular/core'; -import { Http, Headers } from '@angular/http'; +import { Http } from '@angular/http'; import 'rxjs/add/operator/toPromise'; export var BookSearchService = (function () { function BookSearchService(http) { this.http = http; this.categoryUrl = '/api/books/category'; - this.headers = new Headers({ 'Content-Type': 'application/json' }); } BookSearchService.prototype.getBooks = function () { return this.http.get(this.categoryUrl) @@ -22,14 +21,6 @@ export var BookSearchService = (function () { .then(function (response) { return response.json(); }) .catch(this.handleError); }; - BookSearchService.prototype.getBook = function (id) { - return this.getBooks() - .then(function (books) { return books.find(function (book) { return book.category === id; }); }); - }; - BookSearchService.prototype.search = function (id) { - return this.getBook(id) - .then(function (books) { return books.find(function (book) { return book.category === id; }); }); - }; BookSearchService.prototype.handleError = function (error) { console.error('An error occurred', error); return Promise.reject(error.message || error); diff --git a/client/dist/out-tsc/app/book-search/book-search.service.js.map b/client/dist/out-tsc/app/book-search/book-search.service.js.map index 5663bce..07ef415 100644 --- a/client/dist/out-tsc/app/book-search/book-search.service.js.map +++ b/client/dist/out-tsc/app/book-search/book-search.service.js.map @@ -1 +1 @@ -{"version":3,"file":"book-search.service.js","sourceRoot":"","sources":["book-search.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAU,eAAe;OACrC,EAAC,IAAI,EAAY,OAAO,EAAC,MAAM,eAAe;OAI9C,6BAA6B;AAKpC;IAOE,2BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,gBAAW,GAAG,qBAAqB,CAAC;QACpC,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAGD,oCAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,mCAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,KAAK,EAAE,EAApB,CAAoB,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7D,CAAC;IAED,kCAAM,GAAN,UAAO,EAAU;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;aACpB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,KAAK,EAAE,EAApB,CAAoB,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7D,CAAC;IAEO,uCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAjCH;QAAC,UAAU,EAAE;;yBAAA;IAkCb,wBAAC;AAAD,CAAC,AAjCD,IAiCC"} \ No newline at end of file +{"version":3,"file":"book-search.service.js","sourceRoot":"","sources":["book-search.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAU,eAAe;OACrC,EAAC,IAAI,EAAoB,MAAM,eAAe;OAI9C,6BAA6B;AAKpC;IAME,2BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,gBAAW,GAAG,qBAAqB,CAAC;IAG5C,CAAC;IAED,oCAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,uCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IArBH;QAAC,UAAU,EAAE;;yBAAA;IAsBb,wBAAC;AAAD,CAAC,AArBD,IAqBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book.service.js b/client/dist/out-tsc/app/book.service.js index b3a5def..88fdf19 100644 --- a/client/dist/out-tsc/app/book.service.js +++ b/client/dist/out-tsc/app/book.service.js @@ -26,13 +26,9 @@ export var BookService = (function () { return this.getBooks() .then(function (books) { return books.find(function (book) { return book.id === id; }); }); }; - BookService.prototype.getBooksByCategory = function (id) { - return this.getBooks() - .then(function (books) { return books.find(function (book) { return book.category === id; }); }); - }; BookService.prototype.create = function (bookName, author, category) { return this.http - .post(this.bookUrl, JSON.stringify({ name: bookName, author: author, category: category }), { headers: this.headers }) + .post(this.bookUrl, JSON.stringify({ name: bookName, author: author, category: category, shop: 1 }), { headers: this.headers }) .toPromise() .then(function (res) { return res.json(); }) .catch(this.handleError); diff --git a/client/dist/out-tsc/app/book.service.js.map b/client/dist/out-tsc/app/book.service.js.map index 42d6091..fa7a849 100644 --- a/client/dist/out-tsc/app/book.service.js.map +++ b/client/dist/out-tsc/app/book.service.js.map @@ -1 +1 @@ -{"version":3,"file":"book.service.js","sourceRoot":"","sources":["book.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAGD,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,6BAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACvD,CAAC;IAED,wCAAkB,GAAlB,UAAmB,EAAU;QAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,KAAK,EAAE,EAApB,CAAoB,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7D,CAAC;IAED,4BAAM,GAAN,UAAO,QAAiB,EAAE,MAAe,EAAE,QAAgB;QACzD,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aACjH,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAChE,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,EAAU;QACf,IAAM,GAAG,GAAM,IAAI,CAAC,OAAO,SAAI,EAAI,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAClD,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAtDH;QAAC,UAAU,EAAE;;mBAAA;IAuDb,kBAAC;AAAD,CAAC,AAtDD,IAsDC"} \ No newline at end of file +{"version":3,"file":"book.service.js","sourceRoot":"","sources":["book.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAED,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,6BAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACvD,CAAC;IAED,4BAAM,GAAN,UAAO,QAAiB,EAAE,MAAe,EAAE,QAAgB;QACzD,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAC1H,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAChE,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,EAAU;QACf,IAAM,GAAG,GAAM,IAAI,CAAC,OAAO,SAAI,EAAI,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAClD,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAhDH;QAAC,UAAU,EAAE;;mBAAA;IAiDb,kBAAC;AAAD,CAAC,AAhDD,IAgDC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book/book.component.js b/client/dist/out-tsc/app/book/book.component.js index 1914189..c73e132 100644 --- a/client/dist/out-tsc/app/book/book.component.js +++ b/client/dist/out-tsc/app/book/book.component.js @@ -22,9 +22,6 @@ export var BookComponent = (function () { BookComponent.prototype.ngOnInit = function () { this.getBooks(); }; - BookComponent.prototype.onSelect = function (book) { - this.selectedBook = book; - }; BookComponent.prototype.delete = function (book) { var _this = this; this.bookService @@ -38,7 +35,6 @@ export var BookComponent = (function () { }; BookComponent = __decorate([ Component({ - moduleId: module.id.toString(), selector: 'books', templateUrl: 'book.component.html', styleUrls: ['book.component.css'] diff --git a/client/dist/out-tsc/app/book/book.component.js.map b/client/dist/out-tsc/app/book/book.component.js.map index a8b88c1..1968b8e 100644 --- a/client/dist/out-tsc/app/book/book.component.js.map +++ b/client/dist/out-tsc/app/book/book.component.js.map @@ -1 +1 @@ -{"version":3,"file":"book.component.js","sourceRoot":"","sources":["book.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,WAAW,EAAC,MAAM,iBAAiB;AAQ3C;IAKE,uBAAoB,MAAc,EACd,WAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IAChE,CAAC;IAGD,gCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEA,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEF,8BAAM,GAAN,UAAO,IAAU;QAAjB,iBAMC;QALC,IAAI,CAAC,WAAW;aACb,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,IAAI,CAAC;YACJ,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAtCH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;;qBAAA;IAoCF,oBAAC;AAAD,CAAC,AAnCD,IAmCC"} \ No newline at end of file +{"version":3,"file":"book.component.js","sourceRoot":"","sources":["book.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,WAAW,EAAC,MAAM,iBAAiB;AAO3C;IAIE,uBAAoB,MAAc,EACd,WAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IAChE,CAAC;IAGD,gCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,8BAAM,GAAN,UAAO,IAAU;QAAjB,iBAMC;QALC,IAAI,CAAC,WAAW;aACb,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACf,IAAI,CAAC;YACJ,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAU;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAhCH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;;qBAAA;IA8BF,oBAAC;AAAD,CAAC,AA7BD,IA6BC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/categories.js.map b/client/dist/out-tsc/app/categories.js.map index 8444fa1..2153449 100644 --- a/client/dist/out-tsc/app/categories.js.map +++ b/client/dist/out-tsc/app/categories.js.map @@ -1 +1 @@ -{"version":3,"file":"categories.js","sourceRoot":"","sources":["categories.ts"],"names":[],"mappings":"AAAA;IAAA;IAGA,CAAC;IAAD,eAAC;AAAD,CAAC,AAHD,IAGC"} \ No newline at end of file +{"version":3,"file":"categories.js","sourceRoot":"","sources":["categories.ts"],"names":[],"mappings":"AAEA;IAAA;IAIA,CAAC;IAAD,eAAC;AAAD,CAAC,AAJD,IAIC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/categories/categories.component.js b/client/dist/out-tsc/app/categories/categories.component.js index 7d67a23..558fa67 100644 --- a/client/dist/out-tsc/app/categories/categories.component.js +++ b/client/dist/out-tsc/app/categories/categories.component.js @@ -9,16 +9,14 @@ var __metadata = (this && this.__metadata) || function (k, v) { }; import { Component } from '@angular/core'; import { Router } from '@angular/router'; -import { BookService } from '../book.service'; import { CategoryService } from './categories.service'; export var CategoryComponent = (function () { - function CategoryComponent(router, categoryService, bookService) { + function CategoryComponent(router, categoryService) { this.router = router; this.categoryService = categoryService; - this.bookService = bookService; } - CategoryComponent.prototype.getBooksByCategory = function (id) { - this.bookService.getBooksByCategory(id); + CategoryComponent.prototype.getBooksByCategory = function (category) { + this.router.navigate(['categories/', category.id]); }; CategoryComponent.prototype.getCategories = function () { var _this = this; @@ -27,14 +25,16 @@ export var CategoryComponent = (function () { CategoryComponent.prototype.ngOnInit = function () { this.getCategories(); }; + CategoryComponent.prototype.showBooks = function (category) { + this.router.navigate(['/', category.id]); + }; CategoryComponent = __decorate([ Component({ - moduleId: module.id.toString(), selector: 'categories', templateUrl: 'categories.component.html', styleUrls: ['categories.component.css'] }), - __metadata('design:paramtypes', [Router, CategoryService, BookService]) + __metadata('design:paramtypes', [Router, CategoryService]) ], CategoryComponent); return CategoryComponent; }()); diff --git a/client/dist/out-tsc/app/categories/categories.component.js.map b/client/dist/out-tsc/app/categories/categories.component.js.map index 73ea16c..5d3d3ae 100644 --- a/client/dist/out-tsc/app/categories/categories.component.js.map +++ b/client/dist/out-tsc/app/categories/categories.component.js.map @@ -1 +1 @@ -{"version":3,"file":"categories.component.js","sourceRoot":"","sources":["categories.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAE/B,EAAE,WAAW,EAAE,MAAM,iBAAiB;OACtC,EAAC,eAAe,EAAC,MAAM,sBAAsB;AAUpD;IAKE,2BAAoB,MAAc,EACd,eAAgC,EAChC,WAAwB;QAFxB,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;IAE5C,CAAC;IAED,8CAAkB,GAAlB,UAAmB,EAAU;QAC3B,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE1C,CAAC;IAED,yCAAa,GAAb;QAAA,iBAEC;QADC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B,CAAC,CAAC;IACxF,CAAC;IAED,oCAAQ,GAAR;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IA5BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,2BAA2B;YACxC,SAAS,EAAE,CAAC,0BAA0B,CAAC;SACxC,CAAC;;yBAAA;IAyBF,wBAAC;AAAD,CAAC,AAxBD,IAwBC"} \ No newline at end of file +{"version":3,"file":"categories.component.js","sourceRoot":"","sources":["categories.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,eAAe,EAAC,MAAM,sBAAsB;AASpD;IAKE,2BAAoB,MAAc,EACd,eAAgC;QADhC,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAiB;IAEpD,CAAC;IAED,8CAAkB,GAAlB,UAAmB,QAAkB;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAErD,CAAC;IAED,yCAAa,GAAb;QAAA,iBAEC;QADC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B,CAAC,CAAC;IACxF,CAAC;IAED,oCAAQ,GAAR;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,qCAAS,GAAT,UAAU,QAAkB;QAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IA9BH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,2BAA2B;YACxC,SAAS,EAAE,CAAC,0BAA0B,CAAC;SACxC,CAAC;;yBAAA;IA6BF,wBAAC;AAAD,CAAC,AA5BD,IA4BC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/categories/categories.service.js b/client/dist/out-tsc/app/categories/categories.service.js index b01cb0f..3f7ac6a 100644 --- a/client/dist/out-tsc/app/categories/categories.service.js +++ b/client/dist/out-tsc/app/categories/categories.service.js @@ -8,13 +8,12 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable } from '@angular/core'; -import { Headers, Http } from '@angular/http'; +import { Http } from '@angular/http'; import 'rxjs/add/operator/toPromise'; export var CategoryService = (function () { function CategoryService(http) { this.http = http; this.categoryUrl = '/api/categories/'; - this.headers = new Headers({ 'Content-Type': 'application/json' }); } CategoryService.prototype.getCategories = function () { return this.http.get(this.categoryUrl) @@ -22,6 +21,10 @@ export var CategoryService = (function () { .then(function (response) { return response.json(); }) .catch(this.handleError); }; + CategoryService.prototype.getCategory = function (id) { + return this.getCategories() + .then(function (categories) { return categories.find(function (category) { return category.id === id; }); }); + }; CategoryService.prototype.handleError = function (error) { console.error('An error occurred', error); return Promise.reject(error.message || error); diff --git a/client/dist/out-tsc/app/categories/categories.service.js.map b/client/dist/out-tsc/app/categories/categories.service.js.map index be566f0..2565ceb 100644 --- a/client/dist/out-tsc/app/categories/categories.service.js.map +++ b/client/dist/out-tsc/app/categories/categories.service.js.map @@ -1 +1 @@ -{"version":3,"file":"categories.service.js","sourceRoot":"","sources":["categories.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,yBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,gBAAW,GAAG,kBAAkB,CAAC;QACjC,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAED,uCAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAgB,EAA7B,CAA6B,CAAC;aAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,qCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAnBH;QAAC,UAAU,EAAE;;uBAAA;IAoBb,sBAAC;AAAD,CAAC,AAnBD,IAmBC"} \ No newline at end of file +{"version":3,"file":"categories.service.js","sourceRoot":"","sources":["categories.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAU,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAMpC;IAGE,yBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,gBAAW,GAAG,kBAAkB,CAAC;IAGzC,CAAC;IAED,uCAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAgB,EAA7B,CAA6B,CAAC;aAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,qCAAW,GAAX,UAAY,EAAU;QACpB,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;aACxB,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAlB,CAAkB,CAAC,EAA/C,CAA+C,CAAC,CAAC;IACzE,CAAC;IAEO,qCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAvBH;QAAC,UAAU,EAAE;;uBAAA;IAwBb,sBAAC;AAAD,CAAC,AAvBD,IAuBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/shop/shop.component.js b/client/dist/out-tsc/app/shop/shop.component.js index 43ec12f..806e0ac 100644 --- a/client/dist/out-tsc/app/shop/shop.component.js +++ b/client/dist/out-tsc/app/shop/shop.component.js @@ -24,7 +24,6 @@ export var ShopComponent = (function () { }; ShopComponent = __decorate([ Component({ - moduleId: module.id.toString(), selector: 'shops', templateUrl: 'shop.component.html', styleUrls: ['shop.component.css'] diff --git a/client/dist/out-tsc/app/shop/shop.component.js.map b/client/dist/out-tsc/app/shop/shop.component.js.map index 3e21c6f..405b331 100644 --- a/client/dist/out-tsc/app/shop/shop.component.js.map +++ b/client/dist/out-tsc/app/shop/shop.component.js.map @@ -1 +1 @@ -{"version":3,"file":"shop.component.js","sourceRoot":"","sources":["shop.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,WAAW,EAAC,MAAM,gBAAgB;AAQ1C;IAIE,uBAAoB,MAAc,EACd,WAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IAChE,CAAC;IAED,gCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IApBH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;;qBAAA;IAiBF,oBAAC;AAAD,CAAC,AAhBD,IAgBC"} \ No newline at end of file +{"version":3,"file":"shop.component.js","sourceRoot":"","sources":["shop.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OACxC,EAAC,MAAM,EAAC,MAAM,iBAAiB;OAG/B,EAAC,WAAW,EAAC,MAAM,gBAAgB;AAO1C;IAIE,uBAAoB,MAAc,EACd,WAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IAChE,CAAC;IAED,gCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAnBH;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,oBAAoB,CAAC;SAClC,CAAC;;qBAAA;IAiBF,oBAAC;AAAD,CAAC,AAhBD,IAgBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/shop/shop.service.js.map b/client/dist/out-tsc/app/shop/shop.service.js.map index 5bea535..406bc48 100644 --- a/client/dist/out-tsc/app/shop/shop.service.js.map +++ b/client/dist/out-tsc/app/shop/shop.service.js.map @@ -1 +1 @@ -{"version":3,"file":"shop.service.js","sourceRoot":"","sources":["shop.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAGD,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IApBH;QAAC,UAAU,EAAE;;mBAAA;IAqBb,kBAAC;AAAD,CAAC,AApBD,IAoBC"} \ No newline at end of file +{"version":3,"file":"shop.service.js","sourceRoot":"","sources":["shop.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAGE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAEpE,CAAC;IAED,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAlBH;QAAC,UAAU,EAAE;;mBAAA;IAmBb,kBAAC;AAAD,CAAC,AAlBD,IAkBC"} \ No newline at end of file diff --git a/client/src/app/add-book/add-book.component.html b/client/src/app/add-book/add-book.component.html index d5e661d..27a043c 100644 --- a/client/src/app/add-book/add-book.component.html +++ b/client/src/app/add-book/add-book.component.html @@ -1,8 +1,9 @@
    - - - - +
    diff --git a/client/src/app/add-book/add-book.component.ts b/client/src/app/add-book/add-book.component.ts index bdce3b5..6261ff0 100644 --- a/client/src/app/add-book/add-book.component.ts +++ b/client/src/app/add-book/add-book.component.ts @@ -1,11 +1,12 @@ import {Component} from '@angular/core'; import {Book} from '../book'; +import { Location } from '@angular/common'; import {BookService} from '../book.service'; -import {Router} from "@angular/router"; +import {CategoryService} from "../categories/categories.service"; +import {Category} from "../categories"; @Component({ - moduleId: module.id.toString(), selector: 'add-book', templateUrl: 'add-book.component.html', styleUrls: ['add-book.component.css'] @@ -13,8 +14,16 @@ import {Router} from "@angular/router"; export class AddBookComponent { books: Book[]; book: Book; + categories: Category[]; + category: Category; - constructor(private router: Router, private bookService: BookService) { + constructor( private bookService: BookService, + private categoryService: CategoryService, + private location: Location) { + } + + ngOnInit(): void { + this.categoryService.getCategories().then(categories => this.categories = categories); } add(name: string, author: string, category: number): void { @@ -23,4 +32,9 @@ export class AddBookComponent { this.books.push(book); }); } + + goBack(): void { + this.location.back(); + } + } diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts index f03a713..75de9a7 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts @@ -5,6 +5,7 @@ import {BooksDetailComponent} from './book-details/book-details.component'; import {BookSearchComponent} from './book-search/book-search.component'; import {AddBookComponent} from './add-book/add-book.component'; import {ShopComponent} from './shop/shop.component'; +import {BooksCategoryComponent} from './books-category/books-category.component'; import {CategoryComponent} from './categories/categories.component'; const routes: Routes = [ @@ -14,7 +15,8 @@ const routes: Routes = [ {path: 'detail/:id', component: BooksDetailComponent}, {path: 'books/new', component: AddBookComponent}, {path: 'shop', component: ShopComponent}, - {path: 'categories', component: CategoryComponent} + {path: 'categories', component: CategoryComponent}, + {path: 'categories/:id', component: BooksCategoryComponent} ]; @NgModule({ imports: [RouterModule.forRoot(routes)], diff --git a/client/src/app/app.component.css b/client/src/app/app.component.css index e69de29..775adda 100644 --- a/client/src/app/app.component.css +++ b/client/src/app/app.component.css @@ -0,0 +1,20 @@ +.allStaticContent{ + float: left; + height: 500px; + width: 350px; +} + +a { + font-family: Arial; + background-color: #C0D7FB; + border: none; + padding: 4px 136px; + color: black; + margin: 0px; + width: 194px; + text-decoration: none; +} + +a:hover { + background-color: #cfd8dc; +} diff --git a/client/src/app/app.component.html b/client/src/app/app.component.html index 08413ae..39f2170 100644 --- a/client/src/app/app.component.html +++ b/client/src/app/app.component.html @@ -1,10 +1,16 @@ -

    {{title}}

    +

    {{title}}

    + +
    + +
    + +
    + +
    diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts index 10dd866..b036aa7 100644 --- a/client/src/app/app.component.ts +++ b/client/src/app/app.component.ts @@ -1,12 +1,10 @@ import {Component} from '@angular/core'; @Component({ - moduleId: module.id.toString(), selector: 'my-app', templateUrl: 'app.component.html', styleUrls: ['app.component.css'], }) export class AppComponent { - title = 'All books'; - + title = 'Search me'; } diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index f19ba35..900555b 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -12,7 +12,7 @@ import {ShopComponent} from './shop/shop.component' import {AddBookComponent} from './add-book/add-book.component' import {CategoryComponent} from './categories/categories.component'; import {CategoryService} from './categories/categories.service'; - +import {BooksCategoryComponent} from './books-category/books-category.component'; import {HttpModule} from '@angular/http'; import {AppRoutingModule} from './app-routing.module'; @@ -33,6 +33,7 @@ import './rxjs-extensions'; BooksDetailComponent, BookSearchComponent, ShopComponent, + BooksCategoryComponent, CategoryComponent ], providers: [ diff --git a/client/src/app/book-details/book-details.component.css b/client/src/app/book-details/book-details.component.css index e69de29..bd9170d 100644 --- a/client/src/app/book-details/book-details.component.css +++ b/client/src/app/book-details/book-details.component.css @@ -0,0 +1,3 @@ +li{ + +} diff --git a/client/src/app/book-details/book-details.component.ts b/client/src/app/book-details/book-details.component.ts index 88d61cf..066036f 100644 --- a/client/src/app/book-details/book-details.component.ts +++ b/client/src/app/book-details/book-details.component.ts @@ -6,7 +6,6 @@ import { Location } from '@angular/common'; import { Book } from '../book'; import { BookService } from '../book.service'; @Component({ - moduleId: module.id.toString(), selector: 'book-detail', templateUrl: 'book-details.component.html', styleUrls: ['book-details.component.css'] diff --git a/client/src/app/book-search/book-search.component.html b/client/src/app/book-search/book-search.component.html index 6c5a081..dbfa231 100644 --- a/client/src/app/book-search/book-search.component.html +++ b/client/src/app/book-search/book-search.component.html @@ -1,7 +1,5 @@

    Books Search

    - -
    (); - constructor(private bookSearchService: BookSearchService, - private router: Router) { + constructor(private bookSearchService: BookSearchService) { } - search(id: number): void { + search(name: string): void { this.searchTerms.next(name); } @@ -32,5 +31,4 @@ export class BookSearchComponent implements OnInit { this.getBooks(); } - } diff --git a/client/src/app/book-search/book-search.service.ts b/client/src/app/book-search/book-search.service.ts index 99e4d85..c84f351 100644 --- a/client/src/app/book-search/book-search.service.ts +++ b/client/src/app/book-search/book-search.service.ts @@ -13,12 +13,10 @@ export class BookSearchService { category: Category; private categoryUrl = '/api/books/category'; - private headers = new Headers({'Content-Type': 'application/json'}); constructor(private http: Http) { } - getBooks(): Promise { return this.http.get(this.categoryUrl) .toPromise() @@ -27,16 +25,6 @@ export class BookSearchService { } - getBook(id: number): Promise { - return this.getBooks() - .then(books => books.find(book => book.category === id)); - } - - search(id: number): Promise { - return this.getBook(id) - .then(books => books.find(book => book.category === id)); - } - private handleError(error: any): Promise { console.error('An error occurred', error); return Promise.reject(error.message || error); diff --git a/client/src/app/book.service.ts b/client/src/app/book.service.ts index 2b305d0..e3fdc11 100644 --- a/client/src/app/book.service.ts +++ b/client/src/app/book.service.ts @@ -13,7 +13,6 @@ export class BookService { constructor(private http: Http) { } - getBooks(): Promise { return this.http.get(this.bookUrl) .toPromise() @@ -27,14 +26,9 @@ export class BookService { .then(books => books.find(book => book.id === id)); } - getBooksByCategory(id: number): Promise { - return this.getBooks() - .then(books => books.find(book => book.category === id)); - } - create(bookName : string, author : string, category: number): Promise { return this.http - .post(this.bookUrl, JSON.stringify({name: bookName, author: author, category: category}), {headers: this.headers}) + .post(this.bookUrl, JSON.stringify({name: bookName, author: author, category: category, shop: 1}), {headers: this.headers}) .toPromise() .then(res => res.json()) .catch(this.handleError); diff --git a/client/src/app/book/book.component.css b/client/src/app/book/book.component.css index e69de29..67bb884 100644 --- a/client/src/app/book/book.component.css +++ b/client/src/app/book/book.component.css @@ -0,0 +1,7 @@ +allBooks{ + float: right; +} + +li{ + list-style-type: none; +} diff --git a/client/src/app/book/book.component.html b/client/src/app/book/book.component.html index a3ab8d3..0135f81 100644 --- a/client/src/app/book/book.component.html +++ b/client/src/app/book/book.component.html @@ -1,4 +1,5 @@ -

    My Books

    +
    +

    All Books

    • @@ -9,4 +10,4 @@

      My Books

    - +
    diff --git a/client/src/app/book/book.component.ts b/client/src/app/book/book.component.ts index 318bc64..a3ba616 100644 --- a/client/src/app/book/book.component.ts +++ b/client/src/app/book/book.component.ts @@ -5,7 +5,6 @@ import {Book} from '../book'; import {BookService} from '../book.service'; @Component({ - moduleId: module.id.toString(), selector: 'books', templateUrl: 'book.component.html', styleUrls: ['book.component.css'] @@ -13,7 +12,6 @@ import {BookService} from '../book.service'; export class BookComponent implements OnInit { books: Book[]; book: Book; - selectedBook: Book; constructor(private router: Router, private bookService: BookService) { @@ -28,10 +26,6 @@ export class BookComponent implements OnInit { this.getBooks(); } - onSelect(book: Book): void { - this.selectedBook = book; - } - delete(book: Book): void { this.bookService .delete(book.id) @@ -44,5 +38,4 @@ export class BookComponent implements OnInit { this.router.navigate(['/detail', book.id]); } - } diff --git a/client/src/app/books-category/books-category.component.css b/client/src/app/books-category/books-category.component.css new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/books-category/books-category.component.html b/client/src/app/books-category/books-category.component.html new file mode 100644 index 0000000..3d4a1b9 --- /dev/null +++ b/client/src/app/books-category/books-category.component.html @@ -0,0 +1,11 @@ +
    +

    Books by {{category.name}}

    + +
    + {{books.author}} | + {{books.name}} + +
    +
    diff --git a/client/src/app/books-category/books-category.component.ts b/client/src/app/books-category/books-category.component.ts new file mode 100644 index 0000000..657148c --- /dev/null +++ b/client/src/app/books-category/books-category.component.ts @@ -0,0 +1,34 @@ +import 'rxjs/add/operator/switchMap'; +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Params } from '@angular/router'; +import { Location } from '@angular/common'; + +import { Book } from '../book'; +import { BookService } from '../book.service'; +import {CategoryService} from "../categories/categories.service"; +import {Category} from "../categories"; + +@Component({ + selector: 'books-category', + templateUrl: 'books-category.component.html', + styleUrls: ['books-category.component.css'] +}) +export class BooksCategoryComponent implements OnInit { + category: Category; + + constructor( + private categoryService: CategoryService, + private route: ActivatedRoute, + private location: Location + ) {} + + ngOnInit(): void { + this.route.params + .switchMap((params: Params) => this.categoryService.getCategory(+params['id'])) + .subscribe(categories => this.category = categories); + } + + goBack(): void { + this.location.back(); + } +} diff --git a/client/src/app/categories.ts b/client/src/app/categories.ts index 29d79ef..7c77f4e 100644 --- a/client/src/app/categories.ts +++ b/client/src/app/categories.ts @@ -1,4 +1,7 @@ +import {Book} from "./book"; + export class Category{ id: number; name: string; + books: Book[]; } diff --git a/client/src/app/categories/categories.component.css b/client/src/app/categories/categories.component.css index f3652d1..412154f 100644 --- a/client/src/app/categories/categories.component.css +++ b/client/src/app/categories/categories.component.css @@ -1,6 +1,16 @@ .menu li{ - display: inline; - margin: 0; - margin-right: 5px; - padding: 3px; + list-style-type: none; +} + +button { + font-family: Arial; + background-color: #C0D7FB; + border: none; + padding: 10px; + width: 150px; + +} + +button:hover { + background-color: #cfd8dc; } diff --git a/client/src/app/categories/categories.component.html b/client/src/app/categories/categories.component.html index 3ecfbc3..2f1f3b2 100644 --- a/client/src/app/categories/categories.component.html +++ b/client/src/app/categories/categories.component.html @@ -1,5 +1,7 @@ -
    - - -
    -
    - -
    -
    + + + + + From cb6d0d314c6a2ea67b67b5a714ece1ea8163814e Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Wed, 14 Dec 2016 19:02:52 +0200 Subject: [PATCH 16/20] Add books list styles --- .../app/core/controller/BooksController.java | 12 ++++-- API/src/main/java/app/core/dao/BooksDao.java | 6 ++- .../main/java/app/core/dao/BooksDaoImpl.java | 27 ++++++------- .../java/app/core/dao/CategoriesDaoImpl.java | 4 +- API/src/main/java/app/core/model/Book.java | 5 ++- .../app/core/service/BookServiceImpl.java | 4 +- client/BooksFront.iml | 9 ----- client/Dockerfile | 12 ------ client/angular-cli.json | 3 +- client/dist/out-tsc/app/app.component.js | 2 +- client/dist/out-tsc/app/app.component.js.map | 2 +- .../app/book-search/book-search.component.js | 10 +---- .../book-search/book-search.component.js.map | 2 +- .../app/book-search/book-search.service.js | 11 +++--- .../book-search/book-search.service.js.map | 2 +- client/dist/out-tsc/app/book.js.map | 2 +- client/dist/out-tsc/app/book.service.js | 5 +-- client/dist/out-tsc/app/book.service.js.map | 2 +- .../app/categories/categories.service.js.map | 2 +- client/dist/out-tsc/app/shop.js.map | 2 +- .../dist/out-tsc/app/shop/shop.component.js | 4 +- client/dist/out-tsc/app/shop/shop.service.js | 3 +- .../dist/out-tsc/app/shop/shop.service.js.map | 2 +- .../src/app/add-book/add-book.component.html | 2 + client/src/app/add-book/add-book.component.ts | 1 + client/src/app/app.component.css | 20 ---------- client/src/app/app.component.html | 22 +++++------ .../book-search/book-search.component.html | 2 +- .../app/book-search/book-search.component.ts | 13 ++----- .../app/book-search/book-search.service.ts | 21 ++++------ client/src/app/book.service.ts | 4 +- client/src/app/book/book.component.css | 9 +---- client/src/app/book/book.component.html | 39 +++++++++++++------ .../books-category.component.ts | 2 - .../src/app/categories/categories.service.ts | 1 - client/src/app/shop/shop.component.html | 5 +-- client/src/app/shop/shop.component.ts | 4 +- client/src/app/shop/shop.service.ts | 1 - client/src/styles.css | 28 ++----------- 39 files changed, 124 insertions(+), 183 deletions(-) delete mode 100644 client/BooksFront.iml diff --git a/API/src/main/java/app/core/controller/BooksController.java b/API/src/main/java/app/core/controller/BooksController.java index 7334202..f5fcf25 100644 --- a/API/src/main/java/app/core/controller/BooksController.java +++ b/API/src/main/java/app/core/controller/BooksController.java @@ -34,10 +34,16 @@ public void updateBook(@RequestBody Book upBook) { service.updateBook(upBook); } - @ResponseBody - @RequestMapping(value = {"/{id}"}, method = RequestMethod.DELETE) - public void deleteBook(@PathVariable("id") Integer id) { + + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @ResponseBody void deleteBook(@PathVariable("id") Integer id) { service.deleteBook(id); } + @ResponseBody + @RequestMapping(value = "/search/{name}", method = RequestMethod.GET) + public List searchBook(@PathVariable("name") String name) { + return service.searchBook(name); + } + } diff --git a/API/src/main/java/app/core/dao/BooksDao.java b/API/src/main/java/app/core/dao/BooksDao.java index f0fc1c2..835ea1f 100644 --- a/API/src/main/java/app/core/dao/BooksDao.java +++ b/API/src/main/java/app/core/dao/BooksDao.java @@ -1,12 +1,13 @@ package app.core.dao; import app.core.model.Book; +import org.hibernate.Criteria; import java.util.List; interface BooksDao { - public List getBooks(); + public List getBooks(); public void deleteBook(Integer id); @@ -14,6 +15,7 @@ interface BooksDao { public void updateBook(Book upBook); - public List getBooksByCategory(Integer id); + public List searchBook(String name); + public Criteria createCriteria(); } diff --git a/API/src/main/java/app/core/dao/BooksDaoImpl.java b/API/src/main/java/app/core/dao/BooksDaoImpl.java index 2378a5a..736446e 100644 --- a/API/src/main/java/app/core/dao/BooksDaoImpl.java +++ b/API/src/main/java/app/core/dao/BooksDaoImpl.java @@ -1,8 +1,10 @@ package app.core.dao; import app.core.model.Book; +import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -15,16 +17,18 @@ public class BooksDaoImpl implements BooksDao { @Autowired SessionFactory sessionFactory; - public List getBooks() { - return sessionFactory.getCurrentSession().createCriteria(Book.class).list(); + public Criteria createCriteria(){ + return sessionFactory.getCurrentSession().createCriteria(Book.class); } - public List getBooksByCategory(Integer id){ - List books = (List) sessionFactory.getCurrentSession().createCriteria(Book.class) - .add(eq("id", id)) - .list(); + public List getBooks() {return createCriteria().setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); + } - return books; + public List searchBook(String name){ + String searchName = name + "%"; + List book = (List) createCriteria() + .add(Restrictions.like("name", searchName)).list(); + return book; } public Book addBook(Book book) { @@ -32,20 +36,17 @@ public Book addBook(Book book) { return book; } - public void updateBook(Book upBook) { - Book book = (Book) sessionFactory.getCurrentSession().createCriteria(Book.class) + Book book = (Book) createCriteria() .add(eq("id", upBook.getId())).uniqueResult(); book.setName(upBook.getName()); sessionFactory.getCurrentSession().update(book); } public void deleteBook(Integer id) { - System.out.println(id); - Session currentSession = sessionFactory.getCurrentSession(); - Book book = (Book) currentSession.createCriteria(Book.class) + Book book = (Book) createCriteria() .add(eq("id", id)).uniqueResult(); - currentSession.delete(book); + sessionFactory.getCurrentSession().delete(book); } } diff --git a/API/src/main/java/app/core/dao/CategoriesDaoImpl.java b/API/src/main/java/app/core/dao/CategoriesDaoImpl.java index d56c0fe..d35127e 100644 --- a/API/src/main/java/app/core/dao/CategoriesDaoImpl.java +++ b/API/src/main/java/app/core/dao/CategoriesDaoImpl.java @@ -15,6 +15,8 @@ public class CategoriesDaoImpl implements CategoriesDao { SessionFactory sessionFactory; public List getCategories() { - return sessionFactory.getCurrentSession().createCriteria(Categories.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); + return sessionFactory.getCurrentSession() + .createCriteria(Categories.class) + .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); } } diff --git a/API/src/main/java/app/core/model/Book.java b/API/src/main/java/app/core/model/Book.java index ae7ee66..727fc64 100644 --- a/API/src/main/java/app/core/model/Book.java +++ b/API/src/main/java/app/core/model/Book.java @@ -1,6 +1,8 @@ package app.core.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; import javax.persistence.*; @@ -35,7 +37,8 @@ public class Book { @JoinColumn(name = "category", insertable = false, updatable = false) private Categories categories; - @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) + + @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE) @JoinTable(name = "book_shops", catalog = "Library", joinColumns = { @JoinColumn( name = "idBook", referencedColumnName = "id") diff --git a/API/src/main/java/app/core/service/BookServiceImpl.java b/API/src/main/java/app/core/service/BookServiceImpl.java index 76eaec9..a533f40 100644 --- a/API/src/main/java/app/core/service/BookServiceImpl.java +++ b/API/src/main/java/app/core/service/BookServiceImpl.java @@ -18,8 +18,8 @@ public List getBooks() { return dao.getBooks(); } - public List getBooksByCategory(Integer id){ - return dao.getBooksByCategory(id); + public List searchBook(String name) { + return dao.searchBook(name); } public Book addBook(Book book) { diff --git a/client/BooksFront.iml b/client/BooksFront.iml deleted file mode 100644 index 8021953..0000000 --- a/client/BooksFront.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/client/Dockerfile b/client/Dockerfile index 42218c0..8968340 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -2,16 +2,4 @@ FROM node:4.4 RUN npm install -g npm -RUN mkdir /client WORKDIR /client - - - - - - - - - - - diff --git a/client/angular-cli.json b/client/angular-cli.json index c0ba9d5..fce913c 100644 --- a/client/angular-cli.json +++ b/client/angular-cli.json @@ -18,7 +18,8 @@ "prefix": "app", "mobile": false, "styles": [ - "styles.css" + "styles.css", + "../node_modules/bootstrap/dist/css/bootstrap.min.css" ], "scripts": [], "environments": { diff --git a/client/dist/out-tsc/app/app.component.js b/client/dist/out-tsc/app/app.component.js index 8028f49..2c1ec08 100644 --- a/client/dist/out-tsc/app/app.component.js +++ b/client/dist/out-tsc/app/app.component.js @@ -10,7 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) { import { Component } from '@angular/core'; export var AppComponent = (function () { function AppComponent() { - this.title = 'Search me'; + this.title = 'SearchMe'; } AppComponent = __decorate([ Component({ diff --git a/client/dist/out-tsc/app/app.component.js.map b/client/dist/out-tsc/app/app.component.js.map index a75cb73..d86e0da 100644 --- a/client/dist/out-tsc/app/app.component.js.map +++ b/client/dist/out-tsc/app/app.component.js.map @@ -1 +1 @@ -{"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAC,MAAM,eAAe;AAOvC;IAAA;QACE,UAAK,GAAG,WAAW,CAAC;IACtB,CAAC;IAPD;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;;oBAAA;IAGF,mBAAC;AAAD,CAAC,AAFD,IAEC"} \ No newline at end of file +{"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAC,MAAM,eAAe;AAOvC;IAAA;QACE,UAAK,GAAG,UAAU,CAAC;IACrB,CAAC;IAPD;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;;oBAAA;IAGF,mBAAC;AAAD,CAAC,AAFD,IAEC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book-search/book-search.component.js b/client/dist/out-tsc/app/book-search/book-search.component.js index 11b36ad..a4434e5 100644 --- a/client/dist/out-tsc/app/book-search/book-search.component.js +++ b/client/dist/out-tsc/app/book-search/book-search.component.js @@ -13,17 +13,9 @@ import { BookSearchService } from './book-search.service'; export var BookSearchComponent = (function () { function BookSearchComponent(bookSearchService) { this.bookSearchService = bookSearchService; - this.searchTerms = new Subject(); + this.searchName = new Subject(); } BookSearchComponent.prototype.search = function (name) { - this.searchTerms.next(name); - }; - BookSearchComponent.prototype.getBooks = function () { - var _this = this; - this.bookSearchService.getBooks().then(function (books) { return _this.books = books; }); - }; - BookSearchComponent.prototype.ngOnInit = function () { - this.getBooks(); }; BookSearchComponent = __decorate([ Component({ diff --git a/client/dist/out-tsc/app/book-search/book-search.component.js.map b/client/dist/out-tsc/app/book-search/book-search.component.js.map index 1ee7bf2..1d9d6f0 100644 --- a/client/dist/out-tsc/app/book-search/book-search.component.js.map +++ b/client/dist/out-tsc/app/book-search/book-search.component.js.map @@ -1 +1 @@ -{"version":3,"file":"book-search.component.js","sourceRoot":"","sources":["book-search.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OAGxC,EAAC,OAAO,EAAC,MAAgB,cAAc;OACvC,EAAC,iBAAiB,EAAC,MAAM,uBAAuB;AASvD;IAKE,6BAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAFhD,gBAAW,GAAG,IAAI,OAAO,EAAU,CAAC;IAG5C,CAAC;IAED,oCAAM,GAAN,UAAO,IAAY;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAQ,GAAR;QAAA,iBAEC;QADC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,KAAK,GAAG,KAAK,EAAlB,CAAkB,CAAC,CAAC;IACtE,CAAC;IAED,sCAAQ,GAAR;QACE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAzBH;QAAC,SAAS,CAAC;YAET,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,SAAS,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;;2BAAA;IAqBF,0BAAC;AAAD,CAAC,AApBD,IAoBC"} \ No newline at end of file +{"version":3,"file":"book-search.component.js","sourceRoot":"","sources":["book-search.component.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,SAAS,EAAS,MAAM,eAAe;OAGxC,EAAC,OAAO,EAAC,MAAgB,cAAc;OACvC,EAAC,iBAAiB,EAAC,MAAM,uBAAuB;AAUvD;IAKE,6BAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAFhD,eAAU,GAAG,IAAI,OAAO,EAAU,CAAC;IAG3C,CAAC;IAED,oCAAM,GAAN,UAAO,IAAY;IAEnB,CAAC;IAjBH;QAAC,SAAS,CAAC;YAET,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,SAAS,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;;2BAAA;IAaF,0BAAC;AAAD,CAAC,AAZD,IAYC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book-search/book-search.service.js b/client/dist/out-tsc/app/book-search/book-search.service.js index 36b4574..9c8dfbb 100644 --- a/client/dist/out-tsc/app/book-search/book-search.service.js +++ b/client/dist/out-tsc/app/book-search/book-search.service.js @@ -13,13 +13,12 @@ import 'rxjs/add/operator/toPromise'; export var BookSearchService = (function () { function BookSearchService(http) { this.http = http; - this.categoryUrl = '/api/books/category'; + this.booksUrl = '/api/books/search'; } - BookSearchService.prototype.getBooks = function () { - return this.http.get(this.categoryUrl) - .toPromise() - .then(function (response) { return response.json(); }) - .catch(this.handleError); + BookSearchService.prototype.search = function (name) { + return this.http + .get(this.booksUrl + "/" + name) + .map(function (r) { return r.json().data; }); }; BookSearchService.prototype.handleError = function (error) { console.error('An error occurred', error); diff --git a/client/dist/out-tsc/app/book-search/book-search.service.js.map b/client/dist/out-tsc/app/book-search/book-search.service.js.map index 07ef415..d38a216 100644 --- a/client/dist/out-tsc/app/book-search/book-search.service.js.map +++ b/client/dist/out-tsc/app/book-search/book-search.service.js.map @@ -1 +1 @@ -{"version":3,"file":"book-search.service.js","sourceRoot":"","sources":["book-search.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAU,eAAe;OACrC,EAAC,IAAI,EAAoB,MAAM,eAAe;OAI9C,6BAA6B;AAKpC;IAME,2BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,gBAAW,GAAG,qBAAqB,CAAC;IAG5C,CAAC;IAED,oCAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,uCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IArBH;QAAC,UAAU,EAAE;;yBAAA;IAsBb,wBAAC;AAAD,CAAC,AArBD,IAqBC"} \ No newline at end of file +{"version":3,"file":"book-search.service.js","sourceRoot":"","sources":["book-search.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAU,eAAe;OACrC,EAAC,IAAI,EAAW,MAAM,eAAe;OAGrC,6BAA6B;AAKpC;IAIE,2BAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,aAAQ,GAAG,mBAAmB,CAAC;IAGvC,CAAC;IAED,kCAAM,GAAN,UAAO,IAAY;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAI,IAAI,CAAC,QAAQ,SAAI,IAAM,CAAC;aAC/B,GAAG,CAAC,UAAC,CAAW,IAAK,OAAA,CAAC,CAAC,IAAI,EAAE,CAAC,IAAc,EAAvB,CAAuB,CAAC,CAAC;IACnD,CAAC;IAEO,uCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAjBH;QAAC,UAAU,EAAE;;yBAAA;IAkBb,wBAAC;AAAD,CAAC,AAjBD,IAiBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book.js.map b/client/dist/out-tsc/app/book.js.map index c7b3c9e..5696868 100644 --- a/client/dist/out-tsc/app/book.js.map +++ b/client/dist/out-tsc/app/book.js.map @@ -1 +1 @@ -{"version":3,"file":"book.js","sourceRoot":"","sources":["book.ts"],"names":[],"mappings":"AAAA;IAAA;IAKA,CAAC;IAAD,WAAC;AAAD,CAAC,AALD,IAKC"} \ No newline at end of file +{"version":3,"file":"book.js","sourceRoot":"","sources":["book.ts"],"names":[],"mappings":"AAEA;IAAA;IAMA,CAAC;IAAD,WAAC;AAAD,CAAC,AAND,IAMC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/book.service.js b/client/dist/out-tsc/app/book.service.js index 88fdf19..d1a674d 100644 --- a/client/dist/out-tsc/app/book.service.js +++ b/client/dist/out-tsc/app/book.service.js @@ -28,7 +28,7 @@ export var BookService = (function () { }; BookService.prototype.create = function (bookName, author, category) { return this.http - .post(this.bookUrl, JSON.stringify({ name: bookName, author: author, category: category, shop: 1 }), { headers: this.headers }) + .post(this.bookUrl, JSON.stringify({ name: bookName, author: author, category: category }), { headers: this.headers }) .toPromise() .then(function (res) { return res.json(); }) .catch(this.handleError); @@ -41,8 +41,7 @@ export var BookService = (function () { .catch(this.handleError); }; BookService.prototype.delete = function (id) { - var url = this.bookUrl + "/" + id; - return this.http.delete(url, { headers: this.headers }) + return this.http.delete(this.bookUrl + id, { headers: this.headers }) .toPromise() .then(function () { return null; }) .catch(this.handleError); diff --git a/client/dist/out-tsc/app/book.service.js.map b/client/dist/out-tsc/app/book.service.js.map index fa7a849..60cb797 100644 --- a/client/dist/out-tsc/app/book.service.js.map +++ b/client/dist/out-tsc/app/book.service.js.map @@ -1 +1 @@ -{"version":3,"file":"book.service.js","sourceRoot":"","sources":["book.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAED,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,6BAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACvD,CAAC;IAED,4BAAM,GAAN,UAAO,QAAiB,EAAE,MAAe,EAAE,QAAgB;QACzD,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAC1H,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAChE,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,EAAU;QACf,IAAM,GAAG,GAAM,IAAI,CAAC,OAAO,SAAI,EAAI,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAClD,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAhDH;QAAC,UAAU,EAAE;;mBAAA;IAiDb,kBAAC;AAAD,CAAC,AAhDD,IAgDC"} \ No newline at end of file +{"version":3,"file":"book.service.js","sourceRoot":"","sources":["book.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAIE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAHtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAGpE,CAAC;IAED,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,6BAAO,GAAP,UAAQ,EAAU;QAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;aACnB,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACvD,CAAC;IAED,4BAAM,GAAN,UAAO,QAAiB,EAAE,MAAe,EAAE,QAAgB;QACzD,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aACjH,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,4BAAM,GAAN,UAAO,IAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAChE,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAGD,4BAAM,GAAN,UAAO,EAAU;QACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAC,EAAE,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAC9D,SAAS,EAAE;aACX,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAhDH;QAAC,UAAU,EAAE;;mBAAA;IAiDb,kBAAC;AAAD,CAAC,AAhDD,IAgDC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/categories/categories.service.js.map b/client/dist/out-tsc/app/categories/categories.service.js.map index 2565ceb..4413ce2 100644 --- a/client/dist/out-tsc/app/categories/categories.service.js.map +++ b/client/dist/out-tsc/app/categories/categories.service.js.map @@ -1 +1 @@ -{"version":3,"file":"categories.service.js","sourceRoot":"","sources":["categories.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAU,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAMpC;IAGE,yBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,gBAAW,GAAG,kBAAkB,CAAC;IAGzC,CAAC;IAED,uCAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAgB,EAA7B,CAA6B,CAAC;aAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,qCAAW,GAAX,UAAY,EAAU;QACpB,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;aACxB,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAlB,CAAkB,CAAC,EAA/C,CAA+C,CAAC,CAAC;IACzE,CAAC;IAEO,qCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAvBH;QAAC,UAAU,EAAE;;uBAAA;IAwBb,sBAAC;AAAD,CAAC,AAvBD,IAuBC"} \ No newline at end of file +{"version":3,"file":"categories.service.js","sourceRoot":"","sources":["categories.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAU,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAGE,yBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,gBAAW,GAAG,kBAAkB,CAAC;IAGzC,CAAC;IAED,uCAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAgB,EAA7B,CAA6B,CAAC;aAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAED,qCAAW,GAAX,UAAY,EAAU;QACpB,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;aACxB,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAlB,CAAkB,CAAC,EAA/C,CAA+C,CAAC,CAAC;IACzE,CAAC;IAEO,qCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAvBH;QAAC,UAAU,EAAE;;uBAAA;IAwBb,sBAAC;AAAD,CAAC,AAvBD,IAuBC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/shop.js.map b/client/dist/out-tsc/app/shop.js.map index d9b9e7e..b5b08c4 100644 --- a/client/dist/out-tsc/app/shop.js.map +++ b/client/dist/out-tsc/app/shop.js.map @@ -1 +1 @@ -{"version":3,"file":"shop.js","sourceRoot":"","sources":["shop.ts"],"names":[],"mappings":"AAAA;IAAA;IAGA,CAAC;IAAD,WAAC;AAAD,CAAC,AAHD,IAGC"} \ No newline at end of file +{"version":3,"file":"shop.js","sourceRoot":"","sources":["shop.ts"],"names":[],"mappings":"AAEA;IAAA;IAIA,CAAC;IAAD,WAAC;AAAD,CAAC,AAJD,IAIC"} \ No newline at end of file diff --git a/client/dist/out-tsc/app/shop/shop.component.js b/client/dist/out-tsc/app/shop/shop.component.js index 806e0ac..038632b 100644 --- a/client/dist/out-tsc/app/shop/shop.component.js +++ b/client/dist/out-tsc/app/shop/shop.component.js @@ -15,12 +15,12 @@ export var ShopComponent = (function () { this.router = router; this.shopService = shopService; } - ShopComponent.prototype.getBooks = function () { + ShopComponent.prototype.getShops = function () { var _this = this; this.shopService.getShops().then(function (shops) { return _this.shops = shops; }); }; ShopComponent.prototype.ngOnInit = function () { - this.getBooks(); + this.getShops(); }; ShopComponent = __decorate([ Component({ diff --git a/client/dist/out-tsc/app/shop/shop.service.js b/client/dist/out-tsc/app/shop/shop.service.js index c872091..519e96e 100644 --- a/client/dist/out-tsc/app/shop/shop.service.js +++ b/client/dist/out-tsc/app/shop/shop.service.js @@ -8,13 +8,12 @@ var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable } from '@angular/core'; -import { Headers, Http } from '@angular/http'; +import { Http } from '@angular/http'; import 'rxjs/add/operator/toPromise'; export var ShopService = (function () { function ShopService(http) { this.http = http; this.shopUrl = '/api/shops/'; - this.headers = new Headers({ 'Content-Type': 'application/json' }); } ShopService.prototype.getShops = function () { return this.http.get(this.shopUrl) diff --git a/client/dist/out-tsc/app/shop/shop.service.js.map b/client/dist/out-tsc/app/shop/shop.service.js.map index 406bc48..8b4ec51 100644 --- a/client/dist/out-tsc/app/shop/shop.service.js.map +++ b/client/dist/out-tsc/app/shop/shop.service.js.map @@ -1 +1 @@ -{"version":3,"file":"shop.service.js","sourceRoot":"","sources":["shop.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAGE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,YAAO,GAAG,aAAa,CAAC;QACxB,YAAO,GAAG,IAAI,OAAO,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;IAEpE,CAAC;IAED,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAlBH;QAAC,UAAU,EAAE;;mBAAA;IAmBb,kBAAC;AAAD,CAAC,AAlBD,IAkBC"} \ No newline at end of file +{"version":3,"file":"shop.service.js","sourceRoot":"","sources":["shop.service.ts"],"names":[],"mappings":";;;;;;;;;OAAO,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAU,IAAI,EAAC,MAAM,eAAe;OAEpC,6BAA6B;AAKpC;IAEE,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QADtB,YAAO,GAAG,aAAa,CAAC;IAEhC,CAAC;IAED,8BAAQ,GAAR;QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aAC/B,SAAS,EAAE;aACX,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,EAAY,EAAzB,CAAyB,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7B,CAAC;IAEO,iCAAW,GAAnB,UAAoB,KAAU;QAC5B,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAChD,CAAC;IAjBH;QAAC,UAAU,EAAE;;mBAAA;IAkBb,kBAAC;AAAD,CAAC,AAjBD,IAiBC"} \ No newline at end of file diff --git a/client/src/app/add-book/add-book.component.html b/client/src/app/add-book/add-book.component.html index 27a043c..eb9a767 100644 --- a/client/src/app/add-book/add-book.component.html +++ b/client/src/app/add-book/add-book.component.html @@ -1,7 +1,9 @@ +






    + diff --git a/client/src/app/add-book/add-book.component.ts b/client/src/app/add-book/add-book.component.ts index 6261ff0..97098e2 100644 --- a/client/src/app/add-book/add-book.component.ts +++ b/client/src/app/add-book/add-book.component.ts @@ -5,6 +5,7 @@ import { Location } from '@angular/common'; import {BookService} from '../book.service'; import {CategoryService} from "../categories/categories.service"; import {Category} from "../categories"; +import {Shop} from "../shop"; @Component({ selector: 'add-book', diff --git a/client/src/app/app.component.css b/client/src/app/app.component.css index 775adda..e69de29 100644 --- a/client/src/app/app.component.css +++ b/client/src/app/app.component.css @@ -1,20 +0,0 @@ -.allStaticContent{ - float: left; - height: 500px; - width: 350px; -} - -a { - font-family: Arial; - background-color: #C0D7FB; - border: none; - padding: 4px 136px; - color: black; - margin: 0px; - width: 194px; - text-decoration: none; -} - -a:hover { - background-color: #cfd8dc; -} diff --git a/client/src/app/app.component.html b/client/src/app/app.component.html index 902203d..7c1b0df 100644 --- a/client/src/app/app.component.html +++ b/client/src/app/app.component.html @@ -1,10 +1,10 @@ -
    - - - + + + diff --git a/client/src/app/book-search/book-search.component.html b/client/src/app/book-search/book-search.component.html index dbfa231..0b29dd3 100644 --- a/client/src/app/book-search/book-search.component.html +++ b/client/src/app/book-search/book-search.component.html @@ -1,6 +1,6 @@

    Books Search

    - +
    diff --git a/client/src/app/book-search/book-search.component.ts b/client/src/app/book-search/book-search.component.ts index 3d31832..e31b613 100644 --- a/client/src/app/book-search/book-search.component.ts +++ b/client/src/app/book-search/book-search.component.ts @@ -4,6 +4,7 @@ import {Router} from '@angular/router'; import {Subject} from 'rxjs/Subject'; import {BookSearchService} from './book-search.service'; import {Book} from '../book'; +import {Observable} from "rxjs"; @Component({ selector: 'book-search', @@ -11,24 +12,16 @@ import {Book} from '../book'; styleUrls: ['book-search.component.css'], providers: [BookSearchService] }) -export class BookSearchComponent implements OnInit { +export class BookSearchComponent { books: Book[]; - private searchTerms = new Subject(); + private searchName = new Subject(); constructor(private bookSearchService: BookSearchService) { } search(name: string): void { - this.searchTerms.next(name); - } - - getBooks(): void { - this.bookSearchService.getBooks().then(books => this.books = books); - } - ngOnInit(): void { - this.getBooks(); } } diff --git a/client/src/app/book-search/book-search.service.ts b/client/src/app/book-search/book-search.service.ts index c84f351..ec7ce5b 100644 --- a/client/src/app/book-search/book-search.service.ts +++ b/client/src/app/book-search/book-search.service.ts @@ -1,28 +1,23 @@ import {Injectable} from '@angular/core'; -import {Http, Response, Headers} from '@angular/http'; -import {Observable} from 'rxjs'; -import {Book} from '../book'; +import {Http, Response} from '@angular/http'; +import {Book} from '../book'; import 'rxjs/add/operator/toPromise'; +import {Observable} from "rxjs"; -import {Category} from '../categories'; @Injectable() export class BookSearchService { - category: Category; - - private categoryUrl = '/api/books/category'; + private booksUrl = '/api/books/search'; constructor(private http: Http) { } - getBooks(): Promise { - return this.http.get(this.categoryUrl) - .toPromise() - .then(response => response.json() as Book[]) - .catch(this.handleError); - + search(name: string): Observable { + return this.http + .get(`${this.booksUrl}/${name}`) + .map((r: Response) => r.json().data as Book[]); } private handleError(error: any): Promise { diff --git a/client/src/app/book.service.ts b/client/src/app/book.service.ts index fca3e2c..10718b3 100644 --- a/client/src/app/book.service.ts +++ b/client/src/app/book.service.ts @@ -42,9 +42,9 @@ export class BookService { .catch(this.handleError); } + delete(id: number): Promise { - const url = `${this.bookUrl}/${id}`; - return this.http.delete(url, {headers: this.headers}) + return this.http.delete(this.bookUrl+id, {headers: this.headers}) .toPromise() .then(() => null) .catch(this.handleError); diff --git a/client/src/app/book/book.component.css b/client/src/app/book/book.component.css index 67bb884..6407117 100644 --- a/client/src/app/book/book.component.css +++ b/client/src/app/book/book.component.css @@ -1,7 +1,2 @@ -allBooks{ - float: right; -} - -li{ - list-style-type: none; -} +td > a{text-decoration: none; +cursor: pointer;} diff --git a/client/src/app/book/book.component.html b/client/src/app/book/book.component.html index cf32fcf..30c8048 100644 --- a/client/src/app/book/book.component.html +++ b/client/src/app/book/book.component.html @@ -1,12 +1,29 @@ -
    -

    All Books

    -
      -
    • - {{book.author}} | - {{book.name}} - -
    • -
    +
    +

    All Books

    +
    +
    +
    + + + + + + + + + + + + + + + +
    BookAuthor
    {{book.name}}{{book.author}} + +
    +
    +
    +
    diff --git a/client/src/app/books-category/books-category.component.ts b/client/src/app/books-category/books-category.component.ts index 657148c..29fd4da 100644 --- a/client/src/app/books-category/books-category.component.ts +++ b/client/src/app/books-category/books-category.component.ts @@ -3,8 +3,6 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, Params } from '@angular/router'; import { Location } from '@angular/common'; -import { Book } from '../book'; -import { BookService } from '../book.service'; import {CategoryService} from "../categories/categories.service"; import {Category} from "../categories"; diff --git a/client/src/app/categories/categories.service.ts b/client/src/app/categories/categories.service.ts index d801914..1ed7787 100644 --- a/client/src/app/categories/categories.service.ts +++ b/client/src/app/categories/categories.service.ts @@ -4,7 +4,6 @@ import {Headers, Http} from '@angular/http'; import 'rxjs/add/operator/toPromise'; import {Category} from '../categories'; -import {Book} from "../book"; @Injectable() export class CategoryService { diff --git a/client/src/app/shop/shop.component.html b/client/src/app/shop/shop.component.html index bb0ebea..c627066 100644 --- a/client/src/app/shop/shop.component.html +++ b/client/src/app/shop/shop.component.html @@ -1,5 +1,4 @@
      - +
    • {{shop.name}}
    • +
    diff --git a/client/src/app/shop/shop.component.ts b/client/src/app/shop/shop.component.ts index 3efc8fe..2fe9f30 100644 --- a/client/src/app/shop/shop.component.ts +++ b/client/src/app/shop/shop.component.ts @@ -17,12 +17,12 @@ export class ShopComponent implements OnInit { private shopService: ShopService) { } - getBooks(): void { + getShops(): void { this.shopService.getShops().then(shops => this.shops = shops); } ngOnInit(): void { - this.getBooks(); + this.getShops(); } } diff --git a/client/src/app/shop/shop.service.ts b/client/src/app/shop/shop.service.ts index fde87ff..76b4415 100644 --- a/client/src/app/shop/shop.service.ts +++ b/client/src/app/shop/shop.service.ts @@ -8,7 +8,6 @@ import {Shop} from '../shop'; @Injectable() export class ShopService { private shopUrl = '/api/shops/'; - private headers = new Headers({'Content-Type': 'application/json'}); constructor(private http: Http) { } diff --git a/client/src/styles.css b/client/src/styles.css index 19c1d5c..1f7302b 100644 --- a/client/src/styles.css +++ b/client/src/styles.css @@ -5,20 +5,6 @@ body { background-color: #E6E6E6; } -input { - border-radius: 5px; - padding: 7px; - width: 300px; -} - -input[type=submit] { - background-color: #B0C4DE; - padding: 5px 10px; - border-radius: 5px; - border: 0px; - margin: 10px; -} - select { padding: 3px; margin: 0; @@ -39,15 +25,9 @@ select { margin: 10px; } -button { - font-family: Arial; - background-color: #C0D7FB; - border: none; - padding: 1px 4px; - cursor: pointer; - cursor: hand; +#navbar-toggle-cbox { + display:none } -button:hover { - background-color: #cfd8dc; +#navbar-toggle-cbox:checked ~ .collapse { + display: block; } - From 0e98c6d0ab1178f444e7526b2bc6da5597e29d64 Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Thu, 15 Dec 2016 18:52:08 +0200 Subject: [PATCH 17/20] Change relations --- API/src/main/java/app/core/model/Book.java | 3 +++ API/src/main/java/app/core/model/Categories.java | 14 -------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/API/src/main/java/app/core/model/Book.java b/API/src/main/java/app/core/model/Book.java index 727fc64..caebd10 100644 --- a/API/src/main/java/app/core/model/Book.java +++ b/API/src/main/java/app/core/model/Book.java @@ -3,6 +3,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; import javax.persistence.*; @@ -32,6 +34,7 @@ public class Book { @Column(name = "category") private Integer category; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category", insertable = false, updatable = false) diff --git a/API/src/main/java/app/core/model/Categories.java b/API/src/main/java/app/core/model/Categories.java index ca08590..762f6ec 100644 --- a/API/src/main/java/app/core/model/Categories.java +++ b/API/src/main/java/app/core/model/Categories.java @@ -19,11 +19,6 @@ public class Categories { @Column(name = "name") public String name; - @JsonIgnore - @OneToMany(fetch = FetchType.EAGER, mappedBy = "categories") - @Cascade({org.hibernate.annotations.CascadeType.DELETE}) - public List books = new ArrayList(); - public Categories() { } @@ -51,13 +46,4 @@ public void setName(String name) { this.name = name; } - public List getBooks() { - return books; - } - - public void setBooks(List books) { - this.books = books; - } - - } From c4a0b8262503bad314264e6e426ffec932c9a05b Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Thu, 15 Dec 2016 18:53:19 +0200 Subject: [PATCH 18/20] Change routing --- client/src/app/app-routing.module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts index 75de9a7..73521c4 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts @@ -10,10 +10,10 @@ import {CategoryComponent} from './categories/categories.component'; const routes: Routes = [ {path: '', redirectTo: '/books', pathMatch: 'full'}, + {path: 'books/new', component: AddBookComponent}, {path: 'books', component: BookComponent}, {path: 'search', component: BookSearchComponent}, - {path: 'detail/:id', component: BooksDetailComponent}, - {path: 'books/new', component: AddBookComponent}, + {path: 'books/:id', component: BooksDetailComponent}, {path: 'shop', component: ShopComponent}, {path: 'categories', component: CategoryComponent}, {path: 'categories/:id', component: BooksCategoryComponent} From adda43c8d808fd73f54d466bccf7969df1d971ec Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Thu, 15 Dec 2016 18:53:55 +0200 Subject: [PATCH 19/20] Change adding book --- .../src/app/add-book/add-book.component.html | 42 ++++++++++++++----- client/src/app/app.component.css | 9 ++++ client/src/app/app.component.html | 25 ++++++----- client/src/app/app.module.ts | 2 - client/src/app/book.service.ts | 4 +- 5 files changed, 55 insertions(+), 27 deletions(-) diff --git a/client/src/app/add-book/add-book.component.html b/client/src/app/add-book/add-book.component.html index eb9a767..35f2f10 100644 --- a/client/src/app/add-book/add-book.component.html +++ b/client/src/app/add-book/add-book.component.html @@ -1,11 +1,33 @@ +
    +
    +
    +

    Add new book

    +
    +
    + + +
    +
    + + +
    +
    + + +
    + + +
    +
    +
    +

    Sorry..

    + + Our service working in test regime. Maintenance is in process. + +
    +
    +
    -
    -

    -

    -

    - - - -
    diff --git a/client/src/app/app.component.css b/client/src/app/app.component.css index e69de29..3c84c16 100644 --- a/client/src/app/app.component.css +++ b/client/src/app/app.component.css @@ -0,0 +1,9 @@ +.navbar-default .navbar-nav > li.dropdown:hover > a, +.navbar-default .navbar-nav > li.dropdown:hover > a:hover, +.navbar-default .navbar-nav > li.dropdown:hover > a:focus { + background-color: rgb(231, 231, 231); + color: rgb(85, 85, 85); +} +li.dropdown:hover > .dropdown-menu { + display: block; +} diff --git a/client/src/app/app.component.html b/client/src/app/app.component.html index 7c1b0df..74d34ad 100644 --- a/client/src/app/app.component.html +++ b/client/src/app/app.component.html @@ -12,24 +12,23 @@ {{title}}
    -
    +
    - - - - - diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index 900555b..3ba1161 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -5,7 +5,6 @@ import {AppComponent} from './app.component'; import {BookComponent} from './book/book.component'; import {BooksDetailComponent} from './book-details/book-details.component'; import {BookService} from './book.service'; -import {BookSearchService} from './book-search/book-search.service' import {BookSearchComponent} from './book-search/book-search.component' import {ShopService} from './shop/shop.service' import {ShopComponent} from './shop/shop.component' @@ -38,7 +37,6 @@ import './rxjs-extensions'; ], providers: [ BookService, - BookSearchService, ShopService, CategoryService ], diff --git a/client/src/app/book.service.ts b/client/src/app/book.service.ts index 10718b3..fb6392c 100644 --- a/client/src/app/book.service.ts +++ b/client/src/app/book.service.ts @@ -1,9 +1,10 @@ import {Injectable} from '@angular/core'; -import {Headers, Http} from '@angular/http'; +import {Headers, Http, Response} from '@angular/http'; import 'rxjs/add/operator/toPromise'; import {Book} from './book'; +import {Observable} from "rxjs"; @Injectable() export class BookService { @@ -18,7 +19,6 @@ export class BookService { .toPromise() .then(response => response.json() as Book[]) .catch(this.handleError); - } getBook(id: number): Promise { From 9f95505b316319ab874d1d73d597d7fcedf29610 Mon Sep 17 00:00:00 2001 From: Zabudska-Yuliia Date: Thu, 15 Dec 2016 19:28:43 +0200 Subject: [PATCH 20/20] Change search and menu --- .../book-details/book-details.component.css | 9 +++ .../book-details/book-details.component.html | 56 ++++++++++++++----- .../book-details/book-details.component.ts | 2 +- .../app/book-search/book-search.component.css | 14 +++++ .../book-search/book-search.component.html | 3 +- .../app/book-search/book-search.component.ts | 43 +++++++++----- .../app/book-search/book-search.service.ts | 24 +++----- client/src/app/book/book.component.html | 2 +- client/src/app/book/book.component.ts | 2 +- .../app/categories/categories.component.css | 16 ------ .../app/categories/categories.component.html | 9 +-- client/src/app/shop/shop.component.html | 22 ++++++-- 12 files changed, 128 insertions(+), 74 deletions(-) diff --git a/client/src/app/book-details/book-details.component.css b/client/src/app/book-details/book-details.component.css index 4af1522..23b3ab7 100644 --- a/client/src/app/book-details/book-details.component.css +++ b/client/src/app/book-details/book-details.component.css @@ -1,3 +1,12 @@ label{ font-weight: bold; } + +.input-group{ + width: 100%; + padding: 10px 0px; +} + +.table-responsive{ + border: none; +} diff --git a/client/src/app/book-details/book-details.component.html b/client/src/app/book-details/book-details.component.html index 0330791..750d6ab 100644 --- a/client/src/app/book-details/book-details.component.html +++ b/client/src/app/book-details/book-details.component.html @@ -1,16 +1,46 @@ -
    - -
    - {{book.author}}
    -
    - +
    +
    +
    +
    +

    Book: '{{book.name}}'

    +
    +
    - -
    - - {{shops.name}} +
    +
    +
    +
    + {{book.author}} +
    +
    +
    + + + + + + + + + +
    {{shops.name}}
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    - - -
    + + + diff --git a/client/src/app/book-details/book-details.component.ts b/client/src/app/book-details/book-details.component.ts index 066036f..9cf0c13 100644 --- a/client/src/app/book-details/book-details.component.ts +++ b/client/src/app/book-details/book-details.component.ts @@ -10,7 +10,7 @@ import { BookService } from '../book.service'; templateUrl: 'book-details.component.html', styleUrls: ['book-details.component.css'] }) -export class BooksDetailComponent implements OnInit { +export class BooksDetailComponent { book: Book; constructor( diff --git a/client/src/app/book-search/book-search.component.css b/client/src/app/book-search/book-search.component.css index e69de29..f6b5c59 100644 --- a/client/src/app/book-search/book-search.component.css +++ b/client/src/app/book-search/book-search.component.css @@ -0,0 +1,14 @@ +.search-result{ + border-bottom: 1px solid gray; + border-left: 1px solid gray; + border-right: 1px solid gray; + width:195px; + height: 20px; + padding: 5px; + background-color: white; + cursor: pointer; +} +#search-box{ + width: 200px; + height: 20px; +} diff --git a/client/src/app/book-search/book-search.component.html b/client/src/app/book-search/book-search.component.html index 0b29dd3..2140487 100644 --- a/client/src/app/book-search/book-search.component.html +++ b/client/src/app/book-search/book-search.component.html @@ -1,6 +1,5 @@
    -

    Books Search

    - +
    diff --git a/client/src/app/book-search/book-search.component.ts b/client/src/app/book-search/book-search.component.ts index e31b613..b10e4aa 100644 --- a/client/src/app/book-search/book-search.component.ts +++ b/client/src/app/book-search/book-search.component.ts @@ -1,27 +1,44 @@ -import {Component, OnInit} from '@angular/core'; -import {Router} from '@angular/router'; +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { Observable } from 'rxjs/Observable'; +import { Subject } from 'rxjs/Subject'; -import {Subject} from 'rxjs/Subject'; -import {BookSearchService} from './book-search.service'; -import {Book} from '../book'; -import {Observable} from "rxjs"; -@Component({ +import { BookSearchService } from './book-search.service'; +import { Book } from '../book'; +@Component({ selector: 'book-search', templateUrl: 'book-search.component.html', - styleUrls: ['book-search.component.css'], + styleUrls: [ 'book-search.component.css' ], providers: [BookSearchService] }) -export class BookSearchComponent { - books: Book[]; - +export class BookSearchComponent implements OnInit { + books: Observable; private searchName = new Subject(); - constructor(private bookSearchService: BookSearchService) { - } + constructor( + private bookSearchService: BookSearchService, + private router: Router) {} search(name: string): void { + this.searchName.next(name); + } + ngOnInit(): void { + this.books = this.searchName + .debounceTime(300) + .distinctUntilChanged() + .switchMap(name => name + ? this.bookSearchService.search(name) + : Observable.of([])) + .catch(error => { + console.log(error); + return Observable.of([]); + }); } + gotoDetail(book: Book): void { + this.search(""); + this.router.navigate(['/books/', book.id]); + } } diff --git a/client/src/app/book-search/book-search.service.ts b/client/src/app/book-search/book-search.service.ts index ec7ce5b..79f309e 100644 --- a/client/src/app/book-search/book-search.service.ts +++ b/client/src/app/book-search/book-search.service.ts @@ -1,27 +1,17 @@ -import {Injectable} from '@angular/core'; -import {Http, Response} from '@angular/http'; -import {Book} from '../book'; - -import 'rxjs/add/operator/toPromise'; -import {Observable} from "rxjs"; +import { Injectable } from '@angular/core'; +import { Http, Response } from '@angular/http'; +import { Observable } from 'rxjs'; +import { Book } from '../book'; @Injectable() export class BookSearchService { - private booksUrl = '/api/books/search'; - - constructor(private http: Http) { - } + constructor(private http: Http) {} search(name: string): Observable { return this.http - .get(`${this.booksUrl}/${name}`) - .map((r: Response) => r.json().data as Book[]); - } - - private handleError(error: any): Promise { - console.error('An error occurred', error); - return Promise.reject(error.message || error); + .get(`api/books/search/${name}`) + .map((book: Response) => book.json() as Book[]); } } diff --git a/client/src/app/book/book.component.html b/client/src/app/book/book.component.html index 30c8048..a6430d4 100644 --- a/client/src/app/book/book.component.html +++ b/client/src/app/book/book.component.html @@ -1,10 +1,10 @@
    -

    All Books

    +

    All Books

    diff --git a/client/src/app/book/book.component.ts b/client/src/app/book/book.component.ts index a3ba616..856d3e4 100644 --- a/client/src/app/book/book.component.ts +++ b/client/src/app/book/book.component.ts @@ -35,7 +35,7 @@ export class BookComponent implements OnInit { } showBook(book: Book): void { - this.router.navigate(['/detail', book.id]); + this.router.navigate(['/books', book.id]); } } diff --git a/client/src/app/categories/categories.component.css b/client/src/app/categories/categories.component.css index 412154f..e69de29 100644 --- a/client/src/app/categories/categories.component.css +++ b/client/src/app/categories/categories.component.css @@ -1,16 +0,0 @@ -.menu li{ - list-style-type: none; -} - -button { - font-family: Arial; - background-color: #C0D7FB; - border: none; - padding: 10px; - width: 150px; - -} - -button:hover { - background-color: #cfd8dc; -} diff --git a/client/src/app/categories/categories.component.html b/client/src/app/categories/categories.component.html index 2f1f3b2..348df09 100644 --- a/client/src/app/categories/categories.component.html +++ b/client/src/app/categories/categories.component.html @@ -1,7 +1,4 @@ - - +
  • + {{category.name}} +
  • diff --git a/client/src/app/shop/shop.component.html b/client/src/app/shop/shop.component.html index c627066..8127352 100644 --- a/client/src/app/shop/shop.component.html +++ b/client/src/app/shop/shop.component.html @@ -1,4 +1,18 @@ -
      -
    • {{shop.name}}
    • - -
    +
    +
    +
    +
    +
    Book Author
    + +

    All Shops

    + + + + + + +
    {{shop.name}}
    +
    +
    +
    +