| Name | TiddlyTagCloudPlugin |
| Author | Jon Robson |
| Version | 0.3.2 |
Usage
<<tagcloud>> creates a tag cloud of all content.Parameters
exclude: name a tag you want to exclude from the tag cloud.filter: provide a filter to run the tag cloud on a subset of tiddlers see SiteInfo and filters syntax
(function($) {
var macro = config.macros.tagcloud = {
locale: {
tooltip: "see the %0 occurrences of %1"
},
fontSize: {
small: 10,
large: 48
},
handler: function(place, macroName, params, wikifier, paramString, tiddler) {
var locale = macro.locale;
var args = paramString.parseParams("anon")[0];
var exclude = args.exclude || [];
var tiddlers = args.filter ? store.filterTiddlers(args.filter[0]) : store.getTiddlers();
var count = {};
for(var i = 0; i < tiddlers.length; i++) {
var tags = tiddlers[i].tags;
for(var j = 0; j < tags.length; j++) {
var tag = tags[j];
if(!exclude.contains(tag)) {
if(!count[tag]) {
count[tag] = 1;
} else {
count[tag] += 1;
}
}
}
}
var tags = [];
var largest, smallest;
for(var i in count) {
var c = count[i];
if(!largest) {
largest = c;
} else if(c > largest) {
largest = c;
}
if(!smallest) {
smallest = c;
} else if(c < smallest) {
smallest = c;
}
}
var container = $("<div />").addClass("tagcloud").appendTo(place)[0];
var deltaFontSize = macro.fontSize.large - macro.fontSize.small;
for(var tag in count) {
var c = count[tag];
var delta = c / (largest - smallest + 1);
var size = macro.fontSize.small + parseInt(delta * deltaFontSize, 10);
var btn = createTagButton(container,tag,null,tag,locale.tooltip.format(c, tag));
$(btn).css({"font-size": size + "px", display: "inline-block"}).addClass("size%0".format(size));
}
}
}
})(jQuery);