gamutable/src/gamutable.js

88 lines
2.1 KiB
JavaScript

// https://vitejs.dev/config/#build-polyfillmodulepreload
import "vite/modulepreload-polyfill";
// Vue
import { createApp } from "vue";
// if importing all is too much you can always do it manually
import GamuTable from "./components/gamuTable.vue";
import VuePapaParse from "vue-papa-parse";
const components = {
GamuTable,
};
let i = 1;
for (const el of document.getElementsByClassName("vue-gamutable")) {
if (i === 1) {
window.app = createApp({
components,
mounted() {
app.rechargerJson = this.$refs.montableau.rechargerJson;
},
});
app.use(VuePapaParse);
app.provide("$papa", app.config.globalProperties.$papa);
app.mount(el);
} else if (i === 2) {
window.app_deux = createApp({
components,
mounted() {
app_deux.rechargerJson =
this.$refs.montableau_deux.rechargerJson;
},
});
app_deux.use(VuePapaParse);
app_deux.provide("$papa", app_deux.config.globalProperties.$papa);
app_deux.mount(el);
}
i++;
}
$("#vueGamutable").on("click", ".url_action", function (e) {
console.log("coucou");
e.preventDefault();
e.stopPropagation();
let confirmation = $(this).data("confirm");
if (confirmation !== undefined) {
if (!confirm(confirmation)) {
return;
}
}
let url = $(this).attr("href");
let id = $(this).data("id");
// passer en refresh animé une éventuelle icone
if ($(this).has("i.icon, i.fa")) {
$(this)
.find("i.icon, i.fa")
.eq(0)
.replaceWith('<i class="fa fa-refresh fa-spin"></i>');
}
let nomBlocAjaxReload = $(this).data("ajaxreload");
console.time("Chargement de VueJs APRES Ajax");
$.ajax({
url: url,
dataType: "json",
async: true,
}).done(function (retour) {
if (
!$.isEmptyObject(retour) &&
!$.isEmptyObject(retour.message_erreur)
) {
alert(retour.message_erreur);
} else {
if (parseInt(id) > 0) {
app.rechargerJson(id);
} else {
app.rechargerJson("maj");
}
if (nomBlocAjaxReload !== undefined) {
console.log("depart reload: " + nomBlocAjaxReload);
ajaxReload(nomBlocAjaxReload, {
args: { id },
callback: function () {},
});
}
}
});
});