Browse Source

aggiunto template con tiles asimmetrici

encrypt 10 months ago
parent
commit
f46e456b8f

+ 50 - 0
static/flyers/asymmetric/paper.css

@@ -0,0 +1,50 @@
+@page {
+  margin: 0;
+}
+body {
+  margin: 0;
+  position: relative;
+  box-sizing: border-box;
+  page-break-after: always;
+}
+
+body.A3 {
+  width: 297mm;
+  height: 420mm;
+}
+body.A3.landscape .sheet {
+  width: 420mm;
+  height: 297mm;
+}
+body.A4 .sheet {
+  width: 210mm;
+  height: 297mm;
+}
+body.A4.landscape .sheet {
+  width: 297mm;
+  height: 210mm;
+}
+body.A5 .sheet {
+  width: 148mm;
+  height: 210mm;
+}
+body.A5.landscape .sheet {
+  width: 210mm;
+  height: 148mm;
+}
+body.letter .sheet {
+  width: 216mm;
+  height: 280mm;
+}
+body.letter.landscape .sheet {
+  width: 280mm;
+  height: 216mm;
+}
+body.legal .sheet {
+  width: 216mm;
+  height: 357mm;
+}
+body.legal.landscape .sheet {
+  width: 357mm;
+  height: 216mm;
+}

+ 138 - 0
static/flyers/asymmetric/style.css

@@ -0,0 +1,138 @@
+.eventcol {
+  display: flex;
+  flex-direction: column;  
+  gap: 3mm;
+  height: fit-content;
+  /*! max-height: 350mm; */
+  /*! height: ; */
+}
+
+.flyer-container {
+  max-height: fit-content;
+  min-content: 40mm;
+  max-content: 50mm;
+  border: 1px solid rgb(253, 140, 140);
+  overflow: auto;
+}
+.flyer {
+    object-fit: cover;
+    max-height: 150px;
+}
+
+
+body {
+  border: 1px solid yellow;
+  font: 18px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
+  color: #c9d1d9;
+  background: #0d1117;
+}
+
+h1, h2, h3 {
+  line-height: 1.2;
+}
+
+h1 {
+	margin: 0 0 .2em;
+	color: #ff6e40;
+  font-size: 20mm;
+}
+
+h3 {
+  margin-top: 0;
+  margin-bottom: .2em;
+  color: #ff6e40;
+}
+
+.intestazione {
+  padding: 1.5rem;
+  display: grid;
+  grid-template-columns: auto auto auto;
+  margin-bottom: 1.5rem;
+}
+.logo,
+.qrcode {
+  display: flex;
+  align-items: center;
+  height: 100%;
+}
+.qrcode {
+  justify-content: flex-end;
+}
+.logo img,
+.qrcode img {
+  width: 25%;
+}
+
+#events {
+  display: grid;
+  grid-template-columns: auto auto auto;
+  grid-gap: 1.5em;
+  border: 1px dotted black;
+  padding-left: 24px;
+  padding-right: 24px;
+  height: 350mm;
+}
+.event {
+  background-color: #1e1e1e;
+  border-radius: 4px;
+  box-shadow: 0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);
+
+}
+
+.event_info svg {
+	height: 24px;
+	width: 24px;
+	fill: white;
+	margin-right: 0.2em;
+}
+.title,
+.flex,
+.location {
+  margin: .5rem 1rem;
+}
+.center {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.flex,
+.location {
+	display: grid;
+	grid-template-columns: auto auto;
+	justify-content: start;
+}
+.place_name {
+	color: #ff6e40;
+}
+
+.flyer-container {
+  background: #0d1117;
+}
+.flyer {
+  width: 100%;
+  object-fit: cover;
+  border-radius: 4px 4px 0 0;
+}
+
+footer {
+  width: 100%;
+  padding: 1rem;
+  display: grid;
+  grid-template-columns: 66% 33%;
+  padding-left: 24px;
+  padding-right: 24px;
+}
+.contacts {
+  padding-left: 24px;
+}
+.contacts span {
+  padding-right: 1rem;
+}
+.contacts svg {
+  width: 1rem;
+  fill:#c9d1d9;
+}
+.published {
+  text-align: right;
+  padding-right: 24px;
+}

+ 86 - 0
templates/flyers/asymmetric.html

@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="it">
+  <head>
+    <meta charset="utf-8">
+    <title>Balotta - sito in manutenzione</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="{{ url_for('static', filename='flyers/asymmetric/style.css') }}">
+    <link rel="stylesheet" href="{{ url_for('static', filename='flyers/asymmetric/paper.css') }} ">
+    <link rel="icon" type="image/x-icon" href="favicon.ico">
+  </head>
+  <body class="A3 center">
+
+    <header class="intestazione">
+      <div class="logo">
+        <img src="https://balotta.org/logo.png" alt="">
+      </div>
+      <div class="titolo center">
+        <h1>Balotta</h1>
+        <div class="subtitle">Agenda condivisa per Bolognano</div>
+      </div>
+      <div class="qrcode">
+        <img src="{{ url_for('static', filename='qr-code.png') }}" alt="">
+      </div>
+    </header>
+
+    <main id="events">
+      {% for column in (0, 1, 2)  %}
+      <div class="eventcol">
+      {% for row in (0, 1, 2, 3) %}
+      {% set event = events[column+(3*row)] %}
+      
+      <div class="event">
+       <div class="center flyer-container">
+        <img class="flyer" src="https://balotta.org/media/thumb/{{event.media[0].url}}" style="object-position: {{ event.media[0].thumbnailPosition }}"></img>
+       </div>
+       <div class="event_info">
+        <h3 class="title">{{ event.title }}</h3>
+        <div class="flex"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true" class="v-icon__svg"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z"></path></svg><span class="time">{{ event.when }}</span></div>
+        <div class="location">
+          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true" class="v-icon__svg"><path d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"></path>
+          <div class="">
+            <span class="place_name">{{ event.place.name }}</span>
+          </div>
+        </div>
+      </div>
+      </div>
+      {% endfor %}
+      </div>
+  {% endfor %}
+  </main>
+
+  <footer>
+    <div class="contacts">
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"/></svg>
+      <span>https://balotta.org</span>
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg>
+      info@balotta.org
+    </div>
+    <div class="published">
+      stampato il 16/10/23
+    </div>
+  </footer>
+  <script>
+    const container = document.querySelector('#events');
+    const content = container.querySelectorAll('.eventcol');
+    const containerHeight = parseInt(window.getComputedStyle(container).height);
+    
+    const resizeObserver = new ResizeObserver(event => {
+      resizeObserver.disconnect();
+  
+      event.forEach((el) => {
+	if(el.contentRect.height < containerHeight) {
+          el.target.querySelectorAll(".event > .flyer-container > .flyer").forEach((e) => {
+            if(e.height >= parseInt(window.getComputedStyle(e).maxHeight)) {
+              e.style.maxHeight = parseInt(window.getComputedStyle(e).maxHeight)+1 + "px"
+            }
+          })
+	}
+      }) 
+      content.forEach(el => { requestAnimationFrame(() => resizeObserver.observe(el)) });
+    });
+
+    content.forEach(el => resizeObserver.observe(el))
+  </script>
+  </body>
+</html>