From 32cc43e49065b60290fd2e951cd22a6a13240dd2 Mon Sep 17 00:00:00 2001 From: sindhu Date: Fri, 28 Mar 2025 13:55:10 +0700 Subject: [PATCH] step 46 : add data master_data di form --- v1/js/master_data.js | 139 +++++++++------ v1/js/mcoba.js | 231 ++++++++++++++++++++++++ v1/master_data.html | 115 +++++++++++- v1/mcoba.html | 410 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 838 insertions(+), 57 deletions(-) create mode 100644 v1/js/mcoba.js create mode 100644 v1/mcoba.html diff --git a/v1/js/master_data.js b/v1/js/master_data.js index 702301b..09f57e8 100644 --- a/v1/js/master_data.js +++ b/v1/js/master_data.js @@ -2,13 +2,9 @@ document.addEventListener('alpine:init', () => { Alpine.data('masterData', () => ({ // 0. Init dijalankan sebelum inisialisasi init() { - this.filteredItemAssay = [...this.dataAssay]; }, // 1. Inisialisasi Start // multiple select - openAssayAdd: false, - searchAssay: "", - selectedAssay: [], dataAssay: [ { idAssay: 1, @@ -31,25 +27,20 @@ document.addEventListener('alpine:init', () => { namaAssay: 'PLT' }, ], - filteredItemAssay: [], - filterItemAssay() { - this.filteredItemAssay = this.dataAssay.filter(item => - item.namaAssay.toLowerCase().includes(this.searchAssay.toLowerCase()) - ); - }, - - addItemAssay(item) { - if (!this.selectedAssay.some(p => p.idAssay === item.idAssay)) { - this.selectedAssay.push(item); - this.objForm.Assay.push(item); - } - this.searchAssay = ""; - this.filterItemAssay(); - }, - - removeItemAssay(index) { - this.selectedAssay.splice(index, 1); - }, + dataAlat: [ + { + idAlat: 1, + namaAlat: 'Hema 01', + }, + { + idAlat: 2, + namaAlat: 'Axsym', + }, + { + idAlat: 3, + namaAlat: 'Cobas C311', + }, + ], // multiple select dataMaster: [ @@ -87,19 +78,14 @@ document.addEventListener('alpine:init', () => { kodeAdd: '', namaAdd: '', hargaAdd: '', - formAddArray: [ - { - idForm: 1, - selectedInstrument: {}, - selectedAssay: [] - } - ], + formAddArray: [], showDialogEdit: false, objForm: { nama: '', kode: '', harga: '', - dataAssay: [], + alat: {}, + assay: [] }, objFormEdit: { nama: '', @@ -109,18 +95,63 @@ document.addEventListener('alpine:init', () => { }, // 1. Inisialisasi End // 2. Fungsi Start - formAddDetail(){ - const lastId = this.formAddArray[this.formAddArray. length - 1]; - this.formAddArray = this.formAddArray.push([{ + formAddDetail() { + const lastId = this.formAddArray.length; + this.formAddArray.push({ idForm: lastId + 1, - selectedInstrument: {}, - selectedAssay: [] - }]) + openAlat: false, + dataAlatForm: this.dataAlat, + selectedAlat: { + idAlat: -1, + namaAlat: 'Alat' + }, + selectedAssay: [], + searchAssay: "", + filterItemAssay: this.dataAssay, + dataAssayForm: this.dataAssay, + openAssayAdd: false, + }) + }, + filterItemAssay(idx, formItem) { + let formId = formItem.idForm + // console.log('formItem ',formItem) + let targetForm = this.formAddArray.find(e => e.idForm === formId); + + if (targetForm) { + targetForm.openAssayAdd = true + let searchTerm = targetForm.searchAssay ? targetForm.searchAssay.toLowerCase() : ""; + targetForm.filterItemAssay = targetForm.dataAssayForm.filter(item => + item.namaAssay.toLowerCase().includes(searchTerm) + ); + + // targetForm.dataAssayForm = targetForm.filterItemAssay + console.log('Filtered Assay:', targetForm.filterItemAssay); + } else { + console.warn('Tidak match ID Form nya'); + } + }, + + addItemAssayToForm(item, idForm) { + let form = this.formAddArray.find(f => f.idForm === idForm); + + if (form) { + let exists = form.selectedAssay.some(a => a.idAssay === item.idAssay); + if (!exists) { + form.selectedAssay.push(item); + } else { + console.warn("Item sudah dipilih:", item); + } + } + }, + + removeItemAssayToForm(idForm, index) { + let form = this.formAddArray.find(f => f.idForm === idForm); + if (!form) return; + + form.selectedAssay.splice(index, 1); }, closeDialog() { - this.AssayAdd = [] - this.filteredItemAssay = [] - this.selectedAssay = [] + this.formAddArray = [] this.kodeAdd = '' this.namaAdd = '' this.hargaAdd = '' @@ -132,13 +163,22 @@ document.addEventListener('alpine:init', () => { } this.showDialogAdd = false }, - onChangeInstrumentSearch(item) { - this.openInstrumentSearch = false; - this.selectedInstrument = item; + saveA() { + this.objForm.alat = this.formAddArray.map(form => form.selectedAlat); + this.objForm.assay = this.formAddArray.map(form => form.selectedAssay); + + console.log('Data yang disimpan:', this.objForm); }, - onChangeInstrument(item) { - this.openInstrument = false; - this.selectedInstrumentAdd = item; + onChangeInstrument(item, idForm) { + let form = this.formAddArray.find(f => f.idForm === idForm); + if (!form) return; + + form.selectedAlat = { + idAlat: item.idAlat, + namaAlat: item.namaAlat + } + + form.openAlat = false }, onChangeInstrumentEdit(item) { this.openInstrument = false; @@ -159,14 +199,9 @@ document.addEventListener('alpine:init', () => { onChangeHargaAdd() { this.objForm.harga = this.hargaAdd; }, - onChangeHargaAdd() { + onChangeHargaEdit() { this.objFormEdit.harga = this.e_harga; }, - onChangeInstrumentMobile(item) { - this.openInstrumentSearchMobile = false; - // this.selectedInstrument = item; - this.selectedInstrument = { ...item }; - }, openModalEdit(item) { // mrn this.e_mrn = item.mrn diff --git a/v1/js/mcoba.js b/v1/js/mcoba.js new file mode 100644 index 0000000..09f57e8 --- /dev/null +++ b/v1/js/mcoba.js @@ -0,0 +1,231 @@ +document.addEventListener('alpine:init', () => { + Alpine.data('masterData', () => ({ + // 0. Init dijalankan sebelum inisialisasi + init() { + }, + // 1. Inisialisasi Start + // multiple select + dataAssay: [ + { + idAssay: 1, + namaAssay: 'Xn500' + }, + { + idAssay: 2, + namaAssay: 'HGB' + }, + { + idAssay: 3, + namaAssay: 'WBC' + }, + { + idAssay: 4, + namaAssay: 'RBC' + }, + { + idAssay: 5, + namaAssay: 'PLT' + }, + ], + dataAlat: [ + { + idAlat: 1, + namaAlat: 'Hema 01', + }, + { + idAlat: 2, + namaAlat: 'Axsym', + }, + { + idAlat: 3, + namaAlat: 'Cobas C311', + }, + ], + + // multiple select + dataMaster: [ + { + idMaster: 1, + kode: 'A04', + namaPemeriksaan: 'Darah Lengkap', + harga: '50.000', + pemeriksaanStr: 'Xn500, HCB, WBC, RBC, PLT', + dataAssay: [ + { + idAssay: 1, + namaAssay: 'Xn500' + }, + { + idAssay: 2, + namaAssay: 'HGB' + }, + { + idAssay: 3, + namaAssay: 'WBC' + }, + { + idAssay: 4, + namaAssay: 'RBC' + }, + { + idAssay: 5, + namaAssay: 'PLT' + }, + ], + }, + ], + showDialogAdd: false, + kodeAdd: '', + namaAdd: '', + hargaAdd: '', + formAddArray: [], + showDialogEdit: false, + objForm: { + nama: '', + kode: '', + harga: '', + alat: {}, + assay: [] + }, + objFormEdit: { + nama: '', + kode: '', + harga: '', + dataAssay: [], + }, + // 1. Inisialisasi End + // 2. Fungsi Start + formAddDetail() { + const lastId = this.formAddArray.length; + this.formAddArray.push({ + idForm: lastId + 1, + openAlat: false, + dataAlatForm: this.dataAlat, + selectedAlat: { + idAlat: -1, + namaAlat: 'Alat' + }, + selectedAssay: [], + searchAssay: "", + filterItemAssay: this.dataAssay, + dataAssayForm: this.dataAssay, + openAssayAdd: false, + }) + }, + filterItemAssay(idx, formItem) { + let formId = formItem.idForm + // console.log('formItem ',formItem) + let targetForm = this.formAddArray.find(e => e.idForm === formId); + + if (targetForm) { + targetForm.openAssayAdd = true + let searchTerm = targetForm.searchAssay ? targetForm.searchAssay.toLowerCase() : ""; + targetForm.filterItemAssay = targetForm.dataAssayForm.filter(item => + item.namaAssay.toLowerCase().includes(searchTerm) + ); + + // targetForm.dataAssayForm = targetForm.filterItemAssay + console.log('Filtered Assay:', targetForm.filterItemAssay); + } else { + console.warn('Tidak match ID Form nya'); + } + }, + + addItemAssayToForm(item, idForm) { + let form = this.formAddArray.find(f => f.idForm === idForm); + + if (form) { + let exists = form.selectedAssay.some(a => a.idAssay === item.idAssay); + if (!exists) { + form.selectedAssay.push(item); + } else { + console.warn("Item sudah dipilih:", item); + } + } + }, + + removeItemAssayToForm(idForm, index) { + let form = this.formAddArray.find(f => f.idForm === idForm); + if (!form) return; + + form.selectedAssay.splice(index, 1); + }, + closeDialog() { + this.formAddArray = [] + this.kodeAdd = '' + this.namaAdd = '' + this.hargaAdd = '' + this.objForm = { + nama: '', + kode: '', + harga: '', + dataAssay: [], + } + this.showDialogAdd = false + }, + saveA() { + this.objForm.alat = this.formAddArray.map(form => form.selectedAlat); + this.objForm.assay = this.formAddArray.map(form => form.selectedAssay); + + console.log('Data yang disimpan:', this.objForm); + }, + onChangeInstrument(item, idForm) { + let form = this.formAddArray.find(f => f.idForm === idForm); + if (!form) return; + + form.selectedAlat = { + idAlat: item.idAlat, + namaAlat: item.namaAlat + } + + form.openAlat = false + }, + onChangeInstrumentEdit(item) { + this.openInstrument = false; + this.selectedInstrumentEdit = item; + }, + onChangeNamaAdd() { + this.objForm.nama = this.namaAdd; + }, + onChangeNamaEdit() { + this.objFormEdit.nama = this.e_nama; + }, + onChangeKodeAdd() { + this.objForm.kode = this.kodeAdd; + }, + onChangeKodeEdit() { + this.objFormEdit.kode = this.e_kode; + }, + onChangeHargaAdd() { + this.objForm.harga = this.hargaAdd; + }, + onChangeHargaEdit() { + this.objFormEdit.harga = this.e_harga; + }, + openModalEdit(item) { + // mrn + this.e_mrn = item.mrn + + // sid + this.e_sid = item.sid + + // name + this.e_name = item.name + + // multiple pemeriksaan + this.e_selectedPemeriksaan = [...item.dataPemeriksaan]; + this.e_filteredPemeriksaan = [...this.dataPemeriksaan]; + + this.showDialogEdit = !this.showDialogEdit; + }, + closeDialogEdit() { + this.showDialogEdit = !this.showDialogEdit; + }, + editMobilePage(item) { + var json = JSON.stringify(item); + localStorage.setItem('itemEditMobile', json) + window.location.href = "order_mobile_edit.html"; + }, + // 2. Fungsi End + })) +}) \ No newline at end of file diff --git a/v1/master_data.html b/v1/master_data.html index 618bbe2..f14edc5 100644 --- a/v1/master_data.html +++ b/v1/master_data.html @@ -255,8 +255,8 @@ - - + + - +
AlatAssayAlatAssay
@@ -286,7 +391,7 @@ hover:bg-[#1976D2] px-4 py-2 rounded-md"> CANCEL - @@ -299,7 +404,7 @@ - + \ No newline at end of file diff --git a/v1/mcoba.html b/v1/mcoba.html new file mode 100644 index 0000000..f14edc5 --- /dev/null +++ b/v1/mcoba.html @@ -0,0 +1,410 @@ + + + + + + + Master Data XPORT + + + + + + + + + + +
+ + +
+ +

Port Server

+
+
+ + + + + +
+ + + +
+ +
+
+ + + +
+
+
+ + +
+ + + + +
+
+ +
+ +
+

add

+
+ +
+
+ + + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + +
AlatAssay + +
+ +
+
+ +
+
+ + + +
+ + +
+
+
+
+
+
+ +
+ + + + + \ No newline at end of file