[Debtags-commits] [svn] r2022 - web/trunk/cloud

Erich Schubert erich at costa.debian.org
Sun Oct 8 23:28:04 UTC 2006


Author: erich
Date: Sun Oct  8 23:28:03 2006
New Revision: 2022

Added:
   web/trunk/cloud/cloud.js
Modified:
   web/trunk/cloud/index.html
Log:
clean up code a bit

Modified: web/trunk/cloud/index.html
==============================================================================
--- web/trunk/cloud/index.html	(original)
+++ web/trunk/cloud/index.html	Sun Oct  8 23:28:03 2006
@@ -2,10 +2,9 @@
 	<head>
 		<title>Dojo tag cloud test</title>
 		<link rel="stylesheet" type="text/css" media="screen" href="tags.css" />
-		<script type="text/javascript">
-			//var djConfig = {isDebug: true};
-		</script>
+		<script type="text/javascript">var djConfig = {isDebug: true };</script>
 		<script type="text/javascript" src="dojo.js"></script>
+		<script type="text/javascript" src="cloud.js"></script>
 	</head>
 	<body>
 		<div>Short instructions: please choose tags below to narrow down your
@@ -18,203 +17,6 @@
 		<div id="tags"></div>
 		<h2>Matching packages:</h2>
 		<div id="packages"></div>
-		<script type="text/javascript">
-			dojo.require("dojo.io.*");
-			dojo.require("dojo.event.*");
-			dojo.require("dojo.widget.Dialog");
-
-			var baseurl = "http://debtags.alioth.debian.org/cgi-bin/index.cgi?tags=";
-			var magicscale = 1;
-
-			var selectedtags = [];
-			function update() {
-				dojo.widget.byId("LoadingDialogContent").show();
-				var bindArgs = {
-					url: "/cgi-bin/erich/" + selectedtags.join("/"),
-					error: function(type, data, evt){ alert("error"); },
-					mimetype: "text/json"
-				};
-				var req = dojo.io.bind(bindArgs);
-				dojo.event.connect(req, "load", "contentCallBack");
-			}
-
-			/* sort by tag name */
-			function alphasort(a, b) {
-				/* didn't find an appropriate <=> operator */
-				if (b[0].indexOf(a[0]+"::") == 0) return -1;
-				if (a[0].indexOf(b[0]+"::") == 0) return 1;
-				if (b[0].indexOf(a[0]) == 0) return 1;
-				if (a[0].indexOf(b[0]) == 0) return -1;
-				if (a[0] < b[0]) return -1;
-				if (a[0] > b[0]) return 1;
-				return 0;
-			}
-			/* sort by size */
-			function sizesort(a, b) {
-				return b[1] - a[1];
-			}
-
-			function selectTag(event) {
-				selectedtags.push(this.name);
-				update();
-			}
-
-			function unselectTag(event) {
-				var newtags = [];
-				var found = false;
-				for (var i=0; i<selectedtags.length; i++) {
-					if (selectedtags[i] != this.name) {
-						newtags.push(selectedtags[i]);
-					} else found = true;
-				}
-				if (!found) { window.alert("Tag not found: "+this.name); }
-				selectedtags = newtags;
-				update();
-			}
-
-			function doCloud(event) {
-				if (!this.expanded) {
-					this.expanded = makeCloud(this.span, this, false);
-				} else {
-					this.expanded.parentNode.removeChild(this.expanded);
-					this.expanded = false;
-				}
-			}
-
-			function makeCloud(node, tree, facetonly) {
-				if (tree.tags.length == 0) {
-					node.appendChild(document.createTextNode("No further refinement using tag clouds offered, please choose a package below."));
-					return;
-				}
-				var max = 0;
-				for (var i=0; i<tree.tags.length; i++)
-					if (tree.tags[i].count > max)
-						max = tree.tags[i].count;
-				var subtags = document.createElement("span");
-				for (var i=0; i < tree.tags.length; i++) {
-					var tag = tree.tags[i];
-					var size = Math.log(1+magicscale*tag.count/max)/Math.log(magicscale+1)
-					size = Math.floor(size*9+.5)
-					var isfacet = (tag.tags.length > 0);
-					
-					if (!isfacet && facetonly) continue;
-
-					var span = document.createElement("span");
-					var a = document.createElement("a");
-					span.className="tag"+size;
-					a.className="tag";
-					if (isfacet) a.className = "facet";
-					a.appendChild(document.createTextNode(tag.shortname));
-					span.appendChild(a);
-
-					tag.span = span
-
-					if (isfacet) {
-						dojo.event.connect(a,"onclick",tag,"doCloud");
-					} else {
-						//a.href="http://debtags.alioth.debian.org/cgi-bin/index.cgi?tags="+tag.name;
-						dojo.event.connect(a,"onclick",tag,"selectTag");
-					}
-
-					subtags.appendChild(span);
-					subtags.appendChild(document.createTextNode(" "));
-				}
-				node.appendChild(subtags);
-				return subtags;
-			}
-
-
-			function folddata(data) {
-				var newdata = [];
-				var lastfacet;
-				for (var i=0; i < data.length; i++) {
-					var newtag = {
-						name: data[i][0],
-						shortname: data[i][0],
-						count: data[i][1],
-						tags: [],
-						doCloud: doCloud,
-						selectTag: selectTag};
-					if (lastfacet && newtag.name.indexOf(lastfacet.name+"::") == 0) {
-						newtag.shortname = newtag.shortname.substr(lastfacet.name.length+2);
-						lastfacet.tags.push(newtag);
-					} else {
-						var pos = newtag.name.indexOf("::");
-						if (pos < 0) {
-							lastfacet = newtag;
-							newdata.push(newtag);
-						} else {
-							lastfacet = {
-								name: newtag.name.substring(0,pos),
-								shortname: newtag.name.substring(0,pos),
-								count: 0,
-								tags: [newtag],
-								doCloud: doCloud };
-							newtag.shortname = newtag.shortname.substr(pos+2);
-							newdata.push(lastfacet);
-						}
-					}
-				}
-				return newdata;
-			}
-
-			function showPackages(node, packages, stats) {
-				node.innerHTML="";
-				if (packages.length == 0) {
-					node.appendChild(document.createTextNode(stats.totalpkgs + " packages not displayed (choose additional tags)."));
-				} else if (packages.length < stats.totalpkgs) {
-					node.appendChild(document.createTextNode((stats.totalpkgs-packages.length) + " packages not displayed (choose additional tags)."));
-				}
-				for (var i=0; i < packages.length; i++) {
-					var div = document.createElement("div");
-					var a = document.createElement("a");
-					a.className="package";
-					a.href="http://packages.debian.org/"+packages[i][0];
-					a.appendChild(document.createTextNode(packages[i][0]));
-					div.appendChild(a);
-					div.appendChild(document.createTextNode(" "+packages[i][1]));
-					node.appendChild(div);
-				}
-			}
-
-			function showSelected(node, tags) {
-				node.innerHTML="";
-				for (var i=0; i < tags.length; i++) {
-					var obj = {
-						name: tags[i],
-						unselectTag: unselectTag
-					}
-					var span = document.createElement("span");
-					span.className="tag";
-					var a = document.createElement("a");
-					a.className="tag_sel";
-					a.appendChild(document.createTextNode(tags[i]));
-					dojo.event.connect(a,"onclick",obj,"unselectTag");
-					span.appendChild(a);
-					node.appendChild(span);
-					node.appendChild(document.createTextNode(" "));
-				}
-			}
-
-			function contentCallBack(type,data,evt) {
-				var tagcloud = document.getElementById("tagcloud");
-				var packages = document.getElementById("packages");
-				var seltags = document.getElementById("tags");
-				// prepare data
-				tf = data.tags;
-				if (data.facets)
-					tf = tf.concat(data.facets);
-				tf.sort(alphasort);
-				tags = { tags: folddata(tf) };
-				showPackages( packages, data.packages, data.stats );
-				showSelected( seltags, data.selected );
-				tagcloud.innerHTML = "";
-				makeCloud( tagcloud, tags, true);
-				dojo.widget.byId("LoadingDialogContent").hide();
-			}
-
-			dojo.addOnLoad(update);
-		</script>
 		<div dojoType="dialog" id="LoadingDialogContent" bgColor="white" bgOpacity="0.5" toggle="fade" toggleDuration="250"><span style="font-size: xx-large; font-weight: bold">Loading ...</span></div>
 	</body>
 </html>



More information about the Debtags-commits mailing list