nouveau-theatre-de-besancon/site/plugins/mapado-connect/index.js
2024-07-24 09:43:31 +02:00

102 lines
3.7 KiB
JavaScript

(function() {
"use strict";
function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
if (render) {
options.render = render;
options.staticRenderFns = staticRenderFns;
options._compiled = true;
}
{
options._scopeId = "data-v-" + scopeId;
}
return {
exports: scriptExports,
options
};
}
const _sfc_main = {
__name: "MapadoConnectField",
props: {
mapadoToken: String
},
setup(__props) {
const { mapadoToken } = __props;
const id = Vue.ref(null);
const icon = Vue.ref("search");
const theme = Vue.ref(null);
const text = Vue.ref("Vérifie si Mapado contient bien un événement correspondant.");
setTimeout(() => {
const idInput = document.querySelector(".k-field-name-mapadoid input");
id.value = idInput.value;
idInput.addEventListener("input", () => {
id.value = idInput.value;
});
}, 100);
function connect() {
icon.value = "loader";
theme.value = "yellow";
const myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer " + mapadoToken);
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
fetch(
"https://ticketing.mapado.net/v1/ticketings/" + id.value + "?fields=title,type,sellingDeviceSchedule,eventDateList{startDate,bookableStock}",
requestOptions
).then((response) => {
console.log(response);
if (response.status === 404) {
throw new Error(
"Aucun événement ne correspond à l'identifiant : " + id.value + "."
);
}
if (response.status === 500) {
throw new Error(
"Impossible de joindre le serveur Mapado. Veuillez réessayer plus tard."
);
}
return response.json();
}).then((result) => {
icon.value = "check";
theme.value = "green";
text.value = "<strong>Événement correspondant sur Mapado : <em>" + result.title + "</em></strong>";
console.log(result);
}).catch((error) => {
icon.value = "alert";
theme.value = "red";
text.value = "<strong>" + error + "</strong>";
console.log(error);
setTimeout(() => {
icon.value = "search";
theme.value = null;
}, 2e3);
});
}
return { __sfc: true, id, icon, theme, text, connect };
}
};
var _sfc_render = function render() {
var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
return _c("div", { staticClass: "k-number-field k-field k-field-name-mapadoid" }, [_c("k-button", { attrs: { "variant": "filled", "theme": _setup.theme, "icon": _setup.icon }, on: { "click": _setup.connect } }, [_vm._v("Vérifier")]), _c("footer", { staticClass: "k-field-footer" }, [_c("div", { staticClass: "k-help k-field-help k-text" }, [_c("p", { domProps: { "innerHTML": _vm._s(_setup.text) } })])])], 1);
};
var _sfc_staticRenderFns = [];
_sfc_render._withStripped = true;
var __component__ = /* @__PURE__ */ normalizeComponent(
_sfc_main,
_sfc_render,
_sfc_staticRenderFns,
false,
null,
"f2640b99"
);
__component__.options.__file = "/Users/adrienpayet/code/ntb/site/plugins/mapado-connect/src/components/MapadoConnectField.vue";
const MapadoConnectField = __component__.exports;
window.panel.plugin("getkirby/pluginkit", {
fields: {
"mapado-connect": MapadoConnectField
}
});
})();