Explorar o código

Tweak/style tags BC and add type support too, refs #828

Jordi Boggiano %!s(int64=7) %!d(string=hai) anos
pai
achega
6710d8e83c

+ 2 - 1
src/Packagist/WebBundle/Controller/WebController.php

@@ -80,7 +80,8 @@ class WebController extends Controller
         if ($req->getRequestFormat() !== 'json') {
             return $this->render('PackagistWebBundle:Web:search.html.twig', [
                 'packages' => [],
-                'tags' => $tagsFilter
+                'tags' => (array) $tagsFilter,
+                'type' => $typeFilter,
             ]);
         }
 

+ 27 - 0
src/Packagist/WebBundle/Resources/public/css/main.css

@@ -459,6 +459,33 @@ strong {
     display: inline-block;
 }
 
+.sbx-sffv__wrapper {
+    display: flex;
+    flex: 1;
+    flex-direction: row;
+}
+.sbx-sffv__wrapper input {
+    height: 22px;
+    border: 1px solid #f28d1a;
+    border-radius: 3px;
+    margin-right: 6px;
+    padding-left: 4px;
+    margin-bottom: 5px;
+}
+.sbx-sffv__wrapper button {
+    width: 22px;
+    height: 22px;
+    display: inline-block;
+    overflow: hidden;
+    padding: 2px 5px 1px;
+    background: none;
+    border: 0;
+}
+.sbx-sffv__wrapper svg {
+    width: 100% !important;
+    height: 100% !important;
+}
+
 .wrapper-footer {
     background: #2d2d32;
     font-size: 14px;

+ 20 - 9
src/Packagist/WebBundle/Resources/public/js/search.js

@@ -3,12 +3,22 @@ document.getElementById('search_query_query').addEventListener('keydown', functi
         e.preventDefault();
     }
 });
-var searchParameters = algoliaConfig.tags ? {
-    disjunctiveFacets: ['tags'],
-    disjunctiveFacetsRefinements: {
-        tags: [algoliaConfig.tags]
-    }
-} : {};
+
+var searchParameters = {};
+
+if (algoliaConfig.tags) {
+    searchParameters.disjunctiveFacets = ['tags'];
+    searchParameters.disjunctiveFacetsRefinements = {
+        tags: algoliaConfig.tags,
+    };
+}
+
+if (algoliaConfig.type) {
+    searchParameters.hierarchicalFacets = [{attributes: ['type'], name: 'type'}];
+    searchParameters.hierarchicalFacetsRefinements = {
+        type: [algoliaConfig.type],
+    };
+}
 
 var search = instantsearch({
     appId: algoliaConfig.app_id,
@@ -22,8 +32,9 @@ var search = instantsearch({
 
         if (helper.state.query === ''
             && helper.state.hierarchicalFacetsRefinements.type === undefined
-            && helper.state.disjunctiveFacetsRefinements.tags === undefined
-            && algoliaConfig.tags.length == 0
+            && (helper.state.disjunctiveFacetsRefinements.tags === undefined || helper.state.disjunctiveFacetsRefinements.tags.length === 0)
+            && algoliaConfig.tags.length === 0
+            && algoliaConfig.type.length === 0
         ) {
             searchResults.addClass('hidden');
         } else {
@@ -158,7 +169,7 @@ search.addWidget(
 
 search.start();
 
-if(algoliaConfig.tags !== '') {
+if (algoliaConfig.tags.length || algoliaConfig.type.length) {
     search.helper.once('change', function (e) {
         window.history.replaceState(null, 'title', window.location.pathname);
     });

+ 2 - 1
src/Packagist/WebBundle/Resources/views/layout.html.twig

@@ -204,7 +204,8 @@
 
         <script>
             var algoliaConfig = {{ algolia|json_encode|raw }};
-            algoliaConfig['tags'] = '{{ tags|default(false) }}';
+            algoliaConfig.tags = {{ tags|default([])|json_encode|raw }};
+            algoliaConfig.type = {{ type|default('')|json_encode|raw }};
         </script>
 
         <script src="{{ asset('libs/jquery-2.1.4.min.js') }}"></script>