diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b6b8e1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +API/.idea/ +API/API.iml +API/MyBooks.iml +API/target/ + +client/.idea/ +client/dist/ +client/client.iml +client/e2e/ +client/node_modules/ + +db/db.iml + diff --git a/API/Dockerfile b/API/Dockerfile new file mode 100644 index 0000000..d720ba3 --- /dev/null +++ b/API/Dockerfile @@ -0,0 +1,5 @@ +FROM maven:3.3.9-jdk-8 + +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/java/app/core/controller/BooksController.java b/API/src/main/java/app/core/controller/BooksController.java index 5fe1a1d..f5fcf25 100644 --- a/API/src/main/java/app/core/controller/BooksController.java +++ b/API/src/main/java/app/core/controller/BooksController.java @@ -23,9 +23,9 @@ public List allBooks() { } @ResponseBody - @RequestMapping(value = "/", method = RequestMethod.POST) - public void addBook(@RequestBody Book book) { - service.addBook(book); + @RequestMapping(value = "", method = RequestMethod.POST) + public Book addBook(@RequestBody Book book) { + return service.addBook(book); } @ResponseBody @@ -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/controller/CategoriesController.java b/API/src/main/java/app/core/controller/CategoriesController.java index 7278a6d..0cb787d 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.*; @@ -8,17 +9,17 @@ import app.core.service.CategoriesServiceImpl; + @RestController +@RequestMapping(value = "/api/categories") public class CategoriesController { @Autowired CategoriesServiceImpl service; @ResponseBody - @RequestMapping(value = "/api/categories", method = RequestMethod.GET) + @RequestMapping(value = "", method = RequestMethod.GET) public List allCategories() { - - System.out.println(service.getCategories()); return service.getCategories(); } diff --git a/API/src/main/java/app/core/controller/ShopController.java b/API/src/main/java/app/core/controller/ShopController.java index c65362e..aa00302 100644 --- a/API/src/main/java/app/core/controller/ShopController.java +++ b/API/src/main/java/app/core/controller/ShopController.java @@ -9,13 +9,14 @@ import app.core.service.ShopServiceImpl; @RestController +@RequestMapping(value = "/api/shops") public class ShopController { @Autowired ShopServiceImpl service; @ResponseBody - @RequestMapping(value = "/api/shops", method = RequestMethod.GET) + @RequestMapping(value = "", method = RequestMethod.GET) public List allShops() { return service.getShops(); } diff --git a/API/src/main/java/app/core/dao/BooksDao.java b/API/src/main/java/app/core/dao/BooksDao.java index 744debb..835ea1f 100644 --- a/API/src/main/java/app/core/dao/BooksDao.java +++ b/API/src/main/java/app/core/dao/BooksDao.java @@ -1,18 +1,21 @@ 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); - public void addBook(Book book); + public Book addBook(Book book); public void updateBook(Book upBook); + 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 f899512..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,27 +17,36 @@ 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 void addBook(Book book) { + public List getBooks() {return createCriteria().setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); + } + + 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) { sessionFactory.getCurrentSession().save(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 a8c4d6a..d35127e 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,8 @@ 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 e03e43a..caebd10 100644 --- a/API/src/main/java/app/core/model/Book.java +++ b/API/src/main/java/app/core/model/Book.java @@ -1,9 +1,18 @@ package app.core.model; 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.*; +import java.util.ArrayList; +import java.util.List; +import javax.persistence.ManyToMany; + + import static javax.persistence.GenerationType.IDENTITY; @Entity @@ -25,12 +34,30 @@ public class Book { @Column(name = "category") private Integer category; + @JsonIgnore - @ManyToOne(fetch = FetchType.EAGER) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category", insertable = false, updatable = false) private Categories categories; + @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE) + @JoinTable(name = "book_shops", catalog = "Library", + joinColumns = { + @JoinColumn( name = "idBook", referencedColumnName = "id") + }, + inverseJoinColumns = {@JoinColumn(name = "idShop", referencedColumnName = "id" )}) + private List shops = new ArrayList(); + + public List getShops() { + return this.shops; + } + + public void setShops(List shops) { + this.shops = shops; + } + + public Book() { } @@ -44,6 +71,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/Categories.java b/API/src/main/java/app/core/model/Categories.java index 95d4677..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.LAZY, mappedBy = "categories") - @Cascade({org.hibernate.annotations.CascadeType.DELETE}) - public List categories = new ArrayList(); - public Categories() { } @@ -51,13 +46,4 @@ public void setName(String name) { this.name = name; } - public List getCategories() { - return categories; - } - - public void setCategories(List categories) { - this.categories = categories; - } - - } diff --git a/API/src/main/java/app/core/model/Shop.java b/API/src/main/java/app/core/model/Shop.java index 2789f37..35331fb 100644 --- a/API/src/main/java/app/core/model/Shop.java +++ b/API/src/main/java/app/core/model/Shop.java @@ -2,6 +2,8 @@ import javax.persistence.*; +import java.awt.print.*; +import java.util.ArrayList; import java.util.List; import static javax.persistence.GenerationType.IDENTITY; @@ -19,5 +21,19 @@ public class Shop { @Column(name = "name") 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..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,12 @@ public List getBooks() { return dao.getBooks(); } - public void addBook(Book book) { - dao.addBook(book); + public List searchBook(String name) { + return dao.searchBook(name); + } + + public Book addBook(Book book) { + return dao.addBook(book); } public void updateBook(Book upBook) { 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/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 397e070..8968340 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -1,10 +1,5 @@ FROM node:4.4 + RUN npm install -g npm -RUN mkdir /client WORKDIR /client - -COPY src ./ - -EXPOSE 3000:3001 -CMD["npm", "run", "api"] 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-routing.module.js b/client/dist/out-tsc/app/app-routing.module.js index c8d7391..04df3c8 100644 --- a/client/dist/out-tsc/app/app-routing.module.js +++ b/client/dist/out-tsc/app/app-routing.module.js @@ -12,15 +12,19 @@ import { RouterModule } from '@angular/router'; import { BookComponent } from './book/book.component'; 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' }, { path: 'books', component: BookComponent }, { path: 'search', component: BookSearchComponent }, { 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 239c563..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,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,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..2c1ec08 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 = 'SearchMe'; } 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..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;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,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/app.module.js b/client/dist/out-tsc/app/app.module.js index 1e6e4fd..d550ba9 100644 --- a/client/dist/out-tsc/app/app.module.js +++ b/client/dist/out-tsc/app/app.module.js @@ -18,8 +18,10 @@ 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'; +import { BooksCategoryComponent } from './books-category/books-category.component'; import { HttpModule } from '@angular/http'; import { AppRoutingModule } from './app-routing.module'; import './rxjs-extensions'; @@ -37,9 +39,11 @@ export var AppModule = (function () { declarations: [ AppComponent, BookComponent, + AddBookComponent, 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 fc0da3d..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,iBAAiB,EAAC,MAAO,mCAAmC;OAC5D,EAAC,eAAe,EAAC,MAAQ,iCAAiC;OAG3D,EAAC,UAAU,EAAC,MAAS,eAAe;OACpC,EAAC,gBAAgB,EAAC,MAAM,sBAAsB;OAC9C,mBAAmB;AA0B1B;IAAA;IACA,CAAC;IAzBD;QAAC,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,gBAAgB;aACjB;YAED,YAAY,EAAE;gBACZ,YAAY;gBACZ,aAAa;gBACb,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 3ef8767..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 @@ -8,41 +8,23 @@ 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 { Observable } from 'rxjs/Observable'; 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(); + this.searchName = new Subject(); } BookSearchComponent.prototype.search = function (name) { - this.searchTerms.next(name); - }; - BookSearchComponent.prototype.ngOnInit = 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([]); - }); }; 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 178407d..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;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;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 6c6fb50..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 @@ -9,14 +9,20 @@ var __metadata = (this && this.__metadata) || function (k, v) { }; import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; +import 'rxjs/add/operator/toPromise'; export var BookSearchService = (function () { function BookSearchService(http) { this.http = http; + this.booksUrl = '/api/books/search'; } BookSearchService.prototype.search = function (name) { return this.http - .get("api/books?q=" + name) - .map(function (r) { return r.json(); }); + .get(this.booksUrl + "/" + name) + .map(function (r) { return r.json().data; }); + }; + 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..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,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,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 48457b7..d1a674d 100644 --- a/client/dist/out-tsc/app/book.service.js +++ b/client/dist/out-tsc/app/book.service.js @@ -26,9 +26,9 @@ export var BookService = (function () { return this.getBooks() .then(function (books) { return books.find(function (book) { return book.id === id; }); }); }; - BookService.prototype.create = function (book) { + BookService.prototype.create = function (bookName, author, category) { 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(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 61b0d60..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;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;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/book/book.component.js b/client/dist/out-tsc/app/book/book.component.js index 0a9fa2b..c73e132 100644 --- a/client/dist/out-tsc/app/book/book.component.js +++ b/client/dist/out-tsc/app/book/book.component.js @@ -22,17 +22,6 @@ export var BookComponent = (function () { BookComponent.prototype.ngOnInit = function () { this.getBooks(); }; - BookComponent.prototype.onSelect = function (book) { - this.selectedBook = book; - }; - BookComponent.prototype.add = function (book) { - var _this = this; - alert(book); - this.bookService.create(book) - .then(function (book) { - _this.books.push(book); - }); - }; BookComponent.prototype.delete = function (book) { var _this = this; this.bookService @@ -46,13 +35,12 @@ export var BookComponent = (function () { }; BookComponent = __decorate([ Component({ - moduleId: module.id.toString(), 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/dist/out-tsc/app/book/book.component.js.map b/client/dist/out-tsc/app/book/book.component.js.map index bb62306..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;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;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 4b3177a..558fa67 100644 --- a/client/dist/out-tsc/app/categories/categories.component.js +++ b/client/dist/out-tsc/app/categories/categories.component.js @@ -15,6 +15,9 @@ export var CategoryComponent = (function () { this.router = router; this.categoryService = categoryService; } + CategoryComponent.prototype.getBooksByCategory = function (category) { + this.router.navigate(['categories/', category.id]); + }; CategoryComponent.prototype.getCategories = function () { var _this = this; this.categoryService.getCategories().then(function (categories) { return _this.categories = categories; }); @@ -22,9 +25,11 @@ 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'] 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..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,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;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..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,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;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 43ec12f..038632b 100644 --- a/client/dist/out-tsc/app/shop/shop.component.js +++ b/client/dist/out-tsc/app/shop/shop.component.js @@ -15,16 +15,15 @@ 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({ - 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 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 5bea535..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;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,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/package.json b/client/package.json index 84fb76a..4568873 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": { @@ -23,6 +21,7 @@ "@angular/platform-browser-dynamic": "2.2.1", "@angular/router": "3.2.1", "core-js": "^2.4.1", + "ng2-bootstrap": "^1.1.16", "rxjs": "5.0.0-beta.12", "ts-helpers": "^1.1.1", "zone.js": "^0.6.23" 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/add-book/add-book.component.css b/client/src/app/add-book/add-book.component.css new file mode 100644 index 0000000..e69de29 diff --git a/client/src/app/add-book/add-book.component.html b/client/src/app/add-book/add-book.component.html new file mode 100644 index 0000000..35f2f10 --- /dev/null +++ b/client/src/app/add-book/add-book.component.html @@ -0,0 +1,33 @@ +
+
+
+

Add new book

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

Sorry..

+ + Our service working in test regime. Maintenance is in process. + +
+
+
+ diff --git a/client/src/app/add-book/add-book.component.ts b/client/src/app/add-book/add-book.component.ts new file mode 100644 index 0000000..97098e2 --- /dev/null +++ b/client/src/app/add-book/add-book.component.ts @@ -0,0 +1,41 @@ +import {Component} from '@angular/core'; + +import {Book} from '../book'; +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', + templateUrl: 'add-book.component.html', + styleUrls: ['add-book.component.css'] +}) +export class AddBookComponent { + books: Book[]; + book: Book; + categories: Category[]; + category: Category; + + 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 { + this.bookService.create(name, author, category) + .then(book => { + 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 a8cfc09..73521c4 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts @@ -3,16 +3,20 @@ import {RouterModule, Routes} from '@angular/router'; import {BookComponent} from './book/book.component'; 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 = [ {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/:id', component: BooksDetailComponent}, {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..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 81507d4..74d34ad 100644 --- a/client/src/app/app.component.html +++ b/client/src/app/app.component.html @@ -1,8 +1,34 @@ -

{{title}}

-