Compare commits

..

2 Commits

3 changed files with 61 additions and 26 deletions

View File

@ -9,6 +9,7 @@
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
flex-direction: column; flex-direction: column;
gap: 0.5rem;
flex: 25%; flex: 25%;
overflow: scroll; overflow: scroll;
} }
@ -17,36 +18,63 @@
flex: 75%; flex: 75%;
} }
:root {
--collage-ap: 110 / 85;
}
.image-surface { .image-surface {
overflow: hidden; overflow: hidden;
margin: auto; margin: auto;
border: 1px solid; border: 1px solid;
height: 100%; height: 100%;
width: auto; width: auto;
--collage-ap: 110 / 85;
aspect-ratio: var(--collage-ap); aspect-ratio: var(--collage-ap);
} }
.showbuton {
font-size: 2rem; .main-controls {
display: flex;
gap: 0.5rem;
}
.main-controls button {
font-size: 1.2rem;
}
#notice_dialog {
z-index: 10;
width: 50%;
background-color: lightblue;
}
#notice_dialog form {
display: flex;
}
#notice_dialog button {
font-size: 1.2rem;
margin-left: auto;
} }
.templates { .templates {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 1rem; gap: 0.5rem;
width: 80%;
} }
.templates li { .templates li {
width: 30%;
list-style-type: none; list-style-type: none;
aspect-ratio: 1 / 1;
} }
#page_size_selector { #page_size_selector {
width: 100%; font-size: 1.2rem;
width: 80%;
} }
.template { .template {
width: 6rem; aspect-ratio: var(--collage-ap);
height: 6rem;
} }
.template-selected { .template-selected {

View File

@ -9,14 +9,13 @@
<link rel="stylesheet" href="index.css" /> <link rel="stylesheet" href="index.css" />
</head> </head>
<body> <body>
<dialog id="notice_dialog">
<form method="dialog"><span><a href="" target="_blank" id="collage-url"></a></span><button>X</button></form>
</dialog>
<div class="container"> <div class="container">
<div class="controls"> <div class="controls">
<h2>Photo Collage</h2> <h1>Photo Collage</h1>
<p><a href="choose.html">Select Images</a></p>
<label>
<span>Paper size</span>
<select id="page_size_selector"> <select id="page_size_selector">
<option value="letter-portrait" > Letter (Portrait) </option> <option value="letter-portrait" > Letter (Portrait) </option>
<option selected value="letter-landscape" > Letter (Landscape) </option> <option selected value="letter-landscape" > Letter (Landscape) </option>
@ -25,15 +24,16 @@
<option value="foursix-portrait" > 4 × 6 (Portrait) </option> <option value="foursix-portrait" > 4 × 6 (Portrait) </option>
<option value="foursix-landscape" > 4 × 6 (Landscape) </option> <option value="foursix-landscape" > 4 × 6 (Landscape) </option>
</select> </select>
</label> <div class="main-controls">
<a href="choose.html"><button>Select</button></a>
<button id="snapper" class="showbuton">Snap Collage</button> <button id="snapper" class="showbuton">Snap</button>
<div> <a href="/collages/?layout=grid" target="_blank" ><button>All</button></a>
<p><a href="/collages/" target="_blank" >All collages</a></p>
<p><a href="" target="_blank" id="collage-url"></a></p>
</div> </div>
<ul class="templates"> <ul class="templates">
<li> <li>
<div id="default_template" class="template single"> <div id="default_template" class="template single">

View File

@ -44,6 +44,9 @@ let collageDiv
/** @type {HTMLSelectElement} */ /** @type {HTMLSelectElement} */
let pageSizeSelect let pageSizeSelect
/** @type {HTMLDialogElement} */
let noticeDialog
/** @type {HTMLAnchorElement} */ /** @type {HTMLAnchorElement} */
let collageUrlA let collageUrlA
@ -59,6 +62,7 @@ function main() {
snapButton = document.getElementById("snapper") snapButton = document.getElementById("snapper")
collageDiv = document.getElementById("collage") collageDiv = document.getElementById("collage")
pageSizeSelect = document.getElementById("page_size_selector") pageSizeSelect = document.getElementById("page_size_selector")
noticeDialog = document.getElementById("notice_dialog")
collageUrlA = document.getElementById("collage-url") collageUrlA = document.getElementById("collage-url")
snapButton.onclick = () => snap() snapButton.onclick = () => snap()
@ -74,6 +78,7 @@ function main() {
// Skipping first entry in array to make the images start with index 1 // Skipping first entry in array to make the images start with index 1
imageUrls = [,].concat(queryUrls) imageUrls = [,].concat(queryUrls)
pageSizeChange()
applyTemplate(document.getElementById("default_template")) applyTemplate(document.getElementById("default_template"))
} }
@ -171,6 +176,7 @@ function snap() {
} }
(async () => { (async () => {
noticeDialog.show()
collageUrlA.text = "Collage is being generated..."; collageUrlA.text = "Collage is being generated...";
const collagFile = await makeCollage(req) const collagFile = await makeCollage(req)
collageUrlA.href = `collages/${collagFile}`; collageUrlA.href = `collages/${collagFile}`;
@ -179,7 +185,8 @@ function snap() {
} }
function pageSizeChange() { function pageSizeChange() {
collageDiv.style.setProperty('--collage-ap', pageSizes[pageSizeSelect.value]["ap"]) // https://stackoverflow.com/a/37802204
document.documentElement.style.setProperty('--collage-ap', pageSizes[pageSizeSelect.value]["ap"])
pageSize = pageSizeSelect.value pageSize = pageSizeSelect.value
initCollage() initCollage()
} }