diff --git a/app/static/js/tasks.js b/app/static/js/tasks.js index 0aeb32ee5aaaf1657ffedac1a29c0019716b04b6..5d1730ca798130786f2053bccfe5bec6769f7cbb 100644 --- a/app/static/js/tasks.js +++ b/app/static/js/tasks.js @@ -1,9 +1,15 @@ $(document).ready(function() { + $("#allTasks").on('change', function() { + // reload the data from the Ajax source + tasks_table.ajax.reload(); + }); + var tasks_table = $("#tasks_table").DataTable({ "ajax": function(data, callback, settings) { + var allTasks = $('#allTasks').prop("checked"); $.getJSON( - $SCRIPT_ROOT + "/task/_retrieve_tasks", + $SCRIPT_ROOT + "/task/_retrieve_tasks?all=" + allTasks, function(json) { callback(json); }); diff --git a/app/task/views.py b/app/task/views.py index 399785ac71446e8f16e224c8b0114166714c3203..4642213d7e7c3d83d4d1e0f2a3efed0fc1be4902 100644 --- a/app/task/views.py +++ b/app/task/views.py @@ -9,7 +9,8 @@ This module implements the task blueprint. :license: BSD 2-Clause, see LICENSE for more details. """ -from flask import Blueprint, render_template, jsonify +from flask import (Blueprint, render_template, jsonify, + request) from flask_login import login_required, current_user from .. import models @@ -32,5 +33,6 @@ def view_task(id_): @bp.route('/_retrieve_tasks') @login_required def retrieve_tasks(): - data = [task.to_dict() for task in current_user.get_tasks()] + all = request.args.get('all', 'false') == 'true' + data = [task.to_dict() for task in current_user.get_tasks(all=all)] return jsonify(data=data) diff --git a/app/templates/task/tasks.html b/app/templates/task/tasks.html index 799be141fd245ad35e531d0cb3413feb017e1cb2..2c0c6f865c730b27d34c28f9d3c7e514a07b1c9a 100644 --- a/app/templates/task/tasks.html +++ b/app/templates/task/tasks.html @@ -15,6 +15,17 @@ <br> {% block tasks_main %} + {% if current_user.is_authenticated and current_user.is_admin %} + <div class="form-check"> + <input class="form-check-input" type="checkbox" value="" id="allTasks"> + <label class="form-check-label" for="allTasks"> + Show all tasks (all users) + </label> + </div> + + <hr class="separator"> + {%- endif %} + <table id="tasks_table" class="table table-bordered table-hover table-sm" cellspacing="0" width="100%"> <thead> <tr>