Skip to content

Commit

Permalink
Implemented FilteringSystem (frontend) #51
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaugarcia committed May 15, 2017
1 parent 70b1a77 commit 16b6e79
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,4 @@ public interface PropertyRepository extends JpaRepository<Property,Long> {
//@Query("select property.name from Property property inner join com.arnaugarcia.assessoriatorrelles.domain.Photo photo on property.id = photo.property.id")
Page<PropertyDTO> findPropertiesDto(Pageable pageable);

@Query("select new com.arnaugarcia.assessoriatorrelles.service.dto.PropertyDTO(property.location.province, property.location.town, property.price, property.buildingType, property.serviceType, property.m2, property.numberBedroom, property.numberWc, property.created) from Property property")
List<PropertyDTO> findPropertiesFilter();

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.arnaugarcia.assessoriatorrelles.domain.enumeration.BuildingType;
import com.arnaugarcia.assessoriatorrelles.domain.enumeration.ServiceType;
import com.arnaugarcia.assessoriatorrelles.repository.PropertyRepository;
import com.arnaugarcia.assessoriatorrelles.repository.FilterRepository;
import com.arnaugarcia.assessoriatorrelles.service.dto.FilterDTO;
import com.arnaugarcia.assessoriatorrelles.service.dto.PropertyDTO;
import com.codahale.metrics.annotation.Timed;
Expand All @@ -16,7 +16,9 @@

import javax.inject.Inject;
import java.net.URISyntaxException;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
Expand All @@ -32,32 +34,50 @@ public class FilterResource {
private final Logger log = LoggerFactory.getLogger(LocationResource.class);

@Inject
//FilterRepository filterRepository;
PropertyRepository propertyRepository;
FilterRepository filterRepository;

@GetMapping("/filter/home")
@Timed
public ResponseEntity<FilterDTO> getFilterFiledsHome() throws URISyntaxException {
log.debug("REST request to get a page of Towns");
List<PropertyDTO> propertyDTOList = propertyRepository.findPropertiesFilter();
List<PropertyDTO> propertyDTOList = filterRepository.findPropertiesFilter();
//townAndProvinceList.parallelStream().distinct().collect(Collectors.toList());

//Source - https://coderanch.com/t/623127/java/array-specific-attribute-values-list
List<String> provinceList = propertyDTOList.stream().map(province -> province.getProvince()).distinct().collect(Collectors.toList());
List<String> provinceList = propertyDTOList
.stream()
.map(PropertyDTO::getTown)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());

List<String> townList = propertyDTOList.stream().map(town -> town.getTown()).distinct().collect(Collectors.toList());
List<String> townList = propertyDTOList.stream().map(PropertyDTO::getTown).filter(Objects::nonNull).distinct().collect(Collectors.toList());

List<Integer> bedroomList = propertyDTOList.stream().map(bedroom -> bedroom.getNumberBedroom()).distinct().collect(Collectors.toList());
List<Integer> bedroomList = propertyDTOList.stream().map(PropertyDTO::getNumberBedroom).filter(Objects::nonNull).distinct().collect(Collectors.toList());

List<Integer> bathroomList = propertyDTOList.stream().map(bathroom -> bathroom.getNumberWc()).distinct().collect(Collectors.toList());
List<Integer> bathroomList = propertyDTOList.stream().map(PropertyDTO::getNumberWc).filter(Objects::nonNull).distinct().collect(Collectors.toList());

List<BuildingType> buildingTypeList = propertyDTOList.stream().map(PropertyDTO::getBuildingType).distinct().collect(Collectors.toList());
List<BuildingType> buildingTypeList = propertyDTOList.stream().map(PropertyDTO::getBuildingType).filter(Objects::nonNull).distinct().collect(Collectors.toList());

List<ServiceType> serviceTypeList = propertyDTOList.stream().map(PropertyDTO::getServiceType).distinct().collect(Collectors.toList());
List<ServiceType> serviceTypeList = propertyDTOList.stream().map(PropertyDTO::getServiceType).filter(Objects::nonNull).distinct().collect(Collectors.toList());

List<Double> minPriceList = propertyDTOList.stream().map(PropertyDTO::getPrice).distinct().collect(Collectors.toList());
List<Double> minPriceList = propertyDTOList
.stream()
.map(PropertyDTO::getPrice)
.filter(Objects::nonNull)
.distinct()
.sorted()
.collect(Collectors.toList());

List<Double> maxPriceList = propertyDTOList.stream().map(PropertyDTO::getPrice).distinct().collect(Collectors.toList());
List<Double> maxPriceList = propertyDTOList
.stream()
.map(PropertyDTO::getPrice)
.filter(Objects::nonNull)
.distinct()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());

//maxPriceList.forEach((k)-> System.out.println(round5(k)));

FilterDTO filterDTO = new FilterDTO(townList,provinceList,bedroomList,bathroomList,buildingTypeList,serviceTypeList,minPriceList,maxPriceList);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

angular
.module('assessoriaTorrellesApp')
.controller('HomeController', DashboardHomeController);
.controller('DashboardHomeController', DashboardHomeController);

DashboardHomeController.$inject = ['$scope', 'Principal', 'LoginService', '$state', 'Request', 'AlertService'];

Expand Down
2 changes: 1 addition & 1 deletion src/main/webapp/app/dashboard/home/dashboard.home.state.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
views: {
'content@': {
templateUrl: 'app/dashboard/home/dashboard.home.html',
controller: 'HomeController',
controller: 'DashboardHomeController',
controllerAs: 'vm',
}
},
Expand Down
14 changes: 12 additions & 2 deletions src/main/webapp/app/home/home.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,33 @@
.module('assessoriaTorrellesApp')
.controller('HomeController', HomeController);

HomeController.$inject = ['$scope', 'Principal', 'LoginService', '$state'];
HomeController.$inject = ['$scope', 'Principal', 'LoginService', '$state', 'FilterService'];

function HomeController ($scope, Principal, LoginService, $state) {
function HomeController ($scope, Principal, LoginService, $state, FilterService) {
var vm = this;

vm.account = null;
vm.isAuthenticated = null;
vm.login = LoginService.open;
vm.register = register;
vm.filtersList = null;

loadAll();

$scope.$on('authenticationSuccess', function() {
getAccount();
});

getAccount();

function loadAll (){
FilterService.home(function (result) {
vm.filtersList = result;
});
}

function getAccount() {

Principal.identity().then(function(account) {
vm.account = account;
vm.isAuthenticated = Principal.isAuthenticated;
Expand Down
41 changes: 9 additions & 32 deletions src/main/webapp/app/home/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,13 @@
<div class="form-group">
<label data-translate="home.form.country" for="country">Country</label>
<select class="form-control">
<option>Australia</option>
<option>Indonesia</option>
<option>Japan</option>
<option>South Korea</option>
<option>China</option>
<option ng-repeat="filterProvince in vm.filtersList.provinceList">{{filterProvince}}</option>
</select>
</div>
<div class="form-group">
<label data-translate="home.form.bedroom" for="bedroom">Bedroom</label>
<select class="form-control">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option ng-repeat="filterBedroom in vm.filtersList.bedroomList">{{filterBedroom}}</option>
</select>
</div>
</div>
Expand All @@ -32,20 +25,13 @@
<div class="form-group">
<label data-translate="home.form.location" for="location">Location</label>
<select class="form-control">
<option>Tasmania</option>
<option>Yogyakarta</option>
<option>Tokyo</option>
<option>Busan</option>
<option>Taipe</option>
<option ng-repeat="filterTown in vm.filtersList.townList">{{filterTown}}</option>
</select>
</div>
<div class="form-group">
<label data-translate="home.form.bathroom" for="bathroom">Bathroom</label>
<select class="form-control">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option ng-repeat="filterBathroom in vm.filtersList.bathroomList">{{filterBathroom}}</option>
</select>
</div>
</div>
Expand All @@ -54,17 +40,13 @@
<div class="form-group">
<label data-translate="home.form.status" for="status">Status</label>
<select class="form-control">
<option>For Sale</option>
<option>For Rent</option>
<option ng-repeat="serviceTypeList in vm.filtersList.serviceTypeList">{{serviceTypeList}}</option>
</select>
</div>
<div class="form-group">
<label data-translate="home.form.minprice" for="minprice">Min Price</label>
<select class="form-control">
<option>$4,200</option>
<option>$6,700</option>
<option>$8,150</option>
<option>$11,110</option>
<option ng-repeat="minPriceList in vm.filtersList.minPriceList">{{minPriceList}}</option>
</select>
</div>
</div>
Expand All @@ -73,18 +55,13 @@
<div class="form-group">
<label data-translate="home.form.type" for="type">Type</label>
<select class="form-control">
<option>Villa</option>
<option>Recident</option>
<option>Commercial</option>
<option ng-repeat="buildingTypeList in vm.filtersList.buildingTypeList">{{buildingTypeList}}</option>
</select>
</div>
<div class="form-group">
<label data-translate="home.form.maxprice" for="maxprice">Max Price</label>
<select class="form-control">
<option>$8,200</option>
<option>$11,700</option>
<option>$14,150</option>
<option>$21,110</option>
<option ng-repeat="maxPriceList in vm.filtersList.maxPriceList">{{maxPriceList}}</option>
</select>
</div>
</div>
Expand All @@ -95,7 +72,7 @@
</div>
<div id="home-title" class="col-md-6 text-center">
<div class="row">
<h1 data-translate="home.title" class="home-title-h1 col-md-12"></h1>
<h1 class="home-title-h1 col-md-12">Commit número 100!</h1>
<h2 data-translate="home.subtitle"class="home-title-h2 col-md-12"></h2>
<div class="text-center">
<div class="col-md-6 col-md-offset-3">
Expand Down
3 changes: 0 additions & 3 deletions src/main/webapp/app/layouts/footer/footer.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@

});

vm.contacts = [];
vm.companies = [];

loadAll();

function loadAll() {
Expand Down
21 changes: 21 additions & 0 deletions src/main/webapp/app/services/filter/filter.service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* Created by arnau on 13/5/17.
*/
(function () {
'use strict';

angular
.module('assessoriaTorrellesApp')
.factory('FilterService', FilterService);

FilterService.$inject = ['$resource'];

function FilterService ($resource) {

var service = $resource('api/filter/', {}, {
'home': {method: 'GET', isArray: false, url: "api/filter/home"}
});

return service;
}
})();
1 change: 1 addition & 0 deletions src/main/webapp/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@

<script src="app/app.module.js"></script>
<script src="app/services/user/user.service.js"></script>
<script src="app/services/filter/filter.service.js"></script>
<script src="app/services/profiles/profile.service.js"></script>
<script src="app/services/profiles/page-ribbon.directive.js"></script>
<script src="app/services/auth/sessions.service.js"></script>
Expand Down

0 comments on commit 16b6e79

Please sign in to comment.