document.addEventListener('alpine:init', () => {
    Alpine.data('assayFormat', () => ({
        // 0. Init dijalankan sebelum inisialisasi
        init(){

        },
        // 1. Inisialisasi Start
        dataSetting: [
            {
                idSetting: 1,
                idJenis: 1,
                namaJenis: 'TCP Server',
                info: 'Port 5001',
                port: '5001',
                idInterface: 1,
                namaInterface: 'XN550',
                idInstrument: 1,
                namaInstrument: 'Hema 01',
                server: '',
                idSerial: -1,
                namaSerial: '',
                speed: '',
                idParity: -1,
                namaParity: '',
                idDataBit: -1,
                namaDataBit: '',
                idStopBit: -1,
                namaStopBit: ''
            },
            {
                idSetting: 2,
                idJenis: 2,
                namaJenis: 'TCP Client',
                info: 'Server 192.168.0.1, Port 4000',
                port: '4000',
                idInterface: 2,
                namaInterface: 'Axsym',
                idInstrument: 2,
                namaInstrument: 'Axsym',
                server: '192.168.0.1',
                idSerial: 1,
                namaSerial: 'ttyS0',
                speed: '',
                idParity: -1,
                namaParity: '',
                idDataBit: -1,
                namaDataBit: '',
                idStopBit: -1,
                namaStopBit: ''
            },
            {
                idSetting: 3,
                idJenis: 3,
                namaJenis: 'RS232',
                info: 'ttyS01, 9600, N, 8, 1',
                port: '',
                idInterface: 3,
                namaInterface: 'C311',
                idInstrument: 3,
                namaInstrument: 'Cobas C311',
                server: '',
                idSerial: 1,
                namaSerial: 'ttyS0',
                speed: '19200',
                idParity: 1,
                namaParity: 'None',
                idDataBit: 2,
                namaDataBit: '6',
                idStopBit: 2,
                namaStopBit: '1'
            },
        ],
        showDialogAdd: false,
        showDialogEdit: false,
        loadingVerifikasi: false,
        isVerifikasiDone: false,
        decimalFontEdit: '',
        assayCodeEdit: '',
        decimalFont: '',
        assayCode: '',
        formulaEdit: '',
        formulaAdd: '',
        dataAssayFormat: [
            {
                idAssayFormat: 1,
                idInstrument: 1,
                namaInstrument: 'Hema 01',
                assayCode: 'WBC',
                decimalFont: '5001',
                formula: ''
            },
            {
                idAssayFormat: 2,
                idInstrument: 2,
                namaInstrument: 'Axsym',
                assayCode: 'IgG',
                decimalFont: '2001',
                formula: ''
            },
            {
                idAssayFormat: 3,
                idInstrument: 3,
                namaInstrument: 'Cobas C311',
                assayCode: 'DBIL',
                decimalFont: '4001',
                formula: '(TBIL) - (DBIL)'
            },
        ],
        selectedInstrument: {
            idInstrument: -1,
            namaInstrument: 'Instrument'
        },
        selectedInstrumentAdd: {
            idInstrument: -1,
            namaInstrument: 'Instrument'
        },
        openInstrument: false,
        openInstrumentSearchMobile: false,
        openInstrumentSearch: false,
        dataInstrument: [
            {
                idInstrument: 1,
                namaInstrument: 'Hema 01',
            },
            {
                idInstrument: 2,
                namaInstrument: 'Axsym',
            },
            {
                idInstrument: 3,
                namaInstrument: 'Cobas C311',
            },
        ],
        hasilVerifikasi: '',
        isErrorVerifikasi: false,
        objForm: {
            isValidForm: false,
            idInstrument: -1,
            namaInstrument: 'Instrument',
            decimalFont: '',
            assayCode: '',
            formula: '',
        },
        // 1. Inisialisasi End
        // 2. Fungsi Start
        closeDialog(){
            this.openInstrument = false;
            this.selectedInstrument = {
                idInstrument: -1,
                namaInstrument: 'Instrument'
            };
            this.loadingVerifikasi = false; 
            this.isErrorVerifikasi = false;
            this.hasilVerifikasi = ''
            this.formulaAdd = ''
            this.showDialogAdd = false
        },
        onChangeInstrument(item){
            this.openInstrument = false;
            this.selectedInstrumentAdd = item;
            this.validateForm();
        },
        onChangeAssayCodeAdd() {
            this.objForm.assayCode = this.assayCode;
            this.validateForm();
        },
        onChangeDecimalFontAdd(){
            this.objForm.decimalFont = this.decimalFont;
            this.validateForm();
        },
        onChangeFormulaAdd(){
            this.objForm.formula = this.formulaAdd;
            this.validateForm();
        },
        onChangeInstrumentMobile(item){
            this.openInstrumentSearchMobile = false;
            // this.selectedInstrument = item;
            this.selectedInstrument = { ...item };
        },
        onProcessVerifikasi(){
            if(this.isVerifikasiDone == true) {
                return;
            }

            this.loadingVerifikasi = true; 

            setTimeout(() => {
                this.loadingVerifikasi = false; 
                this.isErrorVerifikasi = false;
                this.isVerifikasiDone = true;
                this.hasilVerifikasi = 'Formula is valid';
            }, 2000);
        },
        openModalEdit(item) {
            this.selectedInstrument = {
                idInstrument: item.idInstrument,
                namaInstrument: item.namaInstrument
            }

            this.assayCode = item.assayCode
            this.decimalFont = item.decimalFont
            this.formulaEdit = item.formula
            this.showDialogEdit = !this.showDialogEdit;
        },
        closeDialogEdit(){
            this.showDialogEdit = !this.showDialogEdit;
        },
        validateForm() {
            this.objForm.isValidForm = (
                this.selectedInstrumentAdd.idInstrument != -1 &&
                this.decimalFont.trim() !== '' &&
                this.assayCode.trim() !== '' &&
                this.formulaAdd.trim() !== ''
            );
        },
        // 2. Fungsi End
    }))
})