Try it: http://cloudsole-angular.herokuapp.com
Clone it: https://github.com/thysmichels/cloudsole-angular
1. Address Book Model
2. Address Book Service
3. Address Book Service Implementation
4. Address Book Controller
5. Address Book Angular Controller
6. Address Book HTML
1. Address Book Model
package com.cloudsole.angular.model; /** * Created by tmichels on 8/3/14. */ public class AddressBook { private long id; private String firstName; private String lastName; private String phone; private String email; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
2. Address Book Service
package com.cloudsole.angular.service; import com.cloudsole.angular.model.AddressBook; import java.util.List; /** * Created by tmichels on 8/3/14. */ public interface AddressBookService { List<AddressBook> viewAllAddressBook(); void createAddressBook(AddressBook addressBook); void updateAddressBook(int pos, AddressBook updateAddressBook); void deleteAddressBook(int id); void deleteAllAddressBook(); AddressBook findAddressBook(int id); }
3. Address Book Service Implementation
package com.cloudsole.angular.service; import com.cloudsole.angular.model.AddressBook; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * Created by tmichels on 8/3/14. */ @Service public class AddressBookServiceImpl implements AddressBookService { List<AddressBook> addressBooks = new ArrayList<AddressBook>(); private static Long id = 0L; @Override public List<AddressBook> viewAllAddressBook() { return addressBooks; } @Override public void createAddressBook(AddressBook addressBook) { addressBook.setId(id); addressBooks.add(addressBook); ++id; } @Override public void updateAddressBook(int pos, AddressBook updateAddressBook) { addressBooks.set(pos, updateAddressBook); } @Override public void deleteAddressBook(int id) { addressBooks.remove(id); } @Override public void deleteAllAddressBook() { addressBooks.clear(); id = 0L; } @Override public AddressBook findAddressBook(int id) { return addressBooks.get(id); } }
4. Address Book Controller
package com.cloudsole.angular.controller; import com.cloudsole.angular.model.AddressBook; import com.cloudsole.angular.service.AddressBookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; /** * Created by tmichels on 8/3/14. */ @Controller @RequestMapping("/address") public class AddressBookController { @Autowired AddressBookService addressBookService; @RequestMapping(value = "/all.json", method = RequestMethod.GET) public @ResponseBody List<AddressBook> viewAllAddressBook(){ return addressBookService.viewAllAddressBook(); } @RequestMapping(value = "/add", method = RequestMethod.POST) public @ResponseBody void addAddressBookEntry(@RequestBody AddressBook addressBook){ addressBookService.createAddressBook(addressBook); } @RequestMapping(value = "/delete/{id}", method = RequestMethod.DELETE) public @ResponseBody void deleteAddressBookEntry(@PathVariable("id") String id){ addressBookService.deleteAddressBook(Integer.valueOf(id)); } @RequestMapping(value = "/update/{pos}", method = RequestMethod.PUT) public @ResponseBody void updateAddressBook(@RequestBody AddressBook addressBook, @PathVariable("pos") String pos){ addressBookService.updateAddressBook(Integer.valueOf(pos), addressBook); } @RequestMapping(value="/delete/all", method = RequestMethod.DELETE) public @ResponseBody void deleteAllAddressBook(){ addressBookService.deleteAllAddressBook(); } @RequestMapping("/layout") public String getTodoPartialPage() { return "addressbook/layout"; } }
5. Address Book Angular Controller
/** * Created by tmichels on 8/3/14. */ var AddressBookController = function($scope, $http){ $scope.editMode = false; $scope.position = ''; $scope.viewAllAddressBook = function(){ $http.get('address/all.json').success(function(response){ $scope.addressBooks = response; }) } $scope.resetAddressBookField = function(){ $scope.ab.firstName=''; $scope.ab.lastName=''; $scope.ab.phone = ''; $scope.ab.email = ''; $scope.editMode = false; } $scope.addAddressBook = function(ab) { $http.post('address/add', ab).success(function(response){ $scope.viewAllAddressBook(); $scope.ab.firstName=''; $scope.ab.lastName=''; $scope.ab.phone = ''; $scope.ab.email = ''; }).error(function(response){ console.log(response); }) } $scope.updateAddressBook = function(ab) { $http.put('address/update/'+$scope.position, ab).success(function(response){ $scope.ab.firstName=''; $scope.ab.lastName=''; $scope.ab.phone = ''; $scope.ab.email = ''; $scope.viewAllAddressBook(); $scope.editMode = false; }).error(function(response){ console.log(response); }) } $scope.deleteAddressBook = function(id) { $http.delete('address/delete/' + id).success(function(response){ $scope.viewAllAddressBook(); }).error(function(response){ console.log(response); }) } $scope.deleteAllAddressBook = function(){ $http.delete('address/delete/all').success(function(response){ $scope.viewAllAddressBook(); }) } $scope.editAddressBook = function(pos, addressBook){ $scope.position = pos; $scope.ab = addressBook; $scope.editMode = true; } $scope.viewAllAddressBook(); }
6. Address Book HTML
<div class="alert alert-error" ng-show="error">{{errorMessage}}</div> <div class="row"> <form ng-submit="addAddressBook(ab)"> <div class="col-lg-8"> <input class="form-control" placeholder="Enter First Name" type="text" ng-model="ab.firstName" required min="1" /> <input class="form-control" placeholder="Enter Last Name" type="text" ng-model="ab.lastName" required min="1" /> <input class="form-control" placeholder="Enter Phone" type="text" ng-model="ab.phone" required min="1" /> <input class="form-control" placeholder="Enter Email" type="text" ng-model="ab.email" required min="1" /> </div> </form> <button class="btn btn-primary" ng-disabled="!ab" ng-hide="editMode" ng-click="addAddressBook(ab)">Add Entry</button> <button type="btn btn-primary" class="btn btn-primary" ng-disabled="!ab" ng-show="editMode" ng-click="updateAddressBook(ab)">Save</button> <button type="btn btn-primary" class="btn btn-primary" ng-click="resetAddressBookField()">Reset</button> </div> <hr /> <div class="row"> <div class="col-lg-8"> <div class="form-group"> <div class="input-group"> <input type="text" class="form-control" placeholder="Search" id="search-query-3" ng-model="searchAddressBook"> <span class="input-group-btn"> <button type="submit" class="btn"><span class="fui-search"></span></button> </span> </div> </div> </div> </div> <hr /> <div class="alert alert-info" style="width:400px;margin-left:100px;" ng-show="addressBooks.length == 0"> No address book entry found </div> <table class="table table-bordered table-striped" ng-show="addressBooks.length > 0"> <thead> <tr> <th style="text-align: center; width: 25px;">Delete</th> <th style="text-align: center; width: 25px;">Update</th> <th style="text-align: center;">First Name</th> <th style="text-align: center;">Last Name</th> <th style="text-align: center;">Phone Number</th> <th style="text-align: center;">Email</th> </tr> </thead> <tbody> <tr ng-repeat="addressBook in addressBooks"> <td style="width:70px;text-align:center;"><button class="btn btn-mini btn-danger" ng-click="deleteAddressBook(addressBooks.indexOf(addressBook))">Delete</button></td> <td style="width:70px;text-align:center;"><button class="btn btn-mini btn-danger" ng-click="editAddressBook(addressBooks.indexOf(addressBook), addressBook)">Update</button></td> <td>{{addressBook.firstName}}</td><td>{{addressBook.lastName}}</td><td>{{addressBook.phone}}</td><td>{{addressBook.email}}</td> </tr> </tbody> </table> <button class="btn btn-danger" ng-show="addressBooks.length >= 1" ng-click="deleteAllAddressBook()">Delete All Address Book</button>
Quality articles is the main to attract the viewers to pay a quick visit
the web page, that’s what this website is providing.
bonjour ! merveilleux paragraphe sur l’immobilier… Je vois parfois des paragraphes de ce type
No one needs a special occasion to impress their significant other.
To be sure, you can always say, a person who is a good mirror with good lighting and one who
is not the case. As there is glass used, the edges are cleaved sophisticatedly to minimise the
chances of any cut during the contact.