Browse Source

filter by category and name

Olivier Massot 4 years ago
parent
commit
161956ba68
24 changed files with 95 additions and 24 deletions
  1. 27 0
      ot_core/Classes/Domain/Model/FederationStructure.php
  2. 1 0
      ot_core/Classes/Domain/Repository/FederationStructureRepository.php
  3. 21 0
      ot_templating/Classes/ViewHelpers/Organizations/GetFederationStructuresViewHelper.php
  4. 29 20
      ot_templating/Resources/Private/Layouts/Classic/StructuresFrame.html
  5. 12 1
      ot_templating/Resources/Public/assets/Classic/script/structures.js
  6. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-blue.css
  7. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-blue.css.map
  8. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-green.css
  9. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-green.css.map
  10. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-grey.css
  11. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-grey.css.map
  12. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css
  13. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css.map
  14. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css
  15. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css.map
  16. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-orange.css
  17. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-orange.css.map
  18. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-purple.css
  19. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-purple.css.map
  20. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-red.css
  21. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-red.css.map
  22. 5 3
      ot_templating/Resources/Public/assets/Classic/style/module/_structures.scss
  23. 0 0
      ot_templating/Resources/Public/assets/Classic/style/style.css
  24. 0 0
      ot_templating/Resources/Public/assets/Classic/style/style.css.map

+ 27 - 0
ot_core/Classes/Domain/Model/FederationStructure.php

@@ -74,6 +74,13 @@ class FederationStructure extends AbstractEntity
      */
     protected $country;
 
+    /**
+     * categories
+     *
+     * @var array
+     */
+    protected $categories;
+
     /**
      * logo
      *
@@ -275,6 +282,26 @@ class FederationStructure extends AbstractEntity
         $this->country = $country;
     }
 
+    /**
+     * Returns the categories
+     *
+     * @return array|null $categories
+     */
+    public function getCategories(): ?array
+    {
+        return $this->categories;
+    }
+
+    /**
+     * Sets the categories
+     *
+     * @param array|null $categories
+     */
+    public function setCategories(?array $categories)
+    {
+        $this->categories = $categories;
+    }
+
     /**
      * Returns the logo
      *

+ 1 - 0
ot_core/Classes/Domain/Repository/FederationStructureRepository.php

@@ -59,6 +59,7 @@ class FederationStructureRepository extends BaseApiRepository
         $federationStructure->setLatitude($record['latitude']);
         $federationStructure->setLongitude($record['longitude']);
         $federationStructure->setCountry($record['country']);
+        $federationStructure->setCategories($record['categories']);
         $federationStructure->setLogoId($record['logo_id']);
         $federationStructure->setParents($record['parents']);
         return $federationStructure;

+ 21 - 0
ot_templating/Classes/ViewHelpers/Organizations/GetFederationStructuresViewHelper.php

@@ -81,6 +81,27 @@ class GetFederationStructuresViewHelper extends OtAbstractViewHelper {
 
         $searchParams = ['itemsPerPage' => $itemsPerPage];
 
+        // If a federation was selected in the filters, it is used as parent
+        if($_REQUEST['search-federation']) {
+            $parentId = $_REQUEST['search-federation'];
+        }
+
+        // Search structures by name
+        if($_REQUEST['search-query']) {
+            $searchParams['what'] = $_REQUEST['search-query'];
+        }
+
+        // Filters
+        if($_REQUEST['search-category']) {
+            $searchParams['category'] = $_REQUEST['search-category'];
+        }
+        if($_REQUEST['search-province']) {
+            $searchParams['province'] = $_REQUEST['search-province'];
+        }
+        if($_REQUEST['search-distance-max']) {
+            $searchParams['category'] = $_REQUEST['search-distance-max'];
+        }
+
         $organizations = $this->federationRepository->findChildrenById($parentId, $searchParams, $page);
 
         $variables = [

+ 29 - 20
ot_templating/Resources/Private/Layouts/Classic/StructuresFrame.html

@@ -50,34 +50,43 @@
                         <a href="#" class="activate-list-view"><f:translate key="list"/></a>
                     </header>
                     <div class="structure-search">
-                        <form>
-                            <div class="search-loc-wrapper">
+                        <form method="get" id="structure-search-form">
+                            <div class="search-bar-wrapper">
                                 <input type="text"
-                                       name="search-loc"
+                                       name="search-query"
+                                       class="search-bar"
                                        value="{ot:request.getArgument(argument: 'search-loc')}"/>
-                                <button type="submit" class="search-submit">
+                                <button class="search-submit"
+                                        name="search-submit"
+                                >
                                     <i class="fas fa-search"></i>
                                 </button>
                             </div>
 
                             <div class="filters">
-                                <select class="search-type">
-                                    <option value="-1">Type</option>
-                                    <option value="0">Harmonie</option>
-                                    <option value="0">Orchestre</option>
-                                    <option value="0">Chorale</option>
-                                    <option value="0">Ecole de musique</option>
-                                </select>
-                                <select class="search-province">
-                                    <option value="-1">Région</option>
-                                    <option value="0">Alsace</option>
-                                </select>
-                                <select class="search-federation">
-                                    <option value="-1">Fédération</option>
-                                    <option value="0">CMF</option>
-                                </select>
+                                <f:form.select name="search-category"
+                                               value="{ot:request.getArgument(argument: 'search-category')}">
+                                    <f:form.select.option value="">Type</f:form.select.option>
+                                    <f:form.select.option value="1MC">{f:translate(key: '1MC')}</f:form.select.option>
+                                    <f:form.select.option value="2TH">{f:translate(key: '2TH')}</f:form.select.option>
+                                    <f:form.select.option value="3DA">{f:translate(key: '3DA')}</f:form.select.option>
+                                    <f:form.select.option value="5FA">{f:translate(key: '5FA')}</f:form.select.option>
+                                    <f:form.select.option value="OTAR">{f:translate(key: 'OTAR')}</f:form.select.option>
+                                    <f:form.select.option value="OTCI">{f:translate(key: 'OTCI')}</f:form.select.option>
+                                    <f:form.select.option value="6AR">{f:translate(key: '6AR')}</f:form.select.option>
+                                    <f:form.select.option value="8CI">{f:translate(key: '8CI')}</f:form.select.option>
+                                    <f:form.select.option value="OTAU">{f:translate(key: 'OTAU')}</f:form.select.option>
+                                </f:form.select>
+                                <f:form.select class="search-province">
+                                    <f:form.select.option value="">Région</f:form.select.option>
+                                    <f:form.select.option value="0">Alsace</f:form.select.option>
+                                </f:form.select>
+                                <f:form.select class="search-federation">
+                                    <f:form.select.option value="">Fédération</f:form.select.option>
+                                    <f:form.select.option value="0">CMF</f:form.select.option>
+                                </f:form.select>
                                 <select class="search-distance-max">
-                                    <option value="-1">Distance</option>
+                                    <option value="">Distance</option>
                                     <option value="0">100</option>
                                 </select>
 

+ 12 - 1
ot_templating/Resources/Public/assets/Classic/script/structures.js

@@ -179,6 +179,17 @@ $(document).ready(function() {
         div.addClass('list-view');
     })
 
+    // Form
+    $('.search-submit').on('click', function() {
+        $('#structure-search-form').submit();
+    });
+
+    // Filters updated
+    $('form select').on('change', function (e) {
+        e.preventDefault();
+        $(this).closest('form').submit();
+    });
+
     // Reset search fields
     $('.reset-search').on('click', function (e) {
         e.preventDefault();
@@ -187,7 +198,7 @@ $(document).ready(function() {
             $(this).val('');
         });
         form.find('select').each(function () {
-            $(this).val(-1);
+            $(this).val('');
         });
         form.submit();
     });

File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-blue.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-blue.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-green.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-green.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-grey.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-grey.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-orange.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-orange.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-purple.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-purple.css.map


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-red.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-red.css.map


+ 5 - 3
ot_templating/Resources/Public/assets/Classic/style/module/_structures.scss

@@ -253,7 +253,7 @@ $input-border-color: #bfbfbf;
     flex-direction: column;
   }
 
-  .search-loc-wrapper {
+  .search-bar-wrapper {
     display: flex;
     flex-direction: row;
     height: 34px;
@@ -262,7 +262,7 @@ $input-border-color: #bfbfbf;
     margin-bottom: 14px;
   }
 
-  .structure-search input[name=search-loc] {
+  .structure-search .search-bar {
     flex: 1;
     background: none;
     outline: none;
@@ -278,6 +278,8 @@ $input-border-color: #bfbfbf;
     min-width: 24px;
     padding: 5px;
     font-size: 18px;
+    cursor: pointer;
+    min-height: 32px;
   }
 
   .structure-search .search-submit .fas {
@@ -419,7 +421,7 @@ $input-border-color: #bfbfbf;
     flex-direction: row;
   }
 
-  .search-loc-wrapper {
+  .search-bar-wrapper {
     flex: 1;
     margin-right: 2%;
   }

File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/style.css


File diff suppressed because it is too large
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/style.css.map


Some files were not shown because too many files changed in this diff