912 lines
73 KiB
HTML
912 lines
73 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Document</title>
|
|
</head>
|
|
<body>
|
|
|
|
<form>
|
|
<div style="display: flex; align-items: center;">
|
|
<img alt="" style="width: 4em; height: 4%; filter: invert(1);" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMjAwbW0iCiAgIGhlaWdodD0iMjAwbW0iCiAgIHZpZXdCb3g9IjAgMCAyMDAgMjAwIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc1IgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEuMiAoYjhlMjViZTgzMywgMjAyMi0wMi0wNSkiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImxvZ29fYmxhY2tfdGhpY2Muc3ZnIgogICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXc3IgogICAgIHBhZ2Vjb2xvcj0iIzUwNTA1MCIKICAgICBib3JkZXJjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuNTgyNzI3NCIKICAgICBpbmtzY2FwZTpjeD0iMzU3LjgwMDIzIgogICAgIGlua3NjYXBlOmN5PSI0ODIuMjE1MTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNTciCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc5OCIKICAgICB3aWR0aD0iMjAwbW0iIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiPgogICAgPGcKICAgICAgIGlkPSJnOTgiCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMjUpIj4KICAgICAgPGcKICAgICAgICAgaWQ9IkxheWVyXzQiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8bGluZQogICAgICAgICAgIGNsYXNzPSJzdDEiCiAgICAgICAgICAgeDE9IjQ3OC4zOTk5OSIKICAgICAgICAgICB5MT0iNzIwLjI5OTk5IgogICAgICAgICAgIHgyPSIzMTMuMjAwMDEiCiAgICAgICAgICAgeTI9IjcyMC4yOTk5OSIKICAgICAgICAgICBpZD0ibGluZTkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBjbGFzcz0ic3QxIgogICAgICAgICAgIGQ9Ik0gNDc4LjQsNzIwLjMiCiAgICAgICAgICAgaWQ9InBhdGgxMSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cG9seWxpbmUKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHBvaW50cz0iNzE3LjEsMjIzLjMgNzE3LjEsNzIwLjMgNDk3LjMsNzIwLjMgICIKICAgICAgICAgICBpZD0icG9seWxpbmUxMyIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICAgICAgZD0ibSA0OTguMzk4ODgsNzIwLjMgYyAwLC01LjYgLTQuNSwtMTAuMSAtMTAuMSwtMTAuMSAtNS42LDAgLTEwLjEsNC41IC0xMC4xLDEwLjEgaCAtMTYzLjggYyAwLC01LjYgLTQuNSwtMTAuMSAtMTAuMSwtMTAuMSAtNS42LDAgLTEwLjEsNC41IC0xMC4xLDEwLjEgLTY5Ljc1OTIsMCAtMTQ1LjY4NDE3LDAgLTIxNy41OTk5OTYsMCBWIDc5LjcgSCA3MTcuMDk4ODggdiAxMjAgMCBoIC0xNy4zIHYgMjQuOCBoIDE3LjMiCiAgICAgICAgICAgaWQ9InBhdGgxNSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLWxpbmVjYXA6c3F1YXJlO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjc2Njc2NjY2NjY2NjYyIgLz4KICAgICAgPC9nPgogICAgICA8ZwogICAgICAgICBpZD0iTGF5ZXJfMyIKICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8Y2lyY2xlCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICBjeD0iMzk2Ljc5OTk5IgogICAgICAgICAgIGN5PSI0MDAiCiAgICAgICAgICAgaWQ9ImNpcmNsZTE4IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgICByPSIzMjAuMjk5OTkiIC8+CiAgICAgIDwvZz4KICAgICAgPGcKICAgICAgICAgaWQ9IkxheWVyXzEiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8cG9seWxpbmUKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHBvaW50cz0iNTE0LjUsMTczLjUgMTcwLjIsMTczLjUgMTcwLjMsNjI2LjYgNjIzLjMsNjI2LjUgNjIzLjMsMjE1LjcgNTg0LjQsMTczLjQgNTU3LDE3My40IDU0OCwxODAuNiAgICA1MjYuNSwxODAuNyAgIgogICAgICAgICAgIGlkPSJwb2x5bGluZTIxIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbGluZWpvaW46YmV2ZWw7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICAgICAgZD0ibSA1MjYuNSwzMzEuOCBjIDAsNy42IC01LjQsMTMuNyAtMTIsMTMuNyBIIDIyNy43IGMgLTYuNiwwIC0xMiwtNi4xIC0xMiwtMTMuNyBWIDE4Ny4yIGMgMCwtNy42IDUuNCwtMTMuNyAxMiwtMTMuNyBoIDI4Ni44IGMgNi42LDAgMTIsNi4xIDEyLDEzLjcgeiIKICAgICAgICAgICBpZD0icGF0aDI3IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICBkPSJtIDUyNi43LDMzMy42IGMgMCw2LjYgLTUuNCwxMiAtMTIsMTIgSCAyOTYuOCBjIC02LjYsMCAtMTIsLTUuNCAtMTIsLTEyIFYgMTg1LjUgYyAwLC02LjYgNS40LC0xMiAxMiwtMTIgaCAyMTcuOSBjIDYuNiwwIDEyLDUuNCAxMiwxMiB6IgogICAgICAgICAgIGlkPSJwYXRoMjkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIGQ9Im0gNTc3LjksNjEzLjcgYyAwLDYuNiAtNS40LDEyIC0xMiwxMiBIIDIyNy43IGMgLTYuNiwwIC0xMiwtNS40IC0xMiwtMTIgViAzODEuMSBjIDAsLTYuNiA1LjQsLTEyIDEyLC0xMiBoIDMzOC4yIGMgNi42LDAgMTIsNS40IDEyLDEyIHoiCiAgICAgICAgICAgaWQ9InBhdGgzMSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjE3OS44OTk5OSIKICAgICAgICAgICB5PSI1OTAuMjAwMDEiCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICB3aWR0aD0iMjUuNzAwMDAxIgogICAgICAgICAgIGhlaWdodD0iMjMiCiAgICAgICAgICAgaWQ9InJlY3QzMyIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjU4Ny41OTk5OCIKICAgICAgICAgICB5PSI1OTAuMjAwMDEiCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICB3aWR0aD0iMjUuNzAwMDAxIgogICAgICAgICAgIGhlaWdodD0iMjMiCiAgICAgICAgICAgaWQ9InJlY3QzNSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjQzMy42MDAwMSIKICAgICAgICAgICB5PSIxOTMuNSIKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHdpZHRoPSI2NC45MDAwMDIiCiAgICAgICAgICAgaGVpZ2h0PSIxMzcuOCIKICAgICAgICAgICBpZD0icmVjdDM3IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICA8L2c+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjc0Ljk0MDEsNTQxLjU3MiBjIDAsMy41MjggMi43NzIsNi40MjYgNi4zLDYuNDI2IDMuNTI4LDAgNi40MjYsLTIuODk4IDYuNDI2LC02LjQyNiB2IC0zMC45OTYgaCAzMC44NyBjIDEwLjQ1OCwwIDE5LjE1MiwtOC42OTQgMTkuMTUyLC0xOS4xNTIgdiAtMjIuNjggYyAwLC0xMC4zMzIgLTguNjk0LC0xOS4wMjYgLTE5LjE1MiwtMTkuMDI2IGggLTQzLjU5NiB6IG0gMTIuNzI2LC00My43MjIgdiAtMzUuNDA2IGggMzAuODcgYyAzLjI3NiwwIDYuNDI2LDIuODk4IDYuNDI2LDYuMyB2IDIyLjY4IGMgMCwzLjUyOCAtMy4wMjQsNi40MjYgLTYuNDI2LDYuNDI2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1NS0yIgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMzY1Ljk5NDc5LDQ3OC44MjQgMjUuMzI2LDY1LjE0MiBjIDEuMDA4LDIuMzk0IDMuMjc2LDQuMDMyIDYuMDQ4LDQuMDMyIDIuNjQ2LDAgNC45MTQsLTEuNjM4IDUuOTIyLC00LjAzMiBsIDI1LjQ1MiwtNjUuMjY4IHYgLTIyLjY4IGMgMCwtMy40MDIgLTIuODk4LC02LjMgLTYuNDI2LC02LjMgLTMuNTI4LDAgLTYuMywyLjg5OCAtNi4zLDYuMyB2IDIwLjI4NiBsIC0xOC42NDgsNDcuNjI4IC0xOC42NDgsLTQ3LjYyOCB2IC0yMC4yODYgYyAwLC0zLjQwMiAtMi44OTgsLTYuMyAtNi40MjYsLTYuMyAtMy41MjgsMCAtNi4zLDIuODk4IC02LjMsNi4zIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1Ny04IgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNDU3LjA0OTQ3LDQ3OC44MjQgMjUuMzI2LDY1LjE0MiBjIDEuMDA4LDIuMzk0IDMuMjc2LDQuMDMyIDYuMDQ4LDQuMDMyIDIuNjQ2LDAgNC45MTQsLTEuNjM4IDUuOTIyLC00LjAzMiBsIDI1LjQ1MiwtNjUuMjY4IHYgLTIyLjY4IGMgMCwtMy40MDIgLTIuODk4LC02LjMgLTYuNDI2LC02LjMgLTMuNTI4LDAgLTYuMywyLjg5OCAtNi4zLDYuMyB2IDIwLjI4NiBsIC0xOC42NDgsNDcuNjI4IC0xOC42NDgsLTQ3LjYyOCB2IC0yMC4yODYgYyAwLC0zLjQwMiAtMi44OTgsLTYuMyAtNi40MjYsLTYuMyAtMy41MjgsMCAtNi4zLDIuODk4IC02LjMsNi4zIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1OS0xIgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICA8L2c+CiAgPC9nPgogIDxzdHlsZQogICAgIHR5cGU9InRleHQvY3NzIgogICAgIGlkPSJzdHlsZTIiPgoJLnN0MHtmaWxsOiNmZmZmZmY7fQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MntmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0M3tmaWxsOm5vbmU7fQoJLnN0NHtzdHJva2U6IzAwMDAwMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9Cgkuc3Q1e2ZvbnQtZmFtaWx5OidPQ1JBU3RkJzt9Cgkuc3Q2e2ZvbnQtc2l6ZToxMjZweDt9Cjwvc3R5bGU+Cjwvc3ZnPgo=">
|
|
<h1 style="margin: 0; flex: 1;"> Kurs Plakatgenerator:</h1>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col">
|
|
<label for="title">Title:</label><br>
|
|
<input type="text" id="title" name="title"><br>
|
|
</div>
|
|
<div class="col">
|
|
<label for="subtitle">Subtitle:</label><br>
|
|
<input type="text" id="subtitle" name="subtitle"><br>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col">
|
|
<label for="description">Description:</label><br>
|
|
<textarea id="description" name="description"></textarea><br>
|
|
</div>
|
|
|
|
<div style="margin-top: 2%;"><b>Image URL:</b></div>
|
|
<input type="file" id="imageFile" name="imageFile"><br>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col">
|
|
<label for="time">Time:</label>
|
|
<input type="time" id="time" name="time" step="60" value="18:15"><br>
|
|
</div>
|
|
|
|
<div class="col">
|
|
<label for="date">Date:</label>
|
|
<input type="date" id="date" name="date"><br>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col">
|
|
<label for="location">Location:</label>
|
|
<input type="text" id="location" name="location" value="B1"><br>
|
|
</div>
|
|
|
|
<div class="col">
|
|
<label for="varighet">Duration (hours):</label>
|
|
<input type="number" id="varighet" name="varighet" value="2"><br>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col">
|
|
<label for="language">Språk:</label>
|
|
<select id="language" name="language">
|
|
<option value="no" >Norwegian</option>
|
|
<option value="en" selected>English</option>
|
|
</select><br>
|
|
</div>
|
|
<div class="col">
|
|
<label for="paper_size">Paper Size:</label>
|
|
<select id="paper_size" name="paper_size">
|
|
<option value="A3" selected>A3</option>
|
|
<option value="A4">A4</option>
|
|
</select><br>
|
|
</div>
|
|
<div class="col">
|
|
<label for="ppi">PPI:</label>
|
|
<select id="ppi" name="ppi">
|
|
<option value="Auto" selected>Auto</option>
|
|
<option value="72">72 PPI</option>
|
|
<option value="96">96 PPI</option>
|
|
<option value="150">150 PPI</option>
|
|
<option value="300">300 PPI</option>
|
|
<option value="600">600 PPI</option>
|
|
</select><br>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" style="margin-top: 1em; margin-bottom: 2em; font-size: 0.5em; ">
|
|
<label for="enable_advanced">Enable Advanced Options:</label>
|
|
<input type="checkbox" id="enable_advanced" name="enable_advanced"><br>
|
|
</div>
|
|
|
|
<div id="advanced-options" class="col" style="width: 48.5%;">
|
|
<div style="margin-top: 1em; font-size: 1.5em;">Advanced options:</div>
|
|
<div class="row" style="width: 100%;">
|
|
<label style="width: 30%;" for="image_size">Image Size:</label>
|
|
<input style="width: 30%;" type="number" id="image_size" name="image_size" placeholder="25"><br>
|
|
<label style="width: 30%;" for="image_size">Image X:</label>
|
|
<input style="width: 30%;" type="number" id="image_x" name="image_y" placeholder="75"><br>
|
|
<label style="width: 30%;" for="image_size">Image Y:</label>
|
|
<input style="width: 30%;" type="number" id="image_y" name="image_y" placeholder="40"><br>
|
|
</div>
|
|
|
|
<div class="row" style="width: 100%;">
|
|
<label style="width: 30%;" for="heading_size">Heading Size:</label>
|
|
<input style="width: 30%;" type="number" id="heading_size" name="heading_size" placeholder="100"><br>
|
|
|
|
<label style="width: 30%;" for="subheading_size">Subheading Size:</label>
|
|
<input style="width: 30%;" type="number" id="subheading_size" name="subheading_size" placeholder="50"><br>
|
|
|
|
<label style="width: 30%;" for="heading_width">Heading Width:</label>
|
|
<input style="width: 30%;" type="number" id="heading_width" name="heading_width" placeholder="100"><br>
|
|
</div>
|
|
|
|
<div class="row" style="width: 100%;">
|
|
<label style="width: 30%;" for="text_size">Text Size:</label>
|
|
<input style="width: 30%;" type="number" id="text_size" name="text_size" placeholder="1.1" step="0.1"><br>
|
|
|
|
<label style="width: 30%;" for="text_font" >Text Font:</label>
|
|
<input style="width: 30%;" type="text" id="text_font" name="text_font" placeholder="OCR A Extended"><br>
|
|
|
|
<label style="width: 30%;" for="text_width">Text Width:</label>
|
|
<input style="width: 30%;" type="number" id="text_width" name="text_width" placeholder="40"><br>
|
|
</div>
|
|
|
|
<div class="row" style="width: 100%;">
|
|
<label style="width: 50%;" for="number_of_notes">Notes:</label>
|
|
<input style="width: 50%;" type="number" id="number_of_notes" name="number_of_notes" placeholder="0"><br>
|
|
<label style="width: 50%;" for="number_of_notes">Notes X:</label>
|
|
<input style="width: 50%;" type="number" id="notes_x" name="notes_x" placeholder="50"><br>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="row" style="width: 48.5%;">
|
|
<button type="button" onclick="generateSvg()">Generate SVG</button>
|
|
<button type="button" onclick="saveSvg()">Save SVG</button>
|
|
<button type="button" onclick="savePdf()">Save PDF</button>
|
|
</div>
|
|
</form>
|
|
<div class="container">
|
|
<svg id="svg"></svg>
|
|
<canvas id="canvas"></canvas>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/pdfkit@0.10.0/js/pdfkit.standalone.js"></script>
|
|
<script src="https://bundle.run/blob-stream@0.1.3"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/svg-to-pdfkit@0.1.8/source.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/canvg/3.0.9/umd.js"></script>
|
|
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.js"> </script> -->
|
|
<script>
|
|
|
|
window.onload = function() {
|
|
const checkbox = document.getElementById("enable_advanced");
|
|
const advancedOptions = document.getElementById("advanced-options");
|
|
|
|
if (checkbox.checked) {
|
|
advancedOptions.style.display = "block";
|
|
} else {
|
|
advancedOptions.style.display = "none";
|
|
}
|
|
|
|
checkbox.addEventListener("change", function() {
|
|
if (this.checked) {
|
|
advancedOptions.style.display = "block";
|
|
} else {
|
|
advancedOptions.style.display = "none";
|
|
}
|
|
});
|
|
|
|
const fontcustom = document.getElementById("text_font");
|
|
document.body.style.fontFamily = '"'+fontcustom.value + '", "OCR A Extended", "Comic Sans MS", "Papyrus", "Brush Script MT", "Chalkduster", sans-serif';
|
|
fontcustom.addEventListener("change", function() {
|
|
document.body.style.fontFamily = '"'+this.value + '", "OCR A Extended", "Comic Sans MS", "Papyrus", "Brush Script MT", "Chalkduster", sans-serif';
|
|
});
|
|
|
|
}
|
|
|
|
function savePdf() {
|
|
const SVGElement = document.getElementById("svg");
|
|
const svg = new XMLSerializer().serializeToString(SVGElement);
|
|
const css = document.querySelector("style").innerText;
|
|
const newWindow = window.open("", "SVG Popup", "resizable,scrollbars,width=800,height=600");
|
|
newWindow.document.write(`<style>${css}</style><svg width="100%" height="100%" viewBox="0 0 100% 100%">${svg}</svg>`);
|
|
newWindow.document.close();
|
|
newWindow.focus();
|
|
newWindow.print();
|
|
newWindow.close();
|
|
}
|
|
|
|
|
|
|
|
|
|
function savePdf_old() {
|
|
const SVGElement = document.getElementById("svg");
|
|
const svg = new XMLSerializer().serializeToString(SVGElement);
|
|
const doc = new PDFDocument({ compress: false });
|
|
const width = doc.page.width;
|
|
const height = doc.page.height;
|
|
|
|
// Register font
|
|
doc.registerFont('MyFont', 'Roboto-Regular.ttf');
|
|
|
|
|
|
// Embed images
|
|
const imgData = canvas.toDataURL();
|
|
const img = doc.openImage(imgData);
|
|
//embed logo from innside svg with href logo_black_thicc.svg
|
|
const img2 = doc.openImage("logo_black_thicc.svg");
|
|
|
|
// Scale svg to fit page
|
|
const scalew = width / SVGElement.width.baseVal.value
|
|
const scaleh = height / SVGElement.height.baseVal.value
|
|
doc.scale(scalew, scaleh);
|
|
|
|
|
|
SVGtoPDF(doc, svg, 0, 0, {
|
|
assumePt: true,
|
|
fontCallback: (family, bold, italic, fontOptions) => 'MyFont',
|
|
useCSS: true,
|
|
// imageCallback: (url, x, y, width, height) => img,
|
|
colorCallback: (color) => color
|
|
});
|
|
|
|
const stream = doc.pipe(blobStream());
|
|
stream.on("finish", () => {
|
|
const blob = stream.toBlob("application/pdf");
|
|
const link = document.createElement("a");
|
|
link.href = URL.createObjectURL(blob);
|
|
link.download = "pvv-plakat-" + document.getElementById("date").value + ".pdf";
|
|
link.click();
|
|
});
|
|
doc.end();
|
|
}
|
|
|
|
|
|
function saveSvg() {
|
|
const svg = document.getElementById("svg");
|
|
const svgData = new XMLSerializer().serializeToString(svg);
|
|
|
|
// Inject CSS into the SVG
|
|
// const style = document.querySelector("style");
|
|
// svg.insertBefore(style, svg.firstChild);
|
|
|
|
const blob = new Blob([svgData], { type: "image/svg+xml;charset=utf-8" });
|
|
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
const link = document.createElement("a");
|
|
link.href = url;
|
|
link.download = "pvv-plakat-" + document.getElementById("title").value + "-" + document.getElementById("date").value + ".svg";
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
document.body.removeChild(link);
|
|
}
|
|
|
|
|
|
function generateSvg() {
|
|
const title = document.getElementById("title").value;
|
|
const subtitle = document.getElementById("subtitle").value;
|
|
const description = document.getElementById("description").value;
|
|
const imageUrl = document.getElementById("imageFile").files[0];
|
|
const time = document.getElementById("time").value;
|
|
const date = document.getElementById("date").value;
|
|
const location = document.getElementById("location").value;
|
|
const varighet = document.getElementById("varighet").value;
|
|
const language = document.getElementById("language").value;
|
|
|
|
|
|
// Advanced options
|
|
var imageSize = 0;
|
|
var imageX = 0;
|
|
var imageY = 0;
|
|
var headingSize = 0;
|
|
var subheadingSize = 0;
|
|
var headingWidth = 0;
|
|
var textSize = 0;
|
|
var textFont = "";
|
|
var textWidth = 0;
|
|
var numberOfNotes = 0;
|
|
var notesX = 0;
|
|
|
|
enabledAdvanced = document.getElementById("enable_advanced").checked;
|
|
if (enabledAdvanced) {
|
|
console.log("Advanced options enabled");
|
|
imageSize = Number(document.getElementById("image_size").value);
|
|
imageX = Number(document.getElementById("image_x").value);
|
|
imageY = Number(document.getElementById("image_y").value);
|
|
headingSize = Number(document.getElementById("heading_size").value);
|
|
subheadingSize = Number(document.getElementById("subheading_size").value);
|
|
headingWidth = Number(document.getElementById("heading_width").value);
|
|
textSize = Number(document.getElementById("text_size").value);
|
|
textWidth = Number(document.getElementById("text_width").value);
|
|
textFont = document.getElementById("text_font").value;
|
|
numberOfNotes = Number(document.getElementById("number_of_notes").value);
|
|
notesX = Number(document.getElementById("notes_x").value);
|
|
}
|
|
|
|
//get size and ppi and calculate width and height
|
|
const paper_size = document.getElementById("paper_size").value;
|
|
const ppi = document.getElementById("ppi").value;
|
|
let width = 0;
|
|
let height = 0;
|
|
|
|
//calculate width and height
|
|
if (ppi != "Auto") {
|
|
if (paper_size == "A4") {
|
|
width = 210 * ppi / 25.4;
|
|
height = 297 * ppi / 25.4;
|
|
} else if (paper_size == "A3") {
|
|
width = 297 * ppi / 25.4;
|
|
height = 420 * ppi / 25.4;
|
|
}
|
|
}
|
|
//set width and height to auto
|
|
//set width and height to auto
|
|
else {
|
|
const screenWidth = screen.width || window.innerWidth || document.documentElement.clientWidth;
|
|
const screenHeight = screen.height || window.innerHeight || document.documentElement.clientHeight;
|
|
const screenPpi = Math.sqrt(screenWidth * screenWidth + screenHeight * screenHeight) / Math.sqrt(screen.width * screen.width + screen.height * screen.height) * 96;
|
|
|
|
if (paper_size == "A4") {
|
|
width = 210 * screenPpi / 25.4;
|
|
height = 297 * screenPpi / 25.4;
|
|
} else if (paper_size == "A3") {
|
|
width = 297 * screenPpi / 25.4;
|
|
height = 420 * screenPpi / 25.4;
|
|
}
|
|
}
|
|
|
|
width = parseInt(width);
|
|
height = parseInt(height);
|
|
|
|
|
|
|
|
const reader = new FileReader();
|
|
if (imageUrl) {
|
|
reader.onload = function(event) {
|
|
const imgData = event.target.result;
|
|
genSvg("svg", title, subtitle, description, imgData, time, date, location, varighet, width, height, language, imageSize, imageX, imageY, headingSize, subheadingSize, headingWidth, textSize, textFont, textWidth, numberOfNotes, notesX);
|
|
};
|
|
reader.readAsDataURL(imageUrl);
|
|
} else {
|
|
const defaultSvg = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMjAwbW0iCiAgIGhlaWdodD0iMjAwbW0iCiAgIHZpZXdCb3g9IjAgMCAyMDAgMjAwIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc1IgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEuMiAoYjhlMjViZTgzMywgMjAyMi0wMi0wNSkiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImxvZ29fYmxhY2tfdGhpY2Muc3ZnIgogICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXc3IgogICAgIHBhZ2Vjb2xvcj0iIzUwNTA1MCIKICAgICBib3JkZXJjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuNTgyNzI3NCIKICAgICBpbmtzY2FwZTpjeD0iMzU3LjgwMDIzIgogICAgIGlua3NjYXBlOmN5PSI0ODIuMjE1MTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNTciCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc5OCIKICAgICB3aWR0aD0iMjAwbW0iIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiPgogICAgPGcKICAgICAgIGlkPSJnOTgiCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMjUpIj4KICAgICAgPGcKICAgICAgICAgaWQ9IkxheWVyXzQiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8bGluZQogICAgICAgICAgIGNsYXNzPSJzdDEiCiAgICAgICAgICAgeDE9IjQ3OC4zOTk5OSIKICAgICAgICAgICB5MT0iNzIwLjI5OTk5IgogICAgICAgICAgIHgyPSIzMTMuMjAwMDEiCiAgICAgICAgICAgeTI9IjcyMC4yOTk5OSIKICAgICAgICAgICBpZD0ibGluZTkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBjbGFzcz0ic3QxIgogICAgICAgICAgIGQ9Ik0gNDc4LjQsNzIwLjMiCiAgICAgICAgICAgaWQ9InBhdGgxMSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cG9seWxpbmUKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHBvaW50cz0iNzE3LjEsMjIzLjMgNzE3LjEsNzIwLjMgNDk3LjMsNzIwLjMgICIKICAgICAgICAgICBpZD0icG9seWxpbmUxMyIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICAgICAgZD0ibSA0OTguMzk4ODgsNzIwLjMgYyAwLC01LjYgLTQuNSwtMTAuMSAtMTAuMSwtMTAuMSAtNS42LDAgLTEwLjEsNC41IC0xMC4xLDEwLjEgaCAtMTYzLjggYyAwLC01LjYgLTQuNSwtMTAuMSAtMTAuMSwtMTAuMSAtNS42LDAgLTEwLjEsNC41IC0xMC4xLDEwLjEgLTY5Ljc1OTIsMCAtMTQ1LjY4NDE3LDAgLTIxNy41OTk5OTYsMCBWIDc5LjcgSCA3MTcuMDk4ODggdiAxMjAgMCBoIC0xNy4zIHYgMjQuOCBoIDE3LjMiCiAgICAgICAgICAgaWQ9InBhdGgxNSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLWxpbmVjYXA6c3F1YXJlO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjc2Njc2NjY2NjY2NjYyIgLz4KICAgICAgPC9nPgogICAgICA8ZwogICAgICAgICBpZD0iTGF5ZXJfMyIKICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8Y2lyY2xlCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICBjeD0iMzk2Ljc5OTk5IgogICAgICAgICAgIGN5PSI0MDAiCiAgICAgICAgICAgaWQ9ImNpcmNsZTE4IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgICByPSIzMjAuMjk5OTkiIC8+CiAgICAgIDwvZz4KICAgICAgPGcKICAgICAgICAgaWQ9IkxheWVyXzEiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8cG9seWxpbmUKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHBvaW50cz0iNTE0LjUsMTczLjUgMTcwLjIsMTczLjUgMTcwLjMsNjI2LjYgNjIzLjMsNjI2LjUgNjIzLjMsMjE1LjcgNTg0LjQsMTczLjQgNTU3LDE3My40IDU0OCwxODAuNiAgICA1MjYuNSwxODAuNyAgIgogICAgICAgICAgIGlkPSJwb2x5bGluZTIxIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbGluZWpvaW46YmV2ZWw7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICAgICAgZD0ibSA1MjYuNSwzMzEuOCBjIDAsNy42IC01LjQsMTMuNyAtMTIsMTMuNyBIIDIyNy43IGMgLTYuNiwwIC0xMiwtNi4xIC0xMiwtMTMuNyBWIDE4Ny4yIGMgMCwtNy42IDUuNCwtMTMuNyAxMiwtMTMuNyBoIDI4Ni44IGMgNi42LDAgMTIsNi4xIDEyLDEzLjcgeiIKICAgICAgICAgICBpZD0icGF0aDI3IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICBkPSJtIDUyNi43LDMzMy42IGMgMCw2LjYgLTUuNCwxMiAtMTIsMTIgSCAyOTYuOCBjIC02LjYsMCAtMTIsLTUuNCAtMTIsLTEyIFYgMTg1LjUgYyAwLC02LjYgNS40LC0xMiAxMiwtMTIgaCAyMTcuOSBjIDYuNiwwIDEyLDUuNCAxMiwxMiB6IgogICAgICAgICAgIGlkPSJwYXRoMjkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIGQ9Im0gNTc3LjksNjEzLjcgYyAwLDYuNiAtNS40LDEyIC0xMiwxMiBIIDIyNy43IGMgLTYuNiwwIC0xMiwtNS40IC0xMiwtMTIgViAzODEuMSBjIDAsLTYuNiA1LjQsLTEyIDEyLC0xMiBoIDMzOC4yIGMgNi42LDAgMTIsNS40IDEyLDEyIHoiCiAgICAgICAgICAgaWQ9InBhdGgzMSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjE3OS44OTk5OSIKICAgICAgICAgICB5PSI1OTAuMjAwMDEiCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICB3aWR0aD0iMjUuNzAwMDAxIgogICAgICAgICAgIGhlaWdodD0iMjMiCiAgICAgICAgICAgaWQ9InJlY3QzMyIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjU4Ny41OTk5OCIKICAgICAgICAgICB5PSI1OTAuMjAwMDEiCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICB3aWR0aD0iMjUuNzAwMDAxIgogICAgICAgICAgIGhlaWdodD0iMjMiCiAgICAgICAgICAgaWQ9InJlY3QzNSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjQzMy42MDAwMSIKICAgICAgICAgICB5PSIxOTMuNSIKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHdpZHRoPSI2NC45MDAwMDIiCiAgICAgICAgICAgaGVpZ2h0PSIxMzcuOCIKICAgICAgICAgICBpZD0icmVjdDM3IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICA8L2c+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjc0Ljk0MDEsNTQxLjU3MiBjIDAsMy41MjggMi43NzIsNi40MjYgNi4zLDYuNDI2IDMuNTI4LDAgNi40MjYsLTIuODk4IDYuNDI2LC02LjQyNiB2IC0zMC45OTYgaCAzMC44NyBjIDEwLjQ1OCwwIDE5LjE1MiwtOC42OTQgMTkuMTUyLC0xOS4xNTIgdiAtMjIuNjggYyAwLC0xMC4zMzIgLTguNjk0LC0xOS4wMjYgLTE5LjE1MiwtMTkuMDI2IGggLTQzLjU5NiB6IG0gMTIuNzI2LC00My43MjIgdiAtMzUuNDA2IGggMzAuODcgYyAzLjI3NiwwIDYuNDI2LDIuODk4IDYuNDI2LDYuMyB2IDIyLjY4IGMgMCwzLjUyOCAtMy4wMjQsNi40MjYgLTYuNDI2LDYuNDI2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1NS0yIgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMzY1Ljk5NDc5LDQ3OC44MjQgMjUuMzI2LDY1LjE0MiBjIDEuMDA4LDIuMzk0IDMuMjc2LDQuMDMyIDYuMDQ4LDQuMDMyIDIuNjQ2LDAgNC45MTQsLTEuNjM4IDUuOTIyLC00LjAzMiBsIDI1LjQ1MiwtNjUuMjY4IHYgLTIyLjY4IGMgMCwtMy40MDIgLTIuODk4LC02LjMgLTYuNDI2LC02LjMgLTMuNTI4LDAgLTYuMywyLjg5OCAtNi4zLDYuMyB2IDIwLjI4NiBsIC0xOC42NDgsNDcuNjI4IC0xOC42NDgsLTQ3LjYyOCB2IC0yMC4yODYgYyAwLC0zLjQwMiAtMi44OTgsLTYuMyAtNi40MjYsLTYuMyAtMy41MjgsMCAtNi4zLDIuODk4IC02LjMsNi4zIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1Ny04IgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNDU3LjA0OTQ3LDQ3OC44MjQgMjUuMzI2LDY1LjE0MiBjIDEuMDA4LDIuMzk0IDMuMjc2LDQuMDMyIDYuMDQ4LDQuMDMyIDIuNjQ2LDAgNC45MTQsLTEuNjM4IDUuOTIyLC00LjAzMiBsIDI1LjQ1MiwtNjUuMjY4IHYgLTIyLjY4IGMgMCwtMy40MDIgLTIuODk4LC02LjMgLTYuNDI2LC02LjMgLTMuNTI4LDAgLTYuMywyLjg5OCAtNi4zLDYuMyB2IDIwLjI4NiBsIC0xOC42NDgsNDcuNjI4IC0xOC42NDgsLTQ3LjYyOCB2IC0yMC4yODYgYyAwLC0zLjQwMiAtMi44OTgsLTYuMyAtNi40MjYsLTYuMyAtMy41MjgsMCAtNi4zLDIuODk4IC02LjMsNi4zIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1OS0xIgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICA8L2c+CiAgPC9nPgogIDxzdHlsZQogICAgIHR5cGU9InRleHQvY3NzIgogICAgIGlkPSJzdHlsZTIiPgoJLnN0MHtmaWxsOiNmZmZmZmY7fQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MntmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0M3tmaWxsOm5vbmU7fQoJLnN0NHtzdHJva2U6IzAwMDAwMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9Cgkuc3Q1e2ZvbnQtZmFtaWx5OidPQ1JBU3RkJzt9Cgkuc3Q2e2ZvbnQtc2l6ZToxMjZweDt9Cjwvc3R5bGU+Cjwvc3ZnPgo='
|
|
genSvg("svg", title, subtitle, description, defaultSvg, time, date, location, varighet, width, height, language, imageSize, imageX, imageY, headingSize, subheadingSize, headingWidth, textSize, textFont, textWidth, numberOfNotes, notesX);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function genSvg(element, title_inp, subtitle_inp, description_inp, image_data_inp, time_inp, date_inp, location_inp, varighet_inp, width_inp, height_inp, language_inp, imageSize, imageX, imageY, headingSize, subheadingSize, headingWidth, textSize, textFont, textWidth, numberOfNotes, notesX) {
|
|
console.log("genSvg");
|
|
console.log("title: " + title_inp + ", subtitle: " + subtitle_inp + ", description: " + description_inp + ", time: " + time_inp + ", date: " + date_inp + ", location: " + location_inp + ", varighet: " + varighet_inp + ", width: " + width_inp + ", height: " + height_inp + ", language: " + language_inp + ", imageSize: " + imageSize + ", headingSize: " + headingSize + ", subheadingSize: " + subheadingSize + ", headingWidth: " + headingWidth + ", textSize: " + textSize + ", textFont: " + textFont + ", textWidth: " + textWidth + ", numberOfNotes: " + numberOfNotes);
|
|
|
|
|
|
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
//A4 96ppi
|
|
// svg.setAttribute("width", "794");
|
|
// svg.setAttribute("height", "1123");
|
|
svg.setAttribute("width", width_inp);
|
|
svg.setAttribute("height", height_inp);
|
|
|
|
//get width and height of svg
|
|
const svgWidth = parseInt(svg.getAttribute("width"));
|
|
const svgHeight = parseInt(svg.getAttribute("height"));
|
|
|
|
// calculate a font size scaling
|
|
var font_size_scaling_factor = parseInt(Math.min(svgWidth / 100, svgHeight / 100))
|
|
if (textSize != 0) {
|
|
var font_size_scaling_factor = parseInt(font_size_scaling_factor * textSize)
|
|
console.log("textSize: " + font_size_scaling_factor)
|
|
}
|
|
console.log(font_size_scaling_factor)
|
|
|
|
|
|
const defs = document.createElementNS("http://www.w3.org/2000/svg", "defs");
|
|
const filter = document.createElementNS("http://www.w3.org/2000/svg", "filter");
|
|
filter.setAttribute("id", "shadow");
|
|
filter.setAttribute("x", "0%");
|
|
filter.setAttribute("y", "0%");
|
|
filter.setAttribute("width", "140%");
|
|
filter.setAttribute("height", "140%");
|
|
|
|
const feOffset = document.createElementNS("http://www.w3.org/2000/svg", "feOffset");
|
|
feOffset.setAttribute("result", "offOut");
|
|
feOffset.setAttribute("in", "SourceAlpha");
|
|
feOffset.setAttribute("dx", "5");
|
|
feOffset.setAttribute("dy", "5");
|
|
const feGaussianBlur = document.createElementNS("http://www.w3.org/2000/svg", "feGaussianBlur");
|
|
feGaussianBlur.setAttribute("result", "blurOut");
|
|
feGaussianBlur.setAttribute("in", "offOut");
|
|
feGaussianBlur.setAttribute("stdDeviation", "3");
|
|
const feBlend = document.createElementNS("http://www.w3.org/2000/svg", "feBlend");
|
|
feBlend.setAttribute("in", "SourceGraphic");
|
|
feBlend.setAttribute("in2", "blurOut");
|
|
feBlend.setAttribute("mode", "normal");
|
|
filter.appendChild(feOffset);
|
|
filter.appendChild(feGaussianBlur);
|
|
filter.appendChild(feBlend);
|
|
defs.appendChild(filter);
|
|
svg.appendChild(defs);
|
|
|
|
const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
rect.setAttribute("width", "100%");
|
|
rect.setAttribute("height", "100%");
|
|
rect.setAttribute("fill", "#283681");
|
|
svg.appendChild(rect);
|
|
|
|
const pathScale = 1.7;
|
|
const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
const pathString = "M 0 0 H " + parseInt(0.8 * svgWidth * pathScale) + " C " + parseInt(0.9 * svgWidth * pathScale) + " 0 " + parseInt(0.9 * svgWidth * pathScale) + " " + parseInt(0.2 * svgHeight * pathScale) + " " + parseInt(0.8 * svgWidth * pathScale) + " " + parseInt(0.2 * svgHeight * pathScale) + " H " + parseInt(0.2 * svgWidth * pathScale) + " Q 0 " + parseInt(0.2 * svgHeight * pathScale) + " 0 " + parseInt(0.4 * svgHeight * pathScale) + " Z";
|
|
console.log(pathString);
|
|
path.setAttribute("d", pathString);
|
|
path.setAttribute("fill", "#fff");
|
|
path.setAttribute("opacity", "2");
|
|
path.setAttribute("filter", "url(#shadow)");
|
|
path.setAttribute("transform", "scale(0.6)");
|
|
svg.appendChild(path);
|
|
|
|
//heading
|
|
const title = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
title.setAttribute("x", "45%");
|
|
if (headingWidth != 0){
|
|
console.log("headingWidth: " + headingWidth);
|
|
title.setAttribute("x", headingWidth/2 + "%");
|
|
}
|
|
title.setAttribute("y", "9%");
|
|
title.setAttribute("dominant-baseline", "middle");
|
|
title.setAttribute("text-anchor", "middle");
|
|
title.setAttribute("font-size", font_size_scaling_factor*10);
|
|
if (headingSize != 0){
|
|
console.log("headingSize: " + headingSize);
|
|
title.setAttribute("font-size", headingSize);
|
|
}
|
|
title.setAttribute("font-weight", "normal");
|
|
title.setAttribute("lengthAdjust", "spacing");
|
|
// title.setAttribute("textLength", "65%");
|
|
title.setAttribute("style", "max-width: 300px"); // Add max-width property
|
|
if (headingWidth != 0){
|
|
console.log("headingWidth: " + headingWidth);
|
|
title.setAttribute("style", "max-width: " + headingWidth + "px"); // Add max-width property
|
|
}
|
|
title.textContent = "{title}";
|
|
svg.appendChild(title);
|
|
|
|
const subtitle = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
subtitle.setAttribute("x", "45%");
|
|
if (headingWidth != 0){
|
|
console.log("headingWidth: " + headingWidth);
|
|
subtitle.setAttribute("x", headingWidth/2 + "%");
|
|
}
|
|
subtitle.setAttribute("y", "15%");
|
|
subtitle.setAttribute("dominant-baseline", "middle");
|
|
subtitle.setAttribute("text-anchor", "middle");
|
|
subtitle.setAttribute("font-size", font_size_scaling_factor*4);
|
|
if (subheadingSize != 0){
|
|
console.log("subheadingSize: " + subheadingSize);
|
|
subtitle.setAttribute("font-size", subheadingSize);
|
|
}
|
|
subtitle.setAttribute("font-weight", "normal");
|
|
subtitle.setAttribute("lengthAdjust", "spacing");
|
|
// subtitle.setAttribute("textLength", "65%");
|
|
subtitle.setAttribute("style", "max-width: 300px"); // Add max-width property
|
|
if (headingWidth != 0){
|
|
console.log("headingWidth: " + headingWidth);
|
|
//set the width of the heading to headingWidth% of the svg width
|
|
subtitle.setAttribute("style", "max-width: " + headingWidth + "px"); // Add max-width property
|
|
}
|
|
subtitle.textContent = "{subtitle}";
|
|
svg.appendChild(subtitle);
|
|
|
|
// const descriptionTitle = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
// descriptionTitle.setAttribute("x", "10%");
|
|
// descriptionTitle.setAttribute("y", "30%");
|
|
// descriptionTitle.setAttribute("dominant-baseline", "middle");
|
|
// descriptionTitle.setAttribute("text-anchor", "left");
|
|
// descriptionTitle.setAttribute("font-size", "14");
|
|
// descriptionTitle.setAttribute("font-weight", "bold");
|
|
// descriptionTitle.setAttribute("fill", "#fff");
|
|
// descriptionTitle.textContent = "{descriptionTitle}";
|
|
// svg.appendChild(descriptionTitle);
|
|
|
|
|
|
const descriptionText = description_inp;
|
|
const description = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
description.setAttribute("x", "10%");
|
|
description.setAttribute("y", "26%");
|
|
description.setAttribute("dominant-baseline", "middle");
|
|
description.setAttribute("text-anchor", "left");
|
|
description.setAttribute("font-size", font_size_scaling_factor * 3);
|
|
description.setAttribute("fill", "#fff");
|
|
|
|
const lines = descriptionText.split("\n");
|
|
var maxChars = 40;
|
|
if (textWidth != 0){
|
|
console.log("textWidth: " + textWidth);
|
|
maxChars = textWidth;
|
|
}
|
|
const maxLines = 16;
|
|
for (let i = 0; i < Math.min(lines.length, maxLines); i++) {
|
|
|
|
const words = lines[i].split(" ");
|
|
let line = "";
|
|
for (let j = 0; j < words.length; j++) {
|
|
const testLine = line + words[j] + " ";
|
|
if (testLine.length > maxChars) {
|
|
const tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan.setAttribute("x", "10%");
|
|
tspan.setAttribute("dy", "1.2em");
|
|
tspan.textContent = line;
|
|
description.appendChild(tspan);
|
|
line = words[j] + " ";
|
|
} else {
|
|
line = testLine;
|
|
}
|
|
}
|
|
const tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan.setAttribute("x", "10%");
|
|
tspan.setAttribute("dy", "1.2em");
|
|
tspan.textContent = line;
|
|
description.appendChild(tspan);
|
|
}
|
|
if (description.childNodes.length > maxLines){
|
|
alert("Too many lines in description. \n Max lines: " + maxLines + ". Lines in description: " + description.childNodes.length + ".");
|
|
}
|
|
svg.appendChild(description);
|
|
|
|
|
|
const line = document.createElementNS("http://www.w3.org/2000/svg", "line");
|
|
line.setAttribute("x1", "20%");
|
|
line.setAttribute("y1", "90%");
|
|
line.setAttribute("x2", "80%");
|
|
line.setAttribute("y2", "55%");
|
|
line.setAttribute("stroke", "#fff");
|
|
line.setAttribute("stroke-width", "0.7%");
|
|
svg.appendChild(line);
|
|
|
|
const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
|
circle.setAttribute("cx", "87.5%");
|
|
circle.setAttribute("cy", "52.5%");
|
|
circle.setAttribute("r", "15%");
|
|
circle.setAttribute("fill", "#fff");
|
|
svg.appendChild(circle);
|
|
|
|
const image = document.createElementNS("http://www.w3.org/2000/svg", "image");
|
|
image.setAttribute("x", "74%");
|
|
if (imageX != 0){
|
|
console.log("imageX: " + imageX);
|
|
//set the image x position to imageX% of the svg width
|
|
image.setAttribute("x", imageX + "%");
|
|
}
|
|
image.setAttribute("y", "39.5%");
|
|
if (imageY != 0){
|
|
console.log("imageY: " + imageY);
|
|
//set the image y position to imageY% of the svg height
|
|
image.setAttribute("y", imageY + "%");
|
|
}
|
|
|
|
image.setAttribute("width", "25%");
|
|
image.setAttribute("height", "25%");
|
|
if (imageSize != 0){
|
|
console.log("imageSize: " + imageSize);
|
|
//set the image size to imageSize% of the svg width
|
|
image.setAttribute("width", imageSize + "%");
|
|
image.setAttribute("height", imageSize + "%");
|
|
}
|
|
|
|
image.setAttributeNS("http://www.w3.org/1999/xlink", "href", image_data_inp);
|
|
svg.appendChild(image);
|
|
|
|
const rect2 = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
rect2.setAttribute("x", "0");
|
|
rect2.setAttribute("y", "75%");
|
|
rect2.setAttribute("width", "100%");
|
|
rect2.setAttribute("height", "10%");
|
|
rect2.setAttribute("fill", "#fff");
|
|
rect2.setAttribute("filter", "url(#shadow)");
|
|
svg.appendChild(rect2);
|
|
|
|
|
|
const text = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
text.setAttribute("x", "50%");
|
|
text.setAttribute("y", "78%");
|
|
// text.setAttribute("textLength", "85%");
|
|
text.setAttribute("dominant-baseline", "middle");
|
|
text.setAttribute("text-anchor", "middle");
|
|
text.setAttribute("font-size", font_size_scaling_factor*3);
|
|
text.setAttribute("fill", "#323232");
|
|
text.setAttribute("font-weight", "bold");
|
|
console.log(language_inp + " language " + language_inp == "no");
|
|
var tspan1;
|
|
var tspan2;
|
|
var tspan3;
|
|
var tspan4;
|
|
var tspan5;
|
|
var tspan6;
|
|
|
|
if (language_inp == "no"){
|
|
tspan1 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan1.setAttribute("font-weight", "normal");
|
|
tspan1.textContent = "Tid:";
|
|
tspan2 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan2.setAttribute("font-weight", "bold");
|
|
tspan2.textContent = "{time}";
|
|
|
|
//custom postit notes under the date
|
|
//custom postit notes under the date
|
|
if (numberOfNotes != 0){
|
|
const rect3 = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
rect3.setAttribute("x", notesX + "%");
|
|
rect3.setAttribute("y", "76%");
|
|
rect3.setAttribute("width", "17%");
|
|
rect3.setAttribute("height", "3%");
|
|
rect3.setAttribute("fill", "#FFFF00");
|
|
rect3.setAttribute("filter", "url(#shadow)");
|
|
svg.appendChild(rect3);
|
|
}
|
|
|
|
tspan3 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan3.setAttribute("font-weight", "normal");
|
|
tspan3.textContent = " Dato:";
|
|
tspan4 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan4.setAttribute("font-weight", "bold");
|
|
tspan4.textContent = "{date}";
|
|
tspan5 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan5.setAttribute("font-weight", "normal");
|
|
tspan5.textContent = " Sted:";
|
|
tspan6 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan6.setAttribute("font-weight", "bold");
|
|
tspan6.textContent = "{location}";
|
|
} else if (language_inp == "en"){
|
|
|
|
tspan1 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan1.setAttribute("font-weight", "normal");
|
|
tspan1.textContent = "Time:";
|
|
tspan2 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan2.setAttribute("font-weight", "bold");
|
|
tspan2.textContent = "{time}";
|
|
|
|
//custom postit notes under the date
|
|
if (numberOfNotes != 0){
|
|
const rect3 = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
rect3.setAttribute("x", notesX + "%");
|
|
rect3.setAttribute("y", "76%");
|
|
rect3.setAttribute("width", "17%");
|
|
rect3.setAttribute("height", "3%");
|
|
rect3.setAttribute("fill", "#FFFF00");
|
|
rect3.setAttribute("filter", "url(#shadow)");
|
|
svg.appendChild(rect3);
|
|
}
|
|
|
|
tspan3 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan3.setAttribute("font-weight", "normal");
|
|
tspan3.textContent = " Date:";
|
|
tspan4 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan4.setAttribute("font-weight", "bold");
|
|
tspan4.textContent = "{date}";
|
|
tspan5 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan5.setAttribute("font-weight", "normal");
|
|
tspan5.textContent = " Location:";
|
|
tspan6 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan6.setAttribute("font-weight", "bold");
|
|
tspan6.textContent = "{location}";
|
|
|
|
}
|
|
|
|
text.appendChild(tspan1);
|
|
text.appendChild(tspan2);
|
|
text.appendChild(tspan3);
|
|
text.appendChild(tspan4);
|
|
text.appendChild(tspan5);
|
|
text.appendChild(tspan6);
|
|
// text.setAttribute("textLength", "70%");
|
|
svg.appendChild(text);
|
|
|
|
const text2 = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
text2.setAttribute("x", "50%");
|
|
text2.setAttribute("y", "81%");
|
|
// text2.setAttribute("textLength", "70%");
|
|
text2.setAttribute("dominant-baseline", "middle");
|
|
text2.setAttribute("text-anchor", "middle");
|
|
text2.setAttribute("font-size", font_size_scaling_factor*2);
|
|
text2.setAttribute("fill", "#424242");
|
|
|
|
var tspan7;
|
|
var tspan8;
|
|
|
|
if (language_inp == "no"){
|
|
tspan7 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan7.setAttribute("font-weight", "bold");
|
|
tspan7.textContent = "gratis";
|
|
tspan8 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan8.setAttribute("font-weight", "bold");
|
|
tspan8.textContent = "alle";
|
|
text2.textContent = "Kurset er ";
|
|
text2.appendChild(tspan7);
|
|
text2.textContent += " og åpent for ";
|
|
text2.appendChild(tspan8);
|
|
text2.textContent += ". Ingen påmelding nødvendig.";
|
|
} else if (language_inp == "en"){
|
|
tspan7 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan7.setAttribute("font-weight", "bold");
|
|
tspan7.textContent = " free ";
|
|
tspan8 = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
|
tspan8.setAttribute("font-weight", "bold");
|
|
tspan8.textContent = "everyone";
|
|
text2.textContent = "The course is ";
|
|
text2.appendChild(tspan7);
|
|
text2.textContent += " and open for ";
|
|
text2.appendChild(tspan8);
|
|
text2.textContent += ". No registration required. ";
|
|
}
|
|
svg.appendChild(text2);
|
|
|
|
const text3 = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
text3.setAttribute("x", "50%");
|
|
text3.setAttribute("y", "83.5%");
|
|
// text3.setAttribute("textLength", "35%");
|
|
text3.setAttribute("dominant-baseline", "middle");
|
|
text3.setAttribute("text-anchor", "middle");
|
|
text3.setAttribute("font-size", font_size_scaling_factor*2);
|
|
text3.setAttribute("fill", "#424242");
|
|
if (language_inp == "no"){
|
|
text3.textContent = "Kurset varer i ca.{varighet} timer";
|
|
} else if (language_inp == "en"){
|
|
text3.textContent = "The course lasts for about {varighet} hours";
|
|
}
|
|
svg.appendChild(text3);
|
|
|
|
|
|
const circle2 = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
|
circle2.setAttribute("cx", "18%");
|
|
circle2.setAttribute("cy", "92%");
|
|
circle2.setAttribute("r", "6.5%");
|
|
circle2.setAttribute("fill", "#fff");
|
|
svg.appendChild(circle2);
|
|
|
|
const image2 = document.createElementNS("http://www.w3.org/2000/svg", "image");
|
|
|
|
const canvas = document.createElement("canvas");
|
|
const ctx = canvas.getContext("2d");
|
|
const img = document.createElement("img");
|
|
img.innerHTML = '<img id="logo_top" src="./logo_black_thicc.svg" width="250" heigth="250" style="width: 4em; height: 4%; filter: invert(1);" crossOrigin="Anonymous">'
|
|
canvas.width = 250;
|
|
canvas.height = 250;
|
|
ctx.drawImage(img, 0, 0);
|
|
|
|
//set origin-clean to false to allow svg to be drawn on canvas
|
|
const dataURL = canvas.toDataURL();
|
|
console.log(dataURL);
|
|
|
|
image2.setAttribute("x", "12%");
|
|
image2.setAttribute("y", "86%");
|
|
image2.setAttribute("width", "12%");
|
|
image2.setAttribute("height", "12%");
|
|
image2.setAttribute("href", "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMjAwbW0iCiAgIGhlaWdodD0iMjAwbW0iCiAgIHZpZXdCb3g9IjAgMCAyMDAgMjAwIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc1IgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEuMiAoYjhlMjViZTgzMywgMjAyMi0wMi0wNSkiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImxvZ29fYmxhY2tfdGhpY2Muc3ZnIgogICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXc3IgogICAgIHBhZ2Vjb2xvcj0iIzUwNTA1MCIKICAgICBib3JkZXJjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuNTgyNzI3NCIKICAgICBpbmtzY2FwZTpjeD0iMzU3LjgwMDIzIgogICAgIGlua3NjYXBlOmN5PSI0ODIuMjE1MTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNTciCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii04IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc5OCIKICAgICB3aWR0aD0iMjAwbW0iIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiPgogICAgPGcKICAgICAgIGlkPSJnOTgiCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMjUpIj4KICAgICAgPGcKICAgICAgICAgaWQ9IkxheWVyXzQiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8bGluZQogICAgICAgICAgIGNsYXNzPSJzdDEiCiAgICAgICAgICAgeDE9IjQ3OC4zOTk5OSIKICAgICAgICAgICB5MT0iNzIwLjI5OTk5IgogICAgICAgICAgIHgyPSIzMTMuMjAwMDEiCiAgICAgICAgICAgeTI9IjcyMC4yOTk5OSIKICAgICAgICAgICBpZD0ibGluZTkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBjbGFzcz0ic3QxIgogICAgICAgICAgIGQ9Ik0gNDc4LjQsNzIwLjMiCiAgICAgICAgICAgaWQ9InBhdGgxMSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cG9seWxpbmUKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHBvaW50cz0iNzE3LjEsMjIzLjMgNzE3LjEsNzIwLjMgNDk3LjMsNzIwLjMgICIKICAgICAgICAgICBpZD0icG9seWxpbmUxMyIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICAgICAgZD0ibSA0OTguMzk4ODgsNzIwLjMgYyAwLC01LjYgLTQuNSwtMTAuMSAtMTAuMSwtMTAuMSAtNS42LDAgLTEwLjEsNC41IC0xMC4xLDEwLjEgaCAtMTYzLjggYyAwLC01LjYgLTQuNSwtMTAuMSAtMTAuMSwtMTAuMSAtNS42LDAgLTEwLjEsNC41IC0xMC4xLDEwLjEgLTY5Ljc1OTIsMCAtMTQ1LjY4NDE3LDAgLTIxNy41OTk5OTYsMCBWIDc5LjcgSCA3MTcuMDk4ODggdiAxMjAgMCBoIC0xNy4zIHYgMjQuOCBoIDE3LjMiCiAgICAgICAgICAgaWQ9InBhdGgxNSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLWxpbmVjYXA6c3F1YXJlO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjc2Njc2NjY2NjY2NjYyIgLz4KICAgICAgPC9nPgogICAgICA8ZwogICAgICAgICBpZD0iTGF5ZXJfMyIKICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8Y2lyY2xlCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICBjeD0iMzk2Ljc5OTk5IgogICAgICAgICAgIGN5PSI0MDAiCiAgICAgICAgICAgaWQ9ImNpcmNsZTE4IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgICByPSIzMjAuMjk5OTkiIC8+CiAgICAgIDwvZz4KICAgICAgPGcKICAgICAgICAgaWQ9IkxheWVyXzEiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIj4KICAgICAgICA8cG9seWxpbmUKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHBvaW50cz0iNTE0LjUsMTczLjUgMTcwLjIsMTczLjUgMTcwLjMsNjI2LjYgNjIzLjMsNjI2LjUgNjIzLjMsMjE1LjcgNTg0LjQsMTczLjQgNTU3LDE3My40IDU0OCwxODAuNiAgICA1MjYuNSwxODAuNyAgIgogICAgICAgICAgIGlkPSJwb2x5bGluZTIxIgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbGluZWpvaW46YmV2ZWw7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGNsYXNzPSJzdDIiCiAgICAgICAgICAgZD0ibSA1MjYuNSwzMzEuOCBjIDAsNy42IC01LjQsMTMuNyAtMTIsMTMuNyBIIDIyNy43IGMgLTYuNiwwIC0xMiwtNi4xIC0xMiwtMTMuNyBWIDE4Ny4yIGMgMCwtNy42IDUuNCwtMTMuNyAxMiwtMTMuNyBoIDI4Ni44IGMgNi42LDAgMTIsNi4xIDEyLDEzLjcgeiIKICAgICAgICAgICBpZD0icGF0aDI3IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICBkPSJtIDUyNi43LDMzMy42IGMgMCw2LjYgLTUuNCwxMiAtMTIsMTIgSCAyOTYuOCBjIC02LjYsMCAtMTIsLTUuNCAtMTIsLTEyIFYgMTg1LjUgYyAwLC02LjYgNS40LC0xMiAxMiwtMTIgaCAyMTcuOSBjIDYuNiwwIDEyLDUuNCAxMiwxMiB6IgogICAgICAgICAgIGlkPSJwYXRoMjkiCiAgICAgICAgICAgc3R5bGU9ImZpbGw6IzI4MzY4MTtmaWxsLW9wYWNpdHk6MDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6OC4yO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIGQ9Im0gNTc3LjksNjEzLjcgYyAwLDYuNiAtNS40LDEyIC0xMiwxMiBIIDIyNy43IGMgLTYuNiwwIC0xMiwtNS40IC0xMiwtMTIgViAzODEuMSBjIDAsLTYuNiA1LjQsLTEyIDEyLC0xMiBoIDMzOC4yIGMgNi42LDAgMTIsNS40IDEyLDEyIHoiCiAgICAgICAgICAgaWQ9InBhdGgzMSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjE3OS44OTk5OSIKICAgICAgICAgICB5PSI1OTAuMjAwMDEiCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICB3aWR0aD0iMjUuNzAwMDAxIgogICAgICAgICAgIGhlaWdodD0iMjMiCiAgICAgICAgICAgaWQ9InJlY3QzMyIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjU4Ny41OTk5OCIKICAgICAgICAgICB5PSI1OTAuMjAwMDEiCiAgICAgICAgICAgY2xhc3M9InN0MiIKICAgICAgICAgICB3aWR0aD0iMjUuNzAwMDAxIgogICAgICAgICAgIGhlaWdodD0iMjMiCiAgICAgICAgICAgaWQ9InJlY3QzNSIKICAgICAgICAgICBzdHlsZT0iZmlsbDojMjgzNjgxO2ZpbGwtb3BhY2l0eTowO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo4LjI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cmVjdAogICAgICAgICAgIHg9IjQzMy42MDAwMSIKICAgICAgICAgICB5PSIxOTMuNSIKICAgICAgICAgICBjbGFzcz0ic3QyIgogICAgICAgICAgIHdpZHRoPSI2NC45MDAwMDIiCiAgICAgICAgICAgaGVpZ2h0PSIxMzcuOCIKICAgICAgICAgICBpZD0icmVjdDM3IgogICAgICAgICAgIHN0eWxlPSJmaWxsOiMyODM2ODE7ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjguMjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICA8L2c+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjc0Ljk0MDEsNTQxLjU3MiBjIDAsMy41MjggMi43NzIsNi40MjYgNi4zLDYuNDI2IDMuNTI4LDAgNi40MjYsLTIuODk4IDYuNDI2LC02LjQyNiB2IC0zMC45OTYgaCAzMC44NyBjIDEwLjQ1OCwwIDE5LjE1MiwtOC42OTQgMTkuMTUyLC0xOS4xNTIgdiAtMjIuNjggYyAwLC0xMC4zMzIgLTguNjk0LC0xOS4wMjYgLTE5LjE1MiwtMTkuMDI2IGggLTQzLjU5NiB6IG0gMTIuNzI2LC00My43MjIgdiAtMzUuNDA2IGggMzAuODcgYyAzLjI3NiwwIDYuNDI2LDIuODk4IDYuNDI2LDYuMyB2IDIyLjY4IGMgMCwzLjUyOCAtMy4wMjQsNi40MjYgLTYuNDI2LDYuNDI2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1NS0yIgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMzY1Ljk5NDc5LDQ3OC44MjQgMjUuMzI2LDY1LjE0MiBjIDEuMDA4LDIuMzk0IDMuMjc2LDQuMDMyIDYuMDQ4LDQuMDMyIDIuNjQ2LDAgNC45MTQsLTEuNjM4IDUuOTIyLC00LjAzMiBsIDI1LjQ1MiwtNjUuMjY4IHYgLTIyLjY4IGMgMCwtMy40MDIgLTIuODk4LC02LjMgLTYuNDI2LC02LjMgLTMuNTI4LDAgLTYuMywyLjg5OCAtNi4zLDYuMyB2IDIwLjI4NiBsIC0xOC42NDgsNDcuNjI4IC0xOC42NDgsLTQ3LjYyOCB2IC0yMC4yODYgYyAwLC0zLjQwMiAtMi44OTgsLTYuMyAtNi40MjYsLTYuMyAtMy41MjgsMCAtNi4zLDIuODk4IC02LjMsNi4zIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1Ny04IgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNDU3LjA0OTQ3LDQ3OC44MjQgMjUuMzI2LDY1LjE0MiBjIDEuMDA4LDIuMzk0IDMuMjc2LDQuMDMyIDYuMDQ4LDQuMDMyIDIuNjQ2LDAgNC45MTQsLTEuNjM4IDUuOTIyLC00LjAzMiBsIDI1LjQ1MiwtNjUuMjY4IHYgLTIyLjY4IGMgMCwtMy40MDIgLTIuODk4LC02LjMgLTYuNDI2LC02LjMgLTMuNTI4LDAgLTYuMywyLjg5OCAtNi4zLDYuMyB2IDIwLjI4NiBsIC0xOC42NDgsNDcuNjI4IC0xOC42NDgsLTQ3LjYyOCB2IC0yMC4yODYgYyAwLC0zLjQwMiAtMi44OTgsLTYuMyAtNi40MjYsLTYuMyAtMy41MjgsMCAtNi4zLDIuODk4IC02LjMsNi4zIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxMjZweDtmb250LWZhbWlseTpPQ1JBOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246T0NSQTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjQuMjtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaWQ9InBhdGg1OS0xIgogICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9IkM6XFVzZXJzXGFsM3hrXE9uZURyaXZlIC0gTlROVVxQVlZcR29nc1xQUlxsb2dvZXJcbG9nb19ibGFja190aGljYy5wbmciCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI0ODAiCiAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI0ODAiIC8+CiAgICA8L2c+CiAgPC9nPgogIDxzdHlsZQogICAgIHR5cGU9InRleHQvY3NzIgogICAgIGlkPSJzdHlsZTIiPgoJLnN0MHtmaWxsOiNmZmZmZmY7fQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MntmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0M3tmaWxsOm5vbmU7fQoJLnN0NHtzdHJva2U6IzAwMDAwMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9Cgkuc3Q1e2ZvbnQtZmFtaWx5OidPQ1JBU3RkJzt9Cgkuc3Q2e2ZvbnQtc2l6ZToxMjZweDt9Cjwvc3R5bGU+Cjwvc3ZnPgo=");
|
|
svg.appendChild(image2);
|
|
|
|
const text4 = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
text4.setAttribute("x", "90%");
|
|
text4.setAttribute("y", "90%");
|
|
text4.setAttribute("dominant-baseline", "middle");
|
|
text4.setAttribute("text-anchor", "end");
|
|
text4.setAttribute("font-size", font_size_scaling_factor*3);
|
|
text4.setAttribute("fill", "#fff");
|
|
text4.setAttribute("font-weight", "bold");
|
|
if (language_inp == "no"){
|
|
text4.textContent = "Programvareverkstedet";
|
|
} else if (language_inp == "en"){
|
|
text4.textContent = "The Software Workshop (PVV)";
|
|
}
|
|
svg.appendChild(text4);
|
|
|
|
const text5 = document.createElementNS("http://www.w3.org/2000/svg", "text");
|
|
text5.setAttribute("x", "90%");
|
|
text5.setAttribute("y", "93%");
|
|
text5.setAttribute("dominant-baseline", "middle");
|
|
text5.setAttribute("text-anchor", "end");
|
|
text5.setAttribute("font-size", font_size_scaling_factor*3);
|
|
text5.setAttribute("fill", "#fff");
|
|
text5.setAttribute("font-weight", "bold");
|
|
text5.textContent = "pvv.ntnu.no";
|
|
svg.appendChild(text5);
|
|
|
|
//get font style form css body element
|
|
const fonts = window.getComputedStyle(document.body).getPropertyValue('font-family');
|
|
console.log(fonts);
|
|
//add font style to svg
|
|
svg.style.fontFamily = fonts;
|
|
|
|
|
|
|
|
// Replace placeholders with values
|
|
svg.innerHTML = svg.innerHTML
|
|
.replace("{title}", title_inp)
|
|
.replace("{subtitle}", subtitle_inp)
|
|
.replace("{description}", description_inp)
|
|
.replace("{time}", time_inp)
|
|
.replace("{date}", date_inp)
|
|
.replace("{location}", location_inp)
|
|
.replace("{varighet}", varighet_inp);
|
|
|
|
//add id to svg
|
|
svg.setAttribute("id", "svg");
|
|
// // Add SVG to the document
|
|
// document.body.appendChild(svg);
|
|
//replace the element with the svg
|
|
document.getElementById(element).replaceWith(svg);
|
|
}
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
<style>
|
|
|
|
body {
|
|
background-color: #222;
|
|
color: #fff;
|
|
font-family: "OCR A Extended", "Comic Sans MS", "Papyrus", "Brush Script MT", "Chalkduster", sans-serif;
|
|
}
|
|
|
|
.row {
|
|
display: flex;
|
|
flex-direction: row;
|
|
justify-content:space-between;
|
|
width: 50%;
|
|
}
|
|
.col {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
}
|
|
form{
|
|
width: 100%;
|
|
margin-left: 25%;
|
|
|
|
}
|
|
|
|
|
|
input[type="text"],
|
|
input[type="number"],
|
|
input[type="date"],
|
|
input[type="time"],
|
|
select {
|
|
background-color: #2b2b2b;
|
|
border: none;
|
|
border-radius: 3px;
|
|
color: #fff;
|
|
font-size: 1.5em;
|
|
margin-bottom: 10px;
|
|
padding: 10px;
|
|
width: 90%;
|
|
max-width: 50em;
|
|
}
|
|
|
|
textarea {
|
|
background-color: #2b2b2b;
|
|
border: none;
|
|
border-radius: 3px;
|
|
color: #fff;
|
|
font-size: 1.5em;
|
|
margin-bottom: 10px;
|
|
padding: 10px;
|
|
resize: vertical;
|
|
width: 47.5%;
|
|
max-width: 50%;
|
|
max-height: 80em;
|
|
}
|
|
|
|
label {
|
|
/* display: block; */
|
|
font-size: 1.5em;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
input[type="file"] {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
button {
|
|
background-color: #4d4d4d;
|
|
border: none;
|
|
border-radius: 3px;
|
|
color: #fff;
|
|
cursor: pointer;
|
|
font-size: 1.5em;
|
|
margin-bottom: 10px;
|
|
width: 30%;
|
|
padding: 10px;
|
|
}
|
|
|
|
button:hover {
|
|
background-color: #666;
|
|
}
|
|
|
|
|
|
.container {
|
|
display: flex;
|
|
justify-content: center;
|
|
width: 112.5%;
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
|
|
</html> |