From 22a255bece8a636999b9cd724c68d84469359304 Mon Sep 17 00:00:00 2001
From: oetrb <oetrb@github.com>
Date: Wed, 7 Oct 2020 22:49:08 +0200
Subject: [PATCH] .

---
 src/components/Teachers.vue | 236 +++++++++++++++++++++++++-----------
 1 file changed, 168 insertions(+), 68 deletions(-)

diff --git a/src/components/Teachers.vue b/src/components/Teachers.vue
index 0169dc4..0a75a2e 100644
--- a/src/components/Teachers.vue
+++ b/src/components/Teachers.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="content col-md-12">
-    <div class="search_box col-md-4">
+    <div id="search_box" class="search_box col-md-4">
       <div class="entry_box-inner">
-        <a id="exportbutton" class="button" href="./exporttable">Tabelle exportieren</a>
+        <a id="editbutton" class="button" href="./editcourse" style="visibility: hidden">Eintrag bearbeiten</a>
         <a id="addbutton" class="button" href="./createcourse">neuen Eintrag hinzufügen</a>
-        <a id="editbutton" class="button" href="./editcourse">Eintrag bearbeiten</a>
-        <a id="deletebutton" class="button" href="./editcourse">ausgewählte Einträge löschen</a>
+        <a id="deletebutton" class="button" href="./deletecourse">ausgewählte Einträge löschen</a>
+        <a id="exportbutton" class="button" href="./exporttable">Tabelle exportieren</a>
       </div>
       <div class="search_box-inner">
         <i><img src="../assets/search.svg"></i>
@@ -16,16 +16,17 @@
       <tr>
         <th scope="row">
           <div class="form-check">
-            <input type="checkbox" class="form-check-input" id="checkbox_headerline">
+            <input name="checkbox" type="checkbox" class="form-check-input" id="checkbox_headerline" @click="checkAllBoxes">
             <label class="form-check-label" for="checkbox_headerline"></label>
           </div>
         </th>
         <th v-on:click="sortTable('angebotsnummer')"><img id='imgsortangebotsnummer' :src="require('../assets/'+sortImg)">Angebotsnummer</th>
-     </tr>
-      <tr v-for="row in filteredRows" :key="row.angebotsnummer">
+        <th v-on:click="sortTable('notiz')"><img id="imgsortnotiz" :src="require('../assets/'+sortImg)">Notiz</th>
+      </tr>
+      <tr v-for="row in filteredRows" :key="row.id">
         <td scope="row">
           <div class="form-check">
-            <input type="checkbox" class="form-check-input" id="checkbox_tablerow">
+            <input type="checkbox" class="form-check-input" name="checkbox_tablerow" id="checkbox_tablerow" v-model="checkedBoxes" :value="row.id">
             <label class="form-check-label" for="checkbox_tablerow"></label>
           </div>
         </td>
@@ -36,57 +37,56 @@
 </template>
 
 <script>
-/*export default {
+export default {
   name: "Teachers",
-  data(){
-    return{
-      data: "Placeholder",
-      message: "not Expired",
-      service: 0,
+  data: function() {
+    return {
+      rows: [],
+      checkedBoxes: [],
+      filter:'',
+      currentSort:'id',
+      currentSortDir:'asc',
+      sortImg: 'sort_def.svg',
     }
-
   },
 
   created() {
-    this.getData();
+    localStorage.setItem('checkedBoxID', 0);
+    this.loadData();
   },
 
-  methods:{
-    getData () {
-      this.$store.dispatch('user/getHello').then(
-          (response) => {
-            console.log(response.status)
-            this.data = this.$store.state.user.response;
+  methods: {
+
+    checkAllBoxes(){
+      var headercheckbox = document.getElementById('checkbox_headerline');
+      var headercheckboxvalue = headercheckbox.checked;
+
+      let checkboxes = document.getElementsByName('checkbox_tablerow');
+      for(var i=0, n=checkboxes.length;i<n;i++) {
+        if (headercheckboxvalue){
+          this.checkedBoxes.push(this.rows[i].id);
+        } else {
+          this.checkedBoxes.pop(this.rows[i].id);
+        }
+        checkboxes[i].checked = headercheckboxvalue;
+      }
+    },
+
+    /*loadData(){
+      this.$store.dispatch('course/getAll').then(
+          (data) => {
+            let x;
+            for(x = 0; x < data.length; x++){
+              this.rows.push({id: data[x].id, angebotsnummer: data[x].courseNumber, angebot: data[x].courseOffer, kursname: data[x].name, veranstaltungsart: data[x].eventType, kursdatum: data[x].courseDate, thema: data[x].topic, kursort: data[x].location, begleitendeLehrkraft: data[x].accompanyingTeacher, betreuendeStudenten: data[x].supervisingStudents, anzahlderAnwesenden: data[x].presentStudents, anzahlderAngemeldeten: data[x].registeredStudents, kursleiter: data[x].instructor, notiz: data[x].noteField});
+            }
           },
-          (error) => {
-              this.message = error;
-            console.log(error)
+          error => {
+            this.message = (error.response && error.response.data) || error.message || error.toString();
+            this.successful = false;
           }
       );
-    },
-  }
-}*/
-</script>
+    },*/
 
-<script>
-export default {
-  name: "Teachers",
-  data: function() {
-    return {
-      rows: [
-        {angebotsnummer: 232, angebot: "Biologie", kursname: 'Neurobiologie', veranstaltungsart: 'regulärer Kurs', kursdatum: '23.08.2020', thema: '', kursort: 'T9 Hörsaal', begleitendeLehrkraft: 'Frau Muster', betreuendeStudenten: 'Max Miller', anzahlderAnwesenden: '34', anzahlderAngemeldeten: '12', kursleiter: 'Frau Test', notiz: ''},
-        {angebotsnummer: 23342, angebot: "ABiologie", kursname: 'bNeukkkrobiologie', veranstaltungsart: 'regulärer Kurs', kursdatum: '22.08.2020', thema: '', kursort: 'T9 Hörsaal', begleitendeLehrkraft: 'Frau Muster', betreuendeStudenten: 'Max Miller', anzahlderAnwesenden: '34', anzahlderAngemeldeten: '12', kursleiter: 'Frau Test', notiz: ''},
-        {angebotsnummer: 22, angebot: "Ciologie", kursname: 'ANeurobkiologie', veranstaltungsart: 'regulärer Kurs', kursdatum: '21.08.2020', thema: '', kursort: 'T9 Hörsaal', begleitendeLehrkraft: 'Frau Muster', betreuendeStudenten: 'Max Miller', anzahlderAnwesenden: '34', anzahlderAngemeldeten: '12', kursleiter: 'Frau Test', notiz: ''},
-        {angebotsnummer: 1342, angebot: "Diologie", kursname: 'cNeukkkrobiologie', veranstaltungsart: 'regulärer Kurs', kursdatum: '23.07.2020', thema: '', kursort: 'T9 Hörsaal', begleitendeLehrkraft: 'Frau Muster', betreuendeStudenten: 'Max Miller', anzahlderAnwesenden: '34', anzahlderAngemeldeten: '12', kursleiter: 'Frau Test', notiz: ''},
-        {angebotsnummer: 132, angebot: "Bdologie", kursname: 'eNeurobiologie', veranstaltungsart: 'regulärer Kurs', kursdatum: '23.08.2021', thema: '', kursort: 'T9 Hörsaal', begleitendeLehrkraft: 'Frau Muster', betreuendeStudenten: 'Max Miller', anzahlderAnwesenden: '34', anzahlderAngemeldeten: '12', kursleiter: 'Frau Test', notiz: ''},
-      ],
-      filter:'',
-      currentSort:'angebotsnummer',
-      currentSortDir:'asc',
-      sortImg: 'sort_def.svg',
-    }
-  },
-  methods: {
     "sortTable": function sortTable(col) {
       this.currentSort = col;
       if (this.currentSortDir === 'asc') {
@@ -524,36 +524,136 @@ export default {
       }
     }
   },
+  watch: {
+    checkedBoxes(){
+      if (this.checkedBoxes.length > 1 || this.checkedBoxes.length < 1){
+        document.getElementById("editbutton").style.visibility = "hidden";
+        // EXPORT & DELETE
+      } else {
+        document.getElementById("editbutton").style.visibility = "visible";
+      }
+      localStorage.setItem('checkedBoxID', this.checkedBoxes[0]);
+    }
+  },
   computed: {
     "columns": function columns() {
-      if (this.rows.length == 0) {
+      if (this.rows.length === 0) {
         return [];
       }
       return Object.keys(this.rows[0])
     },
-    filteredRows() {
-      return this.rows.filter(row => {
-        const angebotsnummer = row.angebotsnummer.toString().toLowerCase();
-        const angebot = row.angebot.toLowerCase();
-        const kursname = row.kursname.toLowerCase();
-        const veranstaltungsart = row.veranstaltungsart.toLowerCase();
-        const kursdatum = row.kursdatum.toLowerCase();
-        const thema = row.thema.toLowerCase();
-        const kursort = row.kursort.toLowerCase();
-        const begleitendeLehrkraft = row.begleitendeLehrkraft.toLowerCase();
-        const betreuendeStudenten = row.betreuendeStudenten.toLowerCase();
-        const anzahlderAnwesenden = row.anzahlderAnwesenden.toString();
-        const anzahlderAngemeldeten = row.anzahlderAngemeldeten.toString();
-        const kursleiter = row.kursleiter.toLowerCase();
-        const notiz = row.notiz.toLowerCase();
-        const searchTerm = this.filter.toLowerCase();
+    //filteredRows() {
+      //return this.rows.filter(row => {
+        //const angebotsnummer = row.angebotsnummer.toString().toLowerCase();
+        //const angebot = row.angebot.toLowerCase();
 
-        return angebotsnummer.includes(searchTerm) || angebot.includes(searchTerm) || kursname.includes(searchTerm) || veranstaltungsart.includes(searchTerm) || kursdatum.includes(searchTerm) || thema.includes(searchTerm) || kursort.includes(searchTerm) || begleitendeLehrkraft.includes(searchTerm) || betreuendeStudenten.includes(searchTerm) || betreuendeStudenten.includes(searchTerm) || anzahlderAnwesenden.includes(searchTerm) || anzahlderAngemeldeten.includes(searchTerm) || kursleiter.includes(searchTerm) || notiz.includes(searchTerm);
-      });
-    }
+        //return angebotsnummer.includes(searchTerm) || angebot.includes(searchTerm) || kursname.includes(searchTerm) || veranstaltungsart.includes(searchTerm) || kursdatum.includes(searchTerm) || thema.includes(searchTerm) || kursort.includes(searchTerm) || begleitendeLehrkraft.includes(searchTerm) || betreuendeStudenten.includes(searchTerm) || betreuendeStudenten.includes(searchTerm) || anzahlderAnwesenden.includes(searchTerm) || anzahlderAngemeldeten.includes(searchTerm) || kursleiter.includes(searchTerm) || notiz.includes(searchTerm);
+      //});
+    //}
   }
 }
 </script>
 
 <style scoped>
+.content{
+  background-color: whitesmoke;
+  width: 100%;
+  height: 100vh;
+  overflow: auto;
+  white-space: nowrap;
+}
+
+.search_box{
+  width: 100%;
+  margin-top: 50px;
+  text-align:left;
+  position: relative;
+}
+
+.search_box-inner {
+  display:inline;
+  font-size:1em;
+  border-radius: 8em;
+  border:0.1em solid rgba(218, 208, 190, 1);
+  box-shadow:0 0 0.3em rgba(60, 60, 60, 0.4);
+  padding:0.3em;
+  background:white;
+}
+
+.entry_box-inner {
+  position: relative;
+  display:inline;
+}
+
+#exportbutton, #addbutton, #editbutton, #deletebutton {
+  margin-right: 25px;
+  display:inline-block;
+  padding:0.3em 1.2em;
+  border-radius:2em;
+  box-sizing: border-box;
+  text-decoration:none;
+  font-weight:300;
+  color:#FFFFFF;
+  background-color:#528fff;
+  text-align:center;
+  transition: all 0.2s;
+}
+
+#exportbutton:hover, #deletebutton:hover, #addbutton:hover , #editbutton:hover{
+  background-color:#9fc1ff;
+}
+
+.search_box-inner i img {
+  width: 5%;
+  text-align: center;
+  margin: 5px;
+}
+
+#inpt_search{
+  transition:all 0.2s ease-out;
+  width:15px;
+  border-radius:0;
+  box-shadow:none;
+  outline: none;
+  padding:0;
+  margin:0;
+  border:0;
+  background-color: transparent;
+  opacity:0;
+}
+#inpt_search:focus {
+  width: 10em;
+  opacity: 1;
+}
+
+.content table {
+  margin-top: 50px;
+  margin-right: 1275px;
+  display: inline-block;
+  font-family: arial, sans-serif;
+  border-collapse: collapse;
+  width: 100%;
+}
+
+.content table th {
+  text-transform: uppercase;
+  text-align: left;
+  background: #9fc1ff;
+  color: #000000;
+  padding: 8px;
+  min-width: 30px;
+}
+
+.content table td {
+  text-align: left;
+  padding: 8px;
+  border-right: 2px solid #9fc1ff;
+}
+.content table td:last-child {
+  border-right: none;
+}
+
+.content table tbody tr:nth-child(2n) td {
+  background: #D4D8F9;
+}
 </style>
\ No newline at end of file
-- 
GitLab