defmodule Mse25Web.FeedView do use Mse25Web, :html def rss(items, _host) do ~s""" madr.se The online home of Anders Englöf Ytterström, a metalhead and musician living and working in Borlänge, Sweden. sv https://madr.se/ yttan@fastmail.se (Anders Englöf Ytterström) yttan@fastmail.se (Anders Englöf Ytterström) #{Enum.map(items, &rss_item/1)} """ end def calendar(upcoming) do ~s""" BEGIN:VCALENDAR VERSION:2.0 PRODID:-//https://madr.se//kommande-evenemang.ics//SE CALSCALE:GREGORIAN X-ORIGINAL-URL:https://madr.se X-WR-CALDESC: Kommande evenemang, madr.se METHOD:PUBLISH REFRESH-INTERVAL;VALUE=DURATION:PT1H X-Robots-Tag:noindex X-PUBLISHED-TTL:PT1H BEGIN:VTIMEZONE TZID:CEST BEGIN:STANDARD TZOFFSETFROM:+0200 TZOFFSETTO:+0200 TZNAME:CEST DTSTART:20000630T000000 END:STANDARD END:VTIMEZONE #{upcoming |> Enum.map(fn %{id: id, title: title, created_at: created_at, starts_at: starts_at, ends_at: ends_at, longitude: longitude, latitude: latitude, lead: lead, venue: venue, region: region} -> ~s""" BEGIN:VEVENT UID:#{starts_at}.#{id}@madr.se DTSTAMP:#{created_at} CREATED:#{created_at} LAST-MODIFIED:#{created_at} DTSTART;TZID=CEST:#{starts_at}T060606 DTEND;TZID=CEST:#{ends_at}T060606 SUMMARY:#{title} DESCRIPTION:#{lead} LOCATION:#{venue}\, #{region} GEO:#{latitude};#{longitude} END:VEVENT """ end) |> Enum.join("")}END:VCALENDAR """ end def event_map(markers) do ~s""" (function(g, document) { "use strict"; const mapData = [ #{markers |> Enum.map(fn %{date: date, latitude: latitude, longitude: longitude, title: title, region: region, venue: venue} -> ~s""" { location: [#{longitude}, #{latitude}], title: "#{title}", date: "#{date}", region: "#{region}", venue: "#{venue}" } """ end) |> Enum.join(",")} ] // insert Leaflet styles () to and