diff --git a/web/css/core.css b/web/css/core.css
index 2f29691..7b6e94b 100644
--- a/web/css/core.css
+++ b/web/css/core.css
@@ -102,12 +102,12 @@ span.glyphicon {
float: none;
width: 100%;
}
-#pkg_files ul {
+.file-tree ul {
margin: 0px;
padding: 0px;
list-style-type: none;
}
-#pkg_files ul ul {
+.file-tree ul ul {
margin-left: 5px;
}
diff --git a/web/index.html b/web/index.html
index 3a337fd..fee5b0a 100644
--- a/web/index.html
+++ b/web/index.html
@@ -153,35 +153,7 @@
-
- Name | |
- Repository | |
- Version | |
- Description | |
- Architecture | |
- Upstream URL | |
- Licenses | |
- Groups | |
- Provides | |
- Depends on | |
- Optional deps | |
- Required by | |
- Conflicts with | |
- Replaces | |
- Install size | |
- Packager | |
- Build date | |
- Install date | |
- Install reason | |
- Install script | |
- Validated by | |
- Package files | |
-
-
- Download |
- |
-
-
+
@@ -237,16 +209,7 @@
-
- Name | |
- Description | |
- Package count | |
- Usage | |
- Signature level | |
- Source-only | |
- Upgrade sources | |
- Upgrades | |
-
+
diff --git a/web/js/packagemanagement.js b/web/js/packagemanagement.js
index e89a30b..37276cb 100644
--- a/web/js/packagemanagement.js
+++ b/web/js/packagemanagement.js
@@ -124,42 +124,65 @@
var setProperties = function() {
// -> basic package info
var basics = entry.info.basics ? entry.info.basics : {};
- repoindex.setPackageNames("pkg_name", [entry.name]);
- repoindex.setText("pkg_repo", repoindex.makeStr(entry.info.repo));
- repoindex.setText("pkg_ver", repoindex.makeStr(basics.ver));
- repoindex.setText("pkg_desc", repoindex.makeStr(basics.desc));
- repoindex.setText("pkg_arch", repoindex.makeStr(basics.arch));
- repoindex.setText("pkg_bdate", repoindex.makeStr(basics.bdate));
+ var tb = document.getElementById("pkg_tbody");
+ tb.wipeChildren();
+ repoindex.addPackageNames(tb, "Name", [entry.name]);
+ repoindex.addField(tb, "Repository", repoindex.makeStr(entry.info.repo));
+ repoindex.addField(tb, "Version", repoindex.makeStr(basics.ver));
+ repoindex.addField(tb, "Description", repoindex.makeStr(basics.desc));
+ if(basics.arch) {
+ repoindex.addField(tb, "Architecture", repoindex.makeStr(basics.arch));
+ } else if(basics.archs) {
+ repoindex.addField(tb, "Architectures", repoindex.makeArray(basics.archs));
+ }
// -> full package info
var details = entry.info.details ? entry.info.details : {};
if(details.url) {
- repoindex.setLink("pkg_url", details.url, details.url, window.open);
+ repoindex.setLink(repoindex.addField(tb, "Upstream URL"), details.url, details.url, window.open);
} else {
- repoindex.setText("pkg_url", "unknown");
+ repoindex.addField(tb, "Upstream URL", "unknown");
+ }
+ repoindex.addField(tb, "Licenses", repoindex.makeArray(details.lic));
+ repoindex.addPackageNames(tb, "Groups", repoindex.pack(details.grp), repoindex.Pages.Groups);
+ repoindex.addPackageNames(tb, "Provides", repoindex.pkgNamesFromDeps(details.prov));
+ repoindex.addPackageNames(tb, "Depends on", repoindex.pkgNamesFromDeps(details.deps));
+ repoindex.addPackageNames(tb, "Optional deps", repoindex.pkgNamesFromDeps(details.optd));
+ repoindex.addPackageNames(tb, "Required by", details.requ);
+ repoindex.addPackageNames(tb, "Optional for", details.optf);
+ repoindex.addPackageNames(tb, "Conflicts with", repoindex.pkgNamesFromDeps(details.conf));
+ repoindex.addPackageNames(tb, "Replaces", repoindex.pkgNamesFromDeps(details.repl));
+ if(details.buildAvail) {
+ repoindex.addField(tb, "Install size", repoindex.makeDataSize(details.isize));
+ repoindex.addField(tb, "Packager", details.pack);
+ repoindex.addField(tb, "Build date", repoindex.makeStr(basics.bdate));
+ if(entry.info.repo === "local") {
+ repoindex.addField(tb, "Install date", repoindex.makeStr(details.idate));
+ repoindex.addField(tb, "Install reason", details.expl ? "explicitly installed" : "installed as dependency");
+ }
+ repoindex.addField(tb, "Install script", repoindex.makeBool(details.scri));
+ repoindex.addField(tb, "Validated by", repoindex.makeArray(details.sig));
+ repoindex.setTree(repoindex.addField(tb, "Package files"), repoindex.makeTree(details.files));
+ }
+ // -> update download buttons
+ if(details.buildAvail || details.srcAvail) {
+ var downloadElement = repoindex.addField(tb, "Download");
+ var spanElement;
+ if(details.buildAvail) {
+ spanElement = document.createElement("span");
+ var downloadPkgParams = {repo: entry.info.repo, pkg: entry.name, down: "pkg"};
+ repoindex.setDownloadButton(spanElement, "package", repoindex.makeHash(repoindex.Pages.Packages, downloadPkgParams, true), function() {
+ repoindex.pageManager.denoteHash(repoindex.Pages.Packages, downloadPkgParams);
+ repoindex.pageManager.packageManager.showMirrorsForIndex(entryIndex);
+ });
+ downloadElement.appendChild(spanElement);
+ }
+ if(details.srcAvail) {
+ spanElement = document.createElement("span");
+ var downloadSrcParams = {repo: entry.info.repo, pkg: entry.name, down: "src"};
+ repoindex.setDownloadButton(spanElement, "source", repoindex.makeHash(repoindex.Pages.Packages, downloadSrcParams, true));
+ downloadElement.appendChild(spanElement);
+ }
}
- repoindex.setText("pkg_lic", repoindex.makeArray(details.lic));
- repoindex.setPackageNames("pkg_grp", repoindex.pack(details.grp), repoindex.Pages.Groups);
- repoindex.setPackageNames("pkg_prov", repoindex.pkgNamesFromDeps(details.prov));
- repoindex.setPackageNames("pkg_deps", repoindex.pkgNamesFromDeps(details.deps));
- repoindex.setPackageNames("pkg_optd", repoindex.pkgNamesFromDeps(details.optd));
- repoindex.setPackageNames("pkg_requ", repoindex.pack(details.requ));
- repoindex.setPackageNames("pkg_conf", repoindex.pkgNamesFromDeps(details.conf));
- repoindex.setPackageNames("pkg_repl", repoindex.pkgNamesFromDeps(details.repl));
- repoindex.setText("pkg_isize", repoindex.makeDataSize(details.isize));
- repoindex.setText("pkg_pack", repoindex.makeStr(details.pack));
- repoindex.setText("pkg_idate", repoindex.makeStr(details.idate));
- repoindex.setText("pkg_expl", entry.info.repo === "local" ? (details.expl ? "explicitly installed" : "installed as dependency") : "n/a");
- repoindex.setText("pkg_scri", repoindex.makeBool(details.scri));
- repoindex.setText("pkg_sig", repoindex.makeArray(details.sig));
- repoindex.setTree("pkg_files", repoindex.makeTree(details.files));
- // -> upgrade download buttons
- var downloadPkgParams = {repo: entry.info.repo, pkg: entry.name, down: "pkg"};
- repoindex.setDownloadButton("pkg_down", "package", repoindex.makeHash(repoindex.Pages.Packages, downloadPkgParams, true), function() {
- repoindex.pageManager.denoteHash(repoindex.Pages.Packages, downloadPkgParams);
- repoindex.pageManager.packageManager.showMirrorsForIndex(entryIndex);
- });
- var downloadSrcParams = {repo: entry.info.repo, pkg: entry.name, down: "src"};
- repoindex.setDownloadButton("src_down", "source", repoindex.makeHash(repoindex.Pages.Packages, downloadSrcParams, true));
};
setProperties();
if(!entry.info.basics || !entry.info.details) {
diff --git a/web/js/pagemanagement.js b/web/js/pagemanagement.js
index 6d79495..dbea1a6 100644
--- a/web/js/pagemanagement.js
+++ b/web/js/pagemanagement.js
@@ -281,10 +281,13 @@
this.setPage(repoindex.Pages.Packages);
// ensure right column is visible
this.showRightColumn(this.leftColumnContainerPackages, this.rightColumnContainerPackages);
- if(scroll && !checkVisibility($("#pkg_sig"))) {
- $('html, body').animate({
- scrollTop: $("#" + this.rightColumnContainerPackages.id).offset().top
- }, 500);
+ var tb = document.getElementById("pkg_tbody");
+ if(tb.lastChild) {
+ if(scroll && !checkVisibility(tb.lastChild)) {
+ $('html, body').animate({
+ scrollTop: $("#" + this.rightColumnContainerPackages.id).offset().top
+ }, 500);
+ }
}
};
diff --git a/web/js/repomanagement.js b/web/js/repomanagement.js
index 22512c9..179747d 100644
--- a/web/js/repomanagement.js
+++ b/web/js/repomanagement.js
@@ -181,15 +181,17 @@
var entry = this.entryByIndex(entryIndex);
if(entry) {
var info = entry.info;
- repoindex.setText("repo_name", entry.name);
- repoindex.setText("repo_desc", info.desc);
- repoindex.setText("repo_pkgcount", repoindex.makeStr(info.packageCount));
- repoindex.setText("repo_usage", repoindex.makeArray(info.usage, ", "));
- repoindex.setText("repo_siglevel", repoindex.makeArray(info.sigLevel, ", "));
- repoindex.setText("repo_source_only", repoindex.makeBool(info.srcOnly));
- repoindex.setText("repo_upgrade_sources", repoindex.makeArray(info.upgradeSources, ", "));
+ var tb = document.getElementById("repo_tbody");
+ tb.wipeChildren();
+ repoindex.addField(tb, "Name", repoindex.makeStr(entry.name));
+ repoindex.addField(tb, "Description", repoindex.makeStr(info.desc));
+ repoindex.addField(tb, "Package count", repoindex.makeStr(info.packageCount));
+ repoindex.addField(tb, "Usage", repoindex.makeArray(info.usage, ", "));
+ repoindex.addField(tb, "Signature level", repoindex.makeArray(info.sigLevel, ", "));
+ repoindex.addField(tb, "Source-only", repoindex.makeBool(info.srcOnly));
+ repoindex.addField(tb, "Upgrade sources", repoindex.makeArray(info.upgradeSources, ", "));
var invokeUpgradeLookupParams = {repo: entry.name, invoke: "upgradelookup"};
- repoindex.setDownloadButton("repo_checkforupgrades", "check for upgrades", repoindex.makeHash(repoindex.Pages.Repositories, invokeUpgradeLookupParams, true), function() {
+ repoindex.setDownloadButton(repoindex.addField(tb, "Upgrades"), "check for upgrades", repoindex.makeHash(repoindex.Pages.Repositories, invokeUpgradeLookupParams, true), function() {
repoindex.pageManager.repoManager.showAvailableUpgrades(entry.name);
repoindex.pageManager.denoteHash(repoindex.Pages.Repositories, invokeUpgradeLookupParams);
}, "refresh");
diff --git a/web/js/utils.js b/web/js/utils.js
index b798499..7db91d3 100644
--- a/web/js/utils.js
+++ b/web/js/utils.js
@@ -115,25 +115,29 @@
repoindex.setPackageNames = function(id, packageNames, pageName) {
var element = typeof id === "string" ? document.getElementById(id) : id;
element.wipeChildren();
- if(packageNames.length > 0) {
- if(!pageName) {
- pageName = repoindex.Pages.Packages;
- }
- for(var i = 0; i < packageNames.length; ++i) {
- var link = document.createElement("a");
- link.appendChild(document.createTextNode(packageNames[i]));
- link.href = repoindex.makeHash(pageName, {}, true);
- link.onclick = function() {
- repoindex.pageManager.setPage(pageName, {});
- repoindex.pageManager.applySearchTerm(this.firstChild.data, true);
- return false;
- };
- link.className = "package-link";
- element.appendChild(link);
- element.appendChild(document.createTextNode(" "));
+ if(Array.isArray(packageNames)) {
+ if(packageNames.length > 0) {
+ if(!pageName) {
+ pageName = repoindex.Pages.Packages;
+ }
+ for(var i = 0; i < packageNames.length; ++i) {
+ var link = document.createElement("a");
+ link.appendChild(document.createTextNode(packageNames[i]));
+ link.href = repoindex.makeHash(pageName, {}, true);
+ link.onclick = function() {
+ repoindex.pageManager.setPage(pageName, {});
+ repoindex.pageManager.applySearchTerm(this.firstChild.data, true);
+ return false;
+ };
+ link.className = "package-link";
+ element.appendChild(link);
+ element.appendChild(document.createTextNode(" "));
+ }
+ } else {
+ element.appendChild(document.createTextNode("none"));
}
} else {
- element.appendChild(document.createTextNode("none"));
+ element.appendChild(document.createTextNode("invalid"));
}
};
@@ -174,6 +178,7 @@
repoindex.setTree = function(id, nodes) {
var element = typeof id === "string" ? document.getElementById(id) : id;
element.wipeChildren();
+ element.className = "file-tree";
// has root?
if(Array.isArray(nodes) && nodes.length) {
var makeNode = function(parentElement, nodes) {
@@ -213,25 +218,29 @@
};
repoindex.makeStr = function(str, na) {
- return str ? str : (na ? na : "unknown");
+ return str ? ((typeof str === "string" || typeof str === "number") ? str : "invalid") : (na ? na : "unknown");
};
repoindex.makeArray = function(array, separator) {
- return array && Array.isArray(array) ? (array.length ? array.join(separator ? separator : " ") : "none") : "unknown";
+ return array ? (Array.isArray(array) ? (array.length ? array.join(separator ? separator : " ") : "none") : "invalid") : "unknown";
};
repoindex.makeDataSize = function(sizeInByte) {
if(sizeInByte) {
- if (sizeInByte < 1024) {
- return sizeInByte + " bytes";
- } else if (sizeInByte < 1048576) {
- return (sizeInByte / 1024.0).toFixed(2) + " KiB";
- } else if (sizeInByte < 1073741824) {
- return (sizeInByte / 1048576.0).toFixed(2) + " MiB";
- } else if (sizeInByte < 1099511627776) {
- return (sizeInByte / 1073741824.0).toFixed(2) + " GiB";
+ if(typeof sizeInByte === "number") {
+ if (sizeInByte < 1024) {
+ return sizeInByte + " bytes";
+ } else if (sizeInByte < 1048576) {
+ return (sizeInByte / 1024.0).toFixed(2) + " KiB";
+ } else if (sizeInByte < 1073741824) {
+ return (sizeInByte / 1048576.0).toFixed(2) + " MiB";
+ } else if (sizeInByte < 1099511627776) {
+ return (sizeInByte / 1073741824.0).toFixed(2) + " GiB";
+ } else {
+ return (sizeInByte / 1099511627776.0).toFixed(2) + " TiB";
+ }
} else {
- return (sizeInByte / 1099511627776.0).toFixed(2) + " TiB";
+ return "invalid";
}
} else {
return "unknown";
@@ -271,6 +280,24 @@
});
};
+ repoindex.addField = function(element, fieldName, value) {
+ var nameElement = document.createElement("th");
+ nameElement.appendChild(document.createTextNode(fieldName));
+ var valueElement = document.createElement("td");
+ if(value) {
+ valueElement.appendChild(document.createTextNode(value));
+ }
+ var trElement = document.createElement("tr");
+ trElement.appendChild(nameElement);
+ trElement.appendChild(valueElement);
+ element.appendChild(trElement);
+ return valueElement;
+ };
+
+ repoindex.addPackageNames = function(element, fieldName, packageNames, pageName) {
+ repoindex.setPackageNames(repoindex.addField(element, fieldName), packageNames, pageName);
+ };
+
return repoindex;
})(repoindex || {});