generate info dynamically
This commit is contained in:
parent
8043caf05b
commit
9980fad0a8
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -153,35 +153,7 @@
|
|||
<col style="width:30%">
|
||||
<col style="width:70%">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr><th>Name</th><td id="pkg_name"></td></tr>
|
||||
<tr><th>Repository</th><td id="pkg_repo"></td></tr>
|
||||
<tr><th>Version</th><td id="pkg_ver"></td></tr>
|
||||
<tr><th>Description</th><td id="pkg_desc"></td></tr>
|
||||
<tr><th>Architecture</th><td id="pkg_arch"></td></tr>
|
||||
<tr><th>Upstream URL</th><td id="pkg_url"></td></tr>
|
||||
<tr><th>Licenses</th><td id="pkg_lic"></td></tr>
|
||||
<tr><th>Groups</th><td id="pkg_grp"></td></tr>
|
||||
<tr><th>Provides</th><td id="pkg_prov"></td></tr>
|
||||
<tr><th>Depends on</th><td id="pkg_deps"></td></tr>
|
||||
<tr><th>Optional deps</th><td id="pkg_optd"></td></tr>
|
||||
<tr><th>Required by</th><td id="pkg_requ"></td></tr>
|
||||
<tr><th>Conflicts with</th><td id="pkg_conf"></td></tr>
|
||||
<tr><th>Replaces</th><td id="pkg_repl"></td></tr>
|
||||
<tr><th>Install size</th><td id="pkg_isize"></td></tr>
|
||||
<tr><th>Packager</th><td id="pkg_pack"></td></tr>
|
||||
<tr><th>Build date</th><td id="pkg_bdate"></td></tr>
|
||||
<tr><th>Install date</th><td id="pkg_idate"></td></tr>
|
||||
<tr><th>Install reason</th><td id="pkg_expl"></td></tr>
|
||||
<tr><th>Install script</th><td id="pkg_scri"></td></tr>
|
||||
<tr><th>Validated by</th><td id="pkg_sig"></td></tr>
|
||||
<tr><th>Package files</th><td id="pkg_files"></td></tr>
|
||||
<!--<tr><th>Source files</th><td id="pkg_src_files"></td></tr>-->
|
||||
<tr>
|
||||
<th>Download</th>
|
||||
<td><span id="pkg_down"></span> <span id="src_down"></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody id="pkg_tbody"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -237,16 +209,7 @@
|
|||
<col style="width:30%">
|
||||
<col style="width:70%">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr><th>Name</th><td id="repo_name"></td></tr>
|
||||
<tr><th>Description</th><td id="repo_desc"></td></tr>
|
||||
<tr><th>Package count</th><td id="repo_pkgcount"></td></tr>
|
||||
<tr><th>Usage</th><td id="repo_usage"></td></tr>
|
||||
<tr><th>Signature level</th><td id="repo_siglevel"></td></tr>
|
||||
<tr><th>Source-only</th><td id="repo_source_only"></td></tr>
|
||||
<tr><th>Upgrade sources</th><td id="repo_upgrade_sources"></td></tr>
|
||||
<tr><th>Upgrades</th><td><span id="repo_checkforupgrades"></span></td></tr>
|
||||
</tbody>
|
||||
<tbody id="repo_tbody"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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 || {});
|
||||
|
|
Loading…
Reference in New Issue