first commit
This commit is contained in:
118
resources/views/livewire/work-center/form.blade.php
Normal file
118
resources/views/livewire/work-center/form.blade.php
Normal file
@ -0,0 +1,118 @@
|
||||
<div>
|
||||
<x-vuexy-admin::offcanvas.basic :id="$offcanvasId" :tag-name="$tagName">
|
||||
<x-vuexy-admin::form :id="$formId" :mode="$mode" wireSubmit="onSubmit" actionPosition="both">
|
||||
<x-slot name="actions">
|
||||
<x-vuexy-admin::button.offcanvasButtons :mode="$mode" :tagName="$tagName" />
|
||||
</x-slot>
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" type="hidden" model="id" />
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" type="hidden" model="mode" />
|
||||
<x-vuexy-admin::form.select :uid="$uniqueId" model="store_id" label="Sucursal" placeholder="Selecciona una sucursal" :options="$store_options" />
|
||||
<div class="row">
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" model="code" label="Código de centro de trabajo" icon="ti ti-tag" parentClass="col-md-8" />
|
||||
</div>
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" model="name" label="Nombre del centro de trabajo" />
|
||||
<x-vuexy-admin::form.textarea :uid="$uniqueId" model="description" label="Descripción" />
|
||||
<hr>
|
||||
<x-vuexy-admin::form.select :uid="$uniqueId" model="manager_id" label="Gerente" placeholder="Selecciona un gerente" :options="$manager_options" class="select2 form-select" />
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" model="tel" label="Teléfono" icon="ti ti-phone" />
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" model="tel2" label="Teléfono alternativo" icon="ti ti-phone" />
|
||||
<hr>
|
||||
<x-vuexy-admin::form.textarea :uid="$uniqueId" name="location_search" label="Dirección de búsqueda" placeholder="Buscar dirección" rows="2" button-icon="ti ti-map-pin-search" onClickButton="clearCoordinates()" />
|
||||
<div class="row">
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" model="lat" label="Latitud" type="number" step="0.000001" max="90" min="-90" parentClass="col-5" align="center" size="small" />
|
||||
<x-vuexy-admin::form.input :uid="$uniqueId" model="lng" label="Longitud" type="number" step="0.000001" max="180" min="-180" parentClass="col-5" align="center" size="small" />
|
||||
<div class="col-2 mt-5 !pl-0">
|
||||
<x-vuexy-admin::button.basic variant="secondary" outline size="sm" icon="ti ti-map-pin-off ti-md" onClick="clearCoordinates()" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="height:400px; z-index: 1;" id="locationMap_{{ $uniqueId }}"></div>
|
||||
<hr>
|
||||
{{ $status }}
|
||||
<x-vuexy-admin::form.checkbox :uid="$uniqueId" model="status" label="Activo" switch=true />
|
||||
</x-vuexy-admin::form>
|
||||
</x-vuexy-admin::offcanvas.basic>
|
||||
</div>
|
||||
|
||||
@push('page-script')
|
||||
<script>
|
||||
// Evento para inicializar el formulario cuando se carga la página
|
||||
window.addEventListener("DOMContentLoaded", () => {
|
||||
const clearCoordinates = () => {
|
||||
console.log('clearCoordinates');
|
||||
// Aqui coloca la logica para limpiar la ubicación
|
||||
//LeafletMapHelper.removeMarker();
|
||||
}
|
||||
|
||||
/**
|
||||
* Inicializa el formulario de centro de trabajo
|
||||
*/
|
||||
const initializeWorkCenterForm = () => {
|
||||
const initializeSelect2 = () => {
|
||||
const select2Selectors = {
|
||||
[`#manager_id_{{ $uniqueId }}`]: {
|
||||
placeholder: 'Selecciona un gerente',
|
||||
onSelect: (id) => {
|
||||
@this.set('updateManagerId', id, false);
|
||||
},
|
||||
onClear: () => {
|
||||
@this.set('updateManagerId', null, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const parent = $('#storeWorkCenterForm');
|
||||
|
||||
$.each(select2Selectors, (selector, config) => {
|
||||
const $element = parent.find(selector);
|
||||
|
||||
if ($element.length) {
|
||||
$element
|
||||
.select2({
|
||||
placeholder: config.placeholder,
|
||||
allowClear: true,
|
||||
closeOnSelect: false
|
||||
})
|
||||
.on('select2:select', (e) => {
|
||||
let selectedId = e.params.data.id;
|
||||
|
||||
config.onSelect(selectedId);
|
||||
})
|
||||
.on('select2:clear', () => {
|
||||
config.onClear();
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const initializeLocationCard = () => {
|
||||
const locationInputs = {
|
||||
search: '#location_search_{{ $uniqueId }}',
|
||||
btnSearch: '#btn_search_{{ $uniqueId }}',
|
||||
lat: '#lat_{{ $uniqueId }}',
|
||||
lng: '#lng_{{ $uniqueId }}',
|
||||
btnClear: '#storeWorkCenterForm .btn-clear-coords',
|
||||
mapId: 'locationMap_{{ $uniqueId }}',
|
||||
}
|
||||
|
||||
LeafletMapHelper.initializeMap(locationInputs, mode, @this);
|
||||
}
|
||||
|
||||
|
||||
const mode = @this.get('mode')?? 'create';
|
||||
|
||||
// Inicializa los select2
|
||||
initializeSelect2();
|
||||
|
||||
// Inicializa el card de ubicación
|
||||
initializeLocationCard(mode);
|
||||
}
|
||||
|
||||
|
||||
var myOffcanvas = document.getElementById('{{ $offcanvasId }}')
|
||||
|
||||
myOffcanvas.addEventListener('show.bs.offcanvas', function () {
|
||||
initializeWorkCenterForm();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
12
resources/views/livewire/work-center/index.blade.php
Normal file
12
resources/views/livewire/work-center/index.blade.php
Normal file
@ -0,0 +1,12 @@
|
||||
<x-vuexy-admin::table.bootstrap.manager :tagName="$tagName" :datatableConfig="$bt_datatable">
|
||||
<x-slot name="tools">
|
||||
<div class="mb-4 pr-2">
|
||||
<x-vuexy-admin::button.IndexOffcanvas :label="$singularName" :tagName="$tagName" />
|
||||
</div>
|
||||
@if(count($storeOptions) > 1)
|
||||
<div class="mb-4 pr-2" style="max-width: 320px; min-width: 220px;">
|
||||
<x-vuexy-admin::form.select model="store_id" :options="$storeOptions" placeholder="[Sucursal]" size="sm" />
|
||||
</div>
|
||||
@endif
|
||||
</x-slot>
|
||||
</x-vuexy-admin::table.bootstrap.manager>
|
Reference in New Issue
Block a user