[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