[Debtags-commits] [svn] r1980 - in web/trunk: . js
Enrico Zini
enrico at costa.debian.org
Mon Oct 2 19:39:33 UTC 2006
Author: enrico
Date: Mon Oct 2 19:39:32 2006
New Revision: 1980
Modified:
web/trunk/edit.html
web/trunk/js/debtags.js
web/trunk/js/test.html
web/trunk/main.css
Log:
Implemented the relevant tags panel
Modified: web/trunk/edit.html
==============================================================================
--- web/trunk/edit.html (original)
+++ web/trunk/edit.html Mon Oct 2 19:39:32 2006
@@ -13,11 +13,12 @@
<script type="text/javascript">
<!--
var origtags = new Tagset();
-var tags = new Tagset();
+// FIXME: this is for testing
+origtags.addAll(["use::editing", "implemented-in::c++"]);
+var tags = origtags.copy();
var voc = new Vocabulary(fdata, tdata);
-var relevant = new Tagset();
+var relevant = new Array();
var atcurfacet = "use";
-var curtagpanel = "all";
function addTag(tag)
{
@@ -95,163 +96,53 @@
{
var b = "<ul>\n";
var count = 0;
- relevant.each(function(tag){
- if (tags.has(tag)) return;
- if (++count > 10) return;
+ for (var i in relevant) {
+ var tag = relevant[i];
+ if (tags.has(tag)) continue;
+ if (++count > 10) break;
td = voc.tagData(tag);
+ if (td == null) continue;
b += "<li><p><span class='tag' onClick='addTag(\""+tag+"\")'>"+tag+": "+td[0]+"</span></p>"+td[1]+"</li>\n";
- });
+ };
b += "</ul>\n";
render("reltagsList", b);
}
function updateVisibility()
{
+ var sel = document.selTagPanel.selTagPanel;
+ var curtagpanel = sel.options[sel.selectedIndex].value;
setVisible("alltags", curtagpanel == "all");
setVisible("suggtags", curtagpanel == "sugg");
setVisible("reltags", curtagpanel == "rel");
setVisible("disctags", curtagpanel == "disc");
}
-function onSelTagPanelChanged(sel)
-{
- curtagpanel = sel.options[sel.selectedIndex].value;
- updateVisibility();
-}
-
function onSelACF(facet)
{
atcurfacet = facet;
updateAvailable();
}
-/*
- function CurTags()
- {
- }
- CurTags.prototype.name = function()
- {
- return "curtags";
- }
- CurTags.prototype.contentSignature = function ()
- {
- var a = new Array();
- for (var f in voc.facets)
- for (var i in voc.facets[f].tags)
- {
- var t = voc.facets[f].tags[i];
- if (tags.has(t.name))
- a.push(t.name);
- }
- return a.join(',');
- }
- CurTags.prototype.render = function()
- {
- var res = "";
- res += " <p><b>Currently attached tags:</b>\n";
- res += " <ul id='curtags-list'>\n";
- if (tags.count() > 0)
- {
- for (f in voc.facets)
- for (i in voc.facets[f].tags)
- {
- var t = voc.facets[f].tags[i];
- if (tags.has(t.name))
- res += " <li>"+t.sdesc+" <span class='button' onClick='ctl.remTag(\""+t.name+"\")'>[remove]</a></li>\n";
- }
- } else {
- res += " <li>(no tags are currently attached to this package)</li>\n";
- }
- res += " </ul>\n";
- res += " </p>\n";
- res += " <div id='curtags-buttons'>\n";
- if (tags.hasChanges())
- {
- res += " <span class='button' onClick='ctl.commitChanges()'>[submit]</span>\n";
- res += " <span class='button' onClick='ctl.revertChanges()'>[undo all changes]</span>\n";
- }
- res += " </div>\n";
-
-// node = document.getElementById("curpatch")
-// var patch = mkPatch();
-// if (patch.length > 0)
-// node.innerHTML = "Changes: " + mkPatch();
-// else
-// node.innerHTML = "";
-
- return res;
- }
- CurTags.prototype.updateView = function()
- {
- node = document.getElementById(this.name())
- node.innerHTML = this.render();
- }
-
- function CurPatch()
- {
- }
- CurPatch.prototype.name = function()
- {
- return "curpatch";
- }
- CurPatch.prototype.contentSignature = function ()
- {
- return tags.mkPatch();
- }
- CurPatch.prototype.render = function()
- {
- var patch = tags.mkPatch();
- if (patch.length > 0)
- return "Changes: " + patch;
- else
- return "";
- }
- CurTags.prototype.updateView = function()
- {
- node = document.getElementById(this.name())
- node.innerHTML = this.render();
- }
-
-
- // Controller (custom parts)
-
- Controller.prototype.addTag = function(tagName)
- {
- tags.add(tagName);
- this.get("editbox-"+extractFacet(tagName)).updateView();
- this.get("curtags").updateView();
- }
- Controller.prototype.remTag = function(tagName)
- {
- tags.del(tagName);
- this.get("editbox-"+extractFacet(tagName)).updateView();
- this.get("curtags").updateView();
- }
- Controller.prototype.remFacet = function(facetName)
- {
- var f = voc.get(facetName);
- for (i in f.tags)
- {
- var t = f.tags[i]
- if (tags.has(t.name))
- tags.del(t.name);
- }
- this.get("editbox-"+facetName).close();
- this.get("curtags").updateView();
- }
- Controller.prototype.revertChanges = function()
- {
- tags.revert();
- this.updateAll();
- }
- Controller.prototype.commitChanges = function()
- {
- document.patch.patch.value = tags.mkPatch();
- document.patch.submit();
- }
-
- var ctl = new Controller();
-*/
+function onRelSearch(keyField)
+{
+ document.relsearch.keys.disabled = true;
+ document.relsearch.submit.disabled = true;
+ fireSTAGSQuery(keyField.value, function(tags){
+ //render("reltagslist", "Loading tag list... ("+tags.length+")");
+ relevant = new Array();
+ for (i in tags)
+ relevant.push(tags[i][0]);
+ updateRelevant();
+ }, function(tags){
+ relevant = new Array();
+ for (i in tags)
+ relevant.push(tags[i][0]);
+ updateRelevant();
+ document.relsearch.keys.disabled = false;
+ document.relsearch.submit.disabled = false;
+ }, true);
+}
//-->
</script>
</head>
@@ -289,12 +180,14 @@
<div style="clear: both"></div>
<p>Current tag view:
- <select name="selTagPanel" onChange="onSelTagPanelChanged(this)">
- <option value="all" selected="true">All tags</option>
- <option value="sugg">Suggested tags</option>
- <option value="rel">Relevant tags</option>
- <option value="disc">Discriminant tags</option>
- </select></p>
+ <form name="selTagPanel">
+ <select name="selTagPanel" onChange="updateVisibility()">
+ <option value="all" selected="true">All tags</option>
+ <option value="sugg">Suggested tags</option>
+ <option value="rel">Relevant tags</option>
+ <option value="disc">Discriminant tags</option>
+ </select></p>
+ </form>
<div id="taglists">
<div id="alltags">
@@ -308,8 +201,11 @@
tag suggesting method the server is implementing.
</div>
<div id="reltags">
- <form name="rtags">
- Serch tags: <input type="text" name="keys">
+ <form name="relsearch" onSubmit="return false;">
+ <div id="relsearch">
+ Search: <input type="text" name="keys" value='' onChange="onRelSearch(this)" />
+ <input type="button" name="submit" value="Search" onClick="onRelSearch(this.form.keys)" />
+ </div>
</form>
<div id="reltagsList">
</div>
Modified: web/trunk/js/debtags.js
==============================================================================
--- web/trunk/js/debtags.js (original)
+++ web/trunk/js/debtags.js Mon Oct 2 19:39:32 2006
@@ -216,6 +216,10 @@
var tmp=this;
tset.each(function(i){tmp.add(i)});
},
+ subtract: function(tset) {
+ var tmp=this;
+ tset.each(function(i){tmp.del(i)});
+ },
contains: function(tset) {
for (var i in tset._items)
if (!this.has(i))
@@ -238,6 +242,16 @@
this.each(function(i){res.add(i);});
return res;
},
+ mkpatch: function(ts) {
+ var added = ts.copy();
+ added.subtract(this);
+ var removed = this.copy();
+ removed.subtract(ts);
+ var res = new Tagset();
+ added.each(function(tag){res.add("+"+tag);});
+ removed.each(function(tag){res.add("-"+tag);});
+ return res;
+ },
/*
filtervoc: function(voc) {
var voc1 = new Vocabulary();
Modified: web/trunk/js/test.html
==============================================================================
--- web/trunk/js/test.html (original)
+++ web/trunk/js/test.html Mon Oct 2 19:39:32 2006
@@ -81,10 +81,20 @@
ensure("19 should have foo", t.has("foo"));
ensure("20 should have bar", t.has("bar"));
ensure("21 should have baz", t.has("baz"));
+t.subtract(t1);
+ ensure_equals("22 size should be 1", t.size(), 1);
+ ensure("23 should not have foo", !t.has("foo"));
+ ensure("24 should not have bar", !t.has("bar"));
+ ensure("25 should have baz", t.has("baz"));
+var p = t.mkpatch(t1);
+ ensure_equals("26 patch size should be 3", p.size(), 3);
+ ensure("27 should have +foo", p.has("+foo"));
+ ensure("28 should have +bar", p.has("+bar"));
+ ensure("29 should have -baz", p.has("-baz"));
t.clear();
- ensure("22 should not have foo", !t.has("foo"));
- ensure("23 should be empty", t.empty());
- ensure_equals("24 size should be 0", t.size(), 0);
+ ensure("30 should not have foo", !t.has("foo"));
+ ensure("31 should be empty", t.empty());
+ ensure_equals("32 size should be 0", t.size(), 0);
beginTest("Collection");
var t = new Collection();
Modified: web/trunk/main.css
==============================================================================
--- web/trunk/main.css (original)
+++ web/trunk/main.css Mon Oct 2 19:39:32 2006
@@ -113,3 +113,7 @@
margin: 0;
padding: 0;
}
+#reltagsList li p {
+ margin: 0;
+ padding: 0;
+}
More information about the Debtags-commits
mailing list