Search function on tagcloud widget popcorn-port
authorveltr
Fri, 27 Jan 2012 14:55:59 +0100
branchpopcorn-port
changeset 728 9ee6badcb160
parent 727 70795f940a6c
child 733 a4dda820d9ee
Search function on tagcloud widget
src/css/LdtPlayer.css
src/js/widgets/tagCloudWidget.js
--- a/src/css/LdtPlayer.css	Mon Jan 23 10:47:49 2012 +0100
+++ b/src/css/LdtPlayer.css	Fri Jan 27 14:55:59 2012 +0100
@@ -801,10 +801,22 @@
 
 /* Tagcloud */
 
+.Ldt-TagCloud {
+    font-family: "PT Sans", Arial, Helvetica, sans-serif;
+}
+
 .Ldt-TagCloud ul {
     list-style: none; padding: 0; margin: 5px; text-align: center;
 }
 
 .Ldt-TagCloud li {
-    display: inline-block; margin: 2px;
+    display: inline-block; margin: 2px; cursor:pointer; cursor:hand;
 }
+
+.Ldt-TagCloud li:hover {
+    color: #0099ff;
+}
+
+.Ldt-TagCloud-actif {
+    color: #c000c0;
+}
--- a/src/js/widgets/tagCloudWidget.js	Mon Jan 23 10:47:49 2012 +0100
+++ b/src/js/widgets/tagCloudWidget.js	Fri Jan 27 14:55:59 2012 +0100
@@ -48,6 +48,7 @@
     var _max = _words[0].count,
         _min = Math.min(_words[_words.length - 1].count, _max - 1),
         _scale = 16 / Math.sqrt(_max - _min),
+        _this = this,
         _html = '<ul>'
             + IriSP._(_words)
                 .chain()
@@ -66,5 +67,24 @@
     this.selector
         .addClass("Ldt-TagCloud")
         .html(_html);
-    
+    this.selector.find("li").click(function() {
+        var _txt = this.textContent.replace(/(^[\s]+|[\s]+$)/g,'');
+        _this._Popcorn.trigger("IriSP.search", _txt);
+    });
+    this._Popcorn.listen("IriSP.search", IriSP.wrap(this, function(searchString) {
+        var _rgxp = new RegExp("(" + searchString.replace(/(\W)/g,'\\$1') + ")","gi");
+        this.selector.find("li").each(function(_i, _e) {
+            _e.innerHTML = searchString.length ?
+                _e.textContent.replace(_rgxp,'<span class="Ldt-TagCloud-actif">$1</span>')
+                : _e.textContent;
+        });
+    }));
+    this._Popcorn.listen("IriSP.search.closed", IriSP.wrap(this, this.searchFieldClosedHandler));
+    this._Popcorn.listen("IriSP.search.cleared", IriSP.wrap(this, this.searchFieldClearedHandler));
 }
+
+IriSP.TagCloudWidget.prototype.endsearch = function() {
+    this.selector.find("li").each(function(_i, _e) {
+        _e.innerHTML = _e.textContent;
+    });
+}