From 5ad5bc0a2faecbdffb6d8b78cf68be20d2da711c Mon Sep 17 00:00:00 2001
From: Stephan Porada <sporada@uni-bielefeld.de>
Date: Wed, 18 Sep 2019 12:06:34 +0200
Subject: [PATCH] Add foreign admin views

---
 app/main/events.py                          |  3 ++
 app/templates/admin/admin_user_page.html.j2 | 60 ++++++++++++++-------
 app/templates/base.html.j2                  |  4 +-
 app/templates/main/dashboard.html.j2        |  2 +-
 4 files changed, 47 insertions(+), 22 deletions(-)

diff --git a/app/main/events.py b/app/main/events.py
index c734799e..cae1ee32 100644
--- a/app/main/events.py
+++ b/app/main/events.py
@@ -24,6 +24,8 @@ def connect():
     ' will be used for further information exchange generated by a background
     ' task associated with the sid.
     '''
+    logger = logging.getLogger(__name__)
+    logger.warning('[connect] Session id is: {}.'.format(request.sid))
     socketio.start_background_task(background_task,
                                    current_app._get_current_object(),
                                    current_user.id,
@@ -43,6 +45,7 @@ def connect_admin(selected_user_id):
     '''
     logger = logging.getLogger(__name__)
     logger.warning('Admin emitted "connect_admin".')
+    logger.warning('[connect_admin] Session id is: {}.'.format(request.sid))
     logger.warning('Selected user id is: {}'.format(selected_user_id))
     socketio.start_background_task(background_task_foreign,
                                    current_app._get_current_object(),
diff --git a/app/templates/admin/admin_user_page.html.j2 b/app/templates/admin/admin_user_page.html.j2
index 8b13a6d4..6e148f0f 100644
--- a/app/templates/admin/admin_user_page.html.j2
+++ b/app/templates/admin/admin_user_page.html.j2
@@ -17,16 +17,28 @@
         </ul>
         <div class="card-action">
           <a href="{{url_for('admin.edit_profile_admin', user_id=selected_user.id)}}" class="waves-effect waves-light btn"><i class="material-icons left">edit</i>Edit user</a>
+        <a href="#modal-confirm-delete" class="waves-effect waves-light btn red modal-trigger"><i class="material-icons left">delete</i>Delete User</a>
+        <!-- Modal Strucutre -->
+        <div id="modal-confirm-delete" class="modal">
+          <div class="modal-content">
+            <h4>Confirm deletion</h4>
+              <p>Do you really want to delete the current selected user ({{selected_user.username}})?
+              All associated jobs and job files will be permanently deleted.</p>
+          </div>
+          <div class="modal-footer">
+            <a href="{{url_for('admin.admin_delete_user', user_id=selected_user.id)}}" class="modal-close waves-effect waves-green btn red"><i class="material-icons left">delete</i>Delete User</a></a>
+          </div>
         </div>
+      </div>
     </div>
   </div>
 </div>
-<script type="text/javascript">
+<script>
   var selected_user_id = {{selected_user.id|tojson|safe}}
   socket.emit('connect_admin', selected_user_id);
 </script>
 <div class="col s12 m6">
-  <div id="job-list">
+  <div id="job-foreign-list">
     <div class="card">
       <div class="card-content">
         <div class="row">
@@ -47,7 +59,7 @@
   </div>
 </div>
 <script>
-  var jobList = new JobList("job-list", {
+  var jobList = new JobList("job-foreign-list", foreignJobsSubscribers, {
     item: '<div><span class="title"></span><span class="description"></span></div>',
     page: 4,
     pagination: true,
@@ -56,25 +68,35 @@
   jobList.on("filterComplete", List.updatePagination);
   jobList.on("searchComplete", List.updatePagination);
 </script>
-<div class="col s12">
-  <div class="card large">
-    <div class="card-content">
-      <span class="card-title">Administration actions</span>
-      <!-- Confirm deletion of selected user with modal dialogue
-      Modal Trigger-->
-      <a href="#modal-confirm-delete" class="waves-effect waves-light btn red modal-trigger"><i class="material-icons left">delete</i>Delete User</a>
-      <!-- Modal Strucutre -->
-      <div id="modal-confirm-delete" class="modal">
-        <div class="modal-content">
-          <h4>Confirm deletion</h4>
-            <p>Do you really want to delete the current selected user ({{selected_user.username}})?
-            All associated jobs and job files will be permanently deleted.</p>
-        </div>
-        <div class="modal-footer">
-          <a href="{{url_for('admin.admin_delete_user', user_id=selected_user.id)}}" class="modal-close waves-effect waves-green btn red"><i class="material-icons left">delete</i>Delete User</a></a>
+<div class="col s12 m6">
+  <div id="corpus-foreign-list">
+    <div class="card">
+      <div class="card-content">
+        <div class="row">
+          <div class="col s12">
+            <div class="input-field">
+              <i class="material-icons prefix">search</i>
+              <input id="search-job" class="search" type="text"></input>
+              <label for="search-job">Search corpus</label>
+            </div>
+          </div>
+          <div class="col s12">
+            <ul class="pagination"></ul>
+          </div>
         </div>
       </div>
     </div>
+    <div class="collection list"></div>
   </div>
 </div>
+<script>
+  var corpusList = new CorpusList("corpus-foreign-list", foreignCorpusSubscribers, {
+    item: '<div><span class="title"></span><span class="description"></span></div>',
+    page: 4,
+    pagination: true,
+    valueNames: ["description", "title", {data: ["id"]}]
+  });
+  corpusList.on("filterComplete", List.updatePagination);
+  corpusList.on("searchComplete", List.updatePagination);
+</script>
 {% endblock %}
diff --git a/app/templates/base.html.j2 b/app/templates/base.html.j2
index 6cc41fd7..2912c40d 100644
--- a/app/templates/base.html.j2
+++ b/app/templates/base.html.j2
@@ -76,7 +76,7 @@
         var subscriber;
 
         foreignCorpora = JSON.parse(msg);
-        for (subscriber of foreignCorporaSubscribers) {subscriber._init();}
+        for (subscriber of foreignCorporaSubscribers) {subscriber._init(foreignCorpora);}
       });
 
 
@@ -84,7 +84,7 @@
         var subscriber;
 
         foreignJobs = JSON.parse(msg);
-        for (subscriber of foreignJobsSubscribers) {subscriber._init();}
+        for (subscriber of foreignJobsSubscribers) {subscriber._init(foreignJobs);}
       });
 
 
diff --git a/app/templates/main/dashboard.html.j2 b/app/templates/main/dashboard.html.j2
index 94bd2426..51938fb5 100644
--- a/app/templates/main/dashboard.html.j2
+++ b/app/templates/main/dashboard.html.j2
@@ -31,7 +31,7 @@
   </div>
 </div>
 <script>
-  var corpusList = new CorpusList("corpus-list", {
+  var corpusList = new CorpusList("corpus-list", corporaSubscribers ,{
     item: '<div><span class="title"></span><span class="description"></span></div>',
     page: 4,
     pagination: true,
-- 
GitLab