Hide category label on unselect event.
[infos-pratiques:etalage.git] / etalage / static / js / categories.js
1 /*
2  * Etalage -- Open Data POIs portal
3  * By: Emmanuel Raviart <eraviart@easter-eggs.com>
4  *
5  * Copyright (C) 2011, 2012 Easter-eggs
6  * http://gitorious.org/infos-pratiques/etalage
7  *
8  * This file is part of Etalage.
9  *
10  * Etalage is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU Affero General Public License as
12  * published by the Free Software Foundation, either version 3 of the
13  * License, or (at your option) any later version.
14  *
15  * Etalage is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Affero General Public License for more details.
19  *
20  * You should have received a copy of the GNU Affero General Public License
21  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22 */
23
24
25 var etalage = etalage || {};
26
27
28 etalage.categories = (function ($) {
29     function createAutocompleter($input) {
30         $input.autocomplete({
31             minLength: 0,
32             open: function (event, ui) {
33                 return $(".ui-autocomplete").css("z-index", $(".leaflet-control-zoom").css("z-index") + 1);
34             },
35             source: function (request, response) {
36                 $.ajax({
37                     url: '/api/v1/categories/autocomplete',
38                     dataType: 'json',
39                     data: {
40                         tag: $.merge(
41                             etalage.categories.tags || [],
42                             $('input[name=category][type=checkbox]:checked').map(function() {
43                                 return $(this).val();
44                             }).get()
45                         ),
46                         term: request.term || ''
47                     },
48                     success: function (data) {
49                         response($.map(data.data.items, function(item) {
50                             return {
51                                 label: item.tag + ' (' + item.count + ')',
52                                 value: item.tag
53                             };
54                         }));
55                     },
56                     traditional: true
57                 });
58             }
59         });
60
61         $("#search-form input[name='category'][type='checkbox']").on('change', function(event) {
62             $(this).closest('label').hide();
63         });
64     }
65
66     return {
67         createAutocompleter: createAutocompleter
68     };
69 })(jQuery);
70