diff --git a/package-lock.json b/package-lock.json index 1735cdc14e675c6d8d0e0f0ca39df34ce0767357..b35cdfd038c36ad4d040a2958c6c456daa338c9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1806,7 +1806,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2221,7 +2222,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2277,6 +2279,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2320,12 +2323,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } } @@ -12953,6 +12958,11 @@ "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", "dev": true }, + "vuetify": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.5.0.tgz", + "integrity": "sha512-I2bITwvtkfbUf2hfrKo3Uta4egpv5KzEcKR1czgdyjZdA1nlo96XV2EDu0XetLl6p+AjhOqwlZWbLSezy9ZZmQ==" + }, "ware": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", @@ -13216,7 +13226,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -13425,12 +13436,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -13449,6 +13462,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -13684,6 +13698,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -13727,7 +13742,8 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", @@ -14296,7 +14312,6 @@ "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14311,8 +14326,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", @@ -14323,8 +14337,7 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -14441,8 +14454,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -14454,7 +14466,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -14469,7 +14480,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -14581,8 +14591,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -14715,7 +14724,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/package.json b/package.json index e3d75ba4e636f50eccc143dbefd4176cb17a03c2..548a6d9967670bdc09d43a2e983241fe139ec49f 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "bootstrap-material-datetimepicker": "^2.7.3", "bootstrap-material-design": "^4.1.1", "material-design-icons": "^3.0.1", - "node-sass": "^4.11.0" + "node-sass": "^4.11.0", + "papaparse": "^4.6.3", + "vuetify": "^1.5.0" } } diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js index 7d5f6ea5f0ef134a0ce065f49e3542a27772ab98..da16f22818600f952c2278e02c67f203b8faa38c 100644 --- a/resources/assets/js/app.js +++ b/resources/assets/js/app.js @@ -7,10 +7,11 @@ require('./bootstrap'); require('material-design-icons'); -require('papaparse'); require('./bulk_upload'); +import Vuetify from 'vuetify'; window.Vue = require('vue'); +window.Vue.use(Vuetify); /** * Next, we will create a fresh Vue application instance and attach it to diff --git a/resources/assets/js/bulk_upload.js b/resources/assets/js/bulk_upload.js index b3cf093ff57f06b0c3942f041c655c58d8d76029..15998826e357e3a509be96b4434b714c428e26e9 100644 --- a/resources/assets/js/bulk_upload.js +++ b/resources/assets/js/bulk_upload.js @@ -3,22 +3,15 @@ var input = document.querySelector('#csv-file'); const Papa = require('papaparse'); -form.addEventListener('submit', function(e) { - if(input.files.length) { - console.log(input.files[0]); - Papa.parse(input.files[0], { - complete: function(results) { - console.log(results); - } - }); - // var xhttp = new XMLHttpRequest(); - // xhttp.onreadystatechange = function() { - // if(this.readyState === 4 && this.status === 200) { - // console.log(this.responseText); - // } - // } - // xhttp.open('POST', 'http://localhost:8000/register'); - // xhttp.send(input.files[0]); - } - // e.preventDefault(); -}); \ No newline at end of file +if(form) { + form.addEventListener('submit', function(e) { + if(input.files.length) { + console.log(input.files[0]); + Papa.parse(input.files[0], { + complete: function(results) { + console.log(results); + } + }); + } + }); +} \ No newline at end of file diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss index 5ddc7283bdf73e77af14502cc0d33b4b27746d4e..c3d21290ab34578171b6b530bb5cff5ee56465c6 100644 --- a/resources/assets/sass/app.scss +++ b/resources/assets/sass/app.scss @@ -8,6 +8,9 @@ // Bootstrap @import '~bootstrap/scss/bootstrap'; +// Vuetify +@import '~vuetify/dist/vuetify.min.css'; + @import "component/mahasiswa"; @import "component/mahasiswa-control"; @import "component/rekap"; diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 6dca3c714712349288e14cc86618046d0390034c..7b099001e8ffd58a09832fbe4e590c8dd06fbf9b 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -90,7 +90,10 @@ } </script> <script src="{{ asset('js/app.js') }}"></script> - <!-- <script src="{{ asset('js/bulk_upload.js') }}"></script> --> + <script + src="https://code.jquery.com/jquery-3.3.1.min.js" + integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" + crossorigin="anonymous"></script> @yield('bottomjs') </body> </html> diff --git a/resources/views/mahasiswa/form_pengajuan_topik.blade.php b/resources/views/mahasiswa/form_pengajuan_topik.blade.php index 06c04484c2fc4f2e7e05afe2cede1ed4b6d910cb..b2fea4bb79e8c2921b9b78ece93ab81d982505d3 100644 --- a/resources/views/mahasiswa/form_pengajuan_topik.blade.php +++ b/resources/views/mahasiswa/form_pengajuan_topik.blade.php @@ -6,45 +6,45 @@ <h2 class="text-center">Formulir Pengajuan Topik Tesis</h2> <br> <div id="form-app"> - <form action="" method="post" id="form-pengajuan" > - {{csrf_field()}} - <input type="hidden" v-model="JSON.stringify(topics)" class="form-control" name="topics"> - <div v-for="(n, i) in count"> - <div class="form-group"> - <h3 class="row align-items-center">Prioritas @{{i+1}} <sup v-if="i==0">*</sup></h3> - <input type="hidden" v-model="topics[i].prioritas = i"> - <div class="form-group row col-md-12"> - <label for="judul" class="col-md-4 col-form-label text-md-right text-center">Judul Topik Tesis <sup>*</sup></label> - <input type="text" v-model="topics[i].judul" id="judul" class="form-control col-md-8 " required> + <form action="" method="post" id="form-pengajuan" > + {{csrf_field()}} + <input type="hidden" v-model="JSON.stringify(topics)" class="form-control" name="topics"> + <div v-for="(n, i) in count"> + <div class="form-group"> + <h3 class="row align-items-center">Prioritas @{{i+1}} <sup v-if="i==0">*</sup></h3> + <input type="hidden" v-model="topics[i].prioritas = i"> + <div class="form-group row col-md-12"> + <label for="judul" class="col-md-4 col-form-label text-md-right text-center">Judul Topik Tesis <sup>*</sup></label> + <input type="text" v-model="topics[i].judul" id="judul" class="form-control col-md-8 " required> + </div> + <div class="form-group row col-md-12"> + <label for="keilmuan" class="col-md-4 col-form-label text-md-right text-center ">Opsi <sup>*</sup></label> + <input type="text" id="keilmuan" v-model="topics[i].keilmuan" class="form-control col-md-8 " required> + </div> + <div class="form-group row col-md-12"> + <label for="cdb1" class="col-md-4 col-form-label text-md-right text-center ">Calon Dosen Pembimbing 1<sup>*</sup></label> + <select type="text" id="cdb1" class="form-control col-md-8" v-model="topics[i].calon_pembimbing1" name="calon_pembimbing1" required> + <option value="" disabled>Pilih Dosen</option> + @foreach($list_pembimbing1 as $item) + @php($user_item = $item->user) + <option value="{{$user_item->id}}">{{$user_item->name}}</option> + @endforeach + </select> + </div> + <div class="form-group row col-md-12"> + <label for="cdb2" class="col-md-4 col-form-label text-md-right text-center ">Calon Dosen Pembimbing 2</label> + <select type="text" id="cdb2" class="form-control col-md-8" name="calon_pemimbing2" v-model="topics[i].calon_pembimbing2" > + <option value="" disabled>Pilih Dosen</option> + <option value=""></option> + @foreach($list_pembimbing2 as $item) + @php($user_item = $item->user) + <option value="{{$user_item->id}}">{{$user_item->name}}</option> + @endforeach + </select> </div> - <div class="form-group row col-md-12"> - <label for="keilmuan" class="col-md-4 col-form-label text-md-right text-center ">Opsi <sup>*</sup></label> - <input type="text" id="keilmuan" v-model="topics[i].keilmuan" class="form-control col-md-8 " required> - </div> - <div class="form-group row col-md-12"> - <label for="cdb1" class="col-md-4 col-form-label text-md-right text-center ">Calon Dosen Pembimbing 1<sup>*</sup></label> - <select type="text" id="cdb1" class="form-control col-md-8" v-model="topics[i].calon_pembimbing1" name="calon_pembimbing1" required> - <option value="" disabled>Pilih Dosen</option> - @foreach($list_pembimbing1 as $item) - @php($user_item = $item->user) - <option value="{{$user_item->id}}">{{$user_item->name}}</option> - @endforeach - </select> - </div> - <div class="form-group row col-md-12"> - <label for="cdb2" class="col-md-4 col-form-label text-md-right text-center ">Calon Dosen Pembimbing 2</label> - <select type="text" id="cdb2" class="form-control col-md-8" name="calon_pemimbing2" v-model="topics[i].calon_pembimbing2" > - <option value="" disabled>Pilih Dosen</option> - <option value=""></option> - @foreach($list_pembimbing2 as $item) - @php($user_item = $item->user) - <option value="{{$user_item->id}}">{{$user_item->name}}</option> - @endforeach - </select> </div> </div> - </div> - </form> + </form> <span><sup>*</sup>Wajib diisi</span> <div class="row mt-4 mb-4 justify-content-center"> <button class=" justify-content-center mr-1 align-items-center btn-red btn display-flex cursor-pointer" v-on:click="decrement" v-if="count>1"> diff --git a/resources/views/manajer/detail_mahasiswa_control.blade.php b/resources/views/manajer/detail_mahasiswa_control.blade.php index 3db9c117ccf743e14ca02abc671be3363fe71edb..3b0445aaef82275b6a69b801d810a3f98504e641 100644 --- a/resources/views/manajer/detail_mahasiswa_control.blade.php +++ b/resources/views/manajer/detail_mahasiswa_control.blade.php @@ -12,7 +12,15 @@ @if($tesis) @php($sidangTesis = $tesis->sidangTesis()) @endif - <div class="container detail-mahasiswa-control-page"> + <style> + .v-picker__title { + background-color: #007bff; + } + .v-menu__content { + left: 0!important; + } + </style> + <div class="container detail-mahasiswa-control-page" id="control"> <div class="row"> <div class="col-md-4"> <div class="status-table"> @@ -163,17 +171,34 @@ <form action="{{route('seminartopik-penetapan')}}" method="post"> {{csrf_field()}} <input type="hidden" name="mahasiswa" value="{{$mahasiswa->id}}"> - <div class="row justify-content-center"> + <div class="row justify-content-center" style="display: flex; flex-direction: row"> <div> - <input type="datetime-local" class="form-control" name="date" + <input type="datetime-local" class="form-control" name="date" id="inputdate" + hidden @if($seminarTopik) value="{{date("Y-m-d\TH:i:s", strtotime($seminarTopik->schedule))}}" @endif > + <button + type="button" + class="btn btn-blue ml-4" + @click="alert = !alert" + > + Masukan waktu dan tanggal + </button> + <button class="btn btn-blue ml-4" v-on:click="showdate" type="submit"> + Tetapkan + </button> </div> - <button class="btn btn-blue ml-4"> - Tetapkan - </button> + <v-alert + :value="alert" + transition="scale-transition" + > + <div style="display: flex; flex-direction: row"> + <v-date-picker v-model="datePicker"></v-date-picker> + <v-time-picker v-model="timePicker"></v-time-picker> + </div> + </v-alert> </div> </form> @if($mahasiswa->status >= \App\Mahasiswa::STATUS_SIAP_SEMINAR_TOPIK) @@ -487,12 +512,30 @@ <div class="form-group row mt-2"> <label for="name" class="col-md-4 col-form-label text-md-right">Jadwal Seminar Proposal</label> <div class="col-md-6"> - <input type="datetime-local" class="form-control" name="date" + <input type="datetime-local" class="form-control" name="date" id="inputdate" + hidden @if($seminarProposal) value="{{date("Y-m-d\TH:i:s", strtotime($seminarProposal->schedule))}}" @endif > + <button + type="button" + style="margin-left: 0!important" + class="btn btn-blue ml-4" + @click="alert = !alert" + > + Masukan waktu dan tanggal + </button> </div> + <v-alert + :value="alert" + transition="scale-transition" + > + <div style="display: flex; flex-direction: row"> + <v-date-picker v-model="datePicker"></v-date-picker> + <v-time-picker v-model="timePicker"></v-time-picker> + </div> + </v-alert> </div> <div class="form-group row mt-2"> <label for="name" class="col-md-4 col-form-label text-md-right">Dosen Pembimbing 1</label> @@ -586,7 +629,7 @@ </div> <div class="row justify-content-center"> - <button class="btn btn-blue ml-4"> + <button class="btn btn-blue ml-4" v-on:click="showdate" type="submit"> Tetapkan </button> </div> @@ -1747,11 +1790,14 @@ @section('bottomjs') <script> var penilaian = new Vue({ - el: "#penilaian-seminar-proposal", + el: "#control", data: { pembimbing: @if($seminarProposal && $seminarProposal->mark_dosen_pembimbing) '{{$seminarProposal->mark_dosen_pembimbing}}' @else 'B' @endif, penguji: @if($seminarProposal && $seminarProposal->mark_dosen_penguji) '{{$seminarProposal->mark_dosen_penguji}}' @else 'B' @endif, - akhir: @if($seminarProposal && $seminarProposal->score) '{{$seminarProposal->score}}' @else 'A' @endif + akhir: @if($seminarProposal && $seminarProposal->score) '{{$seminarProposal->score}}' @else 'A' @endif, + datePicker: '', + timePicker: '', + alert: false, }, methods: { recalculate: function() { @@ -1768,6 +1814,10 @@ this.akhir = 'C'; else this.akhir = 'E'; + }, + showdate: function() { + let time = `${this.datePicker}T${this.timePicker}`; + document.getElementById('inputdate').value = time; } }