ash_admin/assets/js/app.js
Zach Daniel 53e0d5b4ef WIP
2020-12-08 01:22:24 -05:00

91 lines
2.8 KiB
JavaScript

import css from "../css/app.scss"
import "phoenix_html"
import { Socket } from "phoenix"
import NProgress from "nprogress"
import { LiveSocket, Browser } from "phoenix_live_view"
import 'alpinejs'
function cookieValue(name) {
if (document.cookie) {
let cookie =
document.cookie
.split('; ')
.find(row => row.startsWith(name + '='))
if (cookie) {
let value = cookie.split('=')[1];
if (value) {
return value.split(';')[0]
} else {
return null;
}
} else {
return null;
}
} else {
return null;
};
}
let socketPath = document.querySelector("html").getAttribute("phx-socket") || "/live"
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
let Hooks = {}
Hooks.Actor = {
mounted() {
this.handleEvent("set_actor", (payload) => {
document.cookie = 'actor_resource' + '=' + payload.resource + ';path=/';
document.cookie = 'actor_primary_key' + '=' + payload.primary_key + ';path=/';
document.cookie = 'actor_action' + '=' + payload.action + ';path=/';
document.cookie = 'actor_api' + '=' + payload.api + ';path=/';
});
this.handleEvent("clear_actor", () => {
document.cookie = 'actor_resource' + '=' + ';path=/';
document.cookie = 'actor_primary_key' + '=' + ';path=/';
document.cookie = 'actor_action' + ';path=/';
document.cookie = 'actor_api' + '=' + ';path=/';
document.cookie = 'actor_authorizing=false;path=/';
document.cookie = 'actor_paused=true;path=/';
});
this.handleEvent("toggle_authorizing", (payload) => {
document.cookie = 'actor_authorizing' + '=' + payload.authorizing + ';path=/';
});
this.handleEvent("toggle_actor_paused", (payload) => {
document.cookie = 'actor_paused' + '=' + payload.actor_paused + ';path=/';
});
}
}
Hooks.Tenant = {
mounted() {
this.handleEvent('set_tenant', (payload) => {
document.cookie = 'tenant' + '=' + payload.tenant + ';path=/';
})
this.handleEvent('clear_tenant', () => {
document.cookie = 'tenant' + '=' + ';path=/'
})
}
}
let liveSocket = new LiveSocket(socketPath, Socket, {
hooks: Hooks,
dom: {
onBeforeElUpdated(from, to) {
if (from.__x) {
window.Alpine.clone(from.__x, to)
}
}
},
params: { _csrf_token: csrfToken }
})
// Show progress bar on live navigation and form submits
window.addEventListener("phx:page-loading-start", info => NProgress.start())
window.addEventListener("phx:page-loading-stop", info => NProgress.done())
// connect if there are any LiveViews on the page
liveSocket.connect()
// expose liveSocket on window for web console debug logs and latency simulation:
// >> liveSocket.enableDebug()
// >> liveSocket.enableLatencySim(1000)
window.liveSocket = liveSocket