* Fixed missing cross_origin() tags on various functions * Added popper javascript library for tooltips * Added material design icons font and css locallyprojects
parent
0cdd3a16dc
commit
11b2fe5942
17 changed files with 352 additions and 94 deletions
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,208 @@ |
||||
// # /**********************************************************************************
|
||||
// # * _author : Domeniko Gentner
|
||||
// # * _mail : code@tuxstash.de
|
||||
// # * _repo : https://git.tuxstash.de/gothseidank/labertasche
|
||||
// # * _license : This project is under MIT License
|
||||
// # *********************************************************************************/
|
||||
|
||||
let base_url = window.location.protocol + "//" + window.location.host + '/upgrade/db_v2'; |
||||
|
||||
function mdi_message(message, success=true) |
||||
{ |
||||
let msgpane = document.getElementById('update-messages'); |
||||
let icon = document.createElement('i'); |
||||
icon.classList.add('mdi'); |
||||
icon.classList.add('mdi-24px'); |
||||
if (success){ |
||||
icon.classList.add('has-text-success'); |
||||
icon.classList.add('mdi-check-bold'); |
||||
} |
||||
else { |
||||
icon.classList.add('has-text-danger'); |
||||
icon.classList.add('mdi-alpha-x-box-outline'); |
||||
} |
||||
|
||||
let text = document.createElement('span'); |
||||
text.classList.add('has-text-white'); |
||||
text.innerHTML = " " + message |
||||
|
||||
msgpane.appendChild(icon); |
||||
msgpane.appendChild(text); |
||||
msgpane.appendChild(document.createElement('br')); |
||||
} |
||||
|
||||
async function start_upgrade_to_v2() |
||||
{ |
||||
console.log('helo'); |
||||
let start_btn = document.getElementById('start-button'); |
||||
start_btn.remove(); |
||||
|
||||
// Add progress bar instead of button
|
||||
let progressbar = document.createElement('progress'); |
||||
progressbar.setAttribute('value', '0'); |
||||
progressbar.setAttribute('max', '100'); |
||||
progressbar.classList.add('progress'); |
||||
progressbar.classList.add('is-medium'); |
||||
progressbar.classList.add('is-success'); |
||||
progressbar.innerHTML = ' '; |
||||
document.getElementById('controls').appendChild(progressbar); |
||||
|
||||
let success; |
||||
success = await backup(); |
||||
if(success){ |
||||
progressbar.setAttribute('value', '25'); |
||||
success = await export_db(); |
||||
if (success){ |
||||
progressbar.setAttribute('value', '50'); |
||||
success = await recreate_db(); |
||||
if (success){ |
||||
progressbar.setAttribute('value', '75'); |
||||
success = await import_db(); |
||||
progressbar.setAttribute('value', '100'); |
||||
} |
||||
} |
||||
} |
||||
if (!success){ |
||||
progressbar.classList.remove('is-success'); |
||||
progressbar.classList.add('is-danger'); |
||||
} |
||||
else{ |
||||
progressbar.remove(); |
||||
} |
||||
|
||||
// reset button
|
||||
start_btn.classList.remove('is-loading'); |
||||
} |
||||
|
||||
async function backup() |
||||
{ |
||||
let status = false; |
||||
await fetch(base_url + "/backup/", { |
||||
mode: "cors", |
||||
headers: { |
||||
'Access-Control-Allow-Origin': window.location.host, |
||||
'Accept': 'application/json', |
||||
'Content-Type': 'application/json' |
||||
}, |
||||
method: "GET" |
||||
}) |
||||
.then(async function (response){ |
||||
let j = await response.json(); |
||||
if (j['status'] === 'ok'){ |
||||
mdi_message("Backup successfully created", true); |
||||
status = true; |
||||
} |
||||
if (j['status'] === 'exception-write-json') { |
||||
mdi_message(j['msg'], false) |
||||
mdi_message("A server-side exception occured while writing the json, please check writing rights in the root directory.", true); |
||||
} |
||||
if (j['status'] === 'exception-copy-db') { |
||||
mdi_message(j['msg'], false) |
||||
mdi_message("A server-side exception occured while copying the database, please check writing rights in the root directory.", false); |
||||
} |
||||
}) |
||||
.catch(function (exc) { |
||||
mdi_message(exc, false); |
||||
mdi_message("An exception occured, please report this bug to code@tuxstash.de", false); |
||||
}); |
||||
return status; |
||||
} |
||||
|
||||
|
||||
async function export_db() |
||||
{ |
||||
let status = false; |
||||
await fetch(base_url + "/export/", { |
||||
mode: "cors", |
||||
headers: { |
||||
'Access-Control-Allow-Origin': window.location.host, |
||||
'Accept': 'application/json', |
||||
'Content-Type': 'application/json' |
||||
}, |
||||
method: "GET" |
||||
}) |
||||
.then(async function (response){ |
||||
let j = await response.json(); |
||||
if (j['status'] === 'ok'){ |
||||
mdi_message("Tables successfully exported", true); |
||||
status = true; |
||||
} |
||||
if (j['status'] === 'exception') { |
||||
mdi_message(j['msg'], false) |
||||
mdi_message("A server-side exception occured.", false); |
||||
} |
||||
}) |
||||
.catch(function (exc) { |
||||
mdi_message(exc, false); |
||||
mdi_message("A Javascript exception occured, please report this bug to code@tuxstash.de", false); |
||||
}) |
||||
return status |
||||
} |
||||
|
||||
|
||||
async function recreate_db() |
||||
{ |
||||
let status = false; |
||||
await fetch(base_url + "/recreate/", { |
||||
mode: "cors", |
||||
headers: { |
||||
'Access-Control-Allow-Origin': window.location.host, |
||||
'Accept': 'application/json', |
||||
'Content-Type': 'application/json' |
||||
}, |
||||
method: "GET" |
||||
}) |
||||
.then(async function (response){ |
||||
let j = await response.json(); |
||||
console.log(j); |
||||
if (j['status'] === 'ok'){ |
||||
mdi_message("Database deleted and recreated", true); |
||||
status = true; |
||||
} |
||||
if (j['status'] === 'exception') { |
||||
mdi_message(j['msg'], false) |
||||
mdi_message("A server-side exception occured.", false); |
||||
} |
||||
}) |
||||
.catch(function (exc) { |
||||
mdi_message(exc, false); |
||||
mdi_message("A Javascript exception occured, please report this bug to code@tuxstash.de", false); |
||||
}) |
||||
return status |
||||
} |
||||
|
||||
|
||||
async function import_db() |
||||
{ |
||||
let status = false; |
||||
await fetch(base_url + "/import/", { |
||||
mode: "cors", |
||||
headers: { |
||||
'Access-Control-Allow-Origin': window.location.host, |
||||
'Accept': 'application/json', |
||||
'Content-Type': 'application/json' |
||||
}, |
||||
method: "GET" |
||||
}) |
||||
.then(async function (response){ |
||||
let j = await response.json(); |
||||
console.log(j); |
||||
if (j['status'] === 'ok'){ |
||||
mdi_message("New tables preseeded and data imported. You may now return to the dashboard.", true); |
||||
status = true; |
||||
} |
||||
if (j['status'] === 'exception-database') { |
||||
mdi_message(j['msg'], false) |
||||
mdi_message("An error occured while adding the data to the database.", false); |
||||
} |
||||
if (j['status'] === 'exception-filenotfound') { |
||||
mdi_message(j['msg'], false) |
||||
mdi_message("The exported files have not been found. Please check the file permissions.", false); |
||||
} |
||||
}) |
||||
.catch(function (exc) { |
||||
mdi_message(exc, false); |
||||
mdi_message("A Javascript exception occured, please report this bug to code@tuxstash.de", false); |
||||
}) |
||||
return status |
||||
} |
Loading…
Reference in new issue