Skip to content
Snippets Groups Projects
Commit c67c033a authored by Patrick Jentsch's avatar Patrick Jentsch
Browse files

Rework notification system

parent b30382e6
No related branches found
No related tags found
No related merge requests found
...@@ -26,13 +26,12 @@ def add_corpus(): ...@@ -26,13 +26,12 @@ def add_corpus():
try: try:
os.makedirs(dir) os.makedirs(dir)
except OSError: except OSError:
flash('[ERROR]: Could not add corpus!') flash('[ERROR]: Could not add corpus!', 'corpus')
corpus.delete() corpus.delete()
else: else:
corpus_url = url_for('corpora.corpus', corpus_id=corpus.id) url = url_for('corpora.corpus', corpus_id=corpus.id)
flash('<i class="left material-icons">book</i>' flash('[<a href="{}">{}</a>] added'.format(url, corpus.title),
'[<a href="{}">{}</a>] added'.format(corpus_url, 'corpus')
corpus.title))
return redirect(url_for('corpora.corpus', corpus_id=corpus.id)) return redirect(url_for('corpora.corpus', corpus_id=corpus.id))
return render_template('corpora/add_corpus.html.j2', return render_template('corpora/add_corpus.html.j2',
add_corpus_form=add_corpus_form, add_corpus_form=add_corpus_form,
...@@ -82,7 +81,7 @@ def delete_corpus(corpus_id): ...@@ -82,7 +81,7 @@ def delete_corpus(corpus_id):
if not (corpus.creator == current_user or current_user.is_administrator()): if not (corpus.creator == current_user or current_user.is_administrator()):
abort(403) abort(403)
tasks.delete_corpus(corpus_id) tasks.delete_corpus(corpus_id)
flash('Corpus deleted!') flash('Corpus deleted!', 'corpus')
return redirect(url_for('main.dashboard')) return redirect(url_for('main.dashboard'))
...@@ -121,7 +120,7 @@ def add_corpus_file(corpus_id): ...@@ -121,7 +120,7 @@ def add_corpus_file(corpus_id):
db.session.add(corpus_file) db.session.add(corpus_file)
corpus.status = 'unprepared' corpus.status = 'unprepared'
db.session.commit() db.session.commit()
flash('Corpus file added!') flash('Corpus file added!', 'corpus')
return make_response( return make_response(
{'redirect_url': url_for('corpora.corpus', corpus_id=corpus.id)}, {'redirect_url': url_for('corpora.corpus', corpus_id=corpus.id)},
201) 201)
...@@ -141,7 +140,7 @@ def delete_corpus_file(corpus_id, corpus_file_id): ...@@ -141,7 +140,7 @@ def delete_corpus_file(corpus_id, corpus_file_id):
or current_user.is_administrator()): or current_user.is_administrator()):
abort(403) abort(403)
tasks.delete_corpus_file(corpus_file_id) tasks.delete_corpus_file(corpus_file_id)
flash('Corpus file deleted!') flash('Corpus file deleted!', 'corpus')
return redirect(url_for('corpora.corpus', corpus_id=corpus_id)) return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
...@@ -188,7 +187,7 @@ def edit_corpus_file(corpus_id, corpus_file_id): ...@@ -188,7 +187,7 @@ def edit_corpus_file(corpus_id, corpus_file_id):
corpus_file.title = edit_corpus_file_form.title.data corpus_file.title = edit_corpus_file_form.title.data
corpus.status = 'unprepared' corpus.status = 'unprepared'
db.session.commit() db.session.commit()
flash('Corpus file edited!') flash('Corpus file edited!', 'corpus')
return redirect(url_for('corpora.corpus', corpus_id=corpus_id)) return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
# If no form is submitted or valid, fill out fields with current values # If no form is submitted or valid, fill out fields with current values
edit_corpus_file_form.address.data = corpus_file.address edit_corpus_file_form.address.data = corpus_file.address
...@@ -217,7 +216,7 @@ def prepare_corpus(corpus_id): ...@@ -217,7 +216,7 @@ def prepare_corpus(corpus_id):
abort(403) abort(403)
if corpus.files.all(): if corpus.files.all():
tasks.build_corpus(corpus_id) tasks.build_corpus(corpus_id)
flash('Corpus gets build now.') flash('Corpus gets build now.', 'corpus')
else: else:
flash('Can not build corpus, please add corpus file(s).') flash('Can not build corpus, please add corpus file(s).', 'corpus')
return redirect(url_for('corpora.corpus', corpus_id=corpus_id)) return redirect(url_for('corpora.corpus', corpus_id=corpus_id))
...@@ -23,7 +23,7 @@ def delete_job(job_id): ...@@ -23,7 +23,7 @@ def delete_job(job_id):
if not (job.creator == current_user or current_user.is_administrator()): if not (job.creator == current_user or current_user.is_administrator()):
abort(403) abort(403)
tasks.delete_job(job_id) tasks.delete_job(job_id)
flash('Job has been deleted!') flash('Job has been deleted!', 'job')
return redirect(url_for('main.dashboard')) return redirect(url_for('main.dashboard'))
......
...@@ -61,7 +61,7 @@ def service(service): ...@@ -61,7 +61,7 @@ def service(service):
os.makedirs(absolut_dir) os.makedirs(absolut_dir)
except OSError: except OSError:
job.delete() job.delete()
flash('Internal Server Error') flash('Internal Server Error', 'job')
return make_response({'redirect_url': url_for('services.service', return make_response({'redirect_url': url_for('services.service',
service=service)}, service=service)},
500) 500)
...@@ -74,9 +74,8 @@ def service(service): ...@@ -74,9 +74,8 @@ def service(service):
db.session.add(job_input) db.session.add(job_input)
job.status = 'submitted' job.status = 'submitted'
db.session.commit() db.session.commit()
job_url = url_for('jobs.job', job_id=job.id) url = url_for('jobs.job', job_id=job.id)
flash('<i class="left material-icons">work</i>' flash('[<a href="{}">{}</a>] added'.format(url, job.title), 'job')
'[<a href="{}">{}</a>] added'.format(job_url, job.title))
return make_response( return make_response(
{'redirect_url': url_for('jobs.job', job_id=job.id)}, 201) {'redirect_url': url_for('jobs.job', job_id=job.id)}, 201)
return render_template('services/{}.html.j2'.format(service), return render_template('services/{}.html.j2'.format(service),
......
...@@ -44,7 +44,7 @@ class CorpusAnalysisClient { ...@@ -44,7 +44,7 @@ class CorpusAnalysisClient {
} }
} else { } else {
errorText = `Error ${response.payload.code} - ${response.payload.msg}`; errorText = `Error ${response.payload.code} - ${response.payload.msg}`;
nopaque.flash("error", errorText); nopaque.flash(errorText, "error");
if (this.displays.query.errorContainer != undefined) { if (this.displays.query.errorContainer != undefined) {
this.displays.query.errorContainer.innerHTML = `<p class="red-text">`+ this.displays.query.errorContainer.innerHTML = `<p class="red-text">`+
`<i class="material-icons tiny">error</i> ${errorText}</p>`; `<i class="material-icons tiny">error</i> ${errorText}</p>`;
......
...@@ -58,7 +58,7 @@ nopaque.socket.init = function() { ...@@ -58,7 +58,7 @@ nopaque.socket.init = function() {
pathArray = operation.path.split("/").slice(1); pathArray = operation.path.split("/").slice(1);
if (operation.op === "replace" && pathArray[1] === "status") { if (operation.op === "replace" && pathArray[1] === "status") {
if (nopaque.user.settings.jobStatusSiteNotifications === "end" && !["complete", "failed"].includes(operation.value)) {continue;} if (nopaque.user.settings.jobStatusSiteNotifications === "end" && !["complete", "failed"].includes(operation.value)) {continue;}
nopaque.flash(`<i class="left material-icons">work</i>[<a href="/jobs/${pathArray[0]}">${nopaque.jobs[pathArray[0]].title}</a>] New status: ${operation.value}`); nopaque.flash(`[<a href="/jobs/${pathArray[0]}">${nopaque.jobs[pathArray[0]].title}</a>] New status: ${operation.value}`, "job");
} }
} }
} }
...@@ -184,23 +184,28 @@ nopaque.flash = function() { ...@@ -184,23 +184,28 @@ nopaque.flash = function() {
message = arguments[0]; message = arguments[0];
break; break;
case 2: case 2:
category = arguments[0]; message = arguments[0];
message = arguments[1]; category = arguments[1];
break; break;
default: default:
console.error("Usage: nopaque.flash(message) or nopaque.flash(category, message)") console.error("Usage: nopaque.flash(message) or nopaque.flash(message, category)")
} }
switch (category) { switch (category) {
case "corpus":
message = `<i class="left material-icons">book</i>${message}`;
break;
case "error": case "error":
classes = "red"; message = `<i class="left material-icons red-text">error</i>${message}`;
break;
case "job":
message = `<i class="left material-icons">work</i>${message}`;
break; break;
default: default:
classes = ""; message = `<i class="left material-icons">notifications</i>${message}`;
} }
toast = M.toast({classes: classes, toast = M.toast({html: `<span>${message}</span>
html: `<span>${message}</span>
<button data-action="close" class="btn-flat toast-action white-text"> <button data-action="close" class="btn-flat toast-action white-text">
<i class="material-icons">close</i> <i class="material-icons">close</i>
</button>`}); </button>`});
...@@ -225,7 +230,8 @@ document.addEventListener("DOMContentLoaded", function() { ...@@ -225,7 +230,8 @@ document.addEventListener("DOMContentLoaded", function() {
nopaque.Forms.init(); nopaque.Forms.init();
nopaque.Navigation.init(); nopaque.Navigation.init();
while (nopaque.flashedMessages.length) { while (nopaque.flashedMessages.length) {
nopaque.flash(...nopaque.flashedMessages.shift()); flashedMessage = nopaque.flashedMessages.shift();
nopaque.flash(flashedMessage[1], flashedMessage[0]);
} }
if (nopaque.user.isAuthenticated) { if (nopaque.user.isAuthenticated) {
if (nopaque.user.settings.darkMode) { if (nopaque.user.settings.darkMode) {
......
...@@ -378,7 +378,7 @@ class ResultsList extends List { ...@@ -378,7 +378,7 @@ class ResultsList extends List {
if (expertModeSwitchElement.checked) { if (expertModeSwitchElement.checked) {
this.expertModeOn("query-display"); // page holds new result rows, so add new tooltips this.expertModeOn("query-display"); // page holds new result rows, so add new tooltips
} }
nopaque.flash("Updated matches per page.") nopaque.flash("Updated matches per page.", "corpus")
} catch (e) { } catch (e) {
// console.log(e); // console.log(e);
// console.log("resultsList has no results right now."); // console.log("resultsList has no results right now.");
...@@ -394,7 +394,7 @@ class ResultsList extends List { ...@@ -394,7 +394,7 @@ class ResultsList extends List {
let rc; let rc;
try { try {
if (event.type === "change") { if (event.type === "change") {
nopaque.flash("Updated context per match!"); nopaque.flash("Updated context per match!", "corpus");
} }
} catch (e) { } catch (e) {
} finally { } finally {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment