gamutable/src/gamutable.js

116 lines
3.7 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,
};
gamutable();
function 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.delLigne = this.$refs.montableau.delLigne;
},
});
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.delLigne = this.$refs.montableau_deux.delLigne;
},
});
app_deux.use(VuePapaParse);
app_deux.provide('$papa', app_deux.config.globalProperties.$papa);
app_deux.mount(el);
}
i++;
}
}
// le chargement de gamutable passe dans une variable globale
// permettant de forcer son rechargement à l'ouverture du modalbox
// via la classe : modalgamutable
window.gamutable = gamutable
$('#vueGamutable').on('click', '.url_action, .url_action--ss_css', function (e) {
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');
// gamutable(s) à mettre à jour ? 1 | 2 | 12 (par défaut 1)
let Treload = '1';
if ($(this).parents('.gamutableDeux').length) {
Treload = '2';
}
if ($(this).data("treload") !== undefined) {
Treload = $(this).data("treload").toString();
}
let Treload1 = Treload.indexOf('1') !== -1;
let Treload2 = Treload.indexOf('2') !== -1;
// 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');
$.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) {
if (Treload1) {
app.rechargerJson(id);
}
if (Treload2) {
app_deux.rechargerJson(id);
}
} else if (parseInt(id) < 0) {
if (Treload1) {
app.delLigne(id);
}
if (Treload2) {
app_deux.delLigne(id);
}
} else {
if (Treload1) {
app.rechargerJson('maj 1');
}
if (Treload2) {
app_deux.rechargerJson('maj 2');
}
}
if (nomBlocAjaxReload !== undefined) {
ajaxReload(nomBlocAjaxReload, {
args: { id },
callback: function () { },
});
}
}
});
});