[Debtags-commits] [svn] r1981 - in web/trunk: . js
Enrico Zini
enrico at costa.debian.org
Mon Oct 2 20:38:59 UTC 2006
Author: enrico
Date: Mon Oct 2 20:38:58 2006
New Revision: 1981
Modified:
web/trunk/edit.html
web/trunk/js/debtags.js
web/trunk/main.css
Log:
Implemented suggested tags (needs new debtagsd and sugg cgi)
Implemented selection of package name
Modified: web/trunk/edit.html
==============================================================================
--- web/trunk/edit.html (original)
+++ web/trunk/edit.html Mon Oct 2 20:38:58 2006
@@ -12,14 +12,38 @@
<script src="js/debtags.js"></script>
<script type="text/javascript">
<!--
+var pkg = false;
var origtags = 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 Array();
+var suggested = new Array();
var atcurfacet = "use";
+function setPackage(p)
+{
+ pkg = p;
+
+ render("pkgname", pkg);
+ // TODO: get origtags
+ origtags.addAll(["use::editing", "implemented-in::c++"]);
+ // TODO: get short and long description
+ // TODO: validate package name
+ updateAll();
+
+ fireSUGGQuery(pkg, function(tags){
+ suggested = new Array();
+ for (i in tags)
+ suggested.push(tags[i][0]);
+ updateSuggested();
+ }, function(tags) {
+ suggested = new Array();
+ for (i in tags)
+ suggested.push(tags[i][0]);
+ updateSuggested();
+ }, true);
+}
+
function addTag(tag)
{
tags.add(tag);
@@ -44,6 +68,7 @@
updateSelected();
updateAvailable();
updateRelevant();
+ updateSuggested();
}
function updateSelected()
@@ -108,14 +133,38 @@
render("reltagsList", b);
}
+function updateSuggested()
+{
+ var b = "<ul>\n";
+ var count = 0;
+ for (var i in suggested) {
+ var tag = suggested[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("suggtagsList", 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");
+ if (pkg)
+ {
+ 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");
+ setVisible("editor", true);
+ setVisible("begin", false);
+ } else {
+ setVisible("editor", false);
+ setVisible("begin", true);
+ }
}
function onSelACF(facet)
@@ -143,6 +192,7 @@
document.relsearch.submit.disabled = false;
}, true);
}
+
//-->
</script>
</head>
@@ -159,68 +209,82 @@
<p>Don't forget to submit your changes when you are happy with them, and to remove the "not-yet-tagged" tags.</p>
</div>
- <div id="curpackage">
- <p><b>PACKAGE</b> - <b>SHORTDESC</b></p>
- <div class="ldesc">
- LONGDESC
- </div>
- <a href="http://packages.debian.org/PACKAGE">Debian page</a>
- <a href="http://packages.qa.debian.org/PACKAGE">Debian QA page</a>
- <div id="curpatch">
- </div>
- <div id="curtags">
- </div>
- </div>
-
- <form name="patch" id="patchForm" method="get">
- <input type="hidden" name="pkg" value="PACKAGE">
- <input type="hidden" name="patch" value="">
- </form>
-
- <div style="clear: both"></div>
-
- <p>Current tag view:
- <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="begin">
+ <form name="begin" onSubmit="return false;">
+ Package to edit: <input type="text" name="pkg" onChange="setPackage(this.value)" />
+ <input type="button" name="submit" value="Search" onClick="setPackage(this.form.pkg.value)" />
+ </form>
+ </div>
+
+ <div id="editor">
+ <div id="curpackage">
+ <p><span id="pkgname"> </span> - <b>SHORTDESC</b></p>
+ <div class="ldesc">
+ LONGDESC
+ </div>
+ <a href="http://packages.debian.org/PACKAGE">Debian page</a>
+ <a href="http://packages.qa.debian.org/PACKAGE">Debian QA page</a>
+ <div id="curpatch">
+ </div>
+ <div id="curtags">
+ </div>
+ </div>
- <div id="taglists">
- <div id="alltags">
- <div id="atfacets">
- </div>
- <div id="attags">
- </div>
- </div>
- <div id="suggtags">
- TODO: list of tags suggested by whatever package-dependent
- tag suggesting method the server is implementing.
- </div>
- <div id="reltags">
- <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>
- </div>
- <div id="disctags">
- TODO: all tags by discriminange, or all tags by discriminance
- after one of more of the tags currently assigned to the
- package are selected.
- </div>
- </div>
+ <form name="patch" id="patchForm" method="get">
+ <input type="hidden" name="pkg" value="PACKAGE">
+ <input type="hidden" name="patch" value="">
+ </form>
+
+ <div style="clear: both"></div>
+
+ <p>Current tag view:
+ <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">
+ <div id="atfacets">
+ </div>
+ <div id="attags">
+ </div>
+ </div>
+ <div id="suggtags">
+ Tags suggested by the server:
+ <div id="suggtagsList">
+ </div>
+ </div>
+ <div id="reltags">
+ <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>
+ </div>
+ <div id="disctags">
+ TODO: all tags by discriminange, or all tags by discriminance
+ after one of more of the tags currently assigned to the
+ package are selected.
+ </div>
+ </div>
+ </div>
<script type="text/javascript">
<!--
// Initialisation functions
+
+ var query = getQuery();
+ if (query.pkg) setPackage(query.pkg);
updateAll();
+
-->
</script>
Modified: web/trunk/js/debtags.js
==============================================================================
--- web/trunk/js/debtags.js (original)
+++ web/trunk/js/debtags.js Mon Oct 2 20:38:58 2006
@@ -123,6 +123,32 @@
);
}
+function fireSUGGQuery(pkg, progressFunc, finalFunc, async)
+{
+ // Build the new search base
+ runRequest(QUERY_BASE + "/sugg/"+pkg,
+ function(lines) {
+ var ts = new Array();
+ for (i in lines)
+ {
+ var fields = lines[i].split(" ");
+ ts.push(fields);
+ }
+ progressFunc(ts);
+ },
+ function(lines) {
+ var ts = new Array();
+ for (i in lines)
+ {
+ var fields = lines[i].split(" ");
+ ts.push(fields);
+ }
+ finalFunc(ts);
+ },
+ async
+ );
+}
+
function firePKGSQuery(ts, progressFunc, finalFunc, async)
{
var tags = new Array();
@@ -452,6 +478,18 @@
node.style.display = "none";
}
+function getQuery()
+{
+ var query = window.location.search.substring(1);
+ query = query.split('&');
+ var res = {};
+ for (i in query)
+ {
+ var q = query[i].split('=');
+ res[unescape(q[0])] = unescape(q[1]);
+ }
+ return res;
+}
var wanted = new Tagset();
var unwanted = new Tagset();
Modified: web/trunk/main.css
==============================================================================
--- web/trunk/main.css (original)
+++ web/trunk/main.css Mon Oct 2 20:38:58 2006
@@ -105,6 +105,17 @@
cursor: pointer;
}
+#alltags { display: none; }
+#suggtags { display: none; }
+#reltags { display: none; }
+#disctags { display: none; }
+#editor { display: none; }
+#begin { display: none; }
+
+#pkgname {
+ font-weight: bold;
+}
+
#atfacets {
float: right;
width: 33%;
@@ -113,6 +124,10 @@
margin: 0;
padding: 0;
}
+#suggtagsList li p {
+ margin: 0;
+ padding: 0;
+}
#reltagsList li p {
margin: 0;
padding: 0;
More information about the Debtags-commits
mailing list