--- a/js/startscreen.js Wed Apr 24 17:54:48 2013 +0200
+++ b/js/startscreen.js Thu Apr 25 13:21:59 2013 +0200
@@ -57,7 +57,7 @@
return b.score - a.score;
});
- var selectedWords = [], searchString = "", topicscache = {};
+ var selectedWords = [], topicscache = {};
function showTopicsForWord(word) {
var topicweights = topicscache[word];
@@ -71,13 +71,11 @@
}
function wordFilter() {
- searchString = $(".keyword-search").val() || "",
- selectedWords = [];
- if (searchString.length) {
- selectedWords.push(searchString);
- }
+ selectedWords = $(".keyword-search").tagit("assignedTags");
+
if (selectedWords.length) {
var k = selectedWords.join(",");
+ console.log(k);
if (typeof topicscache[k] === "undefined") {
TopicsBean.topicsForKeywords(k,{
callback: function(topicweights) {
@@ -94,39 +92,50 @@
}
}
+ var currenttopics;
+
function showTopics(topiclist) {
- var topicHtmls = ["", "", ""];
- if (searchString.length) {
- var searchStringRx = new RegExp('(' + searchString.replace(/(\W)/g,'\\$1') + ')', "gim");
+ var tb = $(".topics-block");
+ if (topiclist.join(",") !== currenttopics) {
+ currenttopics = topiclist.join(",");
+ var topicHtmls = ["", "", ""];
+ topiclist.forEach(function(topic,i) {
+ var wordsToShow = topic.words.slice(),
+ max = wordsToShow[0].weight,
+ min = Math.min(wordsToShow[wordsToShow.length - 1].weight, max - .01),
+ scale = 10 / (max - min);
+ var li = '<li class="shadow-block topic" data-topic-id="'
+ + topic.index
+ + '" data-timestamp="999999"><ul class="topic-words">'
+ + wordsToShow.reduce(function(memwords, word) {
+ return memwords
+ + '<li style="font-size: '
+ + ( 10 + scale * (word.weight - min) )
+ + 'px;">'
+ + word.word
+ + '</li>';
+ },"")
+ + '</ul></li>';
+ topicHtmls[i % 3] += li;
+ });
+ tb.html(topicHtmls.reduce(function(mem,html) {
+ return mem + '<ul class="topic-column">' + html + '</ul>'
+ },""));
}
- var replaceRx = new RegExp('(' + selectedWords.map(function(w) {
- return w.replace(/(\W)/g,'\\$1')
- }).join("|") + ')', "gim");
- topiclist.forEach(function(topic,i) {
- var wordsToShow = topic.words.slice(),
- max = wordsToShow[0].weight,
- min = Math.min(wordsToShow[wordsToShow.length - 1].weight, max - .01),
- scale = 10 / (max - min);
- var li = '<li class="shadow-block topic" data-topic-id="'
- + topic.index
- + '" data-timestamp="999999"><ul class="topic-words">'
- + wordsToShow.reduce(function(memwords, word) {
- return memwords
- + '<li style="font-size: '
- + ( 10 + scale * (word.weight - min) )
- + 'px;">'
- + ( selectedWords.length
- ? word.word.replace(replaceRx,'<span class="highlight">$1</span>')
- : word.word )
- + '</li>';
- },"")
- + '</ul></li>';
- topicHtmls[i % 3] += li;
+ if (selectedWords.length) {
+ var replaceRx = new RegExp('(' + selectedWords.map(function(w) {
+ return w.replace(/(\W)/g,'\\$1')
+ }).join("|") + ')', "gim");
+ }
+ tb.find(".topic-words li").each(function() {
+ var el = $(this);
+ if (selectedWords.length) {
+ var w = _(el.text()).escape().replace(replaceRx,'<span class="highlight">$1</span>');
+ el.html(w);
+ } else {
+ el.text(el.text());
+ }
});
- var tb = $(".topics-block");
- tb.html(topicHtmls.reduce(function(mem,html) {
- return mem + '<ul class="topic-column">' + html + '</ul>'
- },""));
tb.css("top",0);
showTopicViz();
@@ -156,6 +165,13 @@
allwords.sort();
+ $(".keyword-search").tagit({
+ availableTags: allwords,
+ afterTagAdded: wordFilter,
+ afterTagRemoved: wordFilter
+ })
+
+/*
$(".keyword-search").autocomplete({
source: allwords,
change: function() {