diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 379891d77af5e42cb26be36a8b8683cc5c71dbe0..32077b1660a4d485a11221d21a7042a6323d5651 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -13,6 +13,9 @@ use App\Kinerja; use App\UnitKerja; use App\Posisi; use App\KelompokKompetensi; +use App\RekomendasiPosisi; +use App\RekomendasiTraining; +use App\Training; class ProfileController extends APIBaseController { @@ -26,8 +29,10 @@ class ProfileController extends APIBaseController $unit_kerja = UnitKerja::all(); $posisi = Posisi::all(); $kelompok_kompetensi = KelompokKompetensi::all(); + $rekomendasi_training = RekomendasiTraining::where('id_pegawai', Auth::user()->id)->get(); + $training_list = Training::all(); - return view("profile.index", compact('data_kinerja', 'unit_kerja', 'posisi', 'kelompok_kompetensi')); + return view("profile.index", compact('data_kinerja', 'unit_kerja', 'posisi', 'kelompok_kompetensi', 'rekomendasi_training', 'training_list')); } private function authenticate($role){ diff --git a/resources/assets/js/components/ProfilPegawai.vue b/resources/assets/js/components/ProfilPegawai.vue index 1664384d133c1a28c14e50507455320ac68e5b96..dc7e4d41a8e79c5ab0581233a741bf0c8e36a3fe 100644 --- a/resources/assets/js/components/ProfilPegawai.vue +++ b/resources/assets/js/components/ProfilPegawai.vue @@ -689,7 +689,9 @@ <div class="card" id="data-kompetensi"> <div class="card-header"> - Hasil Kompetensi + Hasil Kompetensi<button class="btn btn-primary float-sm-right" v-on:click="editDataKompetensi" v-bind:disabled="disableEdit"> + Edit <i class="fas fa-edit"></i> + </button> </div> <div class="card-body"> @@ -705,7 +707,9 @@ <div class="card" id="rekomendasi"> <div class="card-header"> - Rekomendasi + Rekomendasi<button class="btn btn-primary float-sm-right" v-on:click="editRekomendasi" v-bind:disabled="disableEdit"> + Edit <i class="fas fa-edit"></i> + </button> </div> <div class="card-body"> @@ -713,33 +717,34 @@ <h5>Rekomendasi Training</h5> - <div v-if="rekomendasiTraining.length === 0" class="no-rekomendasi-trainiing"> + <hr> + + <div v-if="rekomendasiTraining.length === 0" class="no-rekomendasi-training"> <hr> - Belum dimtambahkan. + Belum ditambahkan. <br> </div> - <div v-if="rekomendasiTraining.length !== 0" class="rekomendasi-trainiing"> - <table class="table"> - <thead> - <tr> - <th scope="col">Nama Training</th> - <th scope="col">Penyelenggara</th> - <th scope="col">Bidang</th> - </tr> - </thead> - <tbody v-for="rp in rekomendasiTraining"> - <tr> - <td v-text="rp.namaTraining" ></td> - <td v-text="rp.penyelenggara" ></td> - <td v-text="rp.bidang" ></td> - </tr> - </tbody> - </table> + <div v-if="rekomendasiTraining.length !== 0" v-for="rt in rekomendasiTraining" class="rekomendasi-training"> + <ul v-if="!isEditRekomendasi"> + <li v-text="trainingList.find(x => x.id_training == rt.id_training).nama_training"></li> + </ul> + + <div v-if="isEditRekomendasi" class="form-group"> + <select class="form-control" v-model="rt.id_training"> + <option v-for="tl in trainingList" v-bind:value="tl.id_training"> + {{ tl.nama_training }} + </option> + </select> + <small class="form-text text-muted">*Wajib diisi</small> + </div> </div> + <button v-if="isEditRekomendasi" class="btn btn-primary float-sm-left" v-on:click="addRekomendasiTraining"> + Tambah <i class="fas fa-plus"></i> + </button> - <br><br> + <br><br><br> <h5>Rekomendasi Lain-lain</h5> @@ -758,7 +763,7 @@ <script> export default { - props: ['id', 'unit-kerja', 'posisi', 'kelompok-kompetensi', 'data-kinerja-temp'], + props: ['id', 'unit-kerja', 'posisi', 'kelompok-kompetensi', 'data-kinerja-temp', 'rekomendasi-training-temp', 'training-list', 'rekomendasi-posisi-temp'], data() { return { @@ -784,7 +789,6 @@ dataKinerja: [ {tahun : 2010, semester:1, nilai:2.50, catatan:"ini catatan"} ], - rekomendasiTraining : [], sertifikatCounter : 0, @@ -795,12 +799,15 @@ isEditRiwayat: false, isEditSertifikat: false, isEditDataKinerja: false, + isEditRekomendasi: false, cachedPegawai: null, cachedDataKepegawaian: null, cachedRiwayatPendidikan: null, cachedRiwayatPekerjaan: null, cachedSertifikat: null, cachedDataKinerja: null, + cachedRekomendasiTraining: null, + cachedRekomendasiPosisi:null, pegawai: { imageProfileUrl: null, nama: null, @@ -826,7 +833,9 @@ riwayatPendidikan: [], riwayatPekerjaan: [], dataKinerja: [], - dataKinerjaShow: [] + dataKinerjaShow: [], + rekomendasiTraining : [], + rekomendasiPosisi : [] } }, @@ -880,13 +889,20 @@ //caching others this.cachedDataKinerja = JSON.parse(JSON.stringify(this.dataKinerja)); - // dataKinerjaShow + // init dataKinerjaShow if (this.dataKinerja.length > 6) { this.dataKinerjaShow = this.dataKinerja.slice(this.dataKinerja.length-6); } else { this.dataKinerjaShow = this.dataKinerja; } - + + //init rekomendasiTraining + this.rekomendasiTraining = this.rekomendasiTrainingTemp; + this.cachedRekomendasiTraining = JSON.parse(JSON.stringify(this.rekomendasiTraining)); + + //init rekomendasiPosisi + this.rekomendasiPosisi = this.rekomendasiPosisiTemp; + this.cachedRekomendasiPosisi = JSON.parse(JSON.stringify(this.rekomendasiPosisi)); }, methods: { @@ -1022,6 +1038,15 @@ this.disableEditButton(); }, + editDataKompetensi() { + + }, + + editRekomendasi() { + this.isEditRekomendasi = true; + this.disableEditButton(); + }, + addDataKepegawaian() { var newData = { id_data_kepegawaian : null, @@ -1078,6 +1103,25 @@ this.dataKinerja.push(newData); }, + addRekomendasiTraining() { + var newData = { + id_rekomendasi_training : null, + id_pegawai : null, + id_training : null + }; + this.rekomendasiTraining.push(newData); + }, + + addRekomendasiPosisi() { + var newData = { + id_rekomendasi_training : null, + id_pegawai : null, + id_unit_kerja : null, + id_posisi : null + }; + this.rekomendasiPosisi.push(newData); + }, + delDataKepegawaian(event) { var targetIndex = event.currentTarget.id; this.dataKepegawaian.splice(targetIndex, 1); @@ -1104,6 +1148,16 @@ this.dataKinerja.splice(targetIndex, 1); }, + delRekomendasiTraining(event) { + var targetIndex = event.currentTarget.id; + this.rekomendasiTraining.splice(targetIndex, 1); + }, + + delRekomendasiPosisi(event) { + var targetIndex = event.currentTarget.id; + this.rekomendasiPosisi.splice(targetIndex, 1); + }, + saveProfilPegawai() { this.enableEditButton(); @@ -1240,6 +1294,13 @@ } }, + saveRekomendasi() { + this.enableEditButton(); + this.cachedRekomendasiTraining = JSON.parse(JSON.stringify(this.rekomendasiTraining)); + this.cachedRekomendasiPosisi = JSON.parse(JSON.stringify(this.rekomendasiPosisi)); + this.isEditRekomendasi = false; + }, + cancelProfilPegawai() { this.enableEditButton(); this.pegawai = JSON.parse(JSON.stringify(this.cachedPegawai)); @@ -1277,6 +1338,13 @@ } }, + cancelRekomendasi() { + this.enableEditButton(); + this.rekomendasiTraining = JSON.parse(JSON.stringify(this.cachedRekomendasiTraining)); + this.rekomendasiPosisi = JSON.parse(JSON.stringify(this.cachedRekomendasiPosisi)); + this.isEditRekomendasi = false; + }, + FileChangeProfile(e) { let files = e.target.files || e.dataTransfer.files; if (!files.length) diff --git a/resources/assets/js/profile.js b/resources/assets/js/profile.js index 381635bdd1f7ce66bf630500aeff26949d9627b0..aeefde9ffcbf28646c4232ea2f8e396555b64029 100644 --- a/resources/assets/js/profile.js +++ b/resources/assets/js/profile.js @@ -10,141 +10,6 @@ new Vue({ el: '#profile-page', components: { 'profil-pegawai': require('./components/ProfilPegawai.vue'), - }, - data: { - isEditKepegawaian: false, - isEditProfile: false, - isEditRiwayat: false, - cachedUser: null, - cachedDataKepegawaian: null, - cachedRiwayatPendidikan: null, - cachedRiwayatPekerjaan: null, - user: { - imageProfileUrl: "https://i.pinimg.com/236x/34/ba/c1/34bac13dd65ab3b81267f727e5633549--patrick-dempsey-handsome-man.jpg", - nama: "Joko Susilo", - tempatLahir: "Medan", - tanggalLahir: "17 Agustus 1981", - email: "joko.susilo@gmail.com", - nopeg: "12340009876", - unitKerja: "Fakultas FMIPA", - posisi: "Kepala Bidang Kemahasiswaan", - kompetensi: "Administrasi", - tahunMasuk: "2010", - tahunKeluar: "2020" - }, - dataKepegawaian: [ - { - unitKerja: "Fakultas FMIPA", - posisi: "Tenaga Pendidik", - kompetensi: "Teknikal", - tahunMasuk: "2013", - tahunKeluar: "2017" - } - ], - riwayatPendidikan: [ - { - tingkatPendidikan: "S1", - namaInstitusi: "ITB", - jurusan: "Teknik Sipil", - tahunMasuk: "2000", - tahunKeluar: "2005" - }, - { - tingkatPendidikan: "S2", - namaInstitusi: "ITB", - jurusan: "Teknik Sipil", - tahunMasuk: "2006", - tahunKeluar: "2008" - } - ], - riwayatPekerjaan: [ - { - namaInstitusi: "PT TIMBUL TENGGELAM", - posisi: "Engineer", - tahunMasuk: "2008", - tahunKeluar: "2013" - }, - { - namaInstitusi: "FMIPA ITB", - posisi: "Tenaga Pendidik", - tahunMasuk: "2013", - tahunKeluar: "2017" - } - ], - rekomendasiTraining: [ - { - namaTraining: "Emotional Training", - penyelenggara: "PMO", - bidang: "Psikologi" - } - ] - - }, - mounted() { - - this.cachedUser = Object.assign({}, this.user); - this.cachedDataKepegawaian = Object.assign({}, this.dataKepegawaian); - this.cachedRiwayatPendidikan = Object.assign({}, this.riwayatPendidikan); - this.cachedRiwayatPekerjaan = Object.assign({}, this.riwayatPekerjaan); - }, - methods: { - editProfilPegawai() { - this.isEditProfile = true; - }, - - editDataKepegawaian() { - this.isEditKepegawaian = true; - }, - - editRiwayatPegawai() { - this.isEditRiwayat = true; - }, - - saveProfilPegawai() { - this.cachedUser = Object.assign({}, this.user); - this.isEditProfile = false; - - axios.patch('/api/pegawai/4', { - name: this.user.nama, - email: this.user.email, - password: '1234', - nip: this.user.nopeg - }) - .then(function (response) { - alert(response); - }) - .catch(function (error) { - alert(error); - }); - - }, - - saveDataKepegawaian() { - this.cachedDataKepegawaian = Object.assign({}, this.dataKepegawaian); - this.isEditKepegawaian = false; - }, - - saveRiwayatPegawai() { - this.cachedRiwayatPendidikan = Object.assign({}, this.riwayatPendidikan); - this.cachedRiwayatPekerjaan = Object.assign({}, this.riwayatPekerjaan); - this.isEditRiwayat = false; - }, - - cancelProfilPegawai() { - this.user = Object.assign({}, this.cachedUser); - this.isEditProfile = false; - }, - - cancelDataKepegawaian() { - this.dataKepegawaian = Object.assign({}, this.cachedDataKepegawaian); - this.isEditKepegawaian = false; - }, - - cancelRiwayatPegawai() { - this.riwayatPendidikan = Object.assign({}, this.cachedRiwayatPendidikan); - this.riwayatPekerjaan = Object.assign({}, this.cachedRiwayatPekerjaan); - this.isEditRiwayat = false; - }, } }); \ No newline at end of file diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index 5f508b1835afe1f0304ba8ed6a09d5fbe32917a4..70eb901f11606435c9813157cdff7c100bed3751 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -10,64 +10,10 @@ :unit-kerja="{{ $unit_kerja }}" :posisi="{{ $posisi }}" :kelompok-kompetensi="{{ $kelompok_kompetensi }}" + :rekomendasi-training-temp="{{ $rekomendasi_training }}" + :training-list="{{ $training_list }}" ></profil-pegawai> <br> - - {{-- - - <br> - - <div class="card"> - <div class="card-header"> - Rekomendasi - </div> - - <div class="card-body"> - <div class="container"> - - <h5>Rekomendasi Training</h5> - - <div v-if="rekomendasiTraining.length === 0" class="no-rekomendasi-trainiing"> - <hr> - Belum dimtambahkan. - <br> - </div> - - <div v-if="rekomendasiTraining.length !== 0" class="rekomendasi-trainiing"> - <table class="table"> - <thead> - <tr> - <th scope="col">Nama Training</th> - <th scope="col">Penyelenggara</th> - <th scope="col">Bidang</th> - </tr> - </thead> - <tbody v-for="rp in rekomendasiTraining"> - <tr> - <td v-text="rp.namaTraining" ></td> - <td v-text="rp.penyelenggara" ></td> - <td v-text="rp.bidang" ></td> - </tr> - </tbody> - </table> - - </div> - - <br><br> - - - <h5>Rekomendasi Posisi</h5> - - <hr> - - Tidak ada. - - </div> - </div> - </div> --}} - - <br> - @endsection \ No newline at end of file