<template>
    <Head title="Module" />
    <BreezeAuthenticatedLayout>
        <template #header>
            <div class="grid grid-flow-col">
                <div class="col-span-8">
                    <Title :module="$page.props.module" :page_description="$page.props.type === 'add' ? 'Add' : 'Edit'" />
                </div>
                <div class="col-span-4">
                    <HeadButtons
                        class="col-span-2"
                        :module="$page.props.module"
                        :permissions="$page.props.permissions"
                        :allowed="$page.props.type === 'edit' ? ['import', 'add', 'export', 'audit_log', 'delete'] :
 ['import', 'add', 'export', 'audit_log']"
                    />
                </div>
            </div>
        </template>
        <BreadCrumbs :levels="$page.props.breadcrumbs" />
        <Alert :message="alert.alert_text" :is_successful="alert.success_alert" :is_error="alert.error_alert" />
        <div class="max-w-full sm:px-3 lg:px-4">
            <!-- @submit.prevent="getFormValues" -->
            <form name="search" method="GET">
                <div class="bg-base-200 mt-10 overflow-hidden shadow-sm">
                    <div class="p-10 border-b border-gray-200">
                        <div class="bg-base-100 grid grid-cols-1 row-gap-5 p-10 lg:grid-cols-2 md:grid-cols-2 lg:row-gap-6 rounded-lg">
                            <div class="col-span-1 col-gap-5 lg:col-span-1" v-for="(field, key) in search_fields">
                                <div class="flex items-center pt-5 pb-5">
                                    <Edit @newFieldValue="fieldValue"
                                          :field="field"
                                          :type="search_type"
                                          :default_value="convert_from_record ? convert_from_record[field.name]  : record ? record[field.name] : ''"
                                    />
                                </div>
                            </div><div class="text-right mt-10">
                            <input @click.prevent="save_record()" type="submit" class="btn btn-secondary" name="save" value="Save" /> </div>
                        </div>
                        </div>
                </div>
            </form>
        </div>
    </BreezeAuthenticatedLayout>
</template>
<script setup>
import BreezeAuthenticatedLayout from '@/Layouts/Authenticated.vue';
import { Head, usePage } from '@inertiajs/inertia-vue3';
import axios from "axios";
import BreadCrumbs from "@/Components/BreadCrumbs";
import HeadButtons from "@/Components/Header/Buttons";
import Title from "@/Components/Header/Title";
import Alert from "@/Components/Alert";
const alert = reactive({
    success_alert : ref(0),
    error_alert : ref(0),
    alert_text : ref('')
});
import Edit from '@/Components/Fields/Edit'
import { ref, toRef, toRefs, computed, toRaw, watch, onMounted, reactive } from 'vue';
const module_id = ref(usePage().props.value.module.id);
const relationship_id = ref('');
const search_type = ref('module');
const record = ref(usePage().props.value.record);
const convert_from_record = ref(usePage().props.value.convert_from_record);
const default_values = ref('');
let fieldValueData = {};
const search_fields = ref(reactive(usePage().props.value.fields));
let params = [];
onMounted(() => {
        watch([relationship_id, module_id], (val) => {
        axios.get('/data/search_fields/' + relationship_id.value + '/search_type/' + search_type.value).then(response => {
            search_fields.value = response.data;
        }, { deep: true });
    });
});
const save_record = function () {
    fieldValueData['search_type'] = search_type.value;
    fieldValueData['module_id'] = module_id.value;
    fieldValueData['relationship_id'] = relationship_id.value;
    if(record.value !== null)
    {
        fieldValueData['record_id']=record.value.id;
    }
    axios.post('/data/save', fieldValueData).then(response => {
            if(response.data)
            {
                window.location = '/module/' + usePage().props.value.module.name + '/view/' + response.data;
            }
        })
        .catch(error => {
            alert.error_alert=1;
            alert.alert_text=error.response.data.errors;
            window.scrollTo(0, top);
            setTimeout(() => {
                alert.error_alert=null;
                alert.alert_text='';
            }, 50000);
        });
}
const fieldValue = ((evt) => {
    fieldValueData[evt.field_name] = evt.value;
});
</script>
 
  |