From 516a5de909ae3d23e962bf8484ad3a9ae2cf0b50 Mon Sep 17 00:00:00 2001 From: Benoit Lavenier Date: Fri, 31 Jan 2020 20:19:49 +0100 Subject: [PATCH] [enh] Allow to exclude old ad, in search --- www/plugins/market/i18n/locale-en-GB.json | 1 + www/plugins/market/i18n/locale-en.json | 1 + www/plugins/market/i18n/locale-fr-FR.json | 1 + .../js/controllers/search-controllers.js | 36 ++++++++++++++++--- .../templates/search/lookup_options.html | 15 ++++++++ 5 files changed, 50 insertions(+), 4 deletions(-) diff --git a/www/plugins/market/i18n/locale-en-GB.json b/www/plugins/market/i18n/locale-en-GB.json index 9a743ad7..bb274c06 100644 --- a/www/plugins/market/i18n/locale-en-GB.json +++ b/www/plugins/market/i18n/locale-en-GB.json @@ -80,6 +80,7 @@ "BTN_OFFERS": "Offers", "BTN_NEEDS": "Needs", "SHOW_CLOSED_RECORD": "Display closed ads?", + "SHOW_OLD_RECORD": "Display old ads?", "RECORD_STOCK": "Stock:" }, "GALLERY": { diff --git a/www/plugins/market/i18n/locale-en.json b/www/plugins/market/i18n/locale-en.json index 18003d09..c8825962 100644 --- a/www/plugins/market/i18n/locale-en.json +++ b/www/plugins/market/i18n/locale-en.json @@ -80,6 +80,7 @@ "BTN_OFFERS": "Offers", "BTN_NEEDS": "Needs", "SHOW_CLOSED_RECORD": "Display closed ads?", + "SHOW_OLD_RECORD": "Display old ads?", "RECORD_STOCK": "Stock:" }, "GALLERY": { diff --git a/www/plugins/market/i18n/locale-fr-FR.json b/www/plugins/market/i18n/locale-fr-FR.json index 6a74f87d..a0e33b75 100644 --- a/www/plugins/market/i18n/locale-fr-FR.json +++ b/www/plugins/market/i18n/locale-fr-FR.json @@ -80,6 +80,7 @@ "BTN_OFFERS": "Offres", "BTN_NEEDS": "Demandes", "SHOW_CLOSED_RECORD": "Afficher les annonces closes ?", + "SHOW_OLD_RECORD": "Afficher les anciennes annonces ?", "RECORD_STOCK": "Stock :" }, "GALLERY": { diff --git a/www/plugins/market/js/controllers/search-controllers.js b/www/plugins/market/js/controllers/search-controllers.js index 03e29173..8afa5509 100644 --- a/www/plugins/market/js/controllers/search-controllers.js +++ b/www/plugins/market/js/controllers/search-controllers.js @@ -6,7 +6,7 @@ angular.module('cesium.market.search.controllers', ['cesium.market.record.servic $stateProvider .state('app.market_lookup', { - url: "/market?q&category&location&reload&type&hash&lat&lon&last", + url: "/market?q&category&location&reload&type&hash&lat&lon&last&old", views: { 'menuContent': { templateUrl: "plugins/market/templates/search/lookup.html", @@ -20,7 +20,7 @@ angular.module('cesium.market.search.controllers', ['cesium.market.record.servic }) .state('app.market_lookup_lg', { - url: "/market/lg?q&category&location&reload&type&hash&closed&lat&lon&last", + url: "/market/lg?q&category&location&reload&type&hash&closed&lat&lon&last&old", views: { 'menuContent': { templateUrl: "plugins/market/templates/search/lookup_lg.html", @@ -73,6 +73,7 @@ function MkLookupAbstractController($scope, $state, $filter, $q, $location, $tra options: null, loadingMore: false, showClosed: false, + showOld: false, geoDistance: !isNaN(csSettings.data.plugins.es.geoDistance) ? csSettings.data.plugins.es.geoDistance : 20, sortAttribute: null, sortDirection: 'desc' @@ -101,6 +102,9 @@ function MkLookupAbstractController($scope, $state, $filter, $q, $location, $tra $scope.$watch('search.showClosed', function() { $scope.options.showClosed = $scope.search.showClosed; }, true); + $scope.$watch('search.showOld', function() { + $scope.options.showOld = $scope.search.showOld; + }, true); $scope.init = function() { return $q.all([ @@ -273,6 +277,14 @@ function MkLookupAbstractController($scope, $state, $filter, $q, $location, $tra filters.push({range: {stock: {gt: 0}}}); } + if ($scope.search.showOld) { + stateParams.old = true; + } + else { + var minTime = (Date.now() / 1000) - 60 * 60 * 24 * 365; + filters.push({range: {time: {gt: minTime}}}); + } + if ($scope.search.type) { filters.push({term: {type: $scope.search.type}}); stateParams.type = $scope.search.type; @@ -323,9 +335,17 @@ function MkLookupAbstractController($scope, $state, $filter, $q, $location, $tra var filters = []; var matches = []; + + // Filter on NOT closed if (!$scope.search.showClosed) { filters.push({range: {stock: {gt: 0}}}); } + + // Filter on NOT too old + if (!$scope.search.showOld) { + var minTime = (Date.now() / 1000) - 60 * 60 * 24 * 365; + filters.push({range: {time: {gt: minTime}}}); + } // filter on type if ($scope.search.type) { filters.push({term: {type: $scope.search.type}}); @@ -392,6 +412,8 @@ function MkLookupAbstractController($scope, $state, $filter, $q, $location, $tra }}); } } + + if (matches.length) { options.query = {bool: {}}; options.query.bool.should = matches; @@ -611,11 +633,17 @@ function MkLookupController($scope, $rootScope, $controller, $focus, $timeout, $ } } - // Show closed ad - if (state.stateParams.closed == true) { + // Show closed ads + if (angular.isDefined(state.stateParams.closed)) { $scope.search.showClosed = true; showAdvanced = true; } + + // Show old ads + if (angular.isDefined(state.stateParams.old)) { + $scope.search.showOld = true; + showAdvanced = true; + } } // Search on category diff --git a/www/plugins/market/templates/search/lookup_options.html b/www/plugins/market/templates/search/lookup_options.html index 00e62a8b..5b9acec5 100644 --- a/www/plugins/market/templates/search/lookup_options.html +++ b/www/plugins/market/templates/search/lookup_options.html @@ -16,3 +16,18 @@ + +
+ + + + {{'MARKET.SEARCH.SHOW_OLD_RECORD' | translate}} + + +