Tag Cloud Plugin
by CheapSk8
HTML
<div class="tagCloudTest"><a href="http://cm1-davedtest:9980/index.html?filter=complete&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'complete'%22%5D%7D">complete (1)</a><a href="http://cm1-davedtest:9980/index.html?filter=something new&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'something%20new'%22%5D%7D">something new (2)</a><a href="http://cm1-davedtest:9980/index.html?filter=daved&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'daved'%22%5D%7D">daved (3)</a><a href="http://cm1-davedtest:9980/index.html?filter=tags&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'tags'%22%5D%7D">tags (1)</a><a href="http://cm1-davedtest:9980/index.html?filter=index&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'index'%22%5D%7D">index (2)</a><a href="http://cm1-davedtest:9980/index.html?filter=holly&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'holly'%22%5D%7D">holly (4)</a><a href="http://cm1-davedtest:9980/index.html?filter=page&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'page'%22%5D%7D">page (2)</a><a href="http://cm1-davedtest:9980/index.html?filter=copied&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'copied'%22%5D%7D">copied (2)</a><a href="http://cm1-davedtest:9980/index.html?filter=jon&query=%7B%22criteria%22%3A%5B%22type%20%3D%20'page'%22%2C%22site%20%3D%20'test123'%22%2C%22perc%3Atags%20%3D%20'jon'%22%5D%7D">jon (3)</a><a...
CSS
body { padding: 10px; }
.tagCloud { padding: 3px; width: 200px; border: 1px solid #666666; border-radius: 5px; }
JavaScript
(function($)
{
var tagCloud = function(ele, params) {
var settings = $.extend({
maxFont: 28 // maximum font size for tags - highest count
,minFont: 8 // minimum font size for tags - lowest count
,orderBy: 'alpha' // alpha - by tagname, count - by tagcount, random - randomize list, null - no sort
,tags: null // array of tags with count [tagName(i)]
,copyClass: false // copy class attribute from current element to tagCloud
},params);
// if we have an element
if (ele != null) {
if (ele.length <= 0) { return ele; } // if no valid object, return empty
return ele.each(function() {// loop through each list
var $this = $(this); // for each object list passed
var tags = $this.find('a').get();
if (tags.length <= 0) { tags = $this.find('li').get(); } // if no anchor tags exist, get all LIs
var cloud = makeTagCloud(tags, settings.minFont, settings.maxFont, settings.orderBy); // get tagCloud structure
if (settings.copyClass && $this.is('[class]')) { // if there is class and we need to copy it
cloud.attr('class', $this.attr('class'));
}
cloud.addClass('tagCloud'); // tagCloud is standard class
$this.replaceWith(cloud); // replace existing element with tagCloud
});
}
// if we have no element and have tag array
else if (settings.tags != null) {
return makeTagCloud(settings.tags, settings.minFont, settings.maxFont, settings.orderBy).addClass('tagCloud'); // build tagCloud from arrays
}
return;
};
$.tagCloud = $.fn.tagCloud = function() {
var isJq = this instanceof jQuery;
var arg = arguments;
var tagArr,opts;
if (isJq) { // if our object is a jQuery obj, use it as list
return new...