]> git.agnieray.net Git - galette.git/commitdiff
Replace UI autocomplete with Fomantic search/api
authorJohan Cwiklinski <johan@x-tnd.be>
Fri, 24 Jun 2022 06:52:43 +0000 (08:52 +0200)
committerJohan Cwiklinski <johan@x-tnd.be>
Wed, 29 Jun 2022 19:38:46 +0000 (21:38 +0200)
closes #1639

galette/includes/routes/ajax.routes.php
galette/templates/default/elements/scripts.html.twig
semantic.json

index d693f8185fc61b603857dc6ca26bf8ecfb550f4b..a92d6b2ad1168e26c2e5560fa7f44905c3c8a9be 100644 (file)
@@ -114,8 +114,8 @@ $app->group('/ajax', function () use ($authenticate) {
     )->setName('photoDnd');
 
     $this->post(
-        '/suggest/towns',
-        function ($request, $response) {
+        '/suggest/towns/{term}',
+        function ($request, $response, string $term) {
             $post = $request->getParsedBody();
 
             $ret = [];
@@ -123,11 +123,11 @@ $app->group('/ajax', function () use ($authenticate) {
             try {
                 $select1 = $this->get('zdb')->select(Adherent::TABLE);
                 $select1->columns(['ville_adh']);
-                $select1->where->like('ville_adh', '%' . html_entity_decode($post['term']) . '%');
+                $select1->where->like('ville_adh', '%' . html_entity_decode($term) . '%');
 
                 $select2 = $this->get('zdb')->select(Adherent::TABLE);
                 $select2->columns(['lieu_naissance']);
-                $select2->where->like('lieu_naissance', '%' . html_entity_decode($post['term']) . '%');
+                $select2->where->like('lieu_naissance', '%' . html_entity_decode($term) . '%');
 
                 $select1->combine($select2);
 
@@ -138,10 +138,11 @@ $app->group('/ajax', function () use ($authenticate) {
 
                 $towns = $this->get('zdb')->execute($select);
 
+                $ret['success'] = true;
+                $ret['results'] = [];
                 foreach ($towns as $town) {
-                    $ret[] = [
-                        'id'    => $town->ville_adh,
-                        'label' => $town->ville_adh
+                    $ret['results'][] = [
+                        'title' => $town->ville_adh
                     ];
                 }
             } catch (Throwable $e) {
index 61cb640b067c10eeeeb6a3e57d0f127d770be1f3..7280c22acfd1013ef8fdf90831ce8a575740f5e7 100644 (file)
                 });
 
     {% if autocomplete %}
-                console.log('Autocompletion has to be reworked.');
+                $('#ville_adh, #lieu_naissance').search({
+                    minCharacters : 2,
+                    debug: true,
+                    verbose: true,
+                    searchFields: [
+                        'title'
+                    ],
+                }).api({
+                    url: '{{ path_for('suggestTown', {'term': '{value}'}) }}',
+                    method: 'post',
+                    onFailure: function(response, element, xhr) {
+                        console.log(response);
+                    }
+                });
                 {#$('#ville_adh, #lieu_naissance').autocomplete({
                     source: function (request, response) {
                         $.post('{{ path_for('suggestTown') }}', request, response);
index f02550bfe95ab42734b86efdc35362c9de024e2b..d55a89ea3cad33cc2bff78bc300cf98b4cf914ba 100644 (file)
@@ -18,6 +18,6 @@
   "permission": "644",
   "autoInstall": true,
   "rtl": "both",
-  "components": ["reset", "site", "button", "container", "divider", "header", "icon", "input", "label", "list", "loader", "segment", "step", "form", "grid", "menu", "message", "table", "card", "item", "accordion", "checkbox", "dimmer", "dropdown", "popup", "sidebar", "tab", "transition", "text", "calendar", "toast", "modal", "api"],
+  "components": ["reset", "site", "button", "container", "divider", "header", "icon", "input", "label", "list", "loader", "segment", "step", "form", "grid", "menu", "message", "table", "card", "item", "accordion", "checkbox", "dimmer", "dropdown", "popup", "sidebar", "tab", "transition", "text", "calendar", "toast", "modal", "api", "search"],
   "version": "2.8.8"
 }
\ No newline at end of file