NameTiddlyTagCloudPlugin
AuthorJon Robson
Version0.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);
bag
howtoos_public
created
Fri, 14 Jan 2011 15:26:40 GMT
creator
bauwebijl
modified
Fri, 14 Jan 2011 15:33:47 GMT
modifier
bauwebijl
tags
excludeLists
excludeSearch
systemConfig