diff --git a/app/Http/Controllers/.fuse_hidden00000c2b00000001 b/app/Http/Controllers/.fuse_hidden00000c2b00000001 deleted file mode 100644 index 336ffe581903dd28b90b7cdeee3358a69d5f1fb0..0000000000000000000000000000000000000000 --- a/app/Http/Controllers/.fuse_hidden00000c2b00000001 +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -namespace App\Http\Controllers; - -use Illuminate\Http\Request; -use App\Http\Controllers\APIBaseController as APIBaseController; -use App\Sertifikat; -use App\Pegawai; -use Carbon\Carbon; -use Intervention\Image\ImageManagerStatic as Image; - -class SertifikatController extends APIBaseController -{ - - public function index(){ - $sertifikat = Sertifikat::all(); - return $this->sendResponse($sertifikat, 'Sertifikat created successfully.'); - } - - public function update(Request $request, $id){ - // if (!$this->authenticate(4)) {return $this->sendError('You are not authenticated.');} - - $input = $request->all(); - - $pegawai = Pegawai::find($id); - $sertifikat = Sertifikat::where('id_pegawai', $id); - - if ($sertifikat->count() > 0) { - $sertifikat->delete(); - } - - for ($i = 0; $i < count($input['sertifikat']); $i++) { - $imageData = $input['sertifikat'][$i]['nama_file']; - - if(explode("/", $imageData)[0] === "data:image"){ - $fileName = $pegawai->nip . '_' . $i . '.' . explode('/', explode(':', substr($imageData, 0, strpos($imageData, ';')))[1])[1]; - $image = Image::make($imageData); - $image->save(public_path('sertifikat/').$fileName); - }else{ - $fileName = explode("/", $imageData)[1]; - } - - $postSertifikat = Sertifikat::create([ - 'id_pegawai' => $id, - 'nama_file' => $fileName, - 'judul' => $input['sertifikat'][$i]['judul'], - 'lembaga' => $input['sertifikat'][$i]['lembaga'], - 'tahun_diterbitkan' => $input['sertifikat'][$i]['tahun_diterbitkan'], - 'catatan' => $input['sertifikat'][$i]['catatan'], - ]); - } - - return $this->sendResponse($input, 'Sertifikat created successfully.'); - } -} diff --git a/app/Http/Controllers/DataKinerjaController.php b/app/Http/Controllers/DataKinerjaController.php index 673be17afebbf3b3577604755de12f929778a415..1be2a88f85c7d12be694b33dea160805f79add32 100644 --- a/app/Http/Controllers/DataKinerjaController.php +++ b/app/Http/Controllers/DataKinerjaController.php @@ -204,7 +204,9 @@ class DataKinerjaController extends APIBaseController if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") { // Load data from Excel file $path = $request->excel->getRealPath(); - $objs = Excel::load($path, null)->get(); + $objs = Excel::load($path, function ($reader) { + $reader->ignoreEmpty(); + })->get(); // Parse data if (!empty($objs) && $objs->count()) { diff --git a/app/Http/Controllers/DataKompetensiController.php b/app/Http/Controllers/DataKompetensiController.php index 60fa9427855a8485e53ccf3a40c82cf4e3da24e7..52bdcfaf435d21d106b3096eae1b7ae48565ae3b 100644 --- a/app/Http/Controllers/DataKompetensiController.php +++ b/app/Http/Controllers/DataKompetensiController.php @@ -373,7 +373,9 @@ class DataKompetensiController extends APIBaseController if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") { // Load data from Excel file $path = $request->excel->getRealPath(); - $objs = Excel::load($path, null)->get(); + $objs = Excel::load($path, function ($reader) { + $reader->ignoreEmpty(); + })->get(); // Parse data if (!empty($objs) && $objs->count()) { diff --git a/app/Http/Controllers/DataPegawaiController.php b/app/Http/Controllers/DataPegawaiController.php index 3a106e4142389311efb5b2e2eee4445ef170421c..cf4215a90b6e2e9fe06428485e61e7461cfc5161 100644 --- a/app/Http/Controllers/DataPegawaiController.php +++ b/app/Http/Controllers/DataPegawaiController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers; use App\DenormalizedPegawai; use Illuminate\Http\Request; +use App\Http\Controllers\APIBaseController as APIBaseController; +use App\DataKepegawaian; class DataPegawaiController extends APIBaseController { @@ -70,7 +72,7 @@ class DataPegawaiController extends APIBaseController */ public function update(Request $request, $id) { - // + } /** diff --git a/app/Http/Controllers/KepegawaianController.php b/app/Http/Controllers/KepegawaianController.php new file mode 100644 index 0000000000000000000000000000000000000000..904ba1e45b58e7ec61d8fba93f3019a6eabc7995 --- /dev/null +++ b/app/Http/Controllers/KepegawaianController.php @@ -0,0 +1,50 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use App\Http\Controllers\APIBaseController as APIBaseController; +use App\DataKepegawaian; +use App\Pegawai; + +class KepegawaianController extends APIBaseController +{ + public function update(Request $request, $id) + { + $input = $request->all(); + + $list = array(); + + for ($i = 0; $i < count($input['kepegawaian']); $i++) { + + $kepegawaian = DataKepegawaian::find($input['kepegawaian'][$i]['id_data_kepegawaian']); + + if(is_null($kepegawaian)){ + $postDataKepegawaian = DataKepegawaian::create([ + 'id_pegawai' => $id, + 'id_posisi' => $input['kepegawaian'][$i]['id_posisi'], + 'id_unit_kerja' => $input['kepegawaian'][$i]['id_unit_kerja'], + 'tahun_masuk' => $input['kepegawaian'][$i]['tahun_masuk'], + 'tahun_keluar' => $input['kepegawaian'][$i]['tahun_keluar'], + ]); + array_push($list, $postDataKepegawaian->id_data_kepegawaian); + }else{ + $kepegawaian->id_pegawai = $input['kepegawaian'][$i]['id_pegawai']; + $kepegawaian->id_posisi = $input['kepegawaian'][$i]['id_posisi']; + $kepegawaian->id_unit_kerja = $input['kepegawaian'][$i]['id_unit_kerja']; + $kepegawaian->tahun_masuk = $input['kepegawaian'][$i]['tahun_masuk']; + $kepegawaian->tahun_keluar = $input['kepegawaian'][$i]['tahun_keluar']; + + $kepegawaian->save(); + array_push($list, $input['kepegawaian'][$i]['id_data_kepegawaian']); + } + + } + + $data = DataKepegawaian::where('id_pegawai',$id)->whereNotIn('id_data_kepegawaian', $list); + $data->delete(); + + return $this->sendResponse($input, 'Kepegawaian updated successfully.'); + + } +} diff --git a/app/Http/Controllers/Pegawai/PegawaiAPIController.php b/app/Http/Controllers/Pegawai/PegawaiAPIController.php index 205905f7b15d44bc684cfe421fc01d93be6987ff..4ae37729ac1df488c970267d0126dda3ef01aa15 100644 --- a/app/Http/Controllers/Pegawai/PegawaiAPIController.php +++ b/app/Http/Controllers/Pegawai/PegawaiAPIController.php @@ -2,16 +2,16 @@ namespace App\Http\Controllers\Pegawai; -use App\Admin; -use App\DataKepegawaian; -use App\DenormalizedPegawai; use App\Http\Controllers\APIBaseController as APIBaseController; +use App\User; use App\Pegawai; use App\PMO; +use App\Admin; +use App\DataKepegawaian; use App\RiwayatPekerjaan; use App\RiwayatPendidikan; use App\Sertifikat; -use App\User; +use App\DenormalizedPegawai; use Carbon\Carbon; use Excel; use Illuminate\Http\Request; @@ -19,6 +19,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Storage; +use Intervention\Image\ImageManagerStatic as Image; use Validator; @@ -143,104 +144,85 @@ class PegawaiAPIController extends APIBaseController public function update(Request $request, $id) { - if (!$this->authenticate(4)) { - return $this->sendError('You are not authenticated.'); - } - + // if (!$this->authenticate(4)) {return $this->sendError('You are not authenticated.');} $input = $request->all(); - $validator = Validator::make($input, [ - 'email' => 'required', - 'password' => 'required', - 'nama' => 'required', - 'nip' => 'required', - 'tempat_lahir' => 'required', - 'tanggal_lahir' => 'required', - 'id_pengubah' => 'required', - ]); + // return $this->sendResponse($input, 'Profile updated successfully.'); - if ($validator->fails()) { - return $this->sendError('Validation Error.', $validator->errors()); - } + // $validator = Validator::make($input['pegawai'], [ + // 'nama' => 'required', + // 'tempat_lahir' => 'required', + // 'tanggal_lahir' => 'required', + // 'email' => 'required', + // 'nopeg' => 'required', + // // 'password' => 'required', + // 'id_pengubah' => 'required', + // ]); - $pegawai = Pegawai::where('id_user', $id)->first(); + // if ($validator->fails()) { + // return $this->sendError('Validation Error.', $validator->errors()); + // } + + $pegawai = Pegawai::find($id); if (is_null($pegawai)) { return $this->sendError('Profile not found.'); } - $find = User::where('email', $input['email']); + $find = User::where('email', $input['pegawai']['email']); $user = User::find($id); - if ($find->count() != 0 && $find->first()->email != $user->email) { return $this->sendError('Email Already Exist'); } - $user->name = $input['nama']; - $user->email = $input['email']; - $user->password = Hash::make($input['password']); - $pegawai->nama = $input['nama']; - $pegawai->nip = $input['nip']; - $pegawai->tempat_lahir = $input['tempat_lahir']; - $pegawai->tanggal_lahir = $input['tanggal_lahir']; - $pegawai->id_pengubah = $input['id_pengubah']; - $pegawai->ekstensi_foto = $input['user_photo']->getClientOriginalExtension(); - $photoTimeAsName = $input['nip'].'.'.$input['user_photo']->getClientOriginalExtension(); - $input['user_photo']->move(public_path('profile'), $photoTimeAsName); - - - - $pendidikan = RiwayatPendidikan::where('id_pegawai', $id); - - if ($pendidikan->count() > 0) { - $pendidikan->delete(); + $user->name = $input['pegawai']['nama']; + $user->email = $input['pegawai']['email']; + // $user->password = Hash::make($input['password']); + $pegawai->nama = $input['pegawai']['nama']; + $pegawai->nip = $input['pegawai']['nopeg']; + $pegawai->tempat_lahir = $input['pegawai']['tempatLahir']; + $pegawai->tanggal_lahir = $input['pegawai']['tanggalLahir']; + // $pegawai->no_telp = $input['pegawai']['no_telp']; + $pegawai->no_telp = NULL; + $pegawai->id_kelompok_kompetensi = $input['pegawai']['kompetensi']['id']; + $pegawai->id_pengubah = Auth::user()->id; + + $imageData = $input['pegawai']['imageProfileUrl']; + + if(explode("/", $imageData)[0] === "data:image"){ + $extension = explode('/', explode(':', substr($imageData, 0, strpos($imageData, ';')))[1])[1]; + $fileName = $pegawai->nip . '.' . $extension; + $image = Image::make($imageData); + $image->save(public_path('profile/').$fileName); + }else{ + $extension = explode(".", $imageData)[1]; } - for ($i = 1; $i <= $input['pendidikan_counter']; $i++) { - $postRiwayatPendidikan = RiwayatPendidikan::create([ - 'id_pegawai' => $id, - 'nama_institusi' => $input['pendidikan_nama_institusi_' . $i], - 'strata' => $input['pendidikan_strata_' . $i], - 'jurusan' => $input['pendidikan_jurusan_' . $i], - 'tahun_masuk' => $input['pendidikan_tahun_masuk_' . $i], - 'tahun_keluar' => $input['pendidikan_tahun_keluar_' . $i], - ]); - } + $pegawai->ekstensi_foto = $extension; - $pekerjaan = RiwayatPekerjaan::where('id_pegawai', $id); - - if ($pekerjaan->count() > 0) { - $pekerjaan->delete(); - } - - for ($i = 1; $i <= $input['pekerjaan_counter']; $i++) { - $postRiwayatPekerjaan = RiwayatPekerjaan::create([ - 'id_pegawai' => $id, - 'nama_institusi' => $input['pekerjaan_nama_institusi_' . $i], - 'posisi' => $input['pekerjaan_posisi_' . $i], - 'tahun_masuk' => $input['pekerjaan_tahun_masuk_' . $i], - 'tahun_keluar' => $input['pekerjaan_tahun_keluar_' . $i], - ]); - } $kepegawaian = DataKepegawaian::where('id_pegawai', $id); - if ($kepegawaian->count() > 0) { - $kepegawaian->delete(); - } - - for ($i = 1; $i <= $input['kepegawaian_counter']; $i++) { + if($kepegawaian->count() === 0){ $postDataKepegawaian = DataKepegawaian::create([ 'id_pegawai' => $id, - 'kompetensi' => $input['kepegawaian_kompetensi_' . $i], - 'unit_kerja' => $input['kepegawaian_unit_kerja_' . $i], - 'posisi' => $input['kepegawaian_posisi_' . $i], - 'tahun_masuk' => $input['kepegawaian_tahun_masuk_' . $i], - 'tahun_keluar' => $input['kepegawaian_tahun_keluar_' . $i], + 'id_unit_kerja' => $input['data_kepegawaian'][0]['id_unit_kerja'], + 'id_posisi' => $input['data_kepegawaian'][0]['id_posisi'], + 'tahun_masuk' => $input['data_kepegawaian'][0]['tahun_masuk'], + 'tahun_keluar' => $input['data_kepegawaian'][0]['tahun_keluar'], ]); + }else{ + $count = count($input['data_kepegawaian']); + $kepegawaian_new = DataKepegawaian::find($input['data_kepegawaian'][$count-1]['id_data_kepegawaian']); + + $kepegawaian_new->id_unit_kerja = $input['data_kepegawaian'][$count-1]['id_unit_kerja']; + $kepegawaian_new->id_posisi = $input['data_kepegawaian'][$count-1]['id_posisi']; + $kepegawaian_new->tahun_masuk = $input['data_kepegawaian'][$count-1]['tahun_masuk']; + $kepegawaian_new->tahun_keluar = $input['data_kepegawaian'][$count-1]['tahun_keluar']; + $kepegawaian_new->save(); } $user->save(); @@ -249,8 +231,6 @@ class PegawaiAPIController extends APIBaseController $data = array_merge( $user->toArray(), $pegawai->toArray(), - $pendidikan->get()->toArray(), - $pekerjaan->get()->toArray(), $kepegawaian->get()->toArray() ); diff --git a/app/Http/Controllers/PendidikanPekerjaanController.php b/app/Http/Controllers/PendidikanPekerjaanController.php deleted file mode 100644 index d74cdcaf87c08beafb6de0a16f330265f621765d..0000000000000000000000000000000000000000 --- a/app/Http/Controllers/PendidikanPekerjaanController.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -namespace App\Http\Controllers; - -use Illuminate\Http\Request; - -class PendidikanPekerjaanController extends Controller -{ - // -} diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 379891d77af5e42cb26be36a8b8683cc5c71dbe0..73b917ba62dc977c8fa4455dd825f8b2cd39f3ec 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -13,21 +13,36 @@ 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 { public function index() { if(!$this->authenticate(4)){return redirect('/');} - $data_kinerja = Kinerja::where('id_pegawai', Auth::user()->id) + $id = Auth::user()->id; + + $data_kinerja = Kinerja::where('id_pegawai', $id) ->orderBy('tahun', 'ASC') ->orderBy('semester', 'ASC') ->get(); $unit_kerja = UnitKerja::all(); $posisi = Posisi::all(); $kelompok_kompetensi = KelompokKompetensi::all(); + $rekomendasi_training = RekomendasiTraining::where('id_pegawai', $id)->get(); + $training_list = Training::all(); + $rekomendasi_posisi = RekomendasiPosisi::where('id_pegawai', $id)->get(); + $id_pengubah = Pegawai::where('id_user', $id)->first()->id_pengubah; + if ($id_pengubah === $id) { + $nama_pengubah = "Anda"; + } else { + $nama_pengubah = User::where('id', $id_pengubah)->first()->name; + } + $last_edited = Pegawai::where('id_user', $id)->first()->updated_at; - return view("profile.index", compact('data_kinerja', 'unit_kerja', 'posisi', 'kelompok_kompetensi')); + return view("profile.index", compact('last_edited', 'nama_pengubah','data_kinerja', 'unit_kerja', 'posisi', 'kelompok_kompetensi', 'rekomendasi_training', 'training_list', 'rekomendasi_posisi')); } private function authenticate($role){ diff --git a/app/Http/Controllers/RiwayatController.php b/app/Http/Controllers/RiwayatController.php new file mode 100644 index 0000000000000000000000000000000000000000..f3368534578f29522438d35e318ce00c3ab9eff9 --- /dev/null +++ b/app/Http/Controllers/RiwayatController.php @@ -0,0 +1,82 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use App\Http\Controllers\APIBaseController as APIBaseController; +use App\RiwayatPekerjaan; +use App\RiwayatPendidikan; + +class RiwayatController extends APIBaseController +{ + public function update(Request $request, $id){ + + $input = $request->all(); + + $listPendidikan = array(); + + for ($i = 0; $i < count($input['pendidikan']); $i++) { + + $pendidikan = RiwayatPendidikan::find($input['pendidikan'][$i]['id_riwayat_pendidikan']); + + if(is_null($pendidikan)){ + $postPendidikan = RiwayatPendidikan::create([ + 'id_pegawai' => $id, + 'nama_institusi' => $input['pendidikan'][$i]['nama_institusi'], + 'strata' => $input['pendidikan'][$i]['strata'], + 'jurusan' => $input['pendidikan'][$i]['jurusan'], + 'tahun_masuk' => $input['pendidikan'][$i]['tahun_masuk'], + 'tahun_keluar' => $input['pendidikan'][$i]['tahun_keluar'], + ]); + array_push($listPendidikan, $postPendidikan->id_riwayat_pendidikan); + }else{ + $pendidikan->id_pegawai = $input['pendidikan'][$i]['id_pegawai']; + $pendidikan->nama_institusi = $input['pendidikan'][$i]['nama_institusi']; + $pendidikan->strata = $input['pendidikan'][$i]['strata']; + $pendidikan->jurusan = $input['pendidikan'][$i]['jurusan']; + $pendidikan->tahun_masuk = $input['pendidikan'][$i]['tahun_masuk']; + $pendidikan->tahun_keluar = $input['pendidikan'][$i]['tahun_keluar']; + + $pendidikan->save(); + array_push($listPendidikan, $input['pendidikan'][$i]['id_riwayat_pendidikan']); + } + + } + + $data = RiwayatPendidikan::where('id_pegawai',$id)->whereNotIn('id_riwayat_pendidikan', $listPendidikan); + $data->delete(); + + $listPekerjaan = array(); + + for ($i = 0; $i < count($input['pekerjaan']); $i++) { + + $pekerjaan = RiwayatPekerjaan::find($input['pekerjaan'][$i]['id_riwayat_pekerjaan']); + + if(is_null($pekerjaan)){ + $postPekerjaan = RiwayatPekerjaan::create([ + 'id_pegawai' => $id, + 'nama_institusi' => $input['pekerjaan'][$i]['nama_institusi'], + 'posisi' => $input['pekerjaan'][$i]['posisi'], + 'tahun_masuk' => $input['pekerjaan'][$i]['tahun_masuk'], + 'tahun_keluar' => $input['pekerjaan'][$i]['tahun_keluar'], + ]); + array_push($listPekerjaan, $postPekerjaan->id_riwayat_pekerjaan); + }else{ + $pekerjaan->id_pegawai = $input['pekerjaan'][$i]['id_pegawai']; + $pekerjaan->nama_institusi = $input['pekerjaan'][$i]['nama_institusi']; + $pekerjaan->posisi = $input['pekerjaan'][$i]['posisi']; + $pekerjaan->tahun_masuk = $input['pekerjaan'][$i]['tahun_masuk']; + $pekerjaan->tahun_keluar = $input['pekerjaan'][$i]['tahun_keluar']; + + $pekerjaan->save(); + array_push($listPekerjaan, $input['pekerjaan'][$i]['id_riwayat_pekerjaan']); + } + + } + + $data = RiwayatPekerjaan::where('id_pegawai',$id)->whereNotIn('id_riwayat_pekerjaan', $listPekerjaan); + $data->delete(); + + return $this->sendResponse($input, 'Riwayat Pendidikan & Pekerjaan updated successfully.'); + } +} diff --git a/app/Http/Controllers/SertifikatController.php b/app/Http/Controllers/SertifikatController.php index 336ffe581903dd28b90b7cdeee3358a69d5f1fb0..c6ad27779a95652b7b033e3352f8319288c9c8c5 100644 --- a/app/Http/Controllers/SertifikatController.php +++ b/app/Http/Controllers/SertifikatController.php @@ -23,33 +23,51 @@ class SertifikatController extends APIBaseController $input = $request->all(); $pegawai = Pegawai::find($id); - $sertifikat = Sertifikat::where('id_pegawai', $id); - - if ($sertifikat->count() > 0) { - $sertifikat->delete(); - } + $list = array(); for ($i = 0; $i < count($input['sertifikat']); $i++) { - $imageData = $input['sertifikat'][$i]['nama_file']; + + $imageData = $input['sertifikat'][$i]['nama_file']; if(explode("/", $imageData)[0] === "data:image"){ - $fileName = $pegawai->nip . '_' . $i . '.' . explode('/', explode(':', substr($imageData, 0, strpos($imageData, ';')))[1])[1]; - $image = Image::make($imageData); - $image->save(public_path('sertifikat/').$fileName); - }else{ - $fileName = explode("/", $imageData)[1]; - } - - $postSertifikat = Sertifikat::create([ - 'id_pegawai' => $id, - 'nama_file' => $fileName, - 'judul' => $input['sertifikat'][$i]['judul'], - 'lembaga' => $input['sertifikat'][$i]['lembaga'], - 'tahun_diterbitkan' => $input['sertifikat'][$i]['tahun_diterbitkan'], - 'catatan' => $input['sertifikat'][$i]['catatan'], - ]); + $fileName = $pegawai->nip . '_' . $i . '.' . explode('/', explode(':', substr($imageData, 0, strpos($imageData, ';')))[1])[1]; + $image = Image::make($imageData); + $image->save(public_path('sertifikat/').$fileName); + }else{ + $fileName = explode("/", $imageData)[1]; + } + + $sertifikat = null; + if(!is_null($input['sertifikat'][$i]['id_sertifikat'])){ + $sertifikat = Sertifikat::find($input['sertifikat'][$i]['id_sertifikat']); + } + + if(is_null($sertifikat)){ + $postSertifikat = Sertifikat::create([ + 'id_pegawai' => $id, + 'nama_file' => $fileName, + 'judul' => $input['sertifikat'][$i]['judul'], + 'lembaga' => $input['sertifikat'][$i]['lembaga'], + 'tahun_diterbitkan' => $input['sertifikat'][$i]['tahun_diterbitkan'], + 'catatan' => $input['sertifikat'][$i]['catatan'], + ]); + array_push($list, $postSertifikat->id_sertifikat); + }else{ + $sertifikat->id_pegawai = $id; + $sertifikat->nama_file = $fileName; + $sertifikat->judul = $input['sertifikat'][$i]['judul']; + $sertifikat->lembaga = $input['sertifikat'][$i]['lembaga']; + $sertifikat->tahun_diterbitkan = $input['sertifikat'][$i]['tahun_diterbitkan']; + $sertifikat->catatan = $input['sertifikat'][$i]['catatan']; + + $sertifikat->save(); + array_push($list, $sertifikat->id_sertifikat); + } } - return $this->sendResponse($input, 'Sertifikat created successfully.'); + $data = Sertifikat::where('id_pegawai',$id)->whereNotIn('id_sertifikat', $list); + $data->delete(); + + return $this->sendResponse($input, 'Sertifikat updated successfully.'); } } diff --git a/composer.json b/composer.json index 8a53d5b52e0d5aaa7b85075ac0167d25fb0ed067..e24f3a4d3e76a4ca4ae73f80ed03968089bf636b 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,8 @@ "intervention/image": "^2.4", "laravel/framework": "5.6.*", "laravel/tinker": "^1.0", - "maatwebsite/excel": "~2.1.0" + "maatwebsite/excel": "~2.1.0", + "dompdf/dompdf": "~0.6.1" }, "require-dev": { "filp/whoops": "^2.0", diff --git a/composer.lock b/composer.lock index f9631e646fbb5662a1fc31086cbe74440dc17090..4e48d92e22286d2548db3282db4828078c89aaba 100644 --- a/composer.lock +++ b/composer.lock @@ -1,11 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "48d464cf6debbc8a64374fd15834d76a", - "content-hash": "7e147ce3296bcd7360db8a560035f329", + "content-hash": "2954465a5843f8ea9d0a1fdded09af12", "packages": [ { "name": "dnoegel/php-xdg-base-dir", @@ -38,7 +37,7 @@ "MIT" ], "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24 07:27:01" + "time": "2014-10-24T07:27:01+00:00" }, { "name": "doctrine/inflector", @@ -105,7 +104,7 @@ "singularize", "string" ], - "time": "2018-01-09 20:05:19" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/lexer", @@ -159,7 +158,48 @@ "lexer", "parser" ], - "time": "2014-09-09 13:34:57" + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "dompdf/dompdf", + "version": "v0.6.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "cc06008f75262510ee135b8cbb14e333a309f651" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/cc06008f75262510ee135b8cbb14e333a309f651", + "reference": "cc06008f75262510ee135b8cbb14e333a309f651", + "shasum": "" + }, + "require": { + "phenx/php-font-lib": "0.2.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "include/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + }, + { + "name": "Brian Sweeney", + "email": "eclecticgeek@gmail.com" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "time": "2015-12-07T04:07:13+00:00" }, { "name": "dragonmantank/cron-expression", @@ -208,7 +248,7 @@ "cron", "schedule" ], - "time": "2018-04-06 15:51:55" + "time": "2018-04-06T15:51:55+00:00" }, { "name": "egulias/email-validator", @@ -265,7 +305,7 @@ "validation", "validator" ], - "time": "2018-04-10 10:11:19" + "time": "2018-04-10T10:11:19+00:00" }, { "name": "erusev/parsedown", @@ -311,7 +351,7 @@ "markdown", "parser" ], - "time": "2018-03-08 01:11:30" + "time": "2018-03-08T01:11:30+00:00" }, { "name": "fideloper/proxy", @@ -365,7 +405,7 @@ "proxy", "trusted proxy" ], - "time": "2018-02-07 20:20:57" + "time": "2018-02-07T20:20:57+00:00" }, { "name": "guzzlehttp/psr7", @@ -430,7 +470,7 @@ "uri", "url" ], - "time": "2017-03-20 17:10:46" + "time": "2017-03-20T17:10:46+00:00" }, { "name": "intervention/image", @@ -500,7 +540,7 @@ "thumbnail", "watermark" ], - "time": "2017-09-21 16:29:17" + "time": "2017-09-21T16:29:17+00:00" }, { "name": "jakub-onderka/php-console-color", @@ -543,7 +583,7 @@ "homepage": "http://www.acci.cz" } ], - "time": "2014-04-08 15:00:19" + "time": "2014-04-08T15:00:19+00:00" }, { "name": "jakub-onderka/php-console-highlighter", @@ -587,7 +627,7 @@ "homepage": "http://www.acci.cz/" } ], - "time": "2015-04-20 18:58:01" + "time": "2015-04-20T18:58:01+00:00" }, { "name": "jeremeamia/SuperClosure", @@ -645,7 +685,7 @@ "serialize", "tokenizer" ], - "time": "2018-03-21 22:21:57" + "time": "2018-03-21T22:21:57+00:00" }, { "name": "laravel/framework", @@ -784,7 +824,7 @@ "framework", "laravel" ], - "time": "2018-04-17 12:51:04" + "time": "2018-04-17T12:51:04+00:00" }, { "name": "laravel/tinker", @@ -847,7 +887,7 @@ "laravel", "psysh" ], - "time": "2018-04-16 12:10:37" + "time": "2018-04-16T12:10:37+00:00" }, { "name": "league/flysystem", @@ -931,7 +971,7 @@ "sftp", "storage" ], - "time": "2018-04-06 09:58:14" + "time": "2018-04-06T09:58:14+00:00" }, { "name": "maatwebsite/excel", @@ -1009,7 +1049,7 @@ "import", "laravel" ], - "time": "2018-03-09 13:14:19" + "time": "2018-03-09T13:14:19+00:00" }, { "name": "monolog/monolog", @@ -1087,7 +1127,7 @@ "logging", "psr-3" ], - "time": "2017-06-19 01:22:40" + "time": "2017-06-19T01:22:40+00:00" }, { "name": "nesbot/carbon", @@ -1140,7 +1180,7 @@ "datetime", "time" ], - "time": "2018-03-19 15:50:49" + "time": "2018-03-19T15:50:49+00:00" }, { "name": "nikic/php-parser", @@ -1191,7 +1231,7 @@ "parser", "php" ], - "time": "2018-03-25 17:35:16" + "time": "2018-03-25T17:35:16+00:00" }, { "name": "paragonie/random_compat", @@ -1239,7 +1279,41 @@ "pseudorandom", "random" ], - "time": "2018-04-04 21:24:14" + "time": "2018-04-04T21:24:14+00:00" + }, + { + "name": "phenx/php-font-lib", + "version": "0.2.2", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-font-lib.git", + "reference": "c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82", + "reference": "c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "classes/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "time": "2014-02-01T15:22:28+00:00" }, { "name": "phpoffice/phpexcel", @@ -1297,7 +1371,7 @@ "xlsx" ], "abandoned": "phpoffice/phpspreadsheet", - "time": "2015-05-01 07:00:55" + "time": "2015-05-01T07:00:55+00:00" }, { "name": "psr/container", @@ -1346,7 +1420,7 @@ "container-interop", "psr" ], - "time": "2017-02-14 16:28:37" + "time": "2017-02-14T16:28:37+00:00" }, { "name": "psr/http-message", @@ -1396,7 +1470,7 @@ "request", "response" ], - "time": "2016-08-06 14:39:51" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", @@ -1443,7 +1517,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "psr/simple-cache", @@ -1491,7 +1565,7 @@ "psr-16", "simple-cache" ], - "time": "2017-10-23 01:57:42" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "psy/psysh", @@ -1563,7 +1637,7 @@ "interactive", "shell" ], - "time": "2018-04-18 12:32:50" + "time": "2018-04-18T12:32:50+00:00" }, { "name": "ramsey/uuid", @@ -1643,7 +1717,7 @@ "identifier", "uuid" ], - "time": "2018-01-20 00:28:24" + "time": "2018-01-20T00:28:24+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -1698,7 +1772,7 @@ "mail", "mailer" ], - "time": "2017-09-30 22:39:41" + "time": "2017-09-30T22:39:41+00:00" }, { "name": "symfony/console", @@ -1766,7 +1840,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-04-03 05:24:00" + "time": "2018-04-03T05:24:00+00:00" }, { "name": "symfony/css-selector", @@ -1819,7 +1893,7 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-03-19 22:35:49" + "time": "2018-03-19T22:35:49+00:00" }, { "name": "symfony/debug", @@ -1875,7 +1949,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-04-03 05:24:00" + "time": "2018-04-03T05:24:00+00:00" }, { "name": "symfony/event-dispatcher", @@ -1938,7 +2012,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-04-06 07:35:43" + "time": "2018-04-06T07:35:43+00:00" }, { "name": "symfony/finder", @@ -1987,7 +2061,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-04-04 05:10:37" + "time": "2018-04-04T05:10:37+00:00" }, { "name": "symfony/http-foundation", @@ -2040,7 +2114,7 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-04-03 05:24:00" + "time": "2018-04-03T05:24:00+00:00" }, { "name": "symfony/http-kernel", @@ -2126,7 +2200,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-04-06 16:25:03" + "time": "2018-04-06T16:25:03+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -2185,7 +2259,7 @@ "portable", "shim" ], - "time": "2018-01-30 19:27:44" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/polyfill-php56", @@ -2241,7 +2315,7 @@ "portable", "shim" ], - "time": "2018-01-30 19:27:44" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/polyfill-php72", @@ -2296,7 +2370,7 @@ "portable", "shim" ], - "time": "2018-01-31 17:43:24" + "time": "2018-01-31T17:43:24+00:00" }, { "name": "symfony/polyfill-util", @@ -2348,7 +2422,7 @@ "polyfill", "shim" ], - "time": "2018-01-31 18:08:44" + "time": "2018-01-31T18:08:44+00:00" }, { "name": "symfony/process", @@ -2397,7 +2471,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-04-03 05:24:00" + "time": "2018-04-03T05:24:00+00:00" }, { "name": "symfony/routing", @@ -2475,7 +2549,7 @@ "uri", "url" ], - "time": "2018-04-04 13:50:32" + "time": "2018-04-04T13:50:32+00:00" }, { "name": "symfony/translation", @@ -2543,7 +2617,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-02-22 10:50:29" + "time": "2018-02-22T10:50:29+00:00" }, { "name": "symfony/var-dumper", @@ -2612,7 +2686,7 @@ "debug", "dump" ], - "time": "2018-04-04 05:10:37" + "time": "2018-04-04T05:10:37+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -2659,7 +2733,7 @@ ], "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2017-11-27 11:13:29" + "time": "2017-11-27T11:13:29+00:00" }, { "name": "vlucas/phpdotenv", @@ -2709,7 +2783,7 @@ "env", "environment" ], - "time": "2016-09-01 10:05:43" + "time": "2016-09-01T10:05:43+00:00" } ], "packages-dev": [ @@ -2779,7 +2853,7 @@ "docblock", "parser" ], - "time": "2017-12-06 07:11:42" + "time": "2017-12-06T07:11:42+00:00" }, { "name": "doctrine/cache", @@ -2853,7 +2927,7 @@ "cache", "caching" ], - "time": "2017-08-25 07:02:50" + "time": "2017-08-25T07:02:50+00:00" }, { "name": "doctrine/collections", @@ -2920,7 +2994,7 @@ "collections", "iterator" ], - "time": "2017-07-22 10:37:32" + "time": "2017-07-22T10:37:32+00:00" }, { "name": "doctrine/common", @@ -2993,7 +3067,7 @@ "persistence", "spl" ], - "time": "2017-08-31 08:43:38" + "time": "2017-08-31T08:43:38+00:00" }, { "name": "doctrine/dbal", @@ -3068,7 +3142,7 @@ "persistence", "queryobject" ], - "time": "2018-04-07 18:44:18" + "time": "2018-04-07T18:44:18+00:00" }, { "name": "doctrine/instantiator", @@ -3122,7 +3196,7 @@ "constructor", "instantiate" ], - "time": "2017-07-22 11:58:36" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "filp/whoops", @@ -3183,7 +3257,7 @@ "throwable", "whoops" ], - "time": "2017-11-23 18:22:44" + "time": "2017-11-23T18:22:44+00:00" }, { "name": "fzaninotto/faker", @@ -3233,7 +3307,7 @@ "faker", "fixtures" ], - "time": "2017-08-15 16:48:10" + "time": "2017-08-15T16:48:10+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -3281,7 +3355,7 @@ "keywords": [ "test" ], - "time": "2016-01-20 08:20:44" + "time": "2016-01-20T08:20:44+00:00" }, { "name": "krlove/code-generator", @@ -3308,7 +3382,7 @@ "MIT" ], "description": "Code Generator", - "time": "2016-04-03 14:09:31" + "time": "2016-04-03T14:09:31+00:00" }, { "name": "krlove/eloquent-model-generator", @@ -3340,7 +3414,7 @@ "MIT" ], "description": "Eloquent Model Generator", - "time": "2017-10-08 17:12:40" + "time": "2017-10-08T17:12:40+00:00" }, { "name": "mockery/mockery", @@ -3405,7 +3479,7 @@ "test double", "testing" ], - "time": "2017-10-06 16:20:43" + "time": "2017-10-06T16:20:43+00:00" }, { "name": "myclabs/deep-copy", @@ -3450,7 +3524,7 @@ "object", "object graph" ], - "time": "2017-10-19 19:58:43" + "time": "2017-10-19T19:58:43+00:00" }, { "name": "nunomaduro/collision", @@ -3512,7 +3586,7 @@ "php", "symfony" ], - "time": "2018-03-21 20:11:24" + "time": "2018-03-21T20:11:24+00:00" }, { "name": "phar-io/manifest", @@ -3567,7 +3641,7 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05 18:14:27" + "time": "2017-03-05T18:14:27+00:00" }, { "name": "phar-io/version", @@ -3614,7 +3688,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05 17:38:23" + "time": "2017-03-05T17:38:23+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3668,7 +3742,7 @@ "reflection", "static analysis" ], - "time": "2017-09-11 18:02:19" + "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -3719,7 +3793,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30 07:14:17" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -3766,7 +3840,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14 14:27:02" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", @@ -3829,7 +3903,7 @@ "spy", "stub" ], - "time": "2018-04-18 13:57:24" + "time": "2018-04-18T13:57:24+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3892,7 +3966,7 @@ "testing", "xunit" ], - "time": "2018-04-06 15:39:20" + "time": "2018-04-06T15:39:20+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3939,7 +4013,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27 13:52:08" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -3980,7 +4054,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -4029,7 +4103,7 @@ "keywords": [ "timer" ], - "time": "2018-02-01 13:07:23" + "time": "2018-02-01T13:07:23+00:00" }, { "name": "phpunit/php-token-stream", @@ -4078,7 +4152,7 @@ "keywords": [ "tokenizer" ], - "time": "2018-02-01 13:16:43" + "time": "2018-02-01T13:16:43+00:00" }, { "name": "phpunit/phpunit", @@ -4158,7 +4232,7 @@ "testing", "xunit" ], - "time": "2018-04-18 13:41:53" + "time": "2018-04-18T13:41:53+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -4214,7 +4288,7 @@ "mock", "xunit" ], - "time": "2018-04-11 04:50:36" + "time": "2018-04-11T04:50:36+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -4259,7 +4333,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04 06:30:41" + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", @@ -4323,7 +4397,7 @@ "compare", "equality" ], - "time": "2018-04-18 13:33:00" + "time": "2018-04-18T13:33:00+00:00" }, { "name": "sebastian/diff", @@ -4379,7 +4453,7 @@ "unidiff", "unified diff" ], - "time": "2018-02-01 13:45:15" + "time": "2018-02-01T13:45:15+00:00" }, { "name": "sebastian/environment", @@ -4429,7 +4503,7 @@ "environment", "hhvm" ], - "time": "2017-07-01 08:51:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", @@ -4496,7 +4570,7 @@ "export", "exporter" ], - "time": "2017-04-03 13:19:02" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", @@ -4547,7 +4621,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27 15:39:26" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", @@ -4594,7 +4668,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03 12:35:26" + "time": "2017-08-03T12:35:26+00:00" }, { "name": "sebastian/object-reflector", @@ -4639,7 +4713,7 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29 09:07:27" + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", @@ -4692,7 +4766,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03 06:23:57" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", @@ -4734,7 +4808,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2015-07-28T20:34:47+00:00" }, { "name": "sebastian/version", @@ -4777,7 +4851,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03 07:35:21" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "theseer/tokenizer", @@ -4817,7 +4891,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07 12:08:54" + "time": "2017-04-07T12:08:54+00:00" }, { "name": "webmozart/assert", @@ -4867,7 +4941,7 @@ "check", "validate" ], - "time": "2018-01-29 19:49:41" + "time": "2018-01-29T19:49:41+00:00" } ], "aliases": [], diff --git a/config/excel.php b/config/excel.php new file mode 100644 index 0000000000000000000000000000000000000000..5770d327db167b379df55b362fb007c5cc7ff45f --- /dev/null +++ b/config/excel.php @@ -0,0 +1,704 @@ +<?php + +return array( + + 'cache' => [ + + /* + |-------------------------------------------------------------------------- + | Enable/Disable cell caching + |-------------------------------------------------------------------------- + */ + 'enable' => true, + + /* + |-------------------------------------------------------------------------- + | Caching driver + |-------------------------------------------------------------------------- + | + | Set the caching driver + | + | Available methods: + | memory|gzip|serialized|igbinary|discISAM|apc|memcache|temp|wincache|sqlite|sqlite3 + | + */ + 'driver' => 'memory', + + /* + |-------------------------------------------------------------------------- + | Cache settings + |-------------------------------------------------------------------------- + */ + 'settings' => [ + + 'memoryCacheSize' => '32MB', + 'cacheTime' => 600 + + ], + + /* + |-------------------------------------------------------------------------- + | Memcache settings + |-------------------------------------------------------------------------- + */ + 'memcache' => [ + + 'host' => 'localhost', + 'port' => 11211, + + ], + + /* + |-------------------------------------------------------------------------- + | Cache dir (for discISAM) + |-------------------------------------------------------------------------- + */ + + 'dir' => storage_path('cache') + ], + + 'properties' => [ + 'creator' => 'UPT PMO ITB', + 'lastModifiedBy' => 'UPT PMO ITB', + 'title' => 'Data asesmen', + 'description' => 'Data asesmen UPT PMO ITB', + 'subject' => 'Data asesmen', + 'keywords' => 'PMO, ITB, asesmen', + 'category' => 'Excel', + 'manager' => 'UPT PMO ITB', + 'company' => 'UPT PMO ITB', + ], + + /* + |-------------------------------------------------------------------------- + | Sheets settings + |-------------------------------------------------------------------------- + */ + 'sheets' => [ + + /* + |-------------------------------------------------------------------------- + | Default page setup + |-------------------------------------------------------------------------- + */ + 'pageSetup' => [ + 'orientation' => 'portrait', + 'paperSize' => '9', + 'scale' => '100', + 'fitToPage' => false, + 'fitToHeight' => true, + 'fitToWidth' => true, + 'columnsToRepeatAtLeft' => ['', ''], + 'rowsToRepeatAtTop' => [0, 0], + 'horizontalCentered' => false, + 'verticalCentered' => false, + 'printArea' => null, + 'firstPageNumber' => null, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Creator + |-------------------------------------------------------------------------- + | + | The default creator of a new Excel file + | + */ + + 'creator' => 'UPT PMO ITB', + + 'csv' => [ + /* + |-------------------------------------------------------------------------- + | Delimiter + |-------------------------------------------------------------------------- + | + | The default delimiter which will be used to read out a CSV file + | + */ + + 'delimiter' => ',', + + /* + |-------------------------------------------------------------------------- + | Enclosure + |-------------------------------------------------------------------------- + */ + + 'enclosure' => '"', + + /* + |-------------------------------------------------------------------------- + | Line endings + |-------------------------------------------------------------------------- + */ + + 'line_ending' => "\r\n", + + /* + |-------------------------------------------------------------------------- + | setUseBom + |-------------------------------------------------------------------------- + */ + + 'use_bom' => false + ], + + 'export' => [ + + /* + |-------------------------------------------------------------------------- + | Autosize columns + |-------------------------------------------------------------------------- + | + | Disable/enable column autosize or set the autosizing for + | an array of columns ( array('A', 'B') ) + | + */ + 'autosize' => true, + + /* + |-------------------------------------------------------------------------- + | Autosize method + |-------------------------------------------------------------------------- + | + | --> PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX + | The default is based on an estimate, which does its calculation based + | on the number of characters in the cell value (applying any calculation + | and format mask, and allowing for wordwrap and rotation) and with an + | "arbitrary" adjustment based on the font (Arial, Calibri or Verdana, + | defaulting to Calibri if any other font is used) and a proportional + | adjustment for the font size. + | + | --> PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT + | The second method is more accurate, based on actual style formatting as + | well (bold, italic, etc), and is calculated by generating a gd2 imagettf + | bounding box and using its dimensions to determine the size; but this + | method is significantly slower, and its accuracy is still dependent on + | having the appropriate fonts installed. + | + */ + 'autosize-method' => PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX, + + /* + |-------------------------------------------------------------------------- + | Auto generate table heading + |-------------------------------------------------------------------------- + | + | If set to true, the array indices (or model attribute names) + | will automatically be used as first row (table heading) + | + */ + 'generate_heading_by_indices' => true, + + /* + |-------------------------------------------------------------------------- + | Auto set alignment on merged cells + |-------------------------------------------------------------------------- + */ + 'merged_cell_alignment' => 'left', + + /* + |-------------------------------------------------------------------------- + | Pre-calculate formulas during export + |-------------------------------------------------------------------------- + */ + 'calculate' => false, + + /* + |-------------------------------------------------------------------------- + | Include Charts during export + |-------------------------------------------------------------------------- + */ + 'includeCharts' => false, + + /* + |-------------------------------------------------------------------------- + | Default sheet settings + |-------------------------------------------------------------------------- + */ + 'sheets' => [ + + /* + |-------------------------------------------------------------------------- + | Default page margin + |-------------------------------------------------------------------------- + | + | 1) When set to false, default margins will be used + | 2) It's possible to enter a single margin which will + | be used for all margins. + | 3) Alternatively you can pass an array with 4 margins + | Default order: array(top, right, bottom, left) + | + */ + 'page_margin' => false, + + /* + |-------------------------------------------------------------------------- + | Value in source array that stands for blank cell + |-------------------------------------------------------------------------- + */ + 'nullValue' => null, + + /* + |-------------------------------------------------------------------------- + | Insert array starting from this cell address as the top left coordinate + |-------------------------------------------------------------------------- + */ + 'startCell' => 'A1', + + /* + |-------------------------------------------------------------------------- + | Apply strict comparison when testing for null values in the array + |-------------------------------------------------------------------------- + */ + 'strictNullComparison' => false + ], + + /* + |-------------------------------------------------------------------------- + | Store settings + |-------------------------------------------------------------------------- + */ + + 'store' => [ + + /* + |-------------------------------------------------------------------------- + | Path + |-------------------------------------------------------------------------- + | + | The path we want to save excel file to + | + */ + 'path' => storage_path('exports'), + + /* + |-------------------------------------------------------------------------- + | Return info + |-------------------------------------------------------------------------- + | + | Whether we want to return information about the stored file or not + | + */ + 'returnInfo' => false + + ], + + /* + |-------------------------------------------------------------------------- + | PDF Settings + |-------------------------------------------------------------------------- + */ + 'pdf' => [ + + /* + |-------------------------------------------------------------------------- + | PDF Drivers + |-------------------------------------------------------------------------- + | Supported: DomPDF, tcPDF, mPDF + */ + 'driver' => 'DomPDF', + + /* + |-------------------------------------------------------------------------- + | PDF Driver settings + |-------------------------------------------------------------------------- + */ + 'drivers' => [ + + /* + |-------------------------------------------------------------------------- + | DomPDF settings + |-------------------------------------------------------------------------- + */ + 'DomPDF' => [ + 'path' => base_path('vendor/dompdf/dompdf/') + ], + + /* + |-------------------------------------------------------------------------- + | tcPDF settings + |-------------------------------------------------------------------------- + */ + 'tcPDF' => [ + 'path' => base_path('vendor/tecnick.com/tcpdf/') + ], + + /* + |-------------------------------------------------------------------------- + | mPDF settings + |-------------------------------------------------------------------------- + */ + 'mPDF' => [ + 'path' => base_path('vendor/mpdf/mpdf/') + ], + ] + ] + ], + + 'filters' => [ + /* + |-------------------------------------------------------------------------- + | Register read filters + |-------------------------------------------------------------------------- + */ + + 'registered' => [ + 'chunk' => 'Maatwebsite\Excel\Filters\ChunkReadFilter' + ], + + /* + |-------------------------------------------------------------------------- + | Enable certain filters for every file read + |-------------------------------------------------------------------------- + */ + + 'enabled' => [] + ], + + 'import' => [ + + /* + |-------------------------------------------------------------------------- + | Has heading + |-------------------------------------------------------------------------- + | + | The sheet has a heading (first) row which we can use as attribute names + | + | Options: true|false|slugged|slugged_with_count|ascii|numeric|hashed|hashed_with_lower|trans|original + | + */ + + 'heading' => 'slugged', + + /* + |-------------------------------------------------------------------------- + | First Row with data or heading of data + |-------------------------------------------------------------------------- + | + | If the heading row is not the first row, or the data doesn't start + | on the first row, here you can change the start row. + | + */ + + 'startRow' => 1, + + /* + |-------------------------------------------------------------------------- + | Cell name word separator + |-------------------------------------------------------------------------- + | + | The default separator which is used for the cell names + | Note: only applies to 'heading' settings 'true' && 'slugged' + | + */ + + 'separator' => '_', + + /* + |-------------------------------------------------------------------------- + | Slug whitelisting + |-------------------------------------------------------------------------- + | + | Here you can whitelist certain characters in the slug. + | E.g. user.last_name will not remove . and _ + | Note: only applies to 'heading' settings 'true' && 'slugged' + | + */ + + 'slug_whitelist' => '._', + + /* + |-------------------------------------------------------------------------- + | Include Charts during import + |-------------------------------------------------------------------------- + */ + + 'includeCharts' => false, + + /* + |-------------------------------------------------------------------------- + | Sheet heading conversion + |-------------------------------------------------------------------------- + | + | Convert headings to ASCII + | Note: only applies to 'heading' settings 'true' && 'slugged' + | + */ + + 'to_ascii' => true, + + /* + |-------------------------------------------------------------------------- + | Import encoding + |-------------------------------------------------------------------------- + */ + + 'encoding' => [ + + 'input' => 'UTF-8', + 'output' => 'UTF-8' + + ], + + /* + |-------------------------------------------------------------------------- + | Calculate + |-------------------------------------------------------------------------- + | + | By default cells with formulas will be calculated. + | + */ + + 'calculate' => true, + + /* + |-------------------------------------------------------------------------- + | Ignore empty cells + |-------------------------------------------------------------------------- + | + | By default empty cells are not ignored + | + */ + + 'ignoreEmpty' => true, + + /* + |-------------------------------------------------------------------------- + | Force sheet collection + |-------------------------------------------------------------------------- + | + | For a sheet collection even when there is only 1 sheets. + | When set to false and only 1 sheet found, the parsed file will return + | a row collection instead of a sheet collection. + | When set to true, it will return a sheet collection instead. + | + */ + 'force_sheets_collection' => false, + + /* + |-------------------------------------------------------------------------- + | Date format + |-------------------------------------------------------------------------- + | + | The format dates will be parsed to + | + */ + + 'dates' => [ + + /* + |-------------------------------------------------------------------------- + | Enable/disable date formatting + |-------------------------------------------------------------------------- + */ + 'enabled' => true, + + /* + |-------------------------------------------------------------------------- + | Default date format + |-------------------------------------------------------------------------- + | + | If set to false, a carbon object will return + | + */ + 'format' => false, + + /* + |-------------------------------------------------------------------------- + | Date columns + |-------------------------------------------------------------------------- + */ + 'columns' => [] + ], + + /* + |-------------------------------------------------------------------------- + | Import sheets by config + |-------------------------------------------------------------------------- + */ + 'sheets' => [ + + /* + |-------------------------------------------------------------------------- + | Example sheet + |-------------------------------------------------------------------------- + | + | Example sheet "test" will grab the firstname at cell A2 + | + */ + + 'test' => [ + + 'firstname' => 'A2' + + ] + + ] + ], + + 'views' => [ + + /* + |-------------------------------------------------------------------------- + | Styles + |-------------------------------------------------------------------------- + | + | The default styles which will be used when parsing a view + | + */ + + 'styles' => [ + + /* + |-------------------------------------------------------------------------- + | Table headings + |-------------------------------------------------------------------------- + */ + 'th' => [ + 'font' => [ + 'bold' => true, + 'size' => 12, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Strong tags + |-------------------------------------------------------------------------- + */ + 'strong' => [ + 'font' => [ + 'bold' => true, + 'size' => 12, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Bold tags + |-------------------------------------------------------------------------- + */ + 'b' => [ + 'font' => [ + 'bold' => true, + 'size' => 12, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Italic tags + |-------------------------------------------------------------------------- + */ + 'i' => [ + 'font' => [ + 'italic' => true, + 'size' => 12, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Heading 1 + |-------------------------------------------------------------------------- + */ + 'h1' => [ + 'font' => [ + 'bold' => true, + 'size' => 24, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Heading 2 + |-------------------------------------------------------------------------- + */ + 'h2' => [ + 'font' => [ + 'bold' => true, + 'size' => 18, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Heading 3 + |-------------------------------------------------------------------------- + */ + 'h3' => [ + 'font' => [ + 'bold' => true, + 'size' => 13.5, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Heading 4 + |-------------------------------------------------------------------------- + */ + 'h4' => [ + 'font' => [ + 'bold' => true, + 'size' => 12, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Heading 5 + |-------------------------------------------------------------------------- + */ + 'h5' => [ + 'font' => [ + 'bold' => true, + 'size' => 10, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Heading 6 + |-------------------------------------------------------------------------- + */ + 'h6' => [ + 'font' => [ + 'bold' => true, + 'size' => 7.5, + ] + ], + + /* + |-------------------------------------------------------------------------- + | Hyperlinks + |-------------------------------------------------------------------------- + */ + 'a' => [ + 'font' => [ + 'underline' => true, + 'color' => ['argb' => 'FF0000FF'], + ] + ], + + /* + |-------------------------------------------------------------------------- + | Horizontal rules + |-------------------------------------------------------------------------- + */ + 'hr' => [ + 'borders' => [ + 'bottom' => [ + 'style' => 'thin', + 'color' => ['FF000000'] + ], + ] + ] + ] + + ] + +); diff --git a/public/css/profile.css b/public/css/profile.css index ce03abbe8ad7abe03e6fb2dd8e88adf848204455..fd99c0d33a4a43002279fa888c32d49f05221afd 100644 --- a/public/css/profile.css +++ b/public/css/profile.css @@ -1,7 +1,3 @@ -body { - padding-top: 5rem; -} - .starter-template { padding: 3rem 1.5rem; text-align: center; diff --git a/public/js/profile.js b/public/js/profile.js index 9f3ee10588c8f2e6a03c7b04b749913d9eea1fb2..cee652f9aaa25cf4404b35a9590f18641938a9b3 100644 --- a/public/js/profile.js +++ b/public/js/profile.js @@ -14033,121 +14033,6 @@ new Vue({ el: '#profile-page', components: { 'profil-pegawai': __webpack_require__(248) - }, - 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: function 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: function editProfilPegawai() { - this.isEditProfile = true; - }, - editDataKepegawaian: function editDataKepegawaian() { - this.isEditKepegawaian = true; - }, - editRiwayatPegawai: function editRiwayatPegawai() { - this.isEditRiwayat = true; - }, - saveProfilPegawai: function 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: function saveDataKepegawaian() { - this.cachedDataKepegawaian = Object.assign({}, this.dataKepegawaian); - this.isEditKepegawaian = false; - }, - saveRiwayatPegawai: function saveRiwayatPegawai() { - this.cachedRiwayatPendidikan = Object.assign({}, this.riwayatPendidikan); - this.cachedRiwayatPekerjaan = Object.assign({}, this.riwayatPekerjaan); - this.isEditRiwayat = false; - }, - cancelProfilPegawai: function cancelProfilPegawai() { - this.user = Object.assign({}, this.cachedUser); - this.isEditProfile = false; - }, - cancelDataKepegawaian: function cancelDataKepegawaian() { - this.dataKepegawaian = Object.assign({}, this.cachedDataKepegawaian); - this.isEditKepegawaian = false; - }, - cancelRiwayatPegawai: function cancelRiwayatPegawai() { - this.riwayatPendidikan = Object.assign({}, this.cachedRiwayatPendidikan); - this.riwayatPekerjaan = Object.assign({}, this.cachedRiwayatPekerjaan); - this.isEditRiwayat = false; - } } }); @@ -14241,7 +14126,7 @@ exports = module.exports = __webpack_require__(7)(false); // module -exports.push([module.i, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", ""]); +exports.push([module.i, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", ""]); // exports @@ -15018,15 +14903,98 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // // // +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// /* harmony default export */ __webpack_exports__["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: function data() { var _ref; return _ref = { - //dummy + pegawai: { imageProfileUrl: "", nama: "", @@ -15040,15 +15008,11 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope tahunMasuk: "" }, dataKepegawaian: [], + dataKepegawaianPrev: null, riwayatPendidikan: [], riwayatPekerjaan: [], sertifikat: [], - dataKinerja: [{ tahun: 2010, semester: 1, nilai: 2.50, catatan: "ini catatan" }], - rekomendasiTraining: [], - - sertifikatCounter: 0, - isShowAllDataKinerja: false, disableEdit: false, isEditProfile: false, @@ -15056,12 +15020,15 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope isEditRiwayat: false, isEditSertifikat: false, isEditDataKinerja: false, + isEditRekomendasi: false, cachedPegawai: null, cachedDataKepegawaian: null, cachedRiwayatPendidikan: null, cachedRiwayatPekerjaan: null, cachedSertifikat: null, - cachedDataKinerja: null + cachedDataKinerja: null, + cachedRekomendasiTraining: null, + cachedRekomendasiPosisi: null }, _defineProperty(_ref, 'pegawai', { imageProfileUrl: null, nama: null, @@ -15082,7 +15049,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope text: null }, tahunMasuk: null - }), _defineProperty(_ref, 'dataKepegawaian', []), _defineProperty(_ref, 'riwayatPendidikan', []), _defineProperty(_ref, 'riwayatPekerjaan', []), _defineProperty(_ref, 'dataKinerja', []), _defineProperty(_ref, 'dataKinerjaShow', []), _ref; + }), _defineProperty(_ref, 'dataKepegawaian', []), _defineProperty(_ref, 'riwayatPendidikan', []), _defineProperty(_ref, 'riwayatPekerjaan', []), _defineProperty(_ref, 'dataKinerja', []), _defineProperty(_ref, 'dataKinerjaShow', []), _defineProperty(_ref, 'rekomendasiTraining', []), _defineProperty(_ref, 'rekomendasiPosisi', []), _ref; }, mounted: function mounted() {}, created: function created() { @@ -15100,6 +15067,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope _this.riwayatPekerjaan = responsePegawai["pekerjaan"]; _this.updateDataKepegawaian(); + _this.dataKepegawaianPrev = _this.dataKepegawaian[_this.dataKepegawaian.length - 1]; + _this.sertifikat = responsePegawai["sertifikat"]; _this.updateSertifikat(); @@ -15128,12 +15097,20 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope //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)); }, @@ -15256,15 +15233,18 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.disableEditButton(); }, editSertifikat: function editSertifikat() { - this.sertifikatCounter = this.sertifikat.length; this.isEditSertifikat = true; this.disableEditButton(); - this.sertifikatCounter = this.sertifikat.length; }, editDataKinerja: function editDataKinerja() { this.isEditDataKinerja = true; this.disableEditButton(); }, + editDataKompetensi: function editDataKompetensi() {}, + editRekomendasi: function editRekomendasi() { + this.isEditRekomendasi = true; + this.disableEditButton(); + }, addDataKepegawaian: function addDataKepegawaian() { var newData = { id_data_kepegawaian: null, @@ -15291,7 +15271,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope }, addRiwayatPekerjaan: function addRiwayatPekerjaan() { var newData = { - id_riwayat_pendidikan: null, + id_riwayat_pekerjaan: null, id_pegawai: null, nama_institusi: null, posisi: null, @@ -15301,9 +15281,16 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.riwayatPekerjaan.push(newData); }, addSertifikat: function addSertifikat() { - var newData = {}; + var newData = { + id_sertifikat: null, + id_pegawai: null, + judul: null, + lembaga: null, + tahun_diterbitkan: null, + catatan: null, + nama_file: null + }; this.sertifikat.push(newData); - this.sertifikatCounter++; }, addDataKinerja: function addDataKinerja() { var newData = { @@ -15316,6 +15303,23 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope }; this.dataKinerja.push(newData); }, + addRekomendasiTraining: function addRekomendasiTraining() { + var newData = { + id_rekomendasi_training: null, + id_pegawai: null, + id_training: null + }; + this.rekomendasiTraining.push(newData); + }, + addRekomendasiPosisi: function addRekomendasiPosisi() { + var newData = { + id_rekomendasi_training: null, + id_pegawai: null, + id_unit_kerja: null, + id_posisi: null + }; + this.rekomendasiPosisi.push(newData); + }, delDataKepegawaian: function delDataKepegawaian(event) { var targetIndex = event.currentTarget.id; this.dataKepegawaian.splice(targetIndex, 1); @@ -15331,12 +15335,19 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope delSertifikat: function delSertifikat(event) { var targetIndex = event.currentTarget.id; this.sertifikat.splice(targetIndex, 1); - this.sertifikatCounter--; }, delDataKinerja: function delDataKinerja(event) { var targetIndex = event.currentTarget.id; this.dataKinerja.splice(targetIndex, 1); }, + delRekomendasiTraining: function delRekomendasiTraining(event) { + var targetIndex = event.currentTarget.id; + this.rekomendasiTraining.splice(targetIndex, 1); + }, + delRekomendasiPosisi: function delRekomendasiPosisi(event) { + var targetIndex = event.currentTarget.id; + this.rekomendasiPosisi.splice(targetIndex, 1); + }, saveProfilPegawai: function saveProfilPegawai() { this.enableEditButton(); @@ -15346,18 +15357,19 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.cachedPegawai = JSON.parse(JSON.stringify(this.pegawai)); 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); - // }); + axios.post('/api/pegawai/' + this.id, { + pegawai: this.pegawai, + data_kepegawaian: this.dataKepegawaian, + data_kepegawaian_prev: this.dataKepegawaianPrev, + _method: "put" + }).then(function (response) { + console.log(response); + window.location.href = '/pages/profile'; + }).catch(function (error) { + alert(error); + }); + + console.log(this.dataKepegawaian); }, saveDataKepegawaian: function saveDataKepegawaian() { this.updateDataKepegawaian(); @@ -15365,6 +15377,18 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.enableEditButton(); this.cachedDataKepegawaian = JSON.parse(JSON.stringify(this.dataKepegawaian)); this.isEditKepegawaian = false; + + console.log(this.dataKepegawaian); + + axios.post('/api/kepegawaian/' + this.id, { + kepegawaian: this.dataKepegawaian, + _method: 'put' + }).then(function (response) { + console.log(response); + window.location.href = "/pages/profile"; + }).catch(function (error) { + alert(error); + }); }, saveRiwayatPegawai: function saveRiwayatPegawai() { //sort @@ -15391,6 +15415,20 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.cachedRiwayatPendidikan = JSON.parse(JSON.stringify(this.riwayatPendidikan)); this.cachedRiwayatPekerjaan = JSON.parse(JSON.stringify(this.riwayatPekerjaan)); this.isEditRiwayat = false; + + console.log(this.riwayatPendidikan); + console.log(this.riwayatPekerjaan); + + axios.post('/api/riwayat/' + this.id, { + pendidikan: this.riwayatPendidikan, + pekerjaan: this.riwayatPekerjaan, + _method: 'put' + }).then(function (response) { + console.log(response); + window.location.href = "/pages/profile"; + }).catch(function (error) { + alert(error); + }); }, saveSertifikat: function saveSertifikat() { this.enableEditButton(); @@ -15431,6 +15469,12 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.hideDataKinerja(); } }, + saveRekomendasi: function saveRekomendasi() { + this.enableEditButton(); + this.cachedRekomendasiTraining = JSON.parse(JSON.stringify(this.rekomendasiTraining)); + this.cachedRekomendasiPosisi = JSON.parse(JSON.stringify(this.rekomendasiPosisi)); + this.isEditRekomendasi = false; + }, cancelProfilPegawai: function cancelProfilPegawai() { this.enableEditButton(); this.pegawai = JSON.parse(JSON.stringify(this.cachedPegawai)); @@ -15463,18 +15507,35 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope this.hideDataKinerja(); } }, - onFileChange: function onFileChange(e) { + cancelRekomendasi: function cancelRekomendasi() { + this.enableEditButton(); + this.rekomendasiTraining = JSON.parse(JSON.stringify(this.cachedRekomendasiTraining)); + this.rekomendasiPosisi = JSON.parse(JSON.stringify(this.cachedRekomendasiPosisi)); + this.isEditRekomendasi = false; + }, + FileChangeProfile: function FileChangeProfile(e) { var files = e.target.files || e.dataTransfer.files; if (!files.length) return; - this.createImage(files[0], e.currentTarget.id); + + var reader = new FileReader(); + var vm = this; + reader.onload = function (e) { + vm.pegawai.imageProfileUrl = e.target.result; + }; + reader.readAsDataURL(files[0]); }, - createImage: function createImage(file, id) { + FileChangeSertifikat: function FileChangeSertifikat(e) { + var files = e.target.files || e.dataTransfer.files; + if (!files.length) return; + + var idx = e.currentTarget.id; + var reader = new FileReader(); var vm = this; reader.onload = function (e) { - vm.sertifikat[id].nama_file = e.target.result; + vm.sertifikat[idx].nama_file = e.target.result; }; - reader.readAsDataURL(file); + reader.readAsDataURL(files[0]); } } }); @@ -15519,14 +15580,11 @@ var render = function() { _c("br"), _vm._v(" "), _vm.isEditProfile - ? _c( - "button", - { - staticClass: "btn btn-primary", - attrs: { type: "button" } - }, - [_vm._v("Ganti Foto")] - ) + ? _c("input", { + staticClass: "form-control", + attrs: { type: "file" }, + on: { change: _vm.FileChangeProfile } + }) : _vm._e() ]), _vm._v(" "), @@ -17321,35 +17379,7 @@ var render = function() { }) ] ) - ]), - _vm._v(" "), - _c("br"), - _vm._v(" "), - dk.nama_file !== _vm.NULL - ? _c("div", [ - _c("input", { - staticClass: "form-control", - attrs: { - type: "file", - id: _vm.sertifikat.indexOf(dk) - }, - on: { change: _vm.onFileChange } - }) - ]) - : _vm._e(), - _vm._v(" "), - dk.nama_file == _vm.NULL - ? _c("div", [ - _c("input", { - staticClass: "form-control", - attrs: { - type: "file", - id: _vm.sertifikat.indexOf(dk) - }, - on: { change: _vm.onFileChange } - }) - ]) - : _vm._e() + ]) ]), _vm._v(" "), _c("td", { attrs: { rowspan: "4" } }, [ @@ -17360,6 +17390,18 @@ var render = function() { src: dk.nama_file, width: "200" } + }), + _vm._v(" "), + _c("br"), + _c("br"), + _vm._v(" "), + _c("input", { + staticClass: "form-control", + attrs: { + type: "file", + id: _vm.sertifikat.indexOf(dk) + }, + on: { change: _vm.FileChangeSertifikat } }) ]), _vm._v(" "), @@ -17927,69 +17969,487 @@ var render = function() { _vm._v(" "), _c("br"), _vm._v(" "), - _vm._m(5), + _c("div", { staticClass: "card", attrs: { id: "data-kompetensi" } }, [ + _c("div", { staticClass: "card-header" }, [ + _vm._v("\n Hasil Kompetensi"), + _c( + "button", + { + staticClass: "btn btn-primary float-sm-right", + attrs: { disabled: _vm.disableEdit }, + on: { click: _vm.editDataKompetensi } + }, + [ + _vm._v("\n Edit "), + _c("i", { staticClass: "fas fa-edit" }) + ] + ) + ]), + _vm._v(" "), + _vm._m(5) + ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("div", { staticClass: "card", attrs: { id: "rekomendasi" } }, [ _c("div", { staticClass: "card-header" }, [ - _vm._v("\n Rekomendasi\n ") + _vm._v("\n Rekomendasi"), + _c( + "button", + { + staticClass: "btn btn-primary float-sm-right", + attrs: { disabled: _vm.disableEdit }, + on: { click: _vm.editRekomendasi } + }, + [ + _vm._v("\n Edit "), + _c("i", { staticClass: "fas fa-edit" }) + ] + ) ]), _vm._v(" "), _c("div", { staticClass: "card-body" }, [ - _c("div", { staticClass: "container" }, [ - _c("h5", [_vm._v("Rekomendasi Training")]), - _vm._v(" "), - _vm.rekomendasiTraining.length === 0 - ? _c("div", { staticClass: "no-rekomendasi-trainiing" }, [ - _c("hr"), - _vm._v( - "\n Belum dimtambahkan.\n " - ), - _c("br") - ]) - : _vm._e(), - _vm._v(" "), - _vm.rekomendasiTraining.length !== 0 - ? _c("div", { staticClass: "rekomendasi-trainiing" }, [ - _c( - "table", - { staticClass: "table" }, - [ - _vm._m(6), + _c( + "div", + { staticClass: "container" }, + [ + _c("h5", [_vm._v("Rekomendasi Training")]), + _vm._v(" "), + _c("hr"), + _vm._v(" "), + _vm.rekomendasiTraining.length === 0 + ? _c("div", { staticClass: "no-rekomendasi-posisi" }, [ + !_vm.isEditRekomendasi + ? _c("div", [ + _vm._v( + "\n Belum ditambahkan.\n " + ), + _c("br") + ]) + : _vm._e(), + _vm._v(" "), + _vm.isEditRekomendasi + ? _c( + "button", + { + staticClass: "btn btn-primary float-sm-left", + on: { click: _vm.addRekomendasiTraining } + }, + [ + _vm._v("\n Tambah "), + _c("i", { staticClass: "fas fa-plus" }) + ] + ) + : _vm._e() + ]) + : _vm._e(), + _vm._v(" "), + _vm._l(_vm.rekomendasiTraining, function(rt) { + return _vm.rekomendasiTraining.length !== 0 + ? _c("div", { staticClass: "rekomendasi-training" }, [ + !_vm.isEditRekomendasi + ? _c("ul", [ + _c("li", { + domProps: { + textContent: _vm._s( + _vm.trainingList.find(function(x) { + return x.id_training == rt.id_training + }).nama_training + ) + } + }) + ]) + : _vm._e(), _vm._v(" "), - _vm._l(_vm.rekomendasiTraining, function(rp) { - return _c("tbody", [ - _c("tr", [ - _c("td", { - domProps: { textContent: _vm._s(rp.namaTraining) } - }), - _vm._v(" "), - _c("td", { - domProps: { textContent: _vm._s(rp.penyelenggara) } - }), + _vm.isEditRekomendasi + ? _c("div", { staticClass: "form-group row" }, [ + _c("div", { staticClass: "col-sm-10" }, [ + _c( + "select", + { + directives: [ + { + name: "model", + rawName: "v-model", + value: rt.id_training, + expression: "rt.id_training" + } + ], + staticClass: "form-control", + on: { + change: function($event) { + var $$selectedVal = Array.prototype.filter + .call($event.target.options, function(o) { + return o.selected + }) + .map(function(o) { + var val = + "_value" in o ? o._value : o.value + return val + }) + _vm.$set( + rt, + "id_training", + $event.target.multiple + ? $$selectedVal + : $$selectedVal[0] + ) + } + } + }, + _vm._l(_vm.trainingList, function(tl) { + return _c( + "option", + { domProps: { value: tl.id_training } }, + [ + _vm._v( + "\n " + + _vm._s(tl.nama_training) + + "\n " + ) + ] + ) + }) + ), + _vm._v(" "), + _c( + "small", + { staticClass: "form-text text-muted" }, + [_vm._v("*Wajib diisi")] + ) + ]), _vm._v(" "), - _c("td", { - domProps: { textContent: _vm._s(rp.bidang) } - }) + _c("div", { staticClass: "col-sm-1" }, [ + _c( + "button", + { + staticClass: "btn btn-danger", + attrs: { + id: _vm.rekomendasiTraining.indexOf(rt), + type: "button" + }, + on: { + click: function($event) { + _vm.delRekomendasiTraining($event) + } + } + }, + [ + _vm._v( + "\n Hapus " + ), + _c("i", { staticClass: "fas fa-trash-alt" }) + ] + ) + ]) ]) - ]) - }) - ], - 2 + : _vm._e() + ]) + : _vm._e() + }), + _vm._v(" "), + _vm.isEditRekomendasi && _vm.rekomendasiTraining.length !== 0 + ? _c( + "button", + { + staticClass: "btn btn-primary float-sm-left", + on: { click: _vm.addRekomendasiTraining } + }, + [ + _vm._v("\n Tambah "), + _c("i", { staticClass: "fas fa-plus" }) + ] ) - ]) - : _vm._e(), - _vm._v(" "), - _c("br"), - _c("br"), - _vm._v(" "), - _c("h5", [_vm._v("Rekomendasi Lain-lain")]), - _vm._v(" "), - _c("hr"), - _vm._v("\n\n Tidak ada.\n\n ") - ]) - ]) + : _vm._e(), + _vm._v(" "), + _c("br"), + _c("br"), + _c("br"), + _vm._v(" "), + _c("h5", [_vm._v("Rekomendasi Lain-lain")]), + _vm._v(" "), + _vm.rekomendasiPosisi.length === 0 + ? _c("div", { staticClass: "no-rekomendasi-posisi" }, [ + !_vm.isEditRekomendasi + ? _c("div", [ + _c("hr"), + _vm._v( + "\n Belum ditambahkan.\n " + ), + _c("br") + ]) + : _vm._e(), + _vm._v(" "), + _vm.isEditRekomendasi + ? _c( + "button", + { + staticClass: "btn btn-primary float-sm-left", + on: { click: _vm.addRekomendasiPosisi } + }, + [ + _vm._v("\n Tambah "), + _c("i", { staticClass: "fas fa-plus" }) + ] + ) + : _vm._e() + ]) + : _vm._e(), + _vm._v(" "), + _vm.rekomendasiPosisi.length !== 0 + ? _c("div", { staticClass: "rekomendasi-posisi" }, [ + _c( + "table", + { staticClass: "table" }, + [ + _vm._m(6), + _vm._v(" "), + _vm._l(_vm.rekomendasiPosisi, function(rp) { + return _c("tbody", [ + !_vm.isEditRekomendasi + ? _c("tr", [ + _c("td", { + domProps: { + textContent: _vm._s( + _vm.unitKerja.find(function(x) { + return ( + x.id_unit_kerja == rp.id_unit_kerja + ) + }).nama_unit_kerja + ) + } + }), + _vm._v(" "), + _c("td", { + domProps: { + textContent: _vm._s( + _vm.posisi.find(function(x) { + return x.id_posisi == rp.id_posisi + }).nama_posisi + ) + } + }) + ]) + : _vm._e(), + _vm._v(" "), + _vm.isEditRekomendasi + ? _c("tr", [ + _c("td", [ + _c("div", { staticClass: "form-group" }, [ + _c( + "select", + { + directives: [ + { + name: "model", + rawName: "v-model", + value: rp.id_unit_kerja, + expression: "rp.id_unit_kerja" + } + ], + staticClass: "form-control", + on: { + change: function($event) { + var $$selectedVal = Array.prototype.filter + .call( + $event.target.options, + function(o) { + return o.selected + } + ) + .map(function(o) { + var val = + "_value" in o + ? o._value + : o.value + return val + }) + _vm.$set( + rp, + "id_unit_kerja", + $event.target.multiple + ? $$selectedVal + : $$selectedVal[0] + ) + } + } + }, + _vm._l(_vm.unitKerja, function(uk) { + return _c( + "option", + { + domProps: { + value: uk.id_unit_kerja + } + }, + [ + _vm._v( + "\n " + + _vm._s(uk.nama_unit_kerja) + + "\n " + ) + ] + ) + }) + ), + _vm._v(" "), + _c( + "small", + { staticClass: "form-text text-muted" }, + [_vm._v("*Wajib diisi")] + ) + ]) + ]), + _vm._v(" "), + _c("td", [ + _c("div", { staticClass: "form-group" }, [ + _c( + "select", + { + directives: [ + { + name: "model", + rawName: "v-model", + value: rp.id_posisi, + expression: "rp.id_posisi" + } + ], + staticClass: "form-control", + on: { + change: function($event) { + var $$selectedVal = Array.prototype.filter + .call( + $event.target.options, + function(o) { + return o.selected + } + ) + .map(function(o) { + var val = + "_value" in o + ? o._value + : o.value + return val + }) + _vm.$set( + rp, + "id_posisi", + $event.target.multiple + ? $$selectedVal + : $$selectedVal[0] + ) + } + } + }, + _vm._l(_vm.posisi, function(pos) { + return _c( + "option", + { + domProps: { value: pos.id_posisi } + }, + [ + _vm._v( + "\n " + + _vm._s(pos.nama_posisi) + + "\n " + ) + ] + ) + }) + ), + _vm._v(" "), + _c( + "small", + { staticClass: "form-text text-muted" }, + [_vm._v("*Wajib diisi")] + ) + ]) + ]), + _vm._v(" "), + _c("td", [ + _c( + "button", + { + staticClass: "btn btn-danger", + attrs: { + id: _vm.rekomendasiPosisi.indexOf(rp), + type: "button" + }, + on: { + click: function($event) { + _vm.delRekomendasiPosisi($event) + } + } + }, + [ + _vm._v( + "\n Hapus " + ), + _c("i", { + staticClass: "fas fa-trash-alt" + }) + ] + ) + ]) + ]) + : _vm._e() + ]) + }), + _vm._v(" "), + _vm.isEditRekomendasi + ? _c( + "button", + { + staticClass: "btn btn-primary float-sm-left", + on: { click: _vm.addRekomendasiPosisi } + }, + [ + _vm._v("\n Tambah "), + _c("i", { staticClass: "fas fa-plus" }) + ] + ) + : _vm._e() + ], + 2 + ) + ]) + : _vm._e(), + _vm._v(" "), + _c("br") + ], + 2 + ) + ]), + _vm._v(" "), + _vm.isEditRekomendasi + ? _c("div", { staticClass: "card-footer text-muted" }, [ + _c( + "a", + { + staticClass: "btn btn-success float-sm-right btn-simpan", + attrs: { href: "#rekomendasi" }, + on: { click: _vm.saveRekomendasi } + }, + [ + _vm._v("\n Simpan "), + _c("i", { staticClass: "fas fa-check" }) + ] + ), + _vm._v(" "), + _c( + "a", + { + staticClass: "btn btn-danger float-sm-right", + attrs: { href: "#rekomendasi" }, + on: { click: _vm.cancelRekomendasi } + }, + [ + _vm._v("\n Batal "), + _c("i", { staticClass: "fas fa-times" }) + ] + ) + ]) + : _vm._e() ]) ]) } @@ -18076,21 +18536,11 @@ var staticRenderFns = [ var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h - return _c( - "div", - { staticClass: "card", attrs: { id: "data-kompetensi" } }, - [ - _c("div", { staticClass: "card-header" }, [ - _vm._v("\n Hasil Kompetensi\n ") - ]), - _vm._v(" "), - _c("div", { staticClass: "card-body" }, [ - _c("div", { staticClass: "container" }, [ - _vm._v("\n\n Belum ditambahkan.\n\n ") - ]) - ]) - ] - ) + return _c("div", { staticClass: "card-body" }, [ + _c("div", { staticClass: "container" }, [ + _vm._v("\n\n Belum ditambahkan.\n\n ") + ]) + ]) }, function() { var _vm = this @@ -18098,11 +18548,9 @@ var staticRenderFns = [ var _c = _vm._self._c || _h return _c("thead", [ _c("tr", [ - _c("th", { attrs: { scope: "col" } }, [_vm._v("Nama Training")]), - _vm._v(" "), - _c("th", { attrs: { scope: "col" } }, [_vm._v("Penyelenggara")]), + _c("th", { attrs: { scope: "col" } }, [_vm._v("Unit Kerja")]), _vm._v(" "), - _c("th", { attrs: { scope: "col" } }, [_vm._v("Bidang")]) + _c("th", { attrs: { scope: "col" } }, [_vm._v("Jabatan")]) ]) ]) } diff --git a/public/profile/649660532340430924.gif b/public/profile/649660532340430924.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b12271eb956e5c150fcca3cd6dd7606d1a6f2ec Binary files /dev/null and b/public/profile/649660532340430924.gif differ diff --git a/public/sertifikat/649660532340430924_0.jpeg b/public/sertifikat/649660532340430924_0.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4823a08a45852a48051ae81ca8fdedc8d0f7d89b Binary files /dev/null and b/public/sertifikat/649660532340430924_0.jpeg differ diff --git a/public/sertifikat/649660532340430924_2.gif b/public/sertifikat/649660532340430924_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b12271eb956e5c150fcca3cd6dd7606d1a6f2ec Binary files /dev/null and b/public/sertifikat/649660532340430924_2.gif differ diff --git a/public/sertifikat/649660532340430924_2.jpeg b/public/sertifikat/649660532340430924_2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4823a08a45852a48051ae81ca8fdedc8d0f7d89b Binary files /dev/null and b/public/sertifikat/649660532340430924_2.jpeg differ diff --git a/public/sertifikat/649660532340430924_3.jpeg b/public/sertifikat/649660532340430924_3.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4823a08a45852a48051ae81ca8fdedc8d0f7d89b Binary files /dev/null and b/public/sertifikat/649660532340430924_3.jpeg differ diff --git a/resources/assets/js/components/.fuse_hidden00000c2c00000002 b/resources/assets/js/components/.fuse_hidden00000c2c00000002 deleted file mode 100644 index 3050b40a5dd5669a952541eb8350b546bc807aeb..0000000000000000000000000000000000000000 --- a/resources/assets/js/components/.fuse_hidden00000c2c00000002 +++ /dev/null @@ -1,1201 +0,0 @@ -<template> - <div> - <div class="card" id="profil-pegawai"> - <div class="card-header"> - Profil Pegawai - <button class="btn btn-primary float-sm-right" v-on:click="editProfilPegawai" v-bind:disabled="disableEdit"> - Edit <i class="fas fa-edit"></i> - </button> - </div> - - <div class="card-body"> - <div class="card-container"> - <div class="row"> - <div class="col-sm-3 img-responsive"> - <img id="img-profile" v-bind:src="pegawai.imageProfileUrl" class="img-thumbnail"> - <br><br> - <button v-if="isEditProfile" type="button" class="btn btn-primary">Ganti Foto</button> - </div> - <div class="col-sm-1"></div> - <div class="col-sm-7"> - <div class="row"> - <div class="col-sm-3 text-right"> - Nama - </div> - <div class="col-sm-9"> - - <b v-if="!isEditProfile" v-text="pegawai.nama"></b> - - <div id="edit-nama" class="form-group" v-if="isEditProfile"> - <input v-model="pegawai.nama" type="text" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - Tempat, Tanggal Lahir - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile"><span v-text="pegawai.tempatLahir"></span>, <span v-text="pegawai.tanggalLahir"></span></b> - - <div class="form-row" v-if="isEditProfile"> - <div id="edit-tempat-lahir" class="form-group"> - <input v-model="pegawai.tempatLahir" type="text" class="form-control"> - <small class="form-text text-muted">*Tempat lahir. Wajib diisi</small> - </div> - <div id="edit-tanggal-lahir" class="form-group"> - <input v-model="pegawai.tanggalLahir" type="date" class="form-control"> - <small class="form-text text-muted">*Tanggal lahir. Wajib diisi</small> - </div> - </div> - - - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - Email - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile" v-text="pegawai.email"></b> - - <div v-if="isEditProfile" id="edit-email" class="form-group"> - <input v-model="pegawai.email" type="email" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - No. Pegawai - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile" v-text="pegawai.nopeg"></b> - - <div v-if="isEditProfile" id="edit-nopeg" class="form-group"> - <input v-model="pegawai.nopeg" type="text" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - Unit Kerja - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile" v-text="pegawai.unitKerja.text"></b> - - <div v-if="isEditProfile" id="edit-unit-kerja" class="form-group"> - <select class="form-control" v-model="pegawai.unitKerja.id"> - <option v-for="uk in unitKerja" v-bind:value="uk.id_unit_kerja"> - {{ uk.nama_unit_kerja }} - </option> - </select> - <!-- <input v-bind:value="unitKerja.find(x => x.id_unit_kerja == pegawai.unitKerja).nama_unit_kerja" type="text" class="form-control" disabled> --> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - Jabatan - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile" v-text="pegawai.posisi.text"></b> - - <div v-if="isEditProfile" id="edit-posisi" class="form-group"> - <select class="form-control" v-model="pegawai.posisi.id"> - <option v-for="pos in posisi" v-bind:value="pos.id_posisi"> - {{ pos.nama_posisi }} - </option> - </select> - <!-- <input v-bind:value="posisi.find(x => x.id_posisi == pegawai.posisi).nama_posisi" type="text" class="form-control" disabled> --> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - Kompetensi - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile" v-text="pegawai.kompetensi.text"></b> - - <div v-if="isEditProfile" id="edit-kompetensi" class="form-group"> - <select class="form-control" v-model="pegawai.kompetensi.id"> - <option v-for="kk in kelompokKompetensi" v-bind:value="kk.id_kelompok_kompetensi"> - {{ kk.nama_kelompok_kompetensi }} - </option> - </select> - <!-- <input v-bind:value="kelompokKompetensi.find(x => x.id_kelompok_kompetensi == pegawai.kompetensi).nama_kelompok_kompetensi" type="text" class="form-control"> --> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-sm-3 text-right"> - Tahun Mulai Jabatan Saat Ini - </div> - <div class="col-sm-9"> - <b v-if="!isEditProfile" v-text="pegawai.tahunMasuk"></b> - - <div v-if="isEditProfile" id="edit-tahun-masuk" class="form-group"> - <input v-model="pegawai.tahunMasuk" type="text" class="form-control"> - <small class="form-text text-muted">*Edit pada data kepegawaian di bawah</small> - </div> - </div> - </div> - - </div> - </div> - </div> - </div> - - <div class="card-footer text-muted" v-if="isEditProfile"> - <a href="#profil-pegawai" class="btn btn-success float-sm-right btn-simpan" v-on:click="saveProfilPegawai"> - Simpan <i class="fas fa-check"></i> - </a> - <a href="#profil-pegawai" class="btn btn-danger float-sm-right" v-on:click="cancelProfilPegawai"> - Batal <i class ="fas fa-times"></i> - </a> - </div> - </div> - - <br> - - <div class="card" id="data-kepegawaian"> - <div class="card-header"> - Data Kepegawaian - <button class="btn btn-primary float-sm-right" v-on:click="editDataKepegawaian" v-bind:disabled="disableEdit"> - Edit <i class="fas fa-edit"></i> - </button> - </div> - - <div class="card-body"> - <div class="container"> - - <div v-if="dataKepegawaian.length === 0" class="no-data-kepegawaian"> - <div v-if="!isEditKepegawaian"> - Belum ditambahkan. - <br> - </div> - <button v-if="isEditKepegawaian" class="btn btn-primary float-sm-left" v-on:click="addDataKepegawaian"> - Tambah <i class="fas fa-plus"></i> - </button> - - </div> - - <div v-if="dataKepegawaian.length !== 0" class="data-kepegawaian"> - <table class="table"> - <thead> - <tr> - <th scope="col">Unit Kerja</th> - <th scope="col">Posisi</th> - <th scope="col">Tahun Mulai</th> - <th scope="col">Tahun Selesai</th> - </tr> - </thead> - <tbody v-for="dk in dataKepegawaian"> - <tr v-if="!isEditKepegawaian"> - <td v-text="unitKerja.find(x => x.id_unit_kerja == dk.id_unit_kerja).nama_unit_kerja" ></td> - <td v-text="posisi.find(x => x.id_posisi == dk.id_posisi).nama_posisi" ></td> - <td v-text="dk.tahun_masuk" ></td> - <td v-text="dk.tahun_keluar" ></td> - </tr> - <tr v-if="isEditKepegawaian"> - <td> - <div class="form-group"> - <select class="form-control" v-model="dk.id_unit_kerja"> - <option v-for="uk in unitKerja" v-bind:value="uk.id_unit_kerja"> - {{ uk.nama_unit_kerja }} - </option> - </select> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <select class="form-control" v-model="dk.id_posisi"> - <option v-for="pos in posisi" v-bind:value="pos.id_posisi"> - {{ pos.nama_posisi }} - </option> - </select> - <!-- <input v-model="dk.id_posisi" type="text" class="form-control text-center"> --> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="dk.tahun_masuk" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="dk.tahun_keluar" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Isi dengan "-" jika belum selesai</small> - </div> - </td> - <td> - <button v-bind:id="dataKepegawaian.indexOf(dk)" v-on:click="delDataKepegawaian($event)" class="btn btn-danger" type="button"> - Hapus <i class="fas fa-trash-alt"></i> - </button> - </td> - </tr> - </tbody> - <button v-if="isEditKepegawaian" class="btn btn-primary float-sm-left" v-on:click="addDataKepegawaian"> - Tambah <i class="fas fa-plus"></i> - </button> - </table> - - </div> - - <br> - - </div> - </div> - <div class="card-footer text-muted" v-if="isEditKepegawaian"> - <a href="#data-kepegawaian" class="btn btn-success float-sm-right btn-simpan" v-on:click="saveDataKepegawaian"> - Simpan <i class="fas fa-check"></i> - </a> - <a href="#data-kepegawaian" class="btn btn-danger float-sm-right" v-on:click="cancelDataKepegawaian"> - Batal <i class ="fas fa-times"></i> - </a> - </div> - </div> - - <br> - - <div class="card" id="riwayat-pegawai"> - <div class="card-header"> - Riwayat Pendidikan dan Pekerjaan<button class="btn btn-primary float-sm-right" v-on:click="editRiwayatPegawai" v-bind:disabled="disableEdit"> - Edit <i class="fas fa-edit"></i> - </button> - </div> - - <div class="card-body"> - <div class="container"> - - <h5>Riwayat Pendidikan</h5> - - <div v-if="riwayatPendidikan.length === 0" class="no-riwayat-pendidikan"> - <div v-if="!isEditRiwayat"> - <hr> - Belum ditambahkan. - <br> - </div> - <button v-if="isEditRiwayat" class="btn btn-primary float-sm-left" v-on:click="addRiwayatPendidikan"> - Tambah <i class="fas fa-plus"></i> - </button> - </div> - - <div v-if="riwayatPendidikan.length !== 0" class="riwayat-pendidikan"> - <table class="table"> - <thead> - <tr> - <th scope="col">Tingkat Pendidikan</th> - <th scope="col">Nama Institusi</th> - <th scope="col">Jurusan</th> - <th scope="col">Tahun Masuk</th> - <th scope="col">Tahun Keluar</th> - </tr> - </thead> - <tbody v-for="rp in riwayatPendidikan"> - <tr v-if="!isEditRiwayat"> - <td v-text="rp.strata" ></td> - <td v-text="rp.nama_institusi" ></td> - <td v-text="rp.jurusan" ></td> - <td v-text="rp.tahun_masuk" ></td> - <td v-text="rp.tahun_keluar" ></td> - </tr> - <tr v-if="isEditRiwayat"> - <td> - <div class="form-group"> - <input v-model="rp.strata" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.nama_institusi" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.jurusan" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.tahun_masuk" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.tahun_keluar" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Isi dengan "-" jika belum selesai</small> - </div> - </td> - <td> - <button v-bind:id="riwayatPendidikan.indexOf(rp)" v-on:click="delRiwayatPendidikan($event)" class="btn btn-danger" type="button"> - Hapus <i class="fas fa-trash-alt"></i> - </button> - </td> - </tr> - - </tbody> - <button v-if="isEditRiwayat" class="btn btn-primary float-sm-left" v-on:click="addRiwayatPendidikan"> - Tambah <i class="fas fa-plus"></i> - </button> - </table> - - </div> - - <br><br> - - - <h5>Riwayat Pekerjaan (di luar ITB)</h5> - - <div v-if="riwayatPekerjaan.length === 0" class="no-riwayat-pekerjaan"> - <div v-if="!isEditRiwayat"> - <hr> - Belum ditambahkan. - <br> - </div> - <button v-if="isEditRiwayat" class="btn btn-primary float-sm-left" v-on:click="addRiwayatPekerjaan"> - Tambah <i class="fas fa-plus"></i> - </button> - </div> - - <div v-if="riwayatPekerjaan.length !== 0" class="riwayat-pekerjaan"> - <table class="table"> - <thead> - <tr> - <th scope="col">Nama Institusi</th> - <th scope="col">Posisi</th> - <th scope="col">Tahun Masuk</th> - <th scope="col">Tahun Keluar</th> - </tr> - </thead> - <tbody v-for="rp in riwayatPekerjaan"> - <tr v-if="!isEditRiwayat"> - <td v-text="rp.nama_institusi" ></td> - <td v-text="rp.posisi" ></td> - <td v-text="rp.tahun_masuk" ></td> - <td v-text="rp.tahun_keluar" ></td> - </tr> - - <tr v-if="isEditRiwayat"> - <td> - <div class="form-group"> - <input v-model="rp.nama_institusi" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.posisi" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.tahun_masuk" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="rp.tahun_keluar" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Isi dengan "-" jika belum selesai</small> - </div> - </td> - <td> - <button v-bind:id="riwayatPekerjaan.indexOf(rp)" v-on:click="delRiwayatPekerjaan($event)" class="btn btn-danger" type="button"> - Hapus <i class="fas fa-trash-alt"></i> - </button> - </td> - </tr> - </tbody> - <button v-if="isEditRiwayat" class="btn btn-primary float-sm-left" v-on:click="addRiwayatPekerjaan"> - Tambah <i class="fas fa-plus"></i> - </button> - </table> - - </div> - - </div> - </div> - <div class="card-footer text-muted" v-if="isEditRiwayat"> - <a href="#riwayat-pegawai" class="btn btn-success float-sm-right btn-simpan" v-on:click="saveRiwayatPegawai"> - Simpan <i class="fas fa-check"></i> - </a> - <a href="#riwayat-pegawai" class="btn btn-danger float-sm-right" v-on:click="cancelRiwayatPegawai"> - Batal <i class ="fas fa-times"></i> - </a> - </div> - </div> - - <br> - - <div class="card" id="sertificate"> - <div class="card-header"> - Sertifikat<button class="btn btn-primary float-sm-right" v-on:click="editSertifikat" v-bind:disabled="disableEdit"> - Edit <i class="fas fa-edit"></i> - </button> - </div> - - <div class="card-body"> - <div class="container"> - <div v-if="sertifikat.length === 0" class="no-sertificate"> - <div v-if="!isEditSertifikat"> - Belum ditambahkan. - <br> - </div> - <button v-if="isEditSertifikat" class="btn btn-primary float-sm-left" v-on:click="addSertifikat"> - Tambah <i class="fas fa-plus"></i> - </button> - </div> - - <div v-if="sertifikat.length !== 0" class="sertificate"> - <table class="table" align="left" style="width: 100%"> - <tbody v-for="dk in sertifikat"> - <div v-if="!isEditSertifikat"> - <colgroup> - <col width="35%"> - <col width="15%"> - <col width="50%"> - </colgroup> - <tr> - <td rowspan="4"> - <img id="img-sertifikat-1" v-bind:src="dk.nama_file" class="img-thumbnail" width="200"> - </td> - <th scope="col">Judul</th> - <td v-text="dk.judul" ></td> - </tr> - <tr> - <th scope="col">Lembaga</th> - <td v-text="dk.lembaga" ></td> - </tr> - <tr> - <th scope="col">Tahun Diterbitkan</th> - <td v-text="dk.tahun_diterbitkan" ></td> - </tr> - <tr> - <th scope="col">Catatan</th> - <td v-text="dk.catatan" ></td> - </tr> - </div> - - <div v-if="isEditSertifikat"> - <tr> - <td rowspan="4"> - <div> - <button v-bind:id="sertifikat.indexOf(dk)" v-on:click="delSertifikat($event)" class="btn btn-danger" type="button"> - Hapus <i class="fas fa-trash-alt"></i> - </button> - </div> - <br> - <div v-if="dk.nama_file !== NULL"> - <input type="file" v-bind:id="sertifikat.indexOf(dk)" v-on:change="onFileChange" class="form-control"> - </div> - <div v-if="dk.nama_file == NULL"> - <input type="file" v-bind:id="sertifikat.indexOf(dk)" v-on:change="onFileChange" class="form-control"> - </div> - </td> - <td rowspan="4"> - <img id="img-sertifikat-1" v-bind:src="dk.nama_file" class="img-thumbnail" width="200"> - </td> - <th scope="col">Judul</th> - <td> - <div class="form-group"> - <input v-model="dk.judul" type="text" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - </tr> - <tr> - <th scope="col">Lembaga</th> - <td> - <div class="form-group"> - <input v-model="dk.lembaga" type="text" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - </tr> - <tr> - <th scope="col">Tahun Diterbitkan</th> - <td> - <div class="form-group"> - <input v-model="dk.tahun_diterbitkan" type="text" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - </tr> - <tr> - <th scope="col">Catatan</th> - <td> - <div class="form-group"> - <input v-model="dk.catatan" type="text" class="form-control"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - </tr> - </div> - </tbody> - <button v-if="isEditSertifikat" class="btn btn-primary float-sm-left" v-on:click="addSertifikat"> - Tambah <i class="fas fa-plus"></i> - </button> - </table> - </div> - </div> - </div> - <div class="card-footer text-muted" v-if="isEditSertifikat"> - <a href="#sertificate" class="btn btn-success float-sm-right btn-simpan" v-on:click="saveSertifikat"> - Simpan <i class="fas fa-check"></i> - </a> - <a href="#sertificate" class="btn btn-danger float-sm-right" v-on:click="cancelSertifikat"> - Batal <i class ="fas fa-times"></i> - </a> - </div> - </div> - - - <br> - - <div class="card" id="data-kinerja"> - <div class="card-header"> - Hasil Kinerja<button class="btn btn-primary float-sm-right" v-on:click="editDataKinerja" v-bind:disabled="disableEdit"> - Edit <i class="fas fa-edit"></i> - </button> - </div> - - <div class="card-body"> - <div class="container"> - <div v-if="dataKinerja.length === 0" class="no-data-kinerja"> - <div v-if="!isEditDataKinerja"> - Belum ditambahkan. - <br> - </div> - <button v-if="isEditDataKinerja" class="btn btn-primary float-sm-left" v-on:click="addDataKinerja"> - Tambah <i class="fas fa-plus"></i> - </button> - </div> - - <div v-if="dataKinerja.length !== 0" class="data-kinerja"> - <table class="table"> - <thead> - <tr> - <th scope="col">Tahun</th> - <th scope="col">Semester</th> - <th scope="col">Nilai</th> - <th scope="col">Catatan</th> - </tr> - </thead> - <tbody v-for="dk in dataKinerja"> - <tr v-if="!isEditDataKinerja"> - <td v-text="dk.tahun" ></td> - <td v-text="dk.semester" ></td> - <td v-text="dk.nilai" ></td> - <td v-text="dk.catatan" ></td> - </tr> - - <tr v-if="isEditDataKinerja"> - <td> - <div class="form-group"> - <input v-model="dk.tahun" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="dk.semester" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="dk.nilai" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <div class="form-group"> - <input v-model="dk.catatan" type="text" class="form-control text-center"> - <small class="form-text text-muted">*Wajib diisi</small> - </div> - </td> - <td> - <button v-bind:id="dataKinerja.indexOf(dk)" v-on:click="delDataKinerja($event)" class="btn btn-danger" type="button"> - Hapus <i class="fas fa-trash-alt"></i> - </button> - </td> - </tr> - </tbody> - <button v-if="isEditDataKinerja" class="btn btn-primary float-sm-left" v-on:click="addDataKinerja"> - Tambah <i class="fas fa-plus"></i> - </button> - </table> - </div> - </div> - </div> - <div class="card-footer text-muted" v-if="isEditDataKinerja"> - <a href="#data-kinerja" class="btn btn-success float-sm-right btn-simpan" v-on:click="saveDataKinerja"> - Simpan <i class="fas fa-check"></i> - </a> - <a href="#data-kinerja" class="btn btn-danger float-sm-right" v-on:click="cancelDataKinerja"> - Batal <i class ="fas fa-times"></i> - </a> - </div> - </div> - - <br> - - <div class="card" id="data-kompetensi"> - <div class="card-header"> - Hasil Kompetensi - </div> - - <div class="card-body"> - <div class="container"> - - Belum ditambahkan. - - </div> - </div> - </div> - - <br> - - <div class="card" id="rekomendasi"> - <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 Lain-lain</h5> - - <hr> - - Tidak ada. - - </div> - </div> - </div> - - </div> - -</template> - -<script> - export default { - props: ['id', 'kinerja', 'unit-kerja', 'posisi', 'kelompok-kompetensi'], - - data() { - return { - //dummy - dataKinerja: [ - {tahun : 2010, semester:1, nilai:2.50, catatan:"ini catatan"} - ], - sertifikat: [], - rekomendasiTraining : [], - - sertifikatCounter: 0, - - disableEdit: false, - isEditProfile: false, - isEditKepegawaian: false, - isEditRiwayat: false, - isEditSertifikat: false, - isEditDataKinerja: false, - cachedPegawai: null, - cachedDataKepegawaian: null, - cachedRiwayatPendidikan: null, - cachedRiwayatPekerjaan: null, - cachedSertifikat: null, - cachedDataKinerja: null, - pegawai: { - imageProfileUrl: null, - nama: null, - tempatLahir: null, - tanggalLahir: null, - email: null, - nopeg: null, - unitKerja: { - id: null, - text: null - }, - posisi: { - id: null, - text: null - }, - kompetensi: { - id: null, - text: null - }, - tahunMasuk: null - }, - dataKepegawaian: [], - riwayatPendidikan: [], - riwayatPekerjaan: [] - } - - }, - - mounted() { - - }, - - created() { - - axios.get('/api/pegawai/' + this.id) - .then((response) => { - //get data from api response - var responsePegawai = response.data["data"]; - - this.dataKepegawaian = responsePegawai["kepegawaian"]; - this.riwayatPendidikan = responsePegawai["pendidikan"]; - this.riwayatPekerjaan = responsePegawai["pekerjaan"]; - this.updateDataKepegawaian(); - - this.sertifikat = responsePegawai["sertifikat"]; - this.updateSertifikat(); - - this.pegawai.nama = responsePegawai["user"]["name"]; - this.pegawai.tempatLahir = responsePegawai["pegawai"]["tempat_lahir"]; - this.pegawai.tanggalLahir = responsePegawai["pegawai"]["tanggal_lahir"]; - this.pegawai.email = responsePegawai["user"]["email"]; - this.pegawai.nopeg = responsePegawai["pegawai"]["nip"]; - this.pegawai.imageProfileUrl = 'pimage/' + responsePegawai["pegawai"]["nip"] + '.' + responsePegawai["pegawai"]["ekstensi_foto"]; - this.pegawai.kompetensi.id = responsePegawai["pegawai"]["id_kelompok_kompetensi"]; - this.updateProfilPegawai(); - - //chacing - this.cachedPegawai = JSON.parse(JSON.stringify(this.pegawai)); - this.cachedDataKepegawaian = JSON.parse(JSON.stringify(this.dataKepegawaian)); - this.cachedRiwayatPendidikan = JSON.parse(JSON.stringify(this.riwayatPendidikan)); - this.cachedRiwayatPekerjaan = JSON.parse(JSON.stringify(this.riwayatPekerjaan)); - this.cachedSertifikat = JSON.parse(JSON.stringify(this.sertifikat)); - - console.log(this); - }) - .catch(function (error) { - console.log(error); - }); - - //caching others - this.cachedDataKinerja = JSON.parse(JSON.stringify(this.dataKinerja)); - - }, - - methods: { - updateProfilPegawai() { - if (this.pegawai.unitKerja.id != null) { - this.pegawai.unitKerja.text = this.unitKerja.find(x => x.id_unit_kerja == this.pegawai.unitKerja.id).nama_unit_kerja; - } else { - this.pegawai.unitKerja.text = null; - } - - - if (this.pegawai.kompetensi.id != null) { - this.pegawai.kompetensi.text = this.kelompokKompetensi.find(x => x.id_kelompok_kompetensi == this.pegawai.kompetensi.id).nama_kelompok_kompetensi; - } else { - this.pegawai.kompetensi.text = null; - } - - if (this.pegawai.posisi.id != null) { - this.pegawai.posisi.text = this.posisi.find(x => x.id_posisi == this.pegawai.posisi.id).nama_posisi; - } else { - this.pegawai.posisi.text = null; - } - }, - - updateDataKepegawaian() { - - //update relevan - if (this.dataKepegawaian.length == 0) { - this.pegawai.unitKerja.id = null; - this.pegawai.posisi.id = null; - this.pegawai.tahunMasuk = null; - } else { - //sort - this.dataKepegawaian.sort(function(a, b){ - var keyA = a.tahun_masuk, - keyB = b.tahun_masuk; - // Compare the 2 dates - if(keyA < keyB) return -1; - if(keyA > keyB) return 1; - return 0; - }); - var lastDataPegawai = this.dataKepegawaian[this.dataKepegawaian.length-1]; - this.pegawai.unitKerja.id = lastDataPegawai["id_unit_kerja"]; - this.pegawai.posisi.id = lastDataPegawai["id_posisi"]; - this.pegawai.tahunMasuk = lastDataPegawai["tahun_masuk"]; - } - }, - - updateDataKepegawaianAfterEditProfile() { - - //update relevan - if (this.dataKepegawaian.length == 0) { - var newData = { - id_data_kepegawaian : null, - id_pegawai : null, - id_unit_kerja : this.pegawai.unitKerja.id, - id_posisi : this.pegawai.posisi.id, - tahun_masuk : this.pegawai.tahunMasuk, - tahun_keluar : null - }; - this.dataKepegawaian.push(newData); - } else { - //sort - this.dataKepegawaian.sort(function(a, b){ - var keyA = a.tahun_masuk, - keyB = b.tahun_masuk; - // Compare the 2 dates - if(keyA < keyB) return -1; - if(keyA > keyB) return 1; - return 0; - }); - var lastDataPegawai = this.dataKepegawaian[this.dataKepegawaian.length-1]; - lastDataPegawai["id_unit_kerja"] = this.pegawai.unitKerja.id; - lastDataPegawai["id_posisi"] = this.pegawai.posisi.id; - lastDataPegawai["tahun_masuk"] = this.pegawai.tahunMasuk; - } - }, - - updateSertifikat(){ - for(var i = 0; i < this.sertifikat.length; i++){ - this.sertifikat[i].nama_file = 'simage/' + this.sertifikat[i].nama_file; - } - }, - - disableEditButton() { - this.disableEdit = true; - }, - - enableEditButton() { - this.disableEdit = false; - }, - - editProfilPegawai() { - this.isEditProfile = true; - this.disableEditButton(); - }, - - editDataKepegawaian() { - this.isEditKepegawaian = true; - this.disableEditButton(); - }, - - editRiwayatPegawai() { - this.isEditRiwayat = true; - this.disableEditButton(); - }, - - editSertifikat() { - this.isEditSertifikat = true; - this.disableEditButton(); - this.sertifikatCounter = this.sertifikat.length; - }, - - editDataKinerja() { - this.isEditDataKinerja = true; - this.disableEditButton(); - }, - - addDataKepegawaian() { - var newData = { - id_data_kepegawaian : null, - id_pegawai : null, - id_unit_kerja : null, - id_posisi : null, - tahun_masuk : null, - tahun_keluar : null - }; - this.dataKepegawaian.push(newData); - }, - - addRiwayatPendidikan() { - var newData = { - id_riwayat_pendidikan : null, - id_pegawai : null, - nama_institusi : null, - strata : null, - jurusan : null, - tahun_masuk : null, - tahun_keluar : null - }; - this.riwayatPendidikan.push(newData); - }, - - addRiwayatPekerjaan() { - var newData = { - id_riwayat_pendidikan : null, - id_pegawai : null, - nama_institusi : null, - posisi : null, - tahun_masuk : null, - tahun_keluar : null - }; - this.riwayatPekerjaan.push(newData); - }, - - addSertifikat() { - var newData = { - - }; - this.sertifikat.push(newData); - this.sertifikatCounter++; - }, - - addDataKinerja() { - var newData = { - id_kinerja : null, - id_pegawai : null, - tahun : null, - semester : null, - nilai : null, - catatan : null - }; - this.dataKinerja.push(newData); - }, - - delDataKepegawaian(event) { - var targetIndex = event.currentTarget.id; - this.dataKepegawaian.splice(targetIndex, 1); - }, - - delRiwayatPendidikan(event) { - var targetIndex = event.currentTarget.id; - this.riwayatPendidikan.splice(targetIndex, 1); - }, - - delRiwayatPekerjaan(event) { - var targetIndex = event.currentTarget.id; - this.riwayatPekerjaan.splice(targetIndex, 1); - }, - - delSertifikat(event) { - var targetIndex = event.currentTarget.id; - this.sertifikat.splice(targetIndex, 1); - this.sertifikatCounter--; - }, - - delDataKinerja(event) { - var targetIndex = event.currentTarget.id; - this.dataKinerja.splice(targetIndex, 1); - }, - - saveProfilPegawai() { - this.enableEditButton(); - // this.cachedPegawai = Object.assign({}, this.pegawai); - - this.updateProfilPegawai(); - this.updateDataKepegawaianAfterEditProfile(); - - this.cachedPegawai = JSON.parse(JSON.stringify(this.pegawai)); - 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.updateDataKepegawaian(); - this.updateProfilPegawai(); - this.enableEditButton(); - // this.cachedDataKepegawaian = Object.assign({}, this.dataKepegawaian); - this.cachedDataKepegawaian = JSON.parse(JSON.stringify(this.dataKepegawaian)); - this.isEditKepegawaian = false; - - }, - - saveRiwayatPegawai() { - //sort - this.riwayatPendidikan.sort(function(a, b){ - var keyA = a.tahun_masuk, - keyB = b.tahun_masuk; - // Compare the 2 dates - if(keyA < keyB) return -1; - if(keyA > keyB) return 1; - return 0; - }); - - //sort - this.riwayatPekerjaan.sort(function(a, b){ - var keyA = a.tahun_masuk, - keyB = b.tahun_masuk; - // Compare the 2 dates - if(keyA < keyB) return -1; - if(keyA > keyB) return 1; - return 0; - }); - - this.enableEditButton(); - // this.cachedRiwayatPendidikan = Object.assign({}, this.riwayatPendidikan); - // this.cachedRiwayatPekerjaan = Object.assign({}, this.riwayatPekerjaan); - this.cachedRiwayatPendidikan = JSON.parse(JSON.stringify(this.riwayatPendidikan)); - this.cachedRiwayatPekerjaan = JSON.parse(JSON.stringify(this.riwayatPekerjaan)); - this.isEditRiwayat = false; - - - }, - - saveSertifikat() { - console.log(this.sertifikat); - - axios.post('/api/sertifikat/' + this.id, { - sertifikat: this.sertifikat, - _method: 'put' - }) - .then(function (response) { - console.log(response); - window.location.href = "/pages/profile"; - }) - .catch(function (error) { - alert(error); - }); - }, - - saveDataKinerja() { - //sort - this.dataKinerja.sort(function(a, b){ - var keyA = a.tahun, - keyB = b.tahun; - // Compare the 2 dates - if(keyA < keyB) return -1; - if(keyA > keyB) return 1; - if (keyA == keyB) { - if (a.semester < b.semester) return -1; - else return 1; - } - }); - - this.enableEditButton(); - this.cachedDataKinerja = JSON.parse(JSON.stringify(this.dataKinerja)); - this.isEditDataKinerja = false; - }, - - cancelProfilPegawai() { - this.enableEditButton(); - this.pegawai = JSON.parse(JSON.stringify(this.cachedPegawai)); - this.isEditProfile = false; - }, - - cancelDataKepegawaian() { - this.enableEditButton(); - this.dataKepegawaian = JSON.parse(JSON.stringify(this.cachedDataKepegawaian)); - this.isEditKepegawaian = false; - }, - - cancelRiwayatPegawai() { - this.enableEditButton(); - this.riwayatPendidikan = JSON.parse(JSON.stringify(this.cachedRiwayatPendidikan)); - this.riwayatPekerjaan = JSON.parse(JSON.stringify(this.cachedRiwayatPekerjaan)); - this.isEditRiwayat = false; - }, - - cancelSertifikat() { - this.enableEditButton(); - this.sertifikat = JSON.parse(JSON.stringify(this.cachedSertifikat)); - this.isEditSertifikat = false; - }, - - cancelDataKinerja() { - this.enableEditButton(); - this.dataKinerja = JSON.parse(JSON.stringify(this.cachedDataKinerja)); - this.isEditDataKinerja = false; - }, - - onFileChange(e) { - let files = e.target.files || e.dataTransfer.files; - if (!files.length) - return; - this.createImage(files[0], e.currentTarget.id); - }, - createImage(file, id) { - let reader = new FileReader(); - let vm = this; - reader.onload = (e) => { - vm.sertifikat[id].nama_file = e.target.result; - }; - reader.readAsDataURL(file); - }, - } - } -</script> - -<style> - -</style> \ No newline at end of file diff --git a/resources/assets/js/components/ProfilPegawai.vue b/resources/assets/js/components/ProfilPegawai.vue index 0194f911ec1208abdf4b8f14ac585d99f7cf261b..7ce5eb7b8af74595ae5c7ad6afd3f63aa137becc 100644 --- a/resources/assets/js/components/ProfilPegawai.vue +++ b/resources/assets/js/components/ProfilPegawai.vue @@ -14,7 +14,7 @@ <div class="col-sm-3 img-responsive"> <img id="img-profile" v-bind:src="pegawai.imageProfileUrl" class="img-thumbnail"> <br><br> - <button v-if="isEditProfile" type="button" class="btn btn-primary">Ganti Foto</button> + <input type="file" v-if="isEditProfile" v-on:change="FileChangeProfile" class="form-control"> </div> <div class="col-sm-1"></div> <div class="col-sm-7"> @@ -502,7 +502,7 @@ </colgroup> <tr> <td rowspan="4"> - <img id="img-sertifikat-1" v-bind:src="dk.nama_file" class="img-thumbnail" width="200"> + <img id="img-sertifikat-1" v-bind:src="dk.nama_file" class="img-thumbnail" width="200"> </td> <th scope="col">Judul</th> <td v-text="dk.judul" ></td> @@ -529,16 +529,11 @@ Hapus <i class="fas fa-trash-alt"></i> </button> </div> - <br> - <div v-if="dk.nama_file !== NULL"> - <input type="file" v-bind:id="sertifikat.indexOf(dk)" v-on:change="onFileChange" class="form-control"> - </div> - <div v-if="dk.nama_file == NULL"> - <input type="file" v-bind:id="sertifikat.indexOf(dk)" v-on:change="onFileChange" class="form-control"> - </div> </td> <td rowspan="4"> <img id="img-sertifikat-1" v-bind:src="dk.nama_file" class="img-thumbnail" width="200"> + <br><br> + <input type="file" v-bind:id="sertifikat.indexOf(dk)" v-on:change="FileChangeSertifikat" class="form-control"> </td> <th scope="col">Judul</th> <td> @@ -694,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"> @@ -710,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"> @@ -718,43 +717,127 @@ <h5>Rekomendasi Training</h5> - <div v-if="rekomendasiTraining.length === 0" class="no-rekomendasi-trainiing"> - <hr> - Belum dimtambahkan. - <br> + <hr> + + <div v-if="rekomendasiTraining.length === 0" class="no-rekomendasi-posisi"> + <div v-if="!isEditRekomendasi"> + Belum ditambahkan. + <br> + </div> + <button v-if="isEditRekomendasi" class="btn btn-primary float-sm-left" v-on:click="addRekomendasiTraining"> + Tambah <i class="fas fa-plus"></i> + </button> + + </div> + + <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 row"> + <div class="col-sm-10"> + <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 class="col-sm-1"> + <button v-bind:id="rekomendasiTraining.indexOf(rt)" v-on:click="delRekomendasiTraining($event)" class="btn btn-danger" type="button"> + Hapus <i class="fas fa-trash-alt"></i> + </button> + </div> + + </div> + + </div> - <div v-if="rekomendasiTraining.length !== 0" class="rekomendasi-trainiing"> + <button v-if="isEditRekomendasi && rekomendasiTraining.length !== 0" class="btn btn-primary float-sm-left" v-on:click="addRekomendasiTraining"> + Tambah <i class="fas fa-plus"></i> + </button> + + <br><br><br> + + + <h5>Rekomendasi Lain-lain</h5> + + + + <div v-if="rekomendasiPosisi.length === 0" class="no-rekomendasi-posisi"> + <div v-if="!isEditRekomendasi"> + <hr> + Belum ditambahkan. + <br> + </div> + <button v-if="isEditRekomendasi" class="btn btn-primary float-sm-left" v-on:click="addRekomendasiPosisi"> + Tambah <i class="fas fa-plus"></i> + </button> + + </div> + + <div v-if="rekomendasiPosisi.length !== 0" class="rekomendasi-posisi"> <table class="table"> <thead> <tr> - <th scope="col">Nama Training</th> - <th scope="col">Penyelenggara</th> - <th scope="col">Bidang</th> + <th scope="col">Unit Kerja</th> + <th scope="col">Jabatan</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> + <tbody v-for="rp in rekomendasiPosisi"> + <tr v-if="!isEditRekomendasi"> + <td v-text="unitKerja.find(x => x.id_unit_kerja == rp.id_unit_kerja).nama_unit_kerja" ></td> + <td v-text="posisi.find(x => x.id_posisi == rp.id_posisi).nama_posisi" ></td> + </tr> + <tr v-if="isEditRekomendasi"> + <td> + <div class="form-group"> + <select class="form-control" v-model="rp.id_unit_kerja"> + <option v-for="uk in unitKerja" v-bind:value="uk.id_unit_kerja"> + {{ uk.nama_unit_kerja }} + </option> + </select> + <small class="form-text text-muted">*Wajib diisi</small> + </div> + </td> + <td> + <div class="form-group"> + <select class="form-control" v-model="rp.id_posisi"> + <option v-for="pos in posisi" v-bind:value="pos.id_posisi"> + {{ pos.nama_posisi }} + </option> + </select> + <small class="form-text text-muted">*Wajib diisi</small> + </div> + </td> + <td> + <button v-bind:id="rekomendasiPosisi.indexOf(rp)" v-on:click="delRekomendasiPosisi($event)" class="btn btn-danger" type="button"> + Hapus <i class="fas fa-trash-alt"></i> + </button> + </td> </tr> </tbody> + <button v-if="isEditRekomendasi" class="btn btn-primary float-sm-left" v-on:click="addRekomendasiPosisi"> + Tambah <i class="fas fa-plus"></i> + </button> </table> </div> - <br><br> - - - <h5>Rekomendasi Lain-lain</h5> - - <hr> - - Tidak ada. + <br> </div> </div> + <div class="card-footer text-muted" v-if="isEditRekomendasi"> + <a href="#rekomendasi" class="btn btn-success float-sm-right btn-simpan" v-on:click="saveRekomendasi"> + Simpan <i class="fas fa-check"></i> + </a> + <a href="#rekomendasi" class="btn btn-danger float-sm-right" v-on:click="cancelRekomendasi"> + Batal <i class ="fas fa-times"></i> + </a> + </div> </div> </div> @@ -763,11 +846,11 @@ <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 { - //dummy + pegawai: { imageProfileUrl: "", nama: "", @@ -781,17 +864,11 @@ tahunMasuk: "" }, dataKepegawaian: [], + dataKepegawaianPrev: null, riwayatPendidikan: [], riwayatPekerjaan: [], sertifikat: [], - dataKinerja: [ - {tahun : 2010, semester:1, nilai:2.50, catatan:"ini catatan"} - ], - rekomendasiTraining : [], - - sertifikatCounter : 0, - isShowAllDataKinerja: false, disableEdit: false, isEditProfile: false, @@ -799,12 +876,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, @@ -830,7 +910,9 @@ riwayatPendidikan: [], riwayatPekerjaan: [], dataKinerja: [], - dataKinerjaShow: [] + dataKinerjaShow: [], + rekomendasiTraining : [], + rekomendasiPosisi : [] } }, @@ -853,6 +935,8 @@ this.riwayatPekerjaan = responsePegawai["pekerjaan"]; this.updateDataKepegawaian(); + this.dataKepegawaianPrev = this.dataKepegawaian[this.dataKepegawaian.length-1]; + this.sertifikat = responsePegawai["sertifikat"]; this.updateSertifikat(); @@ -882,13 +966,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: { @@ -1013,10 +1104,8 @@ }, editSertifikat() { - this.sertifikatCounter = this.sertifikat.length; this.isEditSertifikat = true; this.disableEditButton(); - this.sertifikatCounter = this.sertifikat.length; }, editDataKinerja() { @@ -1024,6 +1113,15 @@ this.disableEditButton(); }, + editDataKompetensi() { + + }, + + editRekomendasi() { + this.isEditRekomendasi = true; + this.disableEditButton(); + }, + addDataKepegawaian() { var newData = { id_data_kepegawaian : null, @@ -1052,7 +1150,7 @@ addRiwayatPekerjaan() { var newData = { - id_riwayat_pendidikan : null, + id_riwayat_pekerjaan : null, id_pegawai : null, nama_institusi : null, posisi : null, @@ -1063,9 +1161,16 @@ }, addSertifikat() { - var newData = {}; + var newData = { + id_sertifikat : null, + id_pegawai : null, + judul : null, + lembaga : null, + tahun_diterbitkan : null, + catatan : null, + nama_file : null, + }; this.sertifikat.push(newData); - this.sertifikatCounter++; }, addDataKinerja() { @@ -1080,6 +1185,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); @@ -1098,7 +1222,6 @@ delSertifikat(event) { var targetIndex = event.currentTarget.id; this.sertifikat.splice(targetIndex, 1); - this.sertifikatCounter--; }, delDataKinerja(event) { @@ -1106,6 +1229,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(); @@ -1115,18 +1248,21 @@ this.cachedPegawai = JSON.parse(JSON.stringify(this.pegawai)); 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); - // }); + axios.post('/api/pegawai/' + this.id, { + pegawai: this.pegawai, + data_kepegawaian: this.dataKepegawaian, + data_kepegawaian_prev: this.dataKepegawaianPrev, + _method: "put" + }) + .then(function (response) { + console.log(response); + window.location.href = '/pages/profile'; + }) + .catch(function (error) { + alert(error); + }); + + console.log(this.dataKepegawaian); }, @@ -1137,6 +1273,19 @@ this.cachedDataKepegawaian = JSON.parse(JSON.stringify(this.dataKepegawaian)); this.isEditKepegawaian = false; + console.log(this.dataKepegawaian); + + axios.post('/api/kepegawaian/' + this.id, { + kepegawaian: this.dataKepegawaian, + _method: 'put' + }) + .then(function (response) { + console.log(response); + window.location.href = "/pages/profile"; + }) + .catch(function (error) { + alert(error); + }); }, saveRiwayatPegawai() { @@ -1165,7 +1314,21 @@ this.cachedRiwayatPekerjaan = JSON.parse(JSON.stringify(this.riwayatPekerjaan)); this.isEditRiwayat = false; - + console.log(this.riwayatPendidikan); + console.log(this.riwayatPekerjaan); + + axios.post('/api/riwayat/' + this.id, { + pendidikan: this.riwayatPendidikan, + pekerjaan: this.riwayatPekerjaan, + _method: 'put' + }) + .then(function (response) { + console.log(response); + window.location.href = "/pages/profile"; + }) + .catch(function (error) { + alert(error); + }); }, saveSertifikat() { @@ -1212,6 +1375,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)); @@ -1249,19 +1419,39 @@ } }, - onFileChange(e) { + 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) return; - this.createImage(files[0], e.currentTarget.id); + + let reader = new FileReader(); + let vm = this; + reader.onload = (e) => { + vm.pegawai.imageProfileUrl = e.target.result; + }; + reader.readAsDataURL(files[0]); }, - createImage(file, id) { + + FileChangeSertifikat(e) { + let files = e.target.files || e.dataTransfer.files; + if (!files.length) + return; + + var idx = e.currentTarget.id; + let reader = new FileReader(); let vm = this; reader.onload = (e) => { - vm.sertifikat[id].nama_file = e.target.result; + vm.sertifikat[idx].nama_file = e.target.result; }; - reader.readAsDataURL(file); + reader.readAsDataURL(files[0]); }, } } 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/assets/sass/profile.scss b/resources/assets/sass/profile.scss index f5ca16f589727a0ff7242069ba3f7f905788c12d..1ed05a799291119726bb1fa580eeabeeb72b8e8e 100644 --- a/resources/assets/sass/profile.scss +++ b/resources/assets/sass/profile.scss @@ -1,6 +1,4 @@ -body { - padding-top: 5rem; -} + .starter-template { padding: 3rem 1.5rem; text-align: center; diff --git a/resources/views/layout-profile/footer.blade.php b/resources/views/layout-profile/footer.blade.php index d9451317e7e893f9557cdf806aab5a4bf9724adf..c00d514200e07766384c52f513b0a045e23ba74d 100644 --- a/resources/views/layout-profile/footer.blade.php +++ b/resources/views/layout-profile/footer.blade.php @@ -1,4 +1,12 @@ -<footer class="container"> - <p class="float-right"><a href="#">Back to top</a></p> - <p>© 2018 PMO ITB · <a href="#">Privacy</a> · <a href="#">Terms</a></p> + +<footer class="footer"> + <div class="container"> + @if ($nama_pengubah === "Anda") + <p class="float-right">Terakhir <b>{{$nama_pengubah}}</b> edit + @else + <p class="float-right">Terakhir diedit oleh <b>{{$nama_pengubah}}</b> + @endif + pada <b>{{$last_edited}}</b> <a class="btn btn-sm btn-primary"href="#"><i class="fas fa-angle-double-up"></i></a></p> + <p>© 2018 PMO ITB · </p> + </div> </footer> \ No newline at end of file diff --git a/resources/views/layout-profile/master.blade.php b/resources/views/layout-profile/master.blade.php index c1ee316f020ff94811eb87b5987901550eff4ebf..2ec879609ba55d05569da75d3692755751cb905e 100644 --- a/resources/views/layout-profile/master.blade.php +++ b/resources/views/layout-profile/master.blade.php @@ -26,9 +26,8 @@ @yield('content') </div> - @include('layout-profile.footer') - <script src="/js/profile.js"></script> </body> +<script src="/js/profile.js"></script> </html> diff --git a/resources/views/profile/index.blade.php b/resources/views/profile/index.blade.php index 5f508b1835afe1f0304ba8ed6a09d5fbe32917a4..84aa8c67a02a8f51604d5f274f6f9766c1f5dac1 100644 --- a/resources/views/profile/index.blade.php +++ b/resources/views/profile/index.blade.php @@ -10,64 +10,11 @@ :unit-kerja="{{ $unit_kerja }}" :posisi="{{ $posisi }}" :kelompok-kompetensi="{{ $kelompok_kompetensi }}" + :rekomendasi-training-temp="{{ $rekomendasi_training }}" + :training-list="{{ $training_list }}" + :rekomendasi-posisi-temp="{{ $rekomendasi_posisi }}" ></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 diff --git a/routes/api.php b/routes/api.php index 072cde7951a10e13efaedeb42087b4ce79215178..a87b9b2d8ec5406b437d95ab0a749a88696cf99f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -39,6 +39,11 @@ Route::resource('kinerja', 'DataKinerjaController'); Route::resource('pegawai-denormalized', 'DataPegawaiController'); +Route::resource('training', 'TrainingController'); + +Route::resource('kepegawaian', 'KepegawaianController'); + +Route::resource('riwayat', 'RiwayatController'); + Route::resource('sertifikat', 'SertifikatController'); -Route::resource('training', 'TrainingController'); \ No newline at end of file diff --git a/storage/app/templates/kinerja_template.xlsx b/storage/app/templates/kinerja_template.xlsx index 73ee3b3fc74a45960c88a5273843d1a5863c6740..33d30e4340651dadbf00dd8aa1533b1ed771f33c 100644 Binary files a/storage/app/templates/kinerja_template.xlsx and b/storage/app/templates/kinerja_template.xlsx differ diff --git a/storage/app/templates/kinerja_template_export.xlsx b/storage/app/templates/kinerja_template_export.xlsx index a2f30a877b678366167e31a7038eee1219de3558..5a77a9ccf23f70a1e662402bfd0b72aacf2d071b 100644 Binary files a/storage/app/templates/kinerja_template_export.xlsx and b/storage/app/templates/kinerja_template_export.xlsx differ diff --git a/storage/app/templates/kompetensi_template.xlsx b/storage/app/templates/kompetensi_template.xlsx index 9d36ed0ee68978942b095991a98fc3173a467978..9e8e7210f86af1b68e5c36938ed977ed374ab493 100644 Binary files a/storage/app/templates/kompetensi_template.xlsx and b/storage/app/templates/kompetensi_template.xlsx differ diff --git a/storage/app/templates/kompetensi_template_export.xlsx b/storage/app/templates/kompetensi_template_export.xlsx index 39e4aa9c12e7394734443aa3ee49583034cb97e7..b047ddfbf34e57562fc7279cd1649e1aab5011c7 100644 Binary files a/storage/app/templates/kompetensi_template_export.xlsx and b/storage/app/templates/kompetensi_template_export.xlsx differ diff --git a/storage/app/templates/pegawai_template_export.xlsx b/storage/app/templates/pegawai_template_export.xlsx index c1a2fe3afca5bf20239b09e10fb09b7f7a09c632..0f7b8523b61ec5e050a0f66a6b384d8885a1d0c7 100644 Binary files a/storage/app/templates/pegawai_template_export.xlsx and b/storage/app/templates/pegawai_template_export.xlsx differ