87 lines
3.0 KiB
JavaScript
87 lines
3.0 KiB
JavaScript
(function (ventana, documento, $) {
|
|
"use strict";
|
|
|
|
if (ventana.SIGVisitas && ventana.SIGVisitas.inicializar) {
|
|
return;
|
|
}
|
|
|
|
var arrastre = null;
|
|
|
|
function mostrarModal(identificador) {
|
|
$(documento.getElementById(identificador)).modal("show");
|
|
}
|
|
|
|
function ocultarModal(identificador) {
|
|
$(documento.getElementById(identificador)).modal("hide");
|
|
}
|
|
|
|
function iniciarArrastre(evento) {
|
|
var asa = $(this);
|
|
arrastre = {
|
|
clave: asa.attr("data-visita-clave"),
|
|
grupo: asa.attr("data-visita-grupo"),
|
|
tabla: asa.closest("[data-visita-orden]")[0]
|
|
};
|
|
evento.originalEvent.dataTransfer.setData("text/plain", arrastre.clave);
|
|
evento.originalEvent.dataTransfer.effectAllowed = "move";
|
|
}
|
|
|
|
function permitirArrastre(evento) {
|
|
if (arrastre && this === arrastre.tabla) {
|
|
evento.preventDefault();
|
|
}
|
|
}
|
|
|
|
function soltar(evento) {
|
|
if (!arrastre || this !== arrastre.tabla) {
|
|
return;
|
|
}
|
|
var fila = $(evento.target).closest("tr");
|
|
var tabla = $(this);
|
|
var asa = fila.find("[data-visita-clave]").first();
|
|
if (asa.attr("data-visita-grupo") !== arrastre.grupo ||
|
|
!asa.length || asa.attr("data-visita-clave") === arrastre.clave) {
|
|
arrastre = null;
|
|
return;
|
|
}
|
|
var entrada = documento.getElementById(tabla.attr("data-visita-entrada"));
|
|
if (!entrada) {
|
|
arrastre = null;
|
|
return;
|
|
}
|
|
evento.preventDefault();
|
|
var despues = evento.originalEvent.clientY >
|
|
fila[0].getBoundingClientRect().top + fila[0].offsetHeight / 2;
|
|
entrada.value = tabla.attr("data-visita-orden") + "|" + arrastre.clave + "|" +
|
|
asa.attr("data-visita-clave") + "|" + (despues ? "1" : "0");
|
|
arrastre = null;
|
|
ventana.__doPostBack(tabla.attr("data-visita-destino"), "");
|
|
}
|
|
|
|
function terminarArrastre() {
|
|
arrastre = null;
|
|
}
|
|
|
|
function inicializar(raiz) {
|
|
var contenedor = $(raiz || documento);
|
|
var selector = "[data-visita-clave]:not([data-sig-arrastre-visita-inicializado='1'])";
|
|
contenedor.find(selector).addBack(selector).each(function () {
|
|
$(this).on("dragstart.sigVisitas", iniciarArrastre)
|
|
.on("dragend.sigVisitas", terminarArrastre)
|
|
.attr("data-sig-arrastre-visita-inicializado", "1");
|
|
});
|
|
selector = "[data-visita-orden]:not([data-sig-orden-visita-inicializado='1'])";
|
|
contenedor.find(selector).addBack(selector).each(function () {
|
|
$(this).on("dragover.sigVisitas", permitirArrastre)
|
|
.on("drop.sigVisitas", soltar)
|
|
.attr("data-sig-orden-visita-inicializado", "1");
|
|
});
|
|
}
|
|
|
|
ventana.SIGVisitas = {
|
|
mostrarModal: mostrarModal,
|
|
ocultarModal: ocultarModal,
|
|
inicializar: inicializar
|
|
};
|
|
}(window, document, jQuery));
|