122 lines
6.7 KiB
Plaintext
122 lines
6.7 KiB
Plaintext
<!DOCTYPE html>
|
|
<% rel_proj_root = "../../../.." %>
|
|
<html lang={@config["site"]["lang"]}>
|
|
<.html_head site_name={@config["site"]["name"]} site_author={@config["site"]["author"]} site_desc={@config["site"]["desc"]} />
|
|
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
<audio id="loaded" class="notifier" src={~p"/audio/page_load.mp3"}></audio>
|
|
<body id="default_body">
|
|
<noscript>
|
|
<div id="noscript_panel" class="panel">
|
|
<!-- @TODO change below button button to anchor elements for ALL HEEx pages -->
|
|
<a id="monologin_noscript" class="loginbutt" href={~p"/login"}>Log in</a>
|
|
<a id="monoregistration_noscript" class="registbutt">Register</a>
|
|
</div>
|
|
</noscript>
|
|
<template id="panel" class="panel">
|
|
<!-- @TODO change below button button to anchor elements for ALL HEEx pages -->
|
|
<a id="monologin" class="loginbutt" href={~p"/login"}>Log in</a>
|
|
<a id="monoregistration" class="registbutt">Register</a>
|
|
</template>
|
|
<div id="banner">
|
|
<% # @TODO verify the below works %>
|
|
<%= raw File.read!(Path.expand("#{rel_proj_root}/priv/static/images/main.svg", __DIR__)) %>
|
|
<span class="frontmatter"><a id="home" href={~p"/"}><h1 id="site_title" class="title"><%= @config["site"]["name"] %></h1></a></span>
|
|
<nav id="site_nav">
|
|
<.navify page_links={@pages} />
|
|
</nav>
|
|
</div>
|
|
<div id="doc">
|
|
<main id="content" class="page_content">
|
|
<div id="affil_wrap">
|
|
<div>
|
|
<%= for i <- @affil do %>
|
|
<%= for item <- i do %>
|
|
<a href={item["protocol"] <> item["scheme_postfix"] <> item["address"]}>
|
|
<%= if Map.has_key?(item, "icon_uri") and item["icon_uri"] != "" do %>
|
|
<img src={item["icon_uri"]} />
|
|
<% else %>
|
|
<%= if Map.has_key?(item, "icon_name") and item["icon_name"] != "" do %>
|
|
<!-- @TODO either troubleshoot heroicons or draw from map of (social media logo?) images (SVG?) -->
|
|
<.affiliate icon={item["icon_name"]} />
|
|
<% else %>
|
|
<%= item["name"] %>
|
|
<% end %>
|
|
<% end %>
|
|
</a>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
<div id="card_table">
|
|
<div id="affil_info">
|
|
<!-- <img src="https://static.vecteezy.com/system/resources/previews/022/185/914/original/metal-hand-sign-png.png" /> -->
|
|
<div>
|
|
<%= for i <- @affil do %>
|
|
<%= for item <- i do %>
|
|
<a href={item["protocol"] <> item["scheme_postfix"] <> item["address"]}>
|
|
<article>
|
|
<span><h1 id={item["name"] <> "_label"} class="contact_label"><%= item["name"] %></h1>
|
|
<p id={item["name"]} class="contact_datum">
|
|
<%= item["protocol"] <> " -> " <> item["address"] %>
|
|
</p></span>
|
|
</article>
|
|
</a>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- <form id="contact_form" method="POST">
|
|
<label for="protocol" class="form_label">séance technique</label>
|
|
<select name="protocol" id="protocol">
|
|
<option value="email">email</option>
|
|
</select><br>
|
|
<div id="selected_protocol" class="form_group">
|
|
<label for="address_from" class="form_label">magician</label>
|
|
<input type="text" id="address_from" name="address_from" value="" /><br>
|
|
<label for="message" class="form_label">spell</label>
|
|
<textarea id="message" name="message" rows="20" cols="75" /><br>
|
|
<input type="submit" value="Submit" />
|
|
</div>
|
|
</form> -->
|
|
</main>
|
|
</div>
|
|
<div id="extra">
|
|
</div>
|
|
<.html_foot />
|
|
</body>
|
|
<script type="module">
|
|
// import { NotificationSounds } from "<%= ~p"/js/notifiers.js" %>";
|
|
import { Point, Line } from "<%= ~p"/js/space.js" %>";
|
|
import { Hitbox, Tracker, spatialTriggerY } from "<%= ~p"/js/triggers.js" %>";
|
|
import { reportPriority } from "<%= ~p"/js/err.js" %>";
|
|
reportPriority();
|
|
|
|
let sandbox = new Hitbox(document.body)
|
|
let sandbox_rect = sandbox.matter.getBoundingClientRect()
|
|
sandbox.y = sandbox_rect.y
|
|
let ceiling = new Point(0, Math.round(sandbox.y), 0)
|
|
let floor = new Point(0, Math.round(ceiling.y * (60 / sandbox.y)), 0)
|
|
let constraint = new Line(ceiling, floor)
|
|
window.addEventListener("resize", (e) => {
|
|
let sandbox_prev_y = sandbox.y
|
|
let sandbox_rect = sandbox.matter.getBoundingClientRect()
|
|
sandbox.y = sandbox_rect.y
|
|
ceiling.y = Math.round(sandbox.y)
|
|
floor.y = Math.round((ceiling.y * (60 / sandbox_prev_y)) + ((ceiling.y * (60 / sandbox_prev_y)) * (sandbox.y / sandbox_prev_y)))
|
|
constraint.point1 = ceiling
|
|
constraint.point2 = floor
|
|
constraint.reset()
|
|
console.log("Floor has changed to value %d", floor.y)
|
|
console.log(Math.round(ceiling.y * (sandbox.y / sandbox_prev_y)))
|
|
console.info("Logging \"top\" of %o on window resize as: %d", sandbox.matter, sandbox.y)
|
|
})
|
|
sandbox.matter.addEventListener("mousemove", (e) => {
|
|
let panel = document.getElementById("panel")
|
|
let tracker = new Tracker(e, panel)
|
|
tracker.y = tracker.event.clientY
|
|
// let yFloor = Math.round(panel.getBoundingClientRect().height)
|
|
spatialTriggerY(tracker, constraint, sandbox)
|
|
})
|
|
</script>
|
|
</html> |