diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..de71c862 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +Parsifal 2.0.3 (2021-09-08) +=========================== + +Bugfixes +-------- + +- Fix data analysis load state for charts (#69) +- Fix keyboard arrow navigation on study selection page. (#71) +- Fix search scopus results rendering when there is no data. (#73) diff --git a/parsifal/__init__.py b/parsifal/__init__.py index d0d0590e..fca9d09a 100644 --- a/parsifal/__init__.py +++ b/parsifal/__init__.py @@ -1,5 +1,5 @@ from parsifal.utils.version import get_version -VERSION = (2, 0, 2, "final", 0) +VERSION = (2, 0, 3, "final", 0) __version__ = get_version(VERSION) diff --git a/parsifal/apps/reviews/conducting/static/js/conducting_data_analysis.js b/parsifal/apps/reviews/conducting/static/js/conducting_data_analysis.js index edd03f2a..62b7efd8 100644 --- a/parsifal/apps/reviews/conducting/static/js/conducting_data_analysis.js +++ b/parsifal/apps/reviews/conducting/static/js/conducting_data_analysis.js @@ -1,90 +1,92 @@ -google.load('visualization', '1.0', {'packages':['corechart']}); -google.setOnLoadCallback(drawChartCallback); +$(function () { + google.load('visualization', '1.0', {'packages':['corechart']}); + google.setOnLoadCallback(drawChartCallback); -function drawChartCallback() { - drawChart(); - drawYearLines(); -} - -function drawPieChart(rows) { - var data = new google.visualization.DataTable(); - data.addColumn('string', 'Source'); - data.addColumn('number', 'Number of Aticles'); - data.addRows(rows); - var options = {'height': 400}; - var chart = new google.visualization.PieChart(document.getElementById('articles-selection-pie')); - chart.draw(data, options); -} - -function drawColumnChart(rows) { - var data = google.visualization.arrayToDataTable(rows); - var options = { - vAxis: {title: 'Number of Articles', titleTextStyle: {color: '#3A3D40'}}, - 'height': 400 - }; - var chart = new google.visualization.ColumnChart(document.getElementById('articles-selection-column')); - chart.draw(data, options); -} + function drawChartCallback() { + drawChart(); + drawYearLines(); + } -function drawLineChart(rows) { - var data = google.visualization.arrayToDataTable(rows); - var options = { - vAxis: {title: 'Number of Articles', titleTextStyle: {color: '#3A3D40'}}, - 'height': 400 - }; - var chart = new google.visualization.LineChart(document.getElementById('articles-selection-line')); - chart.draw(data, options); -} + function drawPieChart(rows) { + var data = new google.visualization.DataTable(); + data.addColumn('string', 'Source'); + data.addColumn('number', 'Number of Articles'); + data.addRows(rows); + var options = {'height': 400}; + var chart = new google.visualization.PieChart(document.getElementById('articles-selection-pie')); + chart.draw(data, options); + } -function drawChart() { - $.ajax({ - url: '/reviews/conducting/articles_selection_chart/', - data: {'review-id': $("#review-id").val()}, - type: 'get', - cache: false, - beforeSend: function () { - $("#articles-selection-pie").spinner(false); - $("#articles-selection-column").spinner(false); - }, - success: function (data) { - var source_data = data.split(","); - var rows_pie = []; - var rows_chart = [['Source', 'Selected', 'Accepted']]; - for (var i = source_data.length - 1; i >= 0; i--) { - row = source_data[i].split(":"); - rows_pie.push([row[0], parseInt(row[1])]); - rows_chart.push([row[0], parseInt(row[1]), parseInt(row[2])]); + function drawColumnChart(rows) { + var data = google.visualization.arrayToDataTable(rows); + var options = { + vAxis: {title: 'Number of Articles', titleTextStyle: {color: '#3A3D40'}}, + 'height': 400 }; - drawPieChart(rows_pie); - drawColumnChart(rows_chart); - }, - complete: function () { - $("#articles-selection-pie").spinner(); - $("#articles-selection-column").spinner(); + var chart = new google.visualization.ColumnChart(document.getElementById('articles-selection-column')); + chart.draw(data, options); } - }); -} -function drawYearLines() { - $.ajax({ - url: '/reviews/conducting/articles_per_year/', - data: {'review-id': $("#review-id").val()}, - type: 'get', - cache: false, - beforeSend: function () { - $("#articles-selection-line").spinner(false); - }, - success: function (data) { - var source_data = data.split(","); - var rows = [['Year', 'Number of Articles']]; - for (var i = source_data.length - 1; i >= 0; i--) { - row = source_data[i].split(":"); - rows.push([row[0], parseInt(row[1])]); + function drawLineChart(rows) { + var data = google.visualization.arrayToDataTable(rows); + var options = { + vAxis: {title: 'Number of Articles', titleTextStyle: {color: '#3A3D40'}}, + 'height': 400 }; - drawLineChart(rows); - }, - complete: function () { - $("#articles-selection-line").spinner(); + var chart = new google.visualization.LineChart(document.getElementById('articles-selection-line')); + chart.draw(data, options); + } + + function drawChart() { + $.ajax({ + url: '/reviews/conducting/articles_selection_chart/', + data: {'review-id': $("#review-id").val()}, + type: 'get', + cache: false, + beforeSend: function () { + $("#articles-selection-pie").spinner(false); + $("#articles-selection-column").spinner(false); + }, + success: function (data) { + var source_data = data.split(","); + var rows_pie = []; + var rows_chart = [['Source', 'Selected', 'Accepted']]; + for (var i = source_data.length - 1; i >= 0; i--) { + row = source_data[i].split(":"); + rows_pie.push([row[0], parseInt(row[1])]); + rows_chart.push([row[0], parseInt(row[1]), parseInt(row[2])]); + } + drawPieChart(rows_pie); + drawColumnChart(rows_chart); + }, + complete: function () { + $("#articles-selection-pie").spinner(); + $("#articles-selection-column").spinner(); + } + }); + } + + function drawYearLines() { + $.ajax({ + url: '/reviews/conducting/articles_per_year/', + data: {'review-id': $("#review-id").val()}, + type: 'get', + cache: false, + beforeSend: function () { + $("#articles-selection-line").spinner(false); + }, + success: function (data) { + var source_data = data.split(","); + var rows = [['Year', 'Number of Articles']]; + for (var i = source_data.length - 1; i >= 0; i--) { + row = source_data[i].split(":"); + rows.push([row[0], parseInt(row[1])]); + } + drawLineChart(rows); + }, + complete: function () { + $("#articles-selection-line").spinner(); + } + }); } - }); -} \ No newline at end of file +}); diff --git a/parsifal/apps/reviews/conducting/static/js/conducting_search_studies.js b/parsifal/apps/reviews/conducting/static/js/conducting_search_studies.js index ea9c633f..5214bc31 100644 --- a/parsifal/apps/reviews/conducting/static/js/conducting_search_studies.js +++ b/parsifal/apps/reviews/conducting/static/js/conducting_search_studies.js @@ -1,220 +1,221 @@ $(function () { - $(".js-save-source-string").click(function () { - var btn = $(this); - var form = $(this).closest("form"); - var url = $(this).attr("data-remote"); - $.ajax({ - url: url, - data: $(form).serialize(), - type: 'post', - cache: false, - beforeSend: function () { - $(btn).ajaxDisable(); - }, - success: function () { - var source_id = $("[name='source-id']", form).val(); - var search_string = $("[name='search_string']", form).val(); - $("[data-source-id='" + source_id + "'] textarea[name='query']").val(search_string); - }, - complete: function () { - $(btn).ajaxEnable(); - } - }); - }); - - $(".js-import-base-string").click(function () { - var btn = $(this); - var form = $(this).closest("form"); - var url = $(this).attr("data-remote"); - $.ajax({ - url: url, - data: $(form).serialize(), - type: 'post', - cache: false, - beforeSend: function () { - $(btn).ajaxDisable(); - }, - success: function (data) { - $("textarea[name='search_string']", form).val(data); - var source_id = $("[name='source-id']", form).val(); - $("[data-source-id='" + source_id + "'] textarea[name='query']").val(data); - }, - complete: function () { - $(btn).ajaxEnable(); - } + $(".js-save-source-string").click(function () { + var btn = $(this); + var form = $(this).closest("form"); + var url = $(this).attr("data-remote"); + $.ajax({ + url: url, + data: $(form).serialize(), + type: 'post', + cache: false, + beforeSend: function () { + $(btn).ajaxDisable(); + }, + success: function () { + var source_id = $("[name='source-id']", form).val(); + var search_string = $("[name='search_string']", form).val(); + $("[data-source-id='" + source_id + "'] textarea[name='query']").val(search_string); + }, + complete: function () { + $(btn).ajaxEnable(); + } + }); }); - }); - $(".source-search textarea:visible").expanding(); + $(".js-import-base-string").click(function () { + var btn = $(this); + var form = $(this).closest("form"); + var url = $(this).attr("data-remote"); + $.ajax({ + url: url, + data: $(form).serialize(), + type: 'post', + cache: false, + beforeSend: function () { + $(btn).ajaxDisable(); + }, + success: function (data) { + $("textarea[name='search_string']", form).val(data); + var source_id = $("[name='source-id']", form).val(); + $("[data-source-id='" + source_id + "'] textarea[name='query']").val(data); + }, + complete: function () { + $(btn).ajaxEnable(); + } + }); + }); - $("#remote-search-panels .panel-collapse").on("show.bs.collapse", function () { - var panel = $(this).closest(".panel"); - $("[data-toggle='collapse'] .glyphicon", panel).removeClass().addClass("glyphicon glyphicon-minus pull-right"); - }); + $(".source-search textarea:visible").expanding(); - $("#remote-search-panels .panel-collapse").on("hide.bs.collapse", function () { - var panel = $(this).closest(".panel"); - $("[data-toggle='collapse'] .glyphicon", panel).removeClass().addClass("glyphicon glyphicon-plus pull-right"); - }); + $("#remote-search-panels .panel-collapse").on("show.bs.collapse", function () { + var panel = $(this).closest(".panel"); + $("[data-toggle='collapse'] .glyphicon", panel).removeClass().addClass("glyphicon glyphicon-minus pull-right"); + }); - $("#remote-search-panels .panel-collapse").on("shown.bs.collapse", function () { - $("textarea", this).each(function () { - if (!$(this).hasClass("expanding")) { - $(this).expanding(); - } + $("#remote-search-panels .panel-collapse").on("hide.bs.collapse", function () { + var panel = $(this).closest(".panel"); + $("[data-toggle='collapse'] .glyphicon", panel).removeClass().addClass("glyphicon glyphicon-plus pull-right"); }); - }); - $.fn.displaySearchResults = function (data) { - var container = $(this); - if (data !== null) { - $("table tbody", container).html(""); + $("#remote-search-panels .panel-collapse").on("shown.bs.collapse", function () { + $("textarea", this).each(function () { + if (!$(this).hasClass("expanding")) { + $(this).expanding(); + } + }); + }); - data["search-results"].entry.forEach(function (entry) { - var citations = entry["citedby-count"]; - if (citations === undefined) { - citations = ""; + $.fn.displaySearchResults = function (data) { + var container = $(this); + if (data !== null) { + $("table tbody", container).html(""); + + if (data["search-results"]["opensearch:totalResults"] !== "0") { + data["search-results"].entry.forEach(function (entry) { + var citations = ""; + if ("citedby-count" in entry) { + citations = entry["citedby-count"]; + } + $("table tbody", container).append("" + entry["dc:title"] + "" + entry["dc:creator"] + "" + entry["prism:coverDisplayDate"] + "" + entry["prism:publicationName"] + "" + citations + ""); + }); + } + + data["search-results"].link.forEach(function (link) { + var pager = $(".pager a[ref='" + link["@ref"] + "']"); + $(pager).attr("href", link["@href"]); + $(pager).closest("li").removeClass("disabled"); + }); + + $(".document-results", container).text(data["search-results"]["opensearch:totalResults"]); + $("form", container).attr("data-remote-status", "loaded"); + } else { + $("table tbody", container).html("No data"); } - $("table tbody", container).append("" + entry["dc:title"] + "" + entry["dc:creator"] + "" + entry["prism:coverDisplayDate"] + "" + entry["prism:publicationName"] + "" + citations + ""); - }); - - data["search-results"].link.forEach(function (link) { - var pager = $(".pager a[ref='" + link["@ref"] + "']"); - $(pager).attr("href", link["@href"]); - $(pager).closest("li").removeClass("disabled"); - }); - - $(".document-results", container).text(data["search-results"]["opensearch:totalResults"]); - $("form", container).attr("data-remote-status", "loaded"); - } - else { - $("table tbody", container).html("No data"); - } - }; - - $(".source-search").submit(function () { - var container = $(this).closest(".panel-body"); - var form = $(this); - var url = $(this).attr("action"); - var data = $(this).serialize(); - var status = $(form).attr("data-remote-status"); - - if (status !== "loading") { - $.ajax({ - url: url, - data: data, - cache: true, - dataType: 'json', - beforeSend: function () { - $("[name='page-query']", form).val($("[name='query']", form).val()); - $("button[type='submit']", form).ajaxDisable(); - $("table tbody", container).html(""); - $(".loading-placeholder", container).spinner(false); - $(".block-spinner", container).css("margin", "30px auto"); - $(form).attr("data-remote-status", "loading"); - }, - success: function (data) { - $(container).displaySearchResults(data); - }, - error: function (jqXHR, textStatus, errorThrown) { - $(form).attr("data-remote-status", "error"); - $("table tbody", container).html("" + jqXHR.responseText + ""); - }, - complete: function () { - $("button[type='submit']", form).ajaxEnable(); + }; + + $(".source-search").submit(function () { + var container = $(this).closest(".panel-body"); + var form = $(this); + var url = $(this).attr("action"); + var data = $(this).serialize(); + var status = $(form).attr("data-remote-status"); + + if (status !== "loading") { + $.ajax({ + url: url, + data: data, + cache: true, + dataType: 'json', + beforeSend: function () { + $("[name='page-query']", form).val($("[name='query']", form).val()); + $("button[type='submit']", form).ajaxDisable(); + $("table tbody", container).html(""); + $(".loading-placeholder", container).spinner(false); + $(".block-spinner", container).css("margin", "30px auto"); + $(form).attr("data-remote-status", "loading"); + }, + success: function (data) { + $(container).displaySearchResults(data); + }, + error: function (jqXHR, textStatus, errorThrown) { + $(form).attr("data-remote-status", "error"); + $("table tbody", container).html("" + jqXHR.responseText + ""); + }, + complete: function () { + $("button[type='submit']", form).ajaxEnable(); + } + }); } - }); - } - return false; - }); - - $(".source-search [name='count']").change(function () { - $(this).closest("form").submit(); - }); - - $(".source-search .pager a").click(function (e) { - e.preventDefault(); - var isDisabled = $(this).closest("li").hasClass("disabled"); - if (!isDisabled) { - - var container = $(this).closest(".panel-body"); - var form = $(this).closest("form"); - var url = $(form).attr("action"); - var status = $(form).attr("data-remote-status"); - - var href = $(this).attr("href"); - var start = href.split('start=')[1].split('&')[0]; - var query = $("[name='page-query']", form).val(); - var count = href.split('count=')[1].split('&')[0]; - - var review_id = $("[name='review-id']", form).val(); - - if (status !== "loading") { + return false; + }); + + $(".source-search [name='count']").change(function () { + $(this).closest("form").submit(); + }); + + $(".source-search .pager a").click(function (e) { + e.preventDefault(); + var isDisabled = $(this).closest("li").hasClass("disabled"); + if (!isDisabled) { + + var container = $(this).closest(".panel-body"); + var form = $(this).closest("form"); + var url = $(form).attr("action"); + var status = $(form).attr("data-remote-status"); + + var href = $(this).attr("href"); + var start = href.split('start=')[1].split('&')[0]; + var query = $("[name='page-query']", form).val(); + var count = href.split('count=')[1].split('&')[0]; + + var review_id = $("[name='review-id']", form).val(); + + if (status !== "loading") { + $.ajax({ + url: url, + data: { + 'review-id': review_id, + 'query': query, + 'start': start, + 'count': count + }, + cache: true, + dataType: 'json', + beforeSend: function () { + $("table tbody", container).html(""); + $(".loading-placeholder", container).spinner(false); + $(".block-spinner", container).css("margin", "30px auto"); + $(form).attr("data-remote-status", "loading"); + $(".pager li", container).addClass("disabled"); + }, + success: function (data) { + $(container).displaySearchResults(data); + }, + error: function (jqXHR, textStatus, errorThrown) { + $(form).attr("data-remote-status", "error"); + $("table tbody", container).html("" + jqXHR.responseText + ""); + } + }); + } + } + return false; + }); + + $(".js-save-elsevier-string").click(function () { + var btn = $(this); + var form = $(this).closest("form"); + var url = $(this).attr("data-remote"); + var search_string = $("[name='query']", form).val(); + var review_id = $("[name='review-id']", form).val(); + var source_id = $("[name='source-id']", form).val(); $.ajax({ - url: url, - data: { - 'review-id': review_id, - 'query': query, - 'start': start, - 'count': count - }, - cache: true, - dataType: 'json', - beforeSend: function () { - $("table tbody", container).html(""); - $(".loading-placeholder", container).spinner(false); - $(".block-spinner", container).css("margin", "30px auto"); - $(form).attr("data-remote-status", "loading"); - $(".pager li", container).addClass("disabled"); - }, - success: function (data) { - $(container).displaySearchResults(data); - }, - error: function (jqXHR, textStatus, errorThrown) { - $(form).attr("data-remote-status", "error"); - $("table tbody", container).html("" + jqXHR.responseText + ""); - } + url: url, + data: { + 'csrfmiddlewaretoken': $("[name='csrfmiddlewaretoken']").val(), + 'search_string': search_string, + 'review-id': review_id, + 'source-id': source_id, + }, + type: 'post', + cache: false, + beforeSend: function () { + $(btn).ajaxDisable(); + }, + success: function () { + $("#source_" + source_id + " textarea[name='search_string']").val(search_string); + }, + complete: function () { + $(btn).ajaxEnable(); + } }); - } - } - return false; - }); - - $(".js-save-elsevier-string").click(function () { - var btn = $(this); - var form = $(this).closest("form"); - var url = $(this).attr("data-remote"); - var search_string = $("[name='query']", form).val(); - var review_id = $("[name='review-id']", form).val(); - var source_id = $("[name='source-id']", form).val(); - $.ajax({ - url: url, - data: { - 'csrfmiddlewaretoken': $("[name='csrfmiddlewaretoken']").val(), - 'search_string': search_string, - 'review-id': review_id, - 'source-id': source_id, - }, - type: 'post', - cache: false, - beforeSend: function () { - $(btn).ajaxDisable(); - }, - success: function () { - $("#source_" + source_id + " textarea[name='search_string']").val(search_string); - }, - complete: function () { - $(btn).ajaxEnable(); - } }); - }); - - $(".js-remove-source-string").click(function () { - $(this).ajaxDisable(); - var form = $(this).closest("form"); - var url = $(this).attr("data-remote"); - $(form).attr("action", url); - $(form).submit(); - }); + + $(".js-remove-source-string").click(function () { + $(this).ajaxDisable(); + var form = $(this).closest("form"); + var url = $(this).attr("data-remote"); + $(form).attr("action", url); + $(form).submit(); + }); }); diff --git a/parsifal/apps/reviews/conducting/static/js/conducting_study_selection.js b/parsifal/apps/reviews/conducting/static/js/conducting_study_selection.js index 488ac8db..6315e059 100644 --- a/parsifal/apps/reviews/conducting/static/js/conducting_study_selection.js +++ b/parsifal/apps/reviews/conducting/static/js/conducting_study_selection.js @@ -1,16 +1,15 @@ function isScrolledIntoView(elem) { - var docViewTop = $(window).scrollTop(); - var docViewBottom = docViewTop + $(window).height(); + const docViewTop = $(window).scrollTop(); + const docViewBottom = docViewTop + $(window).height(); - var elemTop = $(elem).offset().top; - var elemBottom = elemTop + $(elem).height(); + const elemTop = $(elem).offset().top; + const elemBottom = elemTop + $(elem).height(); return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); } $(function () { - $("body").on("click", ".js-start-upload", function () { $(this).siblings("input[type='file']").click(); }); @@ -177,8 +176,6 @@ $(function () { }); function move(step) { - var row = $(".source-articles tbody tr.active"); - var active = $(".source-articles tbody tr.active").index(); var old_active = active; var size = $(".source-articles tbody tr").length; @@ -190,6 +187,8 @@ $(function () { $(".source-articles tbody tr").removeClass("active"); $(next).addClass("active"); + var row = $(".source-articles tbody tr.active"); + if (!isScrolledIntoView(row)) { if (active > old_active) $('html, body').animate({scrollTop: $(row).offset().top}, 2000); @@ -262,7 +261,7 @@ $(function () { }); function filter_articles(status) { - if (status == "ALL") { + if (status === "ALL") { $(".source-articles table tbody tr").show(); } else { @@ -378,7 +377,7 @@ $(function () { $(".source-tab-content").on("click", "table tbody tr td input[type=checkbox]", function () { var total = $(".source-articles table tbody tr td input[type='checkbox']:visible").length; var checked = $(".source-articles table tbody tr td input[type='checkbox']:checked").length; - if (checked == total) { + if (checked === total) { $("#ck-all-articles").prop("checked", true); } else { @@ -447,7 +446,7 @@ $(function () { var duplicates = $("#modal-duplicates .modal-body tr[duplicate=" + duplicate + "]"); var duplicates_resolved = $("#modal-duplicates .modal-body tr[duplicate=" + duplicate + "][resolved=true]"); - if (duplicates.length - duplicates_resolved.length == 1) { + if (duplicates.length - duplicates_resolved.length === 1) { var btn_resolved = $("#modal-duplicates .modal-body tr[duplicate=" + duplicate + "][resolved=false] button"); $(btn_resolved).text("Resolved"); $(btn_resolved).prop("disabled", true); @@ -481,7 +480,7 @@ $(function () { $(btn).text("Resolving..."); }, success: function (data) { - if (data != "") { + if (data !== "") { var btn_modal = $("#modal-duplicates table tbody tr td button"); $(btn_modal).prop("disabled", true); $(btn_modal).text("Resolved"); @@ -490,7 +489,7 @@ $(function () { var article_row = $(".source-tab-content .source-articles tr[oid=" + ids[i] + "]"); $(article_row).attr("article-status", "D"); $("span", article_row).replaceWith("Duplicated"); - }; + } } }, complete: function () { @@ -503,7 +502,7 @@ $(function () { // On page load if ($("ul#source-tab li").length > 0) { - if($("ul#source-tab li.active").length == 0) { + if($("ul#source-tab li.active").length === 0) { $("ul#source-tab li:eq(0)").addClass("active"); } $("#source-tab li.active a").click(); diff --git a/parsifal/apps/reviews/conducting/templates/conducting/conducting_data_analysis.html b/parsifal/apps/reviews/conducting/templates/conducting/conducting_data_analysis.html index 11ff0d1a..2fba705a 100644 --- a/parsifal/apps/reviews/conducting/templates/conducting/conducting_data_analysis.html +++ b/parsifal/apps/reviews/conducting/templates/conducting/conducting_data_analysis.html @@ -1,10 +1,12 @@ {% extends 'conducting/conducting.html' %} -{% load static %} +{% load compress static %} {% block javascript %} - + {% compress js %} + + {% endcompress %} {% endblock javascript %} {% block tab_content %} diff --git a/parsifal/apps/reviews/conducting/templates/conducting/conducting_search_studies.html b/parsifal/apps/reviews/conducting/templates/conducting/conducting_search_studies.html index 14988669..f0c80ca5 100644 --- a/parsifal/apps/reviews/conducting/templates/conducting/conducting_search_studies.html +++ b/parsifal/apps/reviews/conducting/templates/conducting/conducting_search_studies.html @@ -1,9 +1,11 @@ {% extends 'conducting/conducting.html' %} -{% load static %} +{% load compress static %} {% block javascript %} - + {% compress js %} + + {% endcompress %} {% endblock javascript %} {% block tab_content %} diff --git a/parsifal/newsfragments/.gitignore b/parsifal/newsfragments/.gitignore new file mode 100644 index 00000000..f935021a --- /dev/null +++ b/parsifal/newsfragments/.gitignore @@ -0,0 +1 @@ +!.gitignore diff --git a/parsifal/static/js/parsifal.js b/parsifal/static/js/parsifal.js index 1d8b70d6..9950a49d 100644 --- a/parsifal/static/js/parsifal.js +++ b/parsifal/static/js/parsifal.js @@ -57,7 +57,7 @@ $.fn.ajaxEnable = function (callback) { callback = callback || function () {}; - + var btn = $(this); $(this).prop("disabled", false); $("span[class^='btn-ajax-']", this).hide(); @@ -81,7 +81,7 @@ $.fn.ajaxEnableError = function (callback) { callback = callback || function () {}; - + var btn = $(this); $(this).prop("disabled", false); $("span[class^='btn-ajax-']", this).hide(); @@ -137,7 +137,7 @@ }); }; - + }, uuid: function () { @@ -197,7 +197,7 @@ var UP_ARROW_KEY = 38; var DOWN_ARROW_KEY = 40; var ENTER_KEY = 13; var ESCAPE_KEY = 27; -var LOADING = "
"; +var LOADING = "
Loading...
"; // Loading functions @@ -208,4 +208,4 @@ $.fn.loading = function () { $.fn.stopLoading = function () { $(this).removeClass("loading-state"); -}; \ No newline at end of file +}; diff --git a/parsifal/templates/includes/footer.html b/parsifal/templates/includes/footer.html index 71506a33..0898559f 100644 --- a/parsifal/templates/includes/footer.html +++ b/parsifal/templates/includes/footer.html @@ -1,19 +1,17 @@ diff --git a/pyproject.toml b/pyproject.toml index 2db5001e..d2bd3666 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,3 +22,7 @@ exclude = ''' | migrations )/ ''' + +[tool.towncrier] +package = "parsifal" +filename = "CHANGELOG.md"