{% extends 'base.html.twig' %}
{% block title %} - Programación de Mantenimiento Preventivo{% endblock %}
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
<link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
<link rel="stylesheet" href="{{ asset('plugins/toastr/toastr.min.css') }}">
{% endblock %}
{% block body %}
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<div class="card">
<div class="card-header">
<h1 class="card-title">Programación de Mantenimiento Preventivo</h1>
<div class="card-tools">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Inicio</a></li>
<li class="breadcrumb-item active"><b>Mantenimiento Preventivo</b></li>
</ol>
</div>
</div>
</div>
</section>
<!-- Main content -->
<section class="content">
<div class="row justify-content-center">
<div class="col-12">
<!-- Default box -->
<div class="card card-outline card-teal p-3">
<div class="card">
<div class="card-body" style="background: #bacbff85;">
{{ form_start(form, {'attr': {'class': 'form-inline col-md-auto', 'id': 'form_ubicacion_filtro'}}) }}
{{ form_widget(form) }}
{{ form_end(form) }}
</div>
</div>
<form id="form_prog_preventivo">
<div class="card" id="form-info" style="background: #baffbe85;">
<div class="card-body">
<div class="pb-3">
<label>Acción a realizar</label><input type="text" class="form-control" id="arealizar" name="accion" required>
<div class="row">
<div class="col-lg"><label>Fecha de atención</label><input type="date" class="form-control" id="fregistro" name="fecha" required></div>
<div class="col-lg"><div class="col-md-12">
<br/>
<a id="form-btn-preventivo" class="btn btn-success" type="submit" onclick="solicitudProgramarLote('{{ path('prog_preventivo_solicitud_lote') }}')">
<i class="fa fa-calendar" data-toggle="tooltip" title="Programar mantenimiento"></i> Programar mantenimiento
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="tipo-tab1" data-toggle="tab" href="#tab_equipo_computo" role="tab" aria-controls="tab_equipo_computo" aria-selected="true">Equipo de cómputo</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tipo-tab2" data-toggle="tab" href="#tab_impresora" role="tab" aria-controls="tab_impresora" aria-selected="false">Impresora</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tipo-tab3" data-toggle="tab" href="#tab_red" role="tab" aria-controls="tab_red" aria-selected="false">Red</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tipo-tab4" data-toggle="tab" href="#tab_otro" role="tab" aria-controls="tab_otro" aria-selected="false">Otro</a>
</li>
</ul>
<div class="tab-content tab-bordered" id="myTabcontent2">
<div class="tab-pane active" id="tab_equipo_computo" role="tabpanel" aria-labelledby="tab1">
<div class="card-body">
<table id="tipoA" class="table table-hover w-100">
<thead>
<tr>
<th><label><input type="checkbox" class="select-all-tipoa" /> Seleccionar todo</label></th>
<th>Marbete</th>
<th>Descripción</th>
<th>Marca</th>
<th>Ubicación</th>
<th>Usuario</th>
<th>#MPE</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
{% for i in equipo %}
<tr id="idTipoA-{{ i.idEqu }}">
<td>
<label>
<input type="checkbox" class="check-tipoa" name="equipo[]" value="{{ i.idEqu }}"/>
</label>
</td>
<th class="marbete">{{ i.marbete }}</th>
<td class="descripcion">{{ i.descripcion }}</td>
<td class="marca">{{ i.idMarca.marca }}</td>
<td class="ubicacion">{{ i.ubicacion }}</td>
<td class="usuario">{% if i.usuario.nombre is defined %}{{ i.usuario.nombre }} {{ i.usuario.papellido }} {{ i.usuario.sapellido }}{% endif %}</td>
<td class="mpe"><h3><span class="badge bg-secondary float-center">0</span></h3></td>
<td>
{#<a href="#modal-solicitud-programar" class="text-success" data-toggle="modal" onclick="solicitudProgramar('{{ path('prog_preventivo_solicitud_tipoa', {'id': i.idEqu}) }}')">
<i class="fa fa-calendar" data-toggle="tooltip" title="Programar mantenimiento"></i>
</a>#}
<a href="#modal-solicitud-programada" class="text-info btn" data-toggle="modal" onclick="solicitudProgramada('{{ path('prog_preventivo_programada_tipoa', {'id': i.idEqu}) }}')">
<i class="fa fa-eye" data-toggle="tooltip" title="Ver mantenimientos programados"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="tab-pane" id="tab_impresora" role="tabpanel" aria-labelledby="tab2">
<div class="card-body">
<table id="tipoB" class="table table-hover w-100">
<thead>
<tr>
<th><label><input type="checkbox" class="select-all-tipob" /> Seleccionar todo</label></th>
<th>Marbete</th>
<th>Descripción</th>
<th>Marca</th>
<th>Ubicación</th>
<th>Usuario</th>
<th>#MPE</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
{% for i in impresora %}
<tr id="idTipoB-{{ i.idImp }}">
<td>
<label>
<input type="checkbox" class="check-tipob" name="impresora[]" value="{{ i.idImp }}"/>
</label>
</td>
<th class="marbete">{{ i.marbete }}</th>
<td class="descripcion">{{ i.descripcion }}</td>
<td class="marca">{{ i.marca }}</td>
<td class="ubicacion">{{ i.ubicacion }}</td>
<td class="usuario">{% if i.usuario.nombre is defined %}{{ i.usuario.nombre }} {{ i.usuario.papellido }} {{ i.usuario.sapellido }}{% endif %}</td>
<td class="mpe"><h3><span class="badge bg-secondary float-center">0</span></h3></td>
<td>
{#<a href="#modal-solicitud-programar" class="text-success" data-toggle="modal" onclick="solicitudProgramar('{{ path('prog_preventivo_solicitud_tipob', {'id': i.idImp}) }}')">
<i class="fa fa-calendar" data-toggle="tooltip" title="Programar mantenimiento"></i>
</a>#}
<a href="#modal-solicitud-programada" class="text-info btn" data-toggle="modal" onclick="solicitudProgramada('{{ path('prog_preventivo_programada_tipob', {'id': i.idImp}) }}')">
<i class="fa fa-eye" data-toggle="tooltip" title="Ver mantenimientos programados"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="tab-pane" id="tab_red" role="tabpanel" aria-labelledby="tab3">
<div class="card-body">
<table id="tipoC" class="table table-hover w-100">
<thead>
<tr>
<th><label><input type="checkbox" class="select-all-tipoc" /> Seleccionar todo</label></th>
<th>Marbete</th>
<th>Descripción</th>
<th>Marca</th>
<th>Ubicación</th>
<th>Usuario</th>
<th>#MPE</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
{% for i in red %}
<tr id="idTipoC-{{ i.idRed }}">
<td>
<label>
<input type="checkbox" class="check-tipoc" name="red[]" value="{{ i.idRed }}"/>
</label>
</td>
<th class="marbete">{{ i.marbete }}</th>
<td class="descripcion">{{ i.descripcion }}</td>
<td class="marca">{{ i.marca }}</td>
<td class="ubicacion">{{ i.ubicacion }}</td>
<td class="usuario">{% if i.usuario.nombre is defined %}{{ i.usuario.nombre }}{% endif %} {% if i.usuario.papellido is defined %}{{ i.usuario.papellido }}{% endif %} {% if i.usuario.sapellido is defined %}{{ i.usuario.sapellido }}{% endif %}</td>
<td class="mpe"><h3><span class="badge bg-secondary float-center">0</span></h3></td>
<td>
{#<a href="#modal-solicitud-programar" class="text-success" data-toggle="modal" onclick="solicitudProgramar('{{ path('prog_preventivo_solicitud_tipoc', {'id': i.idRed}) }}')">
<i class="fa fa-calendar" data-toggle="tooltip" title="Programar mantenimiento"></i>
</a>#}
<a href="#modal-solicitud-programada" class="text-info btn" data-toggle="modal" onclick="solicitudProgramada('{{ path('prog_preventivo_programada_tipoc', {'id': i.idRed}) }}')">
<i class="fa fa-eye" data-toggle="tooltip" title="Ver mantenimientos programados"></i>
</a>
</td>
</tr>
{% else %}
<tr>
<td colspan="8" class="text-center">No se encontraron registros acerca de <b>equipos de redes</b></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="tab-pane" id="tab_otro" role="tabpanel" aria-labelledby="tab4">
<div class="card-body">
<table id="tipoD" class="table table-hover w-100">
<thead>
<tr>
<th><label><input type="checkbox" class="select-all-tipod" /> Seleccionar todo</label></th>
<th>Marbete</th>
<th>Descripción</th>
<th>Marca</th>
<th>Ubicación</th>
<th>Usuario</th>
<th>#MPE</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
{% for i in otro %}
<tr id="idTipoD-{{ i.idOtro }}">
<td>
<label>
<input type="checkbox" class="check-tipod" name="otro[]" value="{{ i.idOtro }}"/>
</label>
</td>
<th class="marbete">{{ i.marbete }}</th>
<td class="descripcion">{{ i.descripcion }}</td>
<td class="marca">{{ i.marca }}</td>
<td class="ubicacion">{{ i.ubicacion }}</td>
<td class="usuario">{% if i.usuario.nombre is defined %}{{ i.usuario.nombre }}{% endif %} {% if i.usuario.papellido is defined %}{{ i.usuario.papellido }}{% endif %} {% if i.usuario.sapellido is defined %}{{ i.usuario.sapellido }}{% endif %}</td>
<td class="mpe"><h3><span class="badge bg-secondary float-center">0</span></h3></td>
<td>
{#<a href="#modal-solicitud-programar" class="text-success" data-toggle="modal" onclick="solicitudProgramar('{{ path('prog_preventivo_solicitud_tipod', {'id': i.idOtro}) }}')">
<i class="fa fa-calendar" data-toggle="tooltip" title="Programar mantenimiento"></i>
</a>#}
<a href="#modal-solicitud-programada" class="text-info btn" data-toggle="modal" onclick="solicitudProgramada('{{ path('prog_preventivo_programada_tipod', {'id': i.idOtro}) }}')">
<i class="fa fa-eye" data-toggle="tooltip" title="Ver mantenimientos programados"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</form>
<!-- /.card-body -->
</div>
</div>
</div>
</section>
<!-- /.content -->
</div>
<!-- Modal de solicitud para programar mantenimiento preventivo -->
<div class="modal hide" id="modal-solicitud-programar"></div>
<!-- /.modal de solicitud para programar mantenimiento preventivo -->
<!-- Modal de solicitudes programadas para mantenimiento preventivo -->
<div class="modal hide" id="modal-solicitud-programada"></div>
<!-- /.modal de solicitudes programadas para mantenimiento preventivo -->
<!-- Modal de reprogramacion de solicitud para mantenimiento preventivo -->
<div class="modal hide" id="modal-solicitud-reprogramar"></div>
<!-- /.modal de reprogramacion de solicitud para mantenimiento preventivo -->
{% endblock %}
{% block javascripts %}
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-responsive/js/responsive.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.bootstrap4.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.print.min.js') }}"></script>
<script src="{{ asset('plugins/datatables-buttons/js/buttons.colVis.min.js') }}"></script>
<script src="{{ asset('plugins/toastr/toastr.min.js') }}"></script>
<script type="text/javascript">
$("#mtto-preventivo").addClass("menu-open");
$("#mtto-preventivo").find('.nav-link:first').addClass("active");
$("#programa-mtto").addClass("active");
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
$('a[data-toggle="tab"]').on('shown.bs.tab', function(e){
$($.fn.dataTable.tables(true)).DataTable()
.columns.adjust();
});
$('#tipoA').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$('#tipoB').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$('#tipoC').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$('#tipoD').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$(".select-all-tipoa").click(function ()
{
if($(".select-all-tipoa").prop('checked')){
let checked = true;
$('.check-tipoa').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="equipo[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
} else {
let checked = false;
$('.check-tipoa').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="equipo[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
}
ocultarFormulario();
});
$("#form_ubicacion").on('change', function () {
aplicarFiltro();
});
vistaContador();
ocultarFormulario();
funcionSeleccion();
});
function funcionSeleccion()
{
$(".check-tipoa").click(function()
{
ocultarFormulario();
if($(".check-tipoa").length == $(".check-tipoa:checked").length)
{
$(".select-all-tipoa").attr("checked", "checked");
} else {
$(".select-all-tipoa").removeAttr("checked");
}
});
$(".select-all-tipob").click(function ()
{
if($(".select-all-tipob").prop('checked')){
let checked = true;
$('.check-tipob').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="impresora[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
} else {
let checked = false;
$('.check-tipob').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="impresora[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
}
ocultarFormulario();
});
$(".check-tipob").click(function()
{
if($(".check-tipob").length == $(".check-tipob:checked").length) {
$(".select-all-tipob").attr("checked", "checked");
} else {
$(".select-all-tipob").removeAttr("checked");
}
ocultarFormulario();
});
$(".select-all-tipoc").click(function ()
{
if($(".select-all-tipoc").prop('checked')){
let checked = true;
$('.check-tipoc').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="red[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
} else {
let checked = false;
$('.check-tipoc').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="red[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
}
ocultarFormulario();
});
$(".check-tipoc").click(function()
{
ocultarFormulario();
if($(".check-tipoc").length == $(".check-tipoc:checked").length) {
$(".select-all-tipoc").attr("checked", "checked");
} else {
$(".select-all-tipoc").removeAttr("checked");
}
});
$(".select-all-tipod").click(function ()
{
if($(".select-all-tipod").prop('checked')){
let checked = true;
$('.check-tipod').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="otro[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
} else {
let checked = false;
$('.check-tipod').attr('checked', this.checked);
const checkboxes = document.querySelectorAll('input[name="otro[]"]');
checkboxes.forEach((checkbox) => {
checkbox.checked = checked;
});
}
ocultarFormulario();
});
$(".check-tipod").click(function()
{
ocultarFormulario();
if($(".check-tipod").length == $(".check-tipod:checked").length) {
$(".select-all-tipod").attr("checked", "checked");
} else {
$(".select-all-tipod").removeAttr("checked");
}
});
}
$(document).on('click', '.page-link', function(e) {
e.preventDefault(); // Evita la acción por defecto (si es un enlace)
// Aquí puedes obtener información del elemento clickeado
// const pagina = $(this).text(); // Ejemplo: el número de página
// console.log('Se hizo clic en la página:', pagina);
// O puedes agregar tu lógica personalizada
vistaContador();
});
function limpiarSeleccion() {
let checked = false;
const checkbox_a = document.querySelectorAll('input[name="equipo[]"]');
checkbox_a.forEach((checkbox) => {
checkbox.checked = checked;
});
const checkbox_b = document.querySelectorAll('input[name="impresora[]"]');
checkbox_b.forEach((checkbox) => {
checkbox.checked = checked;
});
const checkbox_c = document.querySelectorAll('input[name="red[]"]');
checkbox_c.forEach((checkbox) => {
checkbox.checked = checked;
});
const checkbox_d = document.querySelectorAll('input[name="otro[]"]');
checkbox_d.forEach((checkbox) => {
checkbox.checked = checked;
});
ocultarFormulario();
$('#arealizar').val('');
$('#fregistro').val('');
}
function vistaContador()
{
$.ajax({
type: "POST",
url: '{{ path('prog_preventivo_vista') }}',
dataType: "json",
cache: false,
contentType: false,
processData: false,
success: function (data) {
let datos = data;
for(let i = 0; i < datos['data'].length; i++){
if(datos['data'][i]['tipoEquipo'] == 'Equipo'){
row = $('#idTipoA-' + datos['data'][i]['idEquipo']);
row.find('.mpe').html('<h3><span class="badge bg-primary float-center">' + datos['data'][i]['equipoCont'] + '</span></h3>');
}
if(datos['data'][i]['tipoEquipo'] == 'Impresora'){
row = $('#idTipoB-' + datos['data'][i]['idEquipo']);
row.find('.mpe').html('<h3><span class="badge bg-primary float-center">' + datos['data'][i]['equipoCont'] + '</span></h3>');
}
if(datos['data'][i]['tipoEquipo'] == 'Red'){
row = $('#idTipoC-' + datos['data'][i]['idEquipo']);
row.find('.mpe').html('<h3><span class="badge bg-primary float-center">' + datos['data'][i]['equipoCont'] + '</span></h3>');
}
if(datos['data'][i]['tipoEquipo'] == 'Otro'){
row = $('#idTipoD-' + datos['data'][i]['idEquipo']);
row.find('.mpe').html('<h3><span class="badge bg-primary float-center">' + datos['data'][i]['equipoCont'] + '</span></h3>');
}
}
},
error: function (data, text, error) {
alertMessage(1, data.responseJSON.mensaje);
},
complete: function () {
}
});
}
function ocultarFormulario()
{
console.log();
if ($(".check-tipoa:checked").length + $(".check-tipob:checked").length + $(".check-tipoc:checked").length + $(".check-tipod:checked").length < 1) {
console.log();
document.getElementById("form-info").style.display = "none";
} else {
document.getElementById("form-info").style.display = "block";
}
}
function solicitudProgramarLote(url)
{
let formData = new FormData(document.getElementById("form_prog_preventivo"));
let send = $('#form-btn-preventivo');
$.ajax({
type: "POST",
url: url,
data: formData,
dataType: "json",
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
send.text("Programando "); // Para input de tipo button
send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
send.prop("disabled", true);
},
success: function (data) {
let row = "";
console.log(data['info']);
var info = Object.values(data['info']);
console.log(info.length);
for(let i = 0; i < info.length - 1; i++){
if(info[i].tipoequipo == 'Equipo' || info[i].tipoequipo == 'Impresora' || info[i].tipoequipo == 'Red' || info[i].tipoequipo == 'Otro'){
row +=
"<tr>" +
"<td>" + info[i].tipoequipo + "</td>" +
"<td>" + info[i].fregistro + "</td>" +
"<td>" + info[i].tipomantenimiento + "</td>" +
"<td>" + info[i].accion + "</td>" +
"<td>" + info[i].unidad + "</td>" +
"<td>" +
"<a href='#modal-solicitud-reprogramar' class='text-success' data-toggle='modal' onclick=\"solicitudReprogramar('" + info[i].reprogramar + "')\">" +
"<i class='fa fa-calendar' data-toggle='tooltip' title='Reprogramar mantenimiento'></i>" +
"</a>" +
"</td>" +
"</tr>"
;
}
}
console.log(row);
$("#tipoE").append(row).html();
$(document).Toasts('create', {
autohide: false,
delay: 3000,
class: 'bg-success',
title: 'Programación por grupo',
subtitle: 'Éxito',
body: data.mensaje
});
vistaContador();
ocultarFormulario();
limpiarSeleccion();
funcionSeleccion();
},
error: function (data, text, error) {
$(document).Toasts('create', {
autohide: true,
delay: 3000,
class: 'bg-warning',
title: 'Programación por grupo',
subtitle: 'Ocurrió un error',
body: data.responseJSON.mensaje
});
},
complete: function () {
setTimeout(function(){
send.text("Programar mantenimiento"); // Para input de tipo button
send.append("<i></i>");
send.prop("disabled", false);
}, 5000);
}
});
}
function solicitudProgramar(url)
{
$('#modal-solicitud-programar').load(url, function ()
{
// configuración del Modal
$("#modal-solicitud-programar").on('hide.bs.modal', function () {
$(this).html('Cargando');
});
$(".modal-dialog").draggable;
solicitudProgramarAjax(url)
})
}
function solicitudProgramarAjax(url)
{
let send = $("#editar_usuario_guardar");
$('#editar_usuario_guardar').on('click', function () {
let formData = new FormData(document.getElementById("form-programar-solicitud"));
$.ajax({
type: "POST",
url: url,
data: formData, // Adjuntar los campos del formulario enviado.
dataType: "json",
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
send.text("Actualizando "); // Para input de tipo button
send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
send.prop("disabled", true);
},
success: function (data) {
closeModal('modal-solicitud-programar');
$(document).Toasts('create', {
autohide: true,
delay: 3000,
class: 'bg-success',
title: 'Programación individual',
subtitle: 'Éxito',
body: data.mensaje
});
vistaContador();
ocultarFormulario();
limpiarSeleccion();
funcionSeleccion();
},
error: function (data, text, error) {
$(document).Toasts('create', {
autohide: true,
delay: 5000,
class: 'bg-danger',
title: 'Programar solicitud',
subtitle: 'Ocurrió un error',
body: data.responseJSON.mensaje
});
},
complete: function () {
setTimeout(function(){
send.text("Programar mantenimiento"); // Para input de tipo button
send.append("<i></i>");
send.prop("disabled", false);
}, 5000);
}
});
return false; // Evitar ejecutar el submit del formulario.
});
}
function solicitudProgramada(url)
{
$('#modal-solicitud-programada').load(url, function ()
{
// configuración del Modal
$("#modal-solicitud-programada").on('hide.bs.modal', function () {
$(this).html('Cargando');
});
$(".modal-dialog").draggable;
solicitudProgramadaAjax(url)
})
}
function solicitudProgramadaAjax(url)
{
let send = $("#editar_usuario_guardar");
$('#editar_usuario_guardar').on('click', function () {
$.ajax({
type: "POST",
url: url,
dataType: "json",
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
send.text("Actualizando "); // Para input de tipo button
send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
send.prop("disabled", true);
},
success: function (data) {
$(document).Toasts('create', {
autohide: true,
delay: 3000,
class: 'bg-success',
title: 'Edición de programación',
subtitle: 'Éxito',
body: data.mensaje
});
closeModal('modal-solicitud-programada');
},
error: function (data, text, error) {
$(document).Toasts('create', {
autohide: true,
delay: 3000,
class: 'bg-warning',
title: 'Programación por grupo',
subtitle: 'Ocurrió un error',
body: data.responseJSON.mensaje
});
},
complete: function () {
setTimeout(function(){
send.text("Programar mantenimiento"); // Para input de tipo button
send.append("<i></i>");
send.prop("disabled", false);
}, 5000);
}
});
return false; // Evitar ejecutar el submit del formulario.
});
}
function solicitudReprogramar(url)
{
$('#modal-solicitud-reprogramar').load(url, function ()
{
// configuración del Modal
$("#modal-solicitud-reprogramar").on('hide.bs.modal', function () {
$(this).html('Cargando');
});
$(".modal-dialog").draggable;
solicitudReprogramarAjax(url)
})
}
function solicitudReprogramarAjax(url)
{
let send = $("#editar_usuario_guardar");
$('#editar_usuario_guardar').on('click', function () {
let formData = new FormData(document.getElementById("form-programar-solicitud"));
$.ajax({
type: "POST",
url: url,
data: formData, // Adjuntar los campos del formulario enviado.
dataType: "json",
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
send.text("Actualizando "); // Para input de tipo button
send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
send.prop("disabled", true);
},
success: function (data) {
let row = $('#idTipoE-' + data.idsol);
row.find('.falla').text(data.accion);
row = $('#modal-table-' + data.idsol);
row.find('.falla').text(data.accion);
$(document).Toasts('create', {
autohide: true,
delay: 3000,
class: 'bg-success',
title: 'Edición de programación',
subtitle: 'Éxito',
body: data.mensaje
});
closeModal('#modal-solicitud-reprogramar');
},
error: function (data, text, error) {
let datos = data.responseJSON;
$("#modal-solicitud-reprogramar").html(datos.form);
solicitudReprogramarAjax(url);
},
complete: function () {
setTimeout(function(){
send.text("Programar mantenimiento"); // Para input de tipo button
send.append("<i></i>");
send.prop("disabled", false);
}, 5000);
}
});
return false; // Evitar ejecutar el submit del formulario.
});
}
function aplicarFiltro() {
$("#tipoA").find($("tbody")).html("<tr><td colspan='8' class='text-center'><i class='fas fa-spinner fa-pulse'></i></td></tr>");
$("#tipoB").find($("tbody")).html("<tr><td colspan='8' class='text-center'><i class='fas fa-spinner fa-pulse'></i></td></tr>");
$("#tipoC").find($("tbody")).html("<tr><td colspan='8' class='text-center'><i class='fas fa-spinner fa-pulse'></i></td></tr>");
$("#tipoD").find($("tbody")).html("<tr><td colspan='8' class='text-center'><i class='fas fa-spinner fa-pulse'></i></td></tr>");
let formData = new FormData(document.getElementById("form_ubicacion_filtro"));
console.log(formData);
$.ajax({
type: "POST",
url: '{{ path('prog_preventivo_index') }}',
data: formData, // Adjuntar los campos del formulario enviado.
dataType: "html",
cache: false,
contentType: false,
processData: false,
success: function (data) {
let datos = jQuery.parseJSON(data);
console.log(datos);
actualizarEquipos(datos);
ocultarFormulario();
funcionSeleccion();
limpiarSeleccion();
},
error: function (data, text, error) {
let datos = jQuery.parseJSON(data.responseText);
console.log(datos);
}
});
}
<!-- Actualizar tabla de bitácora -->
function actualizarEquipos(data) {
$("#tipoA").dataTable().fnClearTable();
$("#tipoA").dataTable().fnDestroy();
$("#tipoB").dataTable().fnClearTable();
$("#tipoB").dataTable().fnDestroy();
$("#tipoC").dataTable().fnClearTable();
$("#tipoC").dataTable().fnDestroy();
$("#tipoD").dataTable().fnClearTable();
$("#tipoD").dataTable().fnDestroy();
var edit = "";
var html_a = "";
var html_b = "";
var html_c = "";
var html_d = "";
$.each(data, function (key, equipo) {
if(equipo.tipo === 'Equipo'){
html_a +=
"<tr id='idTipoA-" + equipo.id + "'>" +
"<td>" +
"<label>" +
"<input type='checkbox' class='check-tipoa' name='equipo[]' value='" + equipo.id + "'/>" +
"</label>" +
"</td>" +
"<th class='marbete'>" + equipo.marbete + "</th>" +
"<td class='descripcion'>" + equipo.descripcion + "</td>" +
"<td class='marca'>" + equipo.marca + "</td>" +
"<td class='ubicacion'>" + equipo.ubicacion + "</td>" +
"<td class='usuario'>" + equipo.usuario + "</td>" +
"<td class='mpe'><h3><span class='badge bg-secondary float-center'>0</span></h3></td>" +
"<td>" +
/*"<a href='#modal-solicitud-programar' class='text-success' data-toggle='modal' onclick=\"solicitudProgramar('" + equipo.nuevo + "')\">" +
"<i class='fa fa-calendar' data-toggle='tooltip' title='Programar mantenimiento'></i>" +
"</a>" +*/
"<a href='#modal-solicitud-programada' class='text-info btn' data-toggle='modal' onclick=\"solicitudProgramada('" + equipo.ver + "')\">" +
"<i class='fa fa-eye' data-toggle='tooltip' title='Ver mantenimientos programados'></i>" +
"</a>" +
"</td>" +
"</tr>";
}
if(equipo.tipo === 'Impresora'){
html_b +=
"<tr id='idTipoB-" + equipo.id + "'>" +
"<td>" +
"<label>" +
"<input type='checkbox' class='check-tipob' name='impresora[]' value='" + equipo.id + "'/>" +
"</label>" +
"</td>" +
"<th class='marbete'>" + equipo.marbete + "</th>" +
"<td class='descripcion'>" + equipo.descripcion + "</td>" +
"<td class='marca'>" + equipo.marca + "</td>" +
"<td class='ubicacion'>" + equipo.ubicacion + "</td>" +
"<td class='usuario'>" + equipo.usuario + "</td>" +
"<td class='mpe'><h3><span class='badge bg-secondary float-center'>0</span></h3></td>" +
"<td>" +
/*"<a href='#modal-solicitud-programar' class='text-success' data-toggle='modal' onclick=\"solicitudProgramar('" + equipo.nuevo + "')\">" +
"<i class='fa fa-calendar' data-toggle='tooltip' title='Programar mantenimiento'></i>" +
"</a>" +*/
"<a href='#modal-solicitud-programada' class='text-info btn' data-toggle='modal' onclick=\"solicitudProgramada('" + equipo.ver + "')\">" +
"<i class='fa fa-eye' data-toggle='tooltip' title='Ver mantenimientos programados'></i>" +
"</a>" +
"</td>" +
"</tr>";
}
if(equipo.tipo === 'Red'){
html_c +=
"<tr id='idTipoC-" + equipo.id + "'>" +
"<td>" +
"<label>" +
"<input type='checkbox' class='check-tipoc' name='red[]' value='" + equipo.id + "'/>" +
"</label>" +
"</td>" +
"<th class='marbete'>" + equipo.marbete + "</th>" +
"<td class='descripcion'>" + equipo.descripcion + "</td>" +
"<td class='marca'>" + equipo.marca + "</td>" +
"<td class='ubicacion'>" + equipo.ubicacion + "</td>" +
"<td class='usuario'>" + equipo.usuario + "</td>" +
"<td class='mpe'><h3><span class='badge bg-secondary float-center'>0</span></h3></td>" +
"<td>" +
/*"<a href='#modal-solicitud-programar' class='text-success' data-toggle='modal' onclick=\"solicitudProgramar('" + equipo.nuevo + "')\">" +
"<i class='fa fa-calendar' data-toggle='tooltip' title='Programar mantenimiento'></i>" +
"</a>" +*/
"<a href='#modal-solicitud-programada' class='text-info btn' data-toggle='modal' onclick=\"solicitudProgramada('" + equipo.ver + "')\">" +
"<i class='fa fa-eye' data-toggle='tooltip' title='Ver mantenimientos programados'></i>" +
"</a>" +
"</td>" +
"</tr>";
}
if(equipo.tipo === 'Otro'){
html_d +=
"<tr id='idTipoD-" + equipo.id + "'>" +
"<td>" +
"<label>" +
"<input type='checkbox' class='check-tipod' name='otro[]' value='" + equipo.id + "'/>" +
"</label>" +
"</td>" +
"<th class='marbete'>" + equipo.marbete + "</th>" +
"<td class='descripcion'>" + equipo.descripcion + "</td>" +
"<td class='marca'>" + equipo.marca + "</td>" +
"<td class='ubicacion'>" + equipo.ubicacion + "</td>" +
"<td class='usuario'>" + equipo.usuario + "</td>" +
"<td class='mpe'><h3><span class='badge bg-secondary float-center'>0</span></h3></td>" +
"<td>" +
/*"<a href='#modal-solicitud-programar' class='text-success' data-toggle='modal' onclick=\"solicitudProgramar('" + equipo.nuevo + "')\">" +
"<i class='fa fa-calendar' data-toggle='tooltip' title='Programar mantenimiento'></i>" +
"</a>" +*/
"<a href='#modal-solicitud-programada' class='text-info btn' data-toggle='modal' onclick=\"solicitudProgramada('" + equipo.ver + "')\">" +
"<i class='fa fa-eye' data-toggle='tooltip' title='Ver mantenimientos programados'></i>" +
"</a>" +
"</td>" +
"</tr>";
}
});
$("#tipoA").find($("tbody")).html(html_a);
$('#tipoA').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$("#tipoB").find($("tbody")).html(html_b);
$('#tipoB').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$("#tipoC").find($("tbody")).html(html_c);
$('#tipoC').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
$("#tipoD").find($("tbody")).html(html_d);
$('#tipoD').DataTable({
"aaSorting": [],
orderCellsTop: true,
{# Define un valor predeterminado para LengthChange #}
"pageLength": 50,
"scrollX": true,
{# sDom: 'lrtip', #}
"bLengthChange" : true,
language: {
url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
},
});
vistaContador();
}
</script>
{% endblock %}