diff --git a/package-lock.json b/package-lock.json index 6c4e69a1e451fd10822c9f2d5b5b3441fa98393f..f4dfd9ec2cbf0c30b714f145c2ac35ffcb80e9e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4804,6 +4804,15 @@ "integrity": "sha512-j9MlEwgTHVW/lq93Hw8yhzA886oLjDm3Hz7eDkWP2v4fzLVuqOWhpNluziSnmR/tBqgoYldagbLknrdg+B7Tlw==", "dev": true }, + "element-ready": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/element-ready/-/element-ready-4.1.1.tgz", + "integrity": "sha512-GdMA0nVR8YL9adRU//YCwI0aunw4d8oI+9gSH2kJLwcdsYBoGUWbG79AGfvcmlUyLE+amZXOe1VX2nTlcsxYBQ==", + "requires": { + "many-keys-map": "^1.0.1", + "p-defer": "^3.0.0" + } + }, "element-ui": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz", @@ -5920,6 +5929,33 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, + "gridjs": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/gridjs/-/gridjs-1.17.0.tgz", + "integrity": "sha512-Y/Za65jbPUXlFi68Db0nBDK23lEzIeM0w7NHZHA0hjfF4yqkrKSTGvjE8e4rBcIoLK7Rf1XFnpKDOY19TBvS/g==", + "requires": { + "preact": "^10.4.8", + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "gridjs-vue": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gridjs-vue/-/gridjs-vue-0.5.2.tgz", + "integrity": "sha512-0kOB8HR1B5tBVFJLyNNhicOZsaQblqVMC12nCJkdWQpZJH9s2JgXoocmj1KmoiCWzHrgKUoUmha349CVreLhjQ==", + "requires": { + "element-ready": "^4.1.1", + "gridjs": "^1.11.0", + "nanoid": "^3.1.10", + "vue-runtime-helpers": "1.1.2" + } + }, "gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -7343,6 +7379,11 @@ "semver": "^5.6.0" } }, + "many-keys-map": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/many-keys-map/-/many-keys-map-1.0.3.tgz", + "integrity": "sha512-Iguobalgc8YO1kbN1U9R/j6u3QFf6bwIh37HKYFgEtUJNJd79INgLwtdiiOgBPoBqZ/ZVc4zziRaVg0EiJ+82g==" + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -7714,6 +7755,11 @@ "dev": true, "optional": true }, + "nanoid": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", + "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==" + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -8201,6 +8247,11 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-defer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -9096,6 +9147,11 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "preact": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.4.tgz", + "integrity": "sha512-u0LnVtL9WWF61RLzIbEsVFOdsahoTQkQqeRwyf4eWuLMFrxTH/C47tqcnizbUH54E4KG8UzuuZaMc9KarHmpqQ==" + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -9584,6 +9640,14 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } } }, "require-directory": { @@ -11478,6 +11542,11 @@ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.3.tgz", "integrity": "sha512-BADg1mjGWX18Dpmy6bOGzGNnk7B/ZA0RxuA6qedY/YJwirMfKXIDzcccmHbQI0A6k5PzMdMloc0ElHfyOoX35A==" }, + "vue-runtime-helpers": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vue-runtime-helpers/-/vue-runtime-helpers-1.1.2.tgz", + "integrity": "sha512-pZfGp+PW/IXEOyETE09xQHR1CKkR9HfHZdnMD/FVLUNI+HxYTa82evx5WrF6Kz4s82qtqHvMZ8MZpbk2zT2E1Q==" + }, "vue-scrollbar-simple": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/vue-scrollbar-simple/-/vue-scrollbar-simple-0.0.6.tgz", diff --git a/package.json b/package.json index 786ce3c9469b14d2cde94f0f0fa3ce0709413454..c413fab57c89c8609dff1796ac356fcb0d9e0475 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,13 @@ "core-js": "^3.6.5", "dayjs": "^1.9.1", "file-saver": "^2.0.2", + "gridjs-vue": "^0.5.2", "jquery": "^3.5.1", "js-file-download": "^0.4.12", "kalendar-vue": "^2.1.1", "lodash.trim": "^4.5.1", "popper.js": "^1.16.1", + "qs": "^6.9.4", "vee-validate": "^2.2.15", "vue": "^2.6.11", "vue-axios-cors": "^1.0.1", diff --git a/src/App.vue b/src/App.vue index a46f5c3adba0e574373709077d06250f44c5f6dd..e7bc3d5a35dd2664e11ac0cace3259a7e6f84f43 100644 --- a/src/App.vue +++ b/src/App.vue @@ -20,24 +20,7 @@ export default { return{ sidebarStyle: "", contentClass: "content col-md-10", - events: [ - { - from: '2020-10-09T18:00:00Z', - to: '2020-10-09T19:00:00Z', - data: { - title: "Hello", - description: "Ola" - } - }, - { - from: '2020-10-09T10:00:00Z', - to: '2020-10-09T15:00:00Z', - data: { - title: "Hello2", - description: "Ola" - } - } - ] + events: [], } }, @@ -61,31 +44,27 @@ export default { } else { this.sidebarStyle = ""; this.contentClass = "content col-md-10"; - - this.$store.dispatch('event/get').then( - (data) => { - data.forEach(row => { - console.log("loop") - let title = row.title; - let description = row.description; - let from = '2020-10-11T10:00:00Z'; - let to = '2020-10-11T19:00:00Z'; - - let payload = { - from, - to, - data: { - title, - description - } - } - this.events.push(payload); - }) - } - ) - console.log(this.events); - localStorage.setItem('events', JSON.stringify(this.events) ); + this.loadData(); } + }, + + loadData(){ + + this.$store.dispatch('event/get').then( + (data) => { + console.log("appdata"+data) + this.events = []; + data.forEach(row => { + let title = row.title; + let description = row.description; + let from = row.startTime; + let to = row.endTime; + + this.events.push({id: row.id, from: from, to: to, data: { title: title, description: description}}); + localStorage.setItem("events", JSON.stringify(this.events) ); + }) + } + ) } } }; diff --git a/src/components/Calendar.vue b/src/components/Calendar.vue index d0a150447d5e1127075c4eaea13034887ec3de19..fe8012949500ab794d9bebbe4ac5fe27336e9c90 100644 --- a/src/components/Calendar.vue +++ b/src/components/Calendar.vue @@ -1,5 +1,6 @@ <template> <div class="content col-md-12"> + {{events}} <kalendar :configuration="calendar_settings" :events.sync="events"> <!-- CREATED CARD SLOT --> @@ -30,8 +31,8 @@ <!-- POPUP CARD SLOT --> <div slot="popup-form" slot-scope="{ popup_information }" style="display: flex; flex-direction: column;"> <h4 style="margin-bottom: 10px">Neuen Event erstellen</h4> - <input v-model="new_appointment['title']" type="text" name="title" placeholder="Title"> - <textarea v-model="new_appointment['description']" type="text" name="description" placeholder="Description" rows="2"></textarea> + <input v-model="new_appointment['title']" type="text" name="title" placeholder="Titel"> + <textarea v-model="new_appointment['description']" type="text" name="description" placeholder="Beschreibung" rows="2"></textarea> <div class="buttons"> <button class="cancel" @click="closePopups()"> Cancel @@ -59,8 +60,9 @@ export default { }, data: () => ({ - event: new Event('','','',''), + event: new Event('','','','',''), events: JSON.parse(localStorage.getItem("events")), + formData: { from: null, to: null, @@ -87,49 +89,31 @@ export default { }), created() { - this.addManually(); + //this.loadData(); }, methods:{ loadData(){ + this.$store.dispatch('event/get').then( (data) => { - data.forEach(row => { - console.log("loop") - let title = row.title; - let description = row.description; - let from = row.startTime; - let to = row.endTime; - - let payload = { - from, - to, - data: { - title, - description - } - } - this.events.push(payload); - }) - console.log(this.events); + console.log("data"+data) + localStorage.setItem("events", JSON.stringify([]) ); + this.events = []; + data.forEach(row => { + let title = row.title; + let description = row.description; + let from = row.startTime; + let to = row.endTime; + + this.events.push({id: row.id, from: from, to: to, data: { title: title, description: description}}); + localStorage.setItem("events", JSON.stringify(this.events) ); + }) } ) }, - "addManually": function addManually() { - let title = 'New one'; - let description = 'Lorem dsr'; - let from = '2020-09-10T10:22:00+02:00'; - let to = '2020-09-10T11:20:00+02:00'; - let payload = { - data: { title, description }, - from, - to, - }; - this.$kalendar.addNewEvent(payload); - }, - // Create Event "addEvent": function addEvent(popup_data, form_data) { @@ -151,6 +135,9 @@ export default { this.event.startTime = payload.from; this.event.endTime = payload.to; + this.events.push({from: payload.from, to: payload.to, data: { title: payload.data.title, description: payload.data.description}}); + localStorage.setItem("events", JSON.stringify(this.events) ); + this.$store.dispatch('event/insert', this.event); this.$kalendar.closePopups(); //this.clearFormData(); @@ -164,7 +151,10 @@ export default { key: kalendarEvent.key, id: kalendarEvent.kalendar_id, }) - }, + this.$store.dispatch('event/delete', kalendarEvent.kalendar_id); + setTimeout(() => this.loadData(), 500); + } + } } </script> diff --git a/src/components/Courses.vue b/src/components/Courses.vue index 9da2ecd76a9d456b32263528bc9d9320db8a59c4..299839e14fdaa3a203a9ce16d5715e874051e822 100644 --- a/src/components/Courses.vue +++ b/src/components/Courses.vue @@ -1,9 +1,8 @@ <template> <div class="card"> - <div class="content col-md-12"> + <div class="content col-md-12" style="display: block"> <div id="search_box" class="search_box col-md-4"> <div class="entry_box-inner"> - {{checkedBoxes}} <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="deletebutton" class="button" @click="deleterows">ausgewählte Einträge löschen</a> @@ -15,54 +14,58 @@ </div> </div> <table id="Table"> - <tr> - <th scope="row"> - <div class="form-check"> - <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('imgsortcoursenumber')"><img id='imgsortcoursenumber' :src="require('../assets/'+sortImg)">Angebotsnummer</th> - <th v-on:click="sortTable('imgsortcourseoffer')"><img id="imgsortcourseoffer" :src="require('../assets/'+sortImg)">Angebot</th> - <th v-on:click="sortTable('imgsortcoursename')"><img id="imgsortcoursename" :src="require('../assets/'+sortImg)">Kursname</th> - <th v-on:click="sortTable('imgsorteventtype')"><img id="imgsorteventtype" :src="require('../assets/'+sortImg)">Veranstaltungsart</th> - <th v-on:click="sortTable('imgsortcoursedate')"><img id="imgsortcoursedate" :src="require('../assets/'+sortImg)">Kursdatum</th> - <th v-on:click="sortTable('imgsorttopic')"><img id="imgsorttopic" :src="require('../assets/'+sortImg)">Thema</th> - <th v-on:click="sortTable('imgsortcourselocation')"><img id="imgsortcourselocation" :src="require('../assets/'+sortImg)">Kursort</th> - <th v-on:click="sortTable('imgsortaccompanyingteacher')"><img id="imgsortaccompanyingteacher" :src="require('../assets/'+sortImg)">begleitende Lehrkraft</th> - <th v-on:click="sortTable('imgsortsupervisingstudents')"><img id="imgsortsupervisingstudents" :src="require('../assets/'+sortImg)">betreuende Studenten</th> - <th v-on:click="sortTable('imgsortpresentstudents')"><img id="imgsortpresentstudents" :src="require('../assets/'+sortImg)">Anzahl der Anwesenden</th> - <th v-on:click="sortTable('imgsortregisteredstudents')"><img id="imgsortregisteredstudents" :src="require('../assets/'+sortImg)">Anzahl der Angemeldeten</th> - <th v-on:click="sortTable('imgsortanzahlung')"><img id="imgsortanzahlung" :src="require('../assets/'+sortImg)">Anzahlung</th> - <th v-on:click="sortTable('imgsorthonorar')"><img id="imgsorthonorar" :src="require('../assets/'+sortImg)">Honorar</th> - <th v-on:click="sortTable('imgsortinstructor')"><img id="imgsortinstructor" :src="require('../assets/'+sortImg)">Kursleiter</th> - <th v-on:click="sortTable('imgsortstatus')"><img id="imgsortstatus" :src="require('../assets/'+sortImg)">Aktiv</th> - <th v-on:click="sortTable('imgsortnotefield')"><img id="imgsortnotefield" :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" name="checkbox_tablerow" id="checkbox_tablerow" v-model="checkedBoxes" :value="row.id"> - <label class="form-check-label" for="checkbox_tablerow"></label> - </div> - </td> - <td>{{row.coursenumber}}</td> - <td style="padding-right:200px;">{{row.courseoffer}}</td> - <td style="padding-right:200px;">{{row.coursename}}</td> - <td>{{row.eventtype}}</td> - <td>{{row.coursedate}}</td> - <td>{{row.topic}}</td> - <td style="padding-right:200px;">{{row.courselocation}}</td> - <td>{{row.accompanyingteacher}}</td> - <td>{{row.supervisingstudents}}</td> - <td>{{row.presentstudents}}</td> - <td>{{row.registeredstudents}}</td> - <td>{{row.anzahlung}}</td> - <td>{{row.honorar}}</td> - <td>{{row.instructor}}</td> - <td>{{row.status}}</td> - <td style="padding-right:300px;">{{row.notefield}}</td> - </tr> + <thead> + <tr> + <th scope="row"> + <div class="form-check"> + <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('imgsortcoursenumber')"><img id='imgsortcoursenumber' :src="require('../assets/'+sortImg)">Angebotsnummer</th> + <th v-on:click="sortTable('imgsortcourseoffer')"><img id="imgsortcourseoffer" :src="require('../assets/'+sortImg)">Angebot</th> + <th v-on:click="sortTable('imgsortcoursename')"><img id="imgsortcoursename" :src="require('../assets/'+sortImg)">Kursname</th> + <th v-on:click="sortTable('imgsorteventtype')"><img id="imgsorteventtype" :src="require('../assets/'+sortImg)">Veranstaltungsart</th> + <th v-on:click="sortTable('imgsortcoursedate')"><img id="imgsortcoursedate" :src="require('../assets/'+sortImg)">Kursdatum</th> + <th v-on:click="sortTable('imgsorttopic')"><img id="imgsorttopic" :src="require('../assets/'+sortImg)">Thema</th> + <th v-on:click="sortTable('imgsortcourselocation')"><img id="imgsortcourselocation" :src="require('../assets/'+sortImg)">Kursort</th> + <th v-on:click="sortTable('imgsortaccompanyingteacher')"><img id="imgsortaccompanyingteacher" :src="require('../assets/'+sortImg)">begleitende Lehrkraft</th> + <th v-on:click="sortTable('imgsortsupervisingstudents')"><img id="imgsortsupervisingstudents" :src="require('../assets/'+sortImg)">betreuende Studenten</th> + <th v-on:click="sortTable('imgsortpresentstudents')"><img id="imgsortpresentstudents" :src="require('../assets/'+sortImg)">Anzahl der Anwesenden</th> + <th v-on:click="sortTable('imgsortregisteredstudents')"><img id="imgsortregisteredstudents" :src="require('../assets/'+sortImg)">Anzahl der Angemeldeten</th> + <th v-on:click="sortTable('imgsortanzahlung')"><img id="imgsortanzahlung" :src="require('../assets/'+sortImg)">Anzahlung</th> + <th v-on:click="sortTable('imgsorthonorar')"><img id="imgsorthonorar" :src="require('../assets/'+sortImg)">Honorar</th> + <th v-on:click="sortTable('imgsortinstructor')"><img id="imgsortinstructor" :src="require('../assets/'+sortImg)">Kursleiter</th> + <th v-on:click="sortTable('imgsortstatus')"><img id="imgsortstatus" :src="require('../assets/'+sortImg)">Aktiv</th> + <th v-on:click="sortTable('imgsortnotefield')"><img id="imgsortnotefield" :src="require('../assets/'+sortImg)">Notiz</th> + </tr> + </thead> + <tbody> + <tr v-for="row in filteredRows" :key="row.id"> + <td scope="row"> + <div class="form-check"> + <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> + <td>{{row.coursenumber}}</td> + <td style="padding-right:200px;">{{row.courseoffer}}</td> + <td style="padding-right:200px;">{{row.coursename}}</td> + <td>{{row.eventtype}}</td> + <td>{{row.coursedate}}</td> + <td>{{row.topic}}</td> + <td style="padding-right:200px;">{{row.courselocation}}</td> + <td>{{row.accompanyingteacher}}</td> + <td>{{row.supervisingstudents}}</td> + <td>{{row.presentstudents}}</td> + <td>{{row.registeredstudents}}</td> + <td>{{row.anzahlung}}</td> + <td>{{row.honorar}}</td> + <td>{{row.instructor}}</td> + <td>{{row.status}}</td> + <td style="padding-right:300px;">{{row.notefield}}</td> + </tr> + </tbody> </table> </div> </div> @@ -80,6 +83,7 @@ export default { currentSort:'imgsortcoursenumber', currentSortDir:'asc', sortImg: 'sort_def.svg', + events: JSON.parse(localStorage.getItem("events")), } }, @@ -259,9 +263,23 @@ export default { width: 100%; height: 100vh; overflow: auto; + scroll-behavior: unset; white-space: nowrap; } +table { + text-align: left; + position: relative; + border-collapse: collapse; + } + +th { + background: white; + position: sticky; + top: 50px; /* Don't forget this, required for the stickiness */ + box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.4); +} + .search_box{ width: 100%; margin-top: 50px; diff --git a/src/components/Layouts.vue b/src/components/Layouts.vue index 39648c8297a93460d69a1f2413cbfa6c9a41533d..49cbdf698c200eab58e7a673db6917ed68857b80 100644 --- a/src/components/Layouts.vue +++ b/src/components/Layouts.vue @@ -1,15 +1,92 @@ <template> <div id="content" class="content col-md-12"> - Layouts + <grid + :auto-width="autoWidth" + :cols="cols" + :from="from" + :language="language" + :pagination="pagination" + :rows="rows" + :search="search" + :server="server" + :sort="sort" + :width="width" + ></grid> </div> </template> <script> +import Grid from 'gridjs-vue' + export default { - name: "Layouts" + name: "Layouts", + components: { + Grid + }, + + data(){ + return { + cols: ['Make', 'Model', 'Year', 'Color', 'Color', 'Color', 'Color', 'Color', 'Color', 'Color'], + rows: [ + ['Ford', 'Fusion', '2011', 'Silver'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ['Chevrolet', 'Cruz', '2018', 'White'], + ], + "autoWidth": true, + "from": undefined, + "language": undefined, + "pagination": true, + "search": true, + "server": undefined, + "sort": true, + "theme": "mermaid", + "width": "100%" + } + }, + } </script> <style scoped> - +.v-data-table /deep/ .sticky-header { + position: sticky; + top: 0; +} </style> \ No newline at end of file diff --git a/src/models/event.js b/src/models/event.js index aca80d1a53c8d64e17b5f39c756204ea6c160161..299d37e4b6608f3a74b5a7854c05e90369194f69 100644 --- a/src/models/event.js +++ b/src/models/event.js @@ -1,6 +1,7 @@ export default class Event { - constructor(title, description, startTime, endTime) { + constructor(id, title, description, startTime, endTime) { + this.id = id; this.title = title; this.description = description; this.startTime = startTime; diff --git a/src/services/event.service.js b/src/services/event.service.js index bd79668d502c2484798e50034b90a8c6e37dc071..ebf6750e64440309b644a2f274075d6e1b5c271e 100644 --- a/src/services/event.service.js +++ b/src/services/event.service.js @@ -29,6 +29,16 @@ class EventService { }); } + delete(id) { + return axios + .get(API_URL + 'deleteEvent/'+id, { + headers: authHeader() + }) + .then(response => { + return response.data; + }); + } + } diff --git a/src/store/event.module.js b/src/store/event.module.js index 775225dd399769d935e644ef24edb4a423a32c10..785541ecd600e9477c36f43578659d272d7e5a8d 100644 --- a/src/store/event.module.js +++ b/src/store/event.module.js @@ -34,6 +34,20 @@ export const event = { ); }, + + delete({ commit }, id) { + return EventService.delete(id).then( + response => { + commit('insertSuccess', response); + return Promise.resolve(response); + }, + error => { + commit('insertFailure'); + return Promise.reject(error); + } + ); + }, + }, mutations: { diff --git a/src/store/teacher.module.js b/src/store/teacher.module.js index fea7f1d83780bcc4f7659b7f9ef77ea1a43b7d05..24d890a940e4c3f5465095e59d26e5b6669aa634 100644 --- a/src/store/teacher.module.js +++ b/src/store/teacher.module.js @@ -1,5 +1,4 @@ import TeacherService from '../services/teacher.service'; -import CourseService from "@/services/course.service"; const initialState = null;