hdalab/js/gomina.js
changeset 110 6455b65fa3b7
parent 109 3371a40449c7
child 115 46c0f7a935d1
--- a/hdalab/js/gomina.js	Tue Jan 10 18:25:08 2012 +0100
+++ b/hdalab/js/gomina.js	Fri Jan 13 17:03:49 2012 +0100
@@ -63,10 +63,13 @@
         });
     $.getJSON("filter.php", _urlParam, updateDisplay);
     if (gomNs.sessiondata.period || gomNs.sessiondata.filters.tag.length != 1 || gomNs.sessiondata.filters.tag[0] != _taglabel) {
-        $("#bandefiltre").attr("class", "inactif");
+        $("#bandefiltre").addClass("inactif");
+        $("#showsearch").removeClass("actif");
     } else {
-        $("#bandefiltre").attr("class", "");
+        $("#bandefiltre").removeClass("inactif");
+        $("#showsearch").addClass("actif");
     }
+    $("#showlist").removeClass("actif");
 }
 
 function filterTag(_tagLabel) {
@@ -91,16 +94,45 @@
 function getUpdates() {
     var _params = {};
     if (gomNs.sessiondata.filters.period) {
-        _params.period = gomNs.sessiondata.filters.period.join('|');
+        _params.period = gomNs.sessiondata.filters.period.join(',');
     }
     if (gomNs.sessiondata.filters.tag.length) {
-        _params.label = gomNs.sessiondata.filters.tag.join('|');
+        _params.label = gomNs.sessiondata.filters.tag.join(',');
     }
     $.getJSON("filter.php", _params, updateDisplay);
 }
 
 var debouncedGetUpdates = _.debounce(getUpdates, 200);
 
+function updatePeriod(_n, _val) {
+    var _int = parseInt(_val);
+    if (_int != NaN) {
+        gomNs.sessiondata.filters.period[_n] = _int;
+        updateFilters();
+        debouncedSaveChanges();
+        debouncedHideSlider();
+    }
+}
+
+function changeSpan(_this) {
+    if (!$(_this).children().length) {
+        var _el = document.createElement('input'),
+            _n = _this.id.split('_')[1];
+        _el.value = gomNs.sessiondata.filters.period[_n];
+        _el.style.width = $(_this).width() + 'px';
+        $(_el).focusout(function() {
+            updatePeriod(_n, this.value);
+        }).keypress(function(e) {
+            if (e.keyCode == 13) {
+                updatePeriod(_n, this.value);
+            }
+        });
+        $(_this).html(_el);
+        _el.focus();
+        _el.select();
+    }
+}
+
 function updateFilters() {
     var _htmFilters = '',
         _fl = gomNs.sessiondata.filters.tag.length;
@@ -117,7 +149,13 @@
         }).join("");
     }
     if (gomNs.sessiondata.filters.period) {
-        _htmFilters += '<li class="filperiod">' + gomNs.sessiondata.filters.period.join('-') + '<a href="#" class="remfil" onclick="removePeriod(); return false;">[x]</a></li>'
+        _htmFilters += '<li class="filperiod" onclick="$(\'#dateslider\').show(); debouncedHideSlider();"><span class="spyr" id="sp_0" onclick="changeSpan(this);">'
+            + gomNs.sessiondata.filters.period[0]
+            + '</span>-<span class="spyr" id="sp_1" onclick="changeSpan(this);">'
+            + gomNs.sessiondata.filters.period[1]
+            + '</span><a href="#" class="remfil" onclick="removePeriod(); return false;">[x]</a></li>';
+        $("#dateslider").slider("values",0,yearToPx(gomNs.sessiondata.filters.period[0]))
+            .slider("values",1,yearToPx(gomNs.sessiondata.filters.period[1]));
     } else {
         _htmFilters += '<li><a href="#" onclick="$(\'#dateslider\').show(); debouncedHideSlider(); return false;">Filtrer par période</a></li>';
     }
@@ -151,15 +189,37 @@
                     + '"><ul><li>'
                     + (gomNs.sessiondata.annotations[_d.id] && gomNs.sessiondata.annotations[_d.id].texte ? gomNs.sessiondata.annotations[_d.id].texte.replace(/\n/gm,"</p><p>") : 'Annoter ce contenu...')
                     + '</li></ul></div>'
-                    + '<p><a href="#" class="addtolist" >Ajouter à ma liste</a></p>'
+                    + ( gomNs.write_allowed
+                        ? '<p><a href="#" class="addremlist" contentid="'
+                            + _d.id
+                            + '">'
+                            + ( gomNs.sessiondata.liste.indexOf(_d.id) == -1 ? 'Ajouter à ma liste' : 'Retirer de ma liste' )
+                            + '</a></p>'
+                        : '' )
                     + '</li>';
             }).join('')
             + '</ul>';
         $("#contents").html(_htmlCl).scrollTop(0);
+        $("a.addremlist").click(function() {
+            var _id = $(this).attr("contentid"),
+                _io = gomNs.sessiondata.liste.indexOf(_id);
+            if ( _io == -1) {
+                gomNs.sessiondata.liste.push(_id);
+                $(this).html('Retirer de ma liste');
+            } else {
+                gomNs.sessiondata.liste.splice(_io, 1);
+                $(this).html('Ajouter à ma liste');
+            }
+            if (gomNs.sessiondata.view == 1) {
+                showView();
+            }
+            debouncedSaveChanges();
+            return false;
+        })
         $("div.content-annotation").click(function() {
             if (gomNs.write_allowed && this.children[0].tagName == 'UL') {
             var _el = document.createElement('textarea'),
-                _id = this.attributes.contentid.nodeValue;
+                _id = $(this).attr("contentid");
             _el.innerHTML = (gomNs.sessiondata.annotations[_id] && gomNs.sessiondata.annotations[_id].texte) ? gomNs.sessiondata.annotations[_id].texte : '';
             $(_el).focusout(function() {
                 var _id = this.parentNode.attributes.contentid.nodeValue;
@@ -228,6 +288,21 @@
         $("#tagcloud").html("<h4>Pas de mots-clés trouvés</h4>");
     }
     displayContents(data.contents);
+    if (gomNs.countries && data.countries) {
+        var _max = Math.max(1, _(data.countries).max(function(_c) { return _c.score}).score);
+        _(data.countries).each(function(_c) {
+            var _cc = gomNs.countries[_c.isocode];
+            if (_cc) {
+                var _r = parseInt(255 * _c.score / _max),
+                    _b = parseInt( (255 - _r)/2) ;
+                _(_cc.gPolygons).each(function(_p) {
+                    _p.setOptions({
+                       "fillColor" : "rgb(" + _r + ",0," + _b + ")",
+                    })
+                } );
+           }
+        });
+    }
 }
 
 function saveChanges() {
@@ -242,6 +317,33 @@
 
 var debouncedSaveChanges = _.debounce(saveChanges, 1000);
 
+function changeView(nview) {
+    gomNs.sessiondata.view = nview;
+    debouncedSaveChanges();
+    showView();
+}
+
+function showView() {
+    $("#showsearch, #showlist").removeClass("actif");
+    switch(gomNs.sessiondata.view) {
+        case 1:
+            if (gomNs.sessiondata.liste && gomNs.sessiondata.liste.length) {
+                $("#showlist").addClass("actif");
+                $("#bandefiltre").hide();
+                $.getJSON("filter.php", {
+                    contentlist: gomNs.sessiondata.liste.join(',')
+                }, updateDisplay);
+                break;
+            } else {
+                alert("La liste de contenus est vide ! Ajoutez des contenus pour afficher la liste !");
+            }
+        default:
+            $("#showsearch").addClass("actif");
+            $("#bandefiltre").show();
+            updateFilters();
+    }
+}
+
 function getInitialView() {
     var _urlParam = {};
     if (document.location.hash) {
@@ -271,6 +373,10 @@
         if (!gomNs.sessiondata.title) {
             gomNs.sessiondata.title = 'Nouvelle session';
         }
+        if (!gomNs.sessiondata.view) {
+            gomNs.sessiondata.view = 0;
+            // 0 pour les résultats de recherche, 1 pour la liste
+        }
         if (!gomNs.sessiondata.filters) {
             gomNs.sessiondata.filters = {
                 period : null,
@@ -291,7 +397,7 @@
                 getInitialView();
             }
         }, 500);
-        updateFilters();
+        showView();
     });
 }
 
@@ -306,17 +412,22 @@
 }, 2000);
 
 $(document).ready(function() {
+    gomNs.map = new google.maps.Map(document.getElementById("map"),
+        {
+            center: new google.maps.LatLng(30, 0),
+            zoom: 1,
+            mapTypeId: google.maps.MapTypeId.SATELLITE
+        });
+    $.getJSON('lib/countries.geo.json', showCountries);
     $("#dates li").each(function() {
         $(this).css({
             "left" : parseInt(yearToPx(parseInt($(this).text()))) + "px"
         });
     });
-    $("#affres").click(function() {
-        updateFilters();
-        return false;
-    });
     $("#apartager").click(function() {
-        $("#partageurls").slideToggle();
+        var _pu = $("#partageurls");
+        $(this).attr("class",_pu.is(":visible") ? "" : "actif");
+        _pu.slideToggle();
         return false;
     })
     $( "#dateslider" ).slider({
@@ -363,5 +474,13 @@
             _el.select();
         }
     });
+    $("#showlist").click(function() {
+        changeView(1);
+        return false;
+    });
+    $("#affres, #showsearch").click(function() {
+        changeView(0);
+        return false;
+    });
     getInitialView();
 });