diff --git a/src/dgenies/lib/functions.py b/src/dgenies/lib/functions.py index 5e329647d2f46df7cc905bc8dab415a85dc61b1e..08c1c23a34a450ebb0cd96d2510e49f81ee982f8 100644 --- a/src/dgenies/lib/functions.py +++ b/src/dgenies/lib/functions.py @@ -237,7 +237,7 @@ class Functions: return items @staticmethod - def is_in_gallery(id_job, mode): + def is_in_gallery(id_job, mode="webserver"): if mode == "webserver": from dgenies.database import Gallery, Job from peewee import DoesNotExist @@ -246,3 +246,12 @@ class Functions: except DoesNotExist: return False return False + + @staticmethod + def get_list_all_jobs(mode="webserver"): + if mode == "webserver": + return [] # Don't give the list in webserver as it's multi-user + all_jobs = os.listdir(Functions.config.app_data) + if "gallery" in all_jobs: + all_jobs.remove("gallery") + return sorted(all_jobs, key=lambda x: x.lower()) diff --git a/src/dgenies/static/js/dgenies.js b/src/dgenies/static/js/dgenies.js index f4b660e08c8a3d4090e01a2dbe8200668bc6106b..51c975d8dad154c20eaf9bc16f87b59b7023d942 100644 --- a/src/dgenies/static/js/dgenies.js +++ b/src/dgenies/static/js/dgenies.js @@ -1,13 +1,25 @@ dgenies = {}; dgenies.loading = "#loading"; dgenies.noise = true; +dgenies.mode = "webserver"; -dgenies.init = function() { +dgenies.init = function(all_jobs, mode) { + dgenies.mode = mode; let cookies = $.cookie("results"); - cookies = (cookies !== undefined && cookies.length > 0) ? cookies.split("|") : []; + if (mode === "webserver") { + cookies = (cookies !== undefined && cookies.length > 0) ? cookies.split("|") : []; + } + else { + cookies = all_jobs; + dgenies.save_cookies(cookies); + } dgenies.update_results(cookies); }; +dgenies.save_cookies = function(cookies) { + $.cookie("results", cookies.join("|"), {path: '/'}); +} + dgenies.update_results = function(results) { let job_list_item = $("ul.nav li.result ul"); job_list_item.html(""); diff --git a/src/dgenies/static/js/dgenies.result.js b/src/dgenies/static/js/dgenies.result.js index d67c7e11a7cf2efbfb619310cbf44b10c82f327f..c4cb0a71061dbff3bc1e67ad8ebda5695aa5eed7 100644 --- a/src/dgenies/static/js/dgenies.result.js +++ b/src/dgenies/static/js/dgenies.result.js @@ -8,25 +8,9 @@ dgenies.result.id_res = null; dgenies.result.init = function(id_res) { dgenies.result.id_res = id_res; - dgenies.result.update_cookies(); d3.boxplot.init(); }; -dgenies.result.update_cookies = function () { - let cookies = $.cookie("results"); - cookies = (cookies !== undefined && cookies.length > 0) ? cookies.split("|") : []; - let index = cookies.indexOf(dgenies.result.id_res); - let need_update = false; - if (index === -1) { - need_update = true; - cookies.unshift(dgenies.result.id_res) - } - $.cookie("results", cookies.join("|"), {path: '/'}); - if (need_update) { - dgenies.update_results(cookies); - } -}; - dgenies.result.remove_job_from_cookie = function(job) { let cookies = $.cookie("results"); cookies = cookies !== undefined ? cookies.split("|") : []; diff --git a/src/dgenies/static/js/dgenies.run.js b/src/dgenies/static/js/dgenies.run.js index fe6dc7591129222fe3b9a904d63aa1a988bd83b8..051dd4432e578f758f01de16082dcb324cdf066d 100644 --- a/src/dgenies/static/js/dgenies.run.js +++ b/src/dgenies/static/js/dgenies.run.js @@ -10,16 +10,14 @@ dgenies.run.max_upload_file_size = -1 dgenies.run.files = [undefined, undefined]; dgenies.run.allow_upload = false; dgenies.run.ping_interval = null; -dgenies.run.mode = "webserver" -dgenies.run.init = function (s_id, allowed_ext, max_upload_file_size=1073741824, mode="webserver") { +dgenies.run.init = function (s_id, allowed_ext, max_upload_file_size=1073741824) { dgenies.run.s_id = s_id; dgenies.run.allowed_ext = allowed_ext; dgenies.run.max_upload_file_size = max_upload_file_size dgenies.run.restore_form(); dgenies.run.set_events(); dgenies.run.init_fileuploads(); - dgenies.run.mode = mode; }; dgenies.run.restore_form = function () { @@ -257,7 +255,7 @@ dgenies.run.do_submit = function () { dgenies.post("/launch_analysis", { "id_job": $("input#id_job").val(), - "email": dgenies.run.mode === "webserver" ? $("input#email").val() : "", + "email": dgenies.mode === "webserver" ? $("input#email").val() : "", "query": $("input#query").val(), "query_type": $("select.query").find(":selected").text().toLowerCase(), "target": $("input#target").val(), @@ -302,7 +300,7 @@ dgenies.run.valid_form = function () { } // Check mail: - if (dgenies.run.mode === "webserver") { + if (dgenies.mode === "webserver") { let email = $("input#email").val(); let mail_re = /^.+@.+\..+$/; if (email.match(mail_re) === null) { diff --git a/src/dgenies/templates/base.html b/src/dgenies/templates/base.html index 33b0166cd04fbef9d7eea345bdf17189ced272e7..89b006e799b32c2f59271ab744c66f03733a216d 100644 --- a/src/dgenies/templates/base.html +++ b/src/dgenies/templates/base.html @@ -20,7 +20,7 @@ <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css"> <link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}"> </head> -<body role="document" onload="{% block onload %}dgenies.init();{% endblock %}"> +<body role="document" onload="{% block onload %}dgenies.init({{ all_jobs}}, '{{ mode }}');{% endblock %}"> {% block body %} <div id="main-wrapper"> <!-- Fixed navbar --> diff --git a/src/dgenies/templates/run.html b/src/dgenies/templates/run.html index f6a244cb2e0d77fb4c1d000108ae55ad3267c5f8..5ea6076a7996e2633d39824d0de5c5f5a2f52c0c 100644 --- a/src/dgenies/templates/run.html +++ b/src/dgenies/templates/run.html @@ -11,7 +11,7 @@ {% endblock %} {% block onload %} {{ super() }} - dgenies.run.init('{{ s_id }}',{{ allowed_ext }}, {{ max_upload_file_size }}, '{{ mode }}'); + dgenies.run.init('{{ s_id }}',{{ allowed_ext }}, {{ max_upload_file_size }}); {% endblock %} {% block content %} <form id="submit_minimap" method=post action="#"> diff --git a/src/dgenies/views.py b/src/dgenies/views.py index 84015ca10a17e69d1324751ed813dba421f24a38..43709710354d52997b9fa91bb18973597623a0be 100644 --- a/src/dgenies/views.py +++ b/src/dgenies/views.py @@ -24,7 +24,8 @@ if MODE == "webserver": def global_templates_variables(): return { "title": app_title, - "mode": MODE + "mode": MODE, + "all_jobs": Functions.get_list_all_jobs(MODE) }