Merge pull request #638 from TobiX/index-versions-cache

index.html versions cache
This commit is contained in:
Timothy Gu 2015-07-06 08:30:36 +08:00
commit 8cf0795e34
3 changed files with 44 additions and 4 deletions

1
.gitignore vendored
View File

@ -4,5 +4,6 @@
/gits/
/log*/
/pkg
/versions.json
/wip/
/tmp-*

View File

@ -508,7 +508,7 @@ show-upstream-deps-%:
.PHONY: clean
clean:
rm -rf $(call TMP_DIR,*) $(PREFIX) build-matrix.html
rm -rf $(call TMP_DIR,*) $(PREFIX) build-matrix.html versions.json
.PHONY: clean-pkg
clean-pkg:
@ -664,3 +664,12 @@ build-matrix.html: $(foreach PKG,$(PKGS), $(TOP_DIR)/src/$(PKG).mk)
@echo '</table>' >> $@
@echo '</body>' >> $@
@echo '</html>' >> $@
versions.json: $(foreach PKG,$(PKGS), $(TOP_DIR)/src/$(PKG).mk)
@echo '{' > $@
@{$(foreach PKG,$(PKGS), \
echo ' "$(PKG)": \
"$($(PKG)_VERSION)",';)} >> $@
@echo ' "": null' >> $@
@echo '}' >> $@

View File

@ -2565,6 +2565,25 @@ local-pkg-list: $(LOCAL_PKG_LIST)</pre>
})();
}
}
function loadVersionCache(doneCallback, errCallback) {
var request = new XMLHttpRequest();
request.open('GET', 'versions.json', true);
request.onreadystatechange = function reqCallback() {
if (request.readyState === 4) {
if (request.status === 200) {
try {
var versions = JSON.parse(request.responseText);
doneCallback(versions);
} catch (e) {
errCallback();
}
} else {
errCallback();
}
}
}
request.send();
}
function resolveVersions(versions) {
var resolvedVersions = {};
for (var package in versions) {
@ -2582,16 +2601,27 @@ local-pkg-list: $(LOCAL_PKG_LIST)</pre>
for (package in packageElements) {
var element = packageElements[package];
var version = resolvedVersions[package];
var shorten = version.length > 12;
if (shorten) {
version = version.substring(0, 12);
}
var versionEscaped = version.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;');
if (shorten) {
versionEscaped += '&hellip;';
}
var versionHtml = '<td class="version">' + versionEscaped + '</td>';
element.insertAdjacentHTML('afterend', versionHtml);
}
}
(function main() {
var packageElements = getPackageElements();
loadVersions(packageElements, function doneCallback(versions) {
var resolvedVersions = resolveVersions(versions);
showVersions(packageElements, resolvedVersions);
loadVersionCache(function doneCallback(versions) {
showVersions(packageElements, versions);
}, function errCallback() {
loadVersions(packageElements, function doneCallback(versions) {
var resolvedVersions = resolveVersions(versions);
showVersions(packageElements, resolvedVersions);
});
});
})();
</script>