return;
}
- function showStatus(text) {
+ function showStatus(message, url) {
show('buildstatus');
- $('buildstatus').innerHTML = text;
+ var tr = message.startsWith('tr-') ? message : '';
+ if (url) {
+ $('buildstatus').innerHTML = '<a href="' + url + '" class="' + tr + '">' + message + '</a>';
+ } else {
+ $('buildstatus').innerHTML = '<span class="' + tr + '"></span>';
+ }
translate();
}
- function handleError(response) {
- hide('buildspinner');
-
- response.json()
- .then(mobj => {
- var message = mobj['message'] || '<span class="tr-build-failed"></span>';
- if (mobj.buildlog == true) {
- var url = config.asu_url + '/store/' + mobj.bin_dir + '/buildlog.txt';
- showStatus('<a href="' + url + '">' + message + '</a>');
- } else {
- showStatus(message);
- }
- });
- }
-
// hide image view
updateImages();
show('buildspinner');
- showStatus('<span class="tr-request-image"></span>');
+ showStatus('tr-request-image');
var request_data = {
'target': current_model.target,
switch (response.status) {
case 200:
hide('buildspinner');
- showStatus('<span class="tr-build-successful"></span>');
+ showStatus('tr-build-successful');
response.json()
.then(mobj => {
var download_url = config.asu_url + '/store/' + mobj.bin_dir;
+ showStatus('tr-build-successful', download_url + '/buildlog.txt');
updateImages(
mobj.version_number,
mobj.version_code,
});
break;
case 202:
- showStatus('<span class="tr-check-again"></span>');
+ showStatus('tr-check-again');
setTimeout(_ => { build_asa_request() }, 5000);
break;
case 400: // bad request
case 422: // bad package
case 500: // build failed
- handleError(response);
+ hide('buildspinner');
+ response.json()
+ .then(mobj => {
+ var message = mobj['message'] || 'tr-build-failed';
+ var url = mobj.buildlog ? (config.asu_url + '/store/' + mobj.bin_dir + '/buildlog.txt') : undefined;
+ showStatus(message, url);
+ })
break;
}
})
// for attended sysupgrade
function updatePackageList(version, target) {
// set available packages
- fetch(config.versions[version] + '/' + target + '/index.json')
+ fetch(config.asu_url + '/' + config.versions[version] + '/' + target + '/index.json')
.then(response => response.json())
.then(all_packages => {
setupAutocompleteList($('packages'), all_packages, true, _ => {}, textarea => {
textarea.value = split(textarea.value)
- .filter((value, index, self) => self.indexOf(value) === index) // make list unique
- //.filter((value, index) => all_packages.indexOf(value) !== -1) // limit to available packages
+ // make list unique, ignore minus
+ .filter((value, index, self) => {
+ var i = self.indexOf(value.replace(/^\-/, ''));
+ return (i === index) || (i < 0);
+ })
+ // limit to available packages, ignore minus
+ .filter((value, index) => all_packages.indexOf(value.replace(/^\-/, '')) !== -1)
.join(' ');
});
});
function init() {
var build_date = "unknown"
setupSelectList($('versions'), Object.keys(config.versions), version => {
- fetch(config.versions[version] + '/profiles.json')
- .then(obj => {
- build_date = obj.headers.get('last-modified');
- return obj.json();
- })
- .then(obj => {
- // handle native openwrt json format
- if ('profiles' in obj) {
- obj['models'] = {}
- for (const [key, value] of Object.entries(obj['profiles'])) {
- obj['models'][get_model_titles(value.titles)] = value
- obj['models'][get_model_titles(value.titles)]['id'] = key
- }
+ var url = config.versions[version];
+ if (config.asu_url) {
+ url = config.asu_url + '/' + url + '/profiles.json';
+ }
+ fetch(url)
+ .then(obj => {
+ build_date = obj.headers.get('last-modified');
+ return obj.json();
+ })
+ .then(obj => {
+ // handle native openwrt json format
+ if ('profiles' in obj) {
+ obj['models'] = {}
+ for (const [key, value] of Object.entries(obj['profiles'])) {
+ obj['models'][get_model_titles(value.titles)] = value
+ obj['models'][get_model_titles(value.titles)]['id'] = key
+ }
+ }
+ return obj
+ })
+ .then(obj => {
+ setupAutocompleteList($('models'), Object.keys(obj['models']), false, updateImages, models => {
+ var model = models.value;
+ if (model in obj['models']) {
+ var url = obj.url || 'unknown';
+ var code = obj.version_code || 'unknown';
+ var mobj = obj['models'][model];
+ updateImages(version, code, build_date, model, url, mobj, false);
+ current_model = mobj;
+ } else {
+ updateImages();
+ current_model = {};
}
- return obj
- })
- .then(obj => {
- setupAutocompleteList($('models'), Object.keys(obj['models']), false, updateImages, models => {
- var model = models.value;
- if (model in obj['models']) {
- var url = obj.url || 'unknown';
- var code = obj.version_code || 'unknown';
- var mobj = obj['models'][model];
- updateImages(version, code, build_date, model, url, mobj, false);
- current_model = mobj;
- } else {
- updateImages();
- current_model = {};
- }
- });
-
- // trigger model update when selected version changes
- $('models').onfocus();
});
+
+ // trigger model update when selected version changes
+ $('models').onfocus();
});
+ });
if (config.asu_url) {
show('custom');