Compare commits

...

2 Commits

Author SHA1 Message Date
Arkadiusz Wieczorek
534f9f3db6 Add minor UI fixes 2022-07-03 19:35:36 +02:00
Arkadiusz Wieczorek
9a1287c35b Fix styling for mail and generating images, add copy button, add images 2022-07-03 14:28:42 +02:00
9 changed files with 133 additions and 61 deletions

View File

@ -29,10 +29,13 @@ h1 {
}
&__content {
height: 70vh;
max-height: 50vh;
overflow-y: scroll;
padding: 1rem 2rem;
color: $black-color;
a {
color: $ultra-black-color;
}
}
h2 {
@ -44,3 +47,12 @@ h1 {
font-size: calc(14 / 16 * 1rem);
}
}
.greeting-text {
font-size: 1rem;
a {
color: $ultra-black-color;
font-weight: 700;
}
}

View File

@ -5,7 +5,7 @@ import { Explainers } from './explainers';
import { ParsedAnswers } from './parse-answers';
import { v } from './verbs';
import './email-content.scss';
import { Fragment } from 'react';
import { Fragment, useState } from 'react';
declare var PLUGIN_NAME: string;
declare var PLUGIN_URL: string;
@ -28,18 +28,26 @@ export default function EmailContent({
.reduce((a, b) => a.concat(b), [])
)
).map((explainer_key) => Explainers[explainer_key]);
const [copied, setCopy] = useState<boolean>(false);
function copyTextToClipboard() {
// Should be changed in the future to Clipboard API (https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write#browser_compatibility)
let r = document.createRange();
r.selectNode(document.querySelector('.mail-container__content'));
window.getSelection().addRange(r);
document.execCommand('copy');
window.getSelection().removeAllRanges();
setCopy(true);
}
return (
<Fragment>
<div className="generator-container">
<h1>Treść maila</h1>
<div className="mail-container">
<div className="mail-container__header">
<div className="mail-container__header--control">
<button>Kopiuj</button>
</div>
<div className="mail-container__header--control"></div>
</div>
{/* <pre>{JSON.stringify(answers, null, 3)}</pre> */}
<article className="mail-container__content">
<p>Dzień dobry,</p>
<p>
@ -69,6 +77,23 @@ export default function EmailContent({
</p>
</article>
</div>
<div className="buttons-container">
<button className="sv_next_btn" onClick={() => copyTextToClipboard()}>
{copied ? 'Skopiowano!' : 'Kopiuj treść wiadomości'}
</button>
</div>
{copied ? (
<section className="greeting-text">
<strong>Przed Tobą ostatni krok! 😊</strong>
<p>
<a href="mailto:?subject=Zapytanie o przetwarzanie moich danych osobowych przez Państwa stronę">
Przejdź do swojego klienta pocztowego
</a>
, załącz zrzuty ekranów, wklej treść wiadomości i wyślij do
administratorów witryny {visited_url.split('/').slice(0, 3).join('/')}.
</p>
</section>
) : null}
</div>
</Fragment>
);

View File

@ -220,14 +220,15 @@ export default function generateSurveyQuestions(hosts: string[]) {
type: 'html',
visibleIf:
'{is_incognito_different} != "no" and ({popup_type} = "none" or {popup_type} = "page") ',
html: /* HTML */ `Jeżeli w trybie incognito widzisz więcej okienek z
informacjami o przetwarzaniu danych osobowych, wykonaj analizę w
normalnym trybie ponownie - ale najpierw usuń pliki cookies tej strony.
html: /* HTML */ `Jeżeli w trybie incognito {widzisz} więcej okienek z
informacjami o przetwarzaniu danych osobowych, {wykonaj} analizę w
normalnym trybie ponownie - ale najpierw {usuń} pliki cookies tej
strony.
<a
href="https://support.mozilla.org/pl/kb/usuwanie-ciasteczek-i-danych-stron-firefox?redirectslug=usuwanie-ciasteczek&redirectlocale=pl"
target="_blank"
>
Zobacz, jak to zrobić
{Zobacz}, jak to zrobić
</a>`,
},
{
@ -285,7 +286,7 @@ export default function generateSurveyQuestions(hosts: string[]) {
},
{
value: 'yes',
text: 'Nie. Muszę wykonać więcej czynności aby odmówić wszystkich zgód, albo opcja niewyrażenia zgody jest mało widoczna.',
text: 'Nie. {Muszę} wykonać więcej czynności aby odmówić wszystkich zgód, albo opcja niewyrażenia zgody jest mało widoczna.',
},
],
},
@ -339,7 +340,7 @@ export default function generateSurveyQuestions(hosts: string[]) {
name: 'administrator_identity_available_before_choice',
isRequired: true,
visibleIf: '{popup_type} = "some_choice"',
title: 'Czy przed podjęciem wyboru dot. {Twoich} danych masz możliwość poznać tożsamość administratora strony?',
title: 'Czy przed podjęciem wyboru dot. {Twoich} danych {masz} możliwość poznać tożsamość administratora strony?',
choices: [
{
value: 'yes',
@ -363,10 +364,10 @@ export default function generateSurveyQuestions(hosts: string[]) {
name: 'policy_readable',
isRequired: true,
choices: [
{ value: 'yes', text: 'dostępna i czytelna' },
{ value: 'yes', text: 'Dostępna i czytelna' },
{
value: 'entirely_obscured_by_popup',
text: 'dostępna, ale nieczytelna. Zasłania ją całkowicie lub prawie całkowicie popup o RODO lub nie można się do niej doklikać bez podjęcia wyboru w okienku',
text: 'Dostępna, ale nieczytelna. Zasłania ją całkowicie lub prawie całkowicie popup o RODO lub nie można się do niej doklikać bez podjęcia wyboru w okienku',
},
{
value: 'cant_find',

View File

@ -18,7 +18,6 @@ body {
nav {
position: sticky;
top: 0;
// background-color: #fff;
display: flex;
flex-wrap: wrap;
justify-content: left;
@ -53,6 +52,7 @@ h1 {
position: sticky;
top: 0;
z-index: 1;
user-select: none;
.webpage-metadata {
word-break: break-all;

View File

@ -11,16 +11,26 @@ h2 {
}
.images {
display: flex;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
width: 100%;
grid-gap: 1rem;
flex-wrap: wrap;
margin: 2rem 0;
margin: 2rem 0 1rem;
max-height: 45vh;
overflow-y: scroll;
overflow-x: clip;
z-index: 1;
position: relative;
}
.generator-container {
max-width: 100ex;
margin: 0 auto;
font-size: calc(14 / 16 * 1rem);
a {
color: $ultra-black-color;
}
}
.buttons-container {
@ -39,18 +49,16 @@ h2 {
}
.browser {
height: 9.667rem;
width: 16rem;
height: 8.667rem;
font-weight: 800 !important;
// box-shadow: rgba(12, 12, 13, 0.1) 0px 1px 4px 0px;
color: $disabled-grey !important;
border: 1px solid $disabled-grey;
background-image: linear-gradient(to bottom, $icd-rentgen-color 20%, #fff 20%, #fff 100%);
animation: xray 2s cubic-bezier(0, 1.43, 0.39, 1.43) infinite;
&--filled {
background-size: contain;
background-position-y: 18px;
background-size: 100%;
background-position-y: 19px;
animation: none;
.browser__header {
@ -83,6 +91,9 @@ h2 {
font-weight: 400;
padding-left: 0.25rem;
color: #000;
overflow: visible;
word-break: break-all;
inline-size: 10rem;
}
&--controls {
@ -92,6 +103,6 @@ h2 {
}
&__content {
height: 7.667rem;
height: 6.667rem;
}
}

View File

@ -59,6 +59,10 @@ export default function ScreenshotGenerator({
await new Promise((resolve) => setTimeout(resolve, 1000));
response = await (await pollTask(path)).json();
setImages((response as screenshotTask)?.images);
document.querySelector('.images').scrollTo({
top: document.querySelector('.images').scrollHeight,
behavior: 'smooth',
});
}
if (response.status === taskState.FINISHED) {
@ -117,6 +121,7 @@ export default function ScreenshotGenerator({
setTaskId(urlArr[urlArr.length - 1]);
const response = await subscribeTask(task.url);
setImages(response.images);
console.log('response.images', response.images);
console.log('output', response);
}}
>
@ -128,15 +133,23 @@ export default function ScreenshotGenerator({
{mode === 'in_progress' || mode === 'finished' ? (
<Fragment>
<h1>Przygotowujemy zrzuty ekranów</h1>
<h1>Przygotowanie zrzutów ekranów</h1>
<div className="container">
<h2>To może chwilkę zająć</h2>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore sint
laudantium blanditiis aperiam quos expedita voluptatem iure, nam aliquam
vel minus aliquid incidunt consequatur illo velit dolorem error
exercitationem tempora?
</p>
{mode === 'in_progress' ? (
<Fragment>
<h2>To może chwilkę zająć...</h2>
<p>
Nasz serwer właśnie odwiedza wskazaną przez Ciebie stronę
i przygotowuje zrzuty ekranów narzędzi deweloperskich.
</p>
</Fragment>
) : null}
{mode === 'finished' ? (
<Fragment>
<h2>Gotowe!</h2>
<p>Zrzuty ekranów narzędzi deweloperskich gotowe do pobrania.</p>
</Fragment>
) : null}
<div className="images">
{images.map((screenshot) => {
@ -150,7 +163,7 @@ export default function ScreenshotGenerator({
>
<div className="browser__header">
<div className="browser__header--address-bar">
{screenshot.url}
{screenshot.url.split('-').slice(-2).join('-')}
</div>
<div className="browser__header--controls">···</div>
</div>
@ -172,9 +185,11 @@ export default function ScreenshotGenerator({
</div>
<div className="buttons-container">
{mode === 'finished' ? (
<button className="sv_next_btn" onClick={() => downloadFiles()}>
Pobierz zrzuty ekranów
</button>
<Fragment>
<button className="sv_next_btn" onClick={() => downloadFiles()}>
Pobierz zrzuty ekranów i przejdź dalej
</button>
</Fragment>
) : null}
</div>
</Fragment>

View File

@ -1,37 +1,42 @@
const words = {
zrobiłem: ['zrobiłem', 'zrobiłam', 'zrobiłom', 'zrobiliśmy'],
szukałem: ['szukałem', 'szukałam', 'szukałom', 'szukaliśmy'],
znalazłem: ['znalazłem', 'znalazłam', 'znalazłom', 'znaleźliśmy'],
ciebie: ['ciebie', 'ciebie', 'ciebie', 'was'],
dokonałeś: ['dokonałeś', 'dokonałaś', 'dokonałoś', 'dokonaliście'],
jesteś: ['jesteś', 'jesteś', 'jesteś', 'jesteście'],
kliknąłem: ['kliknąłem', 'kliknęłam', 'klinkęłom', 'kliknęliśmy'],
mam: ['mam', 'mam', 'mam', 'mamy'],
masz: ['masz', 'masz', 'masz', 'macie'],
mnie: ['mnie', 'mnie', 'mnie', 'nas'],
moich: ['moich', 'moich', 'moich', 'naszych'],
moje: ['moje', 'moje', 'moje', 'nasze'],
mojej: ['mojej', 'mojej', 'mojej', 'naszej'],
wyraziłem: ['wyraziłem', 'wyraziłam', 'wyraziłom', 'wyraziliśmy'],
kliknąłem: ['kliknąłem', 'kliknęłam', 'klinkęłom', 'kliknęliśmy'],
odwiedzałeś: ['odwiedzałeś', 'odwiedzałaś', 'odwiedzałoś', 'odwiedzaliście'],
wyraziłeś: ['wyraziłeś', 'wyraziłaś', 'wyraziłoś', 'wyraziliście'],
jesteś: ['jesteś', 'jesteś', 'jesteś', 'jesteście'],
twoich: ['twoich', 'twoich', 'twoich', 'waszych'],
tobie: ['tobie', 'tobie', 'tobie', 'wam'],
twojej: ['twojej', 'twojej', 'twojej', 'waszej'],
muszę: ['muszę', 'muszę', 'muszę', 'musimy'],
odkliknąłeś: ['odkliknąłeś', 'odkliknęłaś', 'odklikęłoś', 'odkliknęliście'],
odmówiłem: ['odmówiłem', 'odmówiłam', 'odmówiłom', 'odmówiliśmy'],
odmówiłeś: ['odmówiłeś', 'odmówiłaś', 'odmówiłoś', 'odmówiliście'],
odwiedzałeś: ['odwiedzałeś', 'odwiedzałaś', 'odwiedzałoś', 'odwiedzaliście'],
odwiedziłem: ['odwiedziłem', 'odwiedziłam', 'odwiedziłom', 'odwiedziliśmy'],
odznaczyłem: ['odznaczyłem', 'odznaczyłam', 'odznaczyłom', 'odznaczyliśmy'],
otwórz: ['otwórz', 'otwórz', 'otwórz', 'otwórzcie'],
widzisz: ['widzisz', 'widzisz', 'widzisz', 'widzicie'],
podjąłem: ['podjąłem', 'podjęłam', 'podjęłom', 'podjęliśmy'],
podjąłeś: ['podjąłeś', 'podjęłaś', 'podjęłoś', 'podjęliście'],
proszę: ['proszę', 'proszę', 'proszę', 'prosimy'],
szukałem: ['szukałem', 'szukałam', 'szukałom', 'szukaliśmy'],
tobie: ['tobie', 'tobie', 'tobie', 'wam'],
twoich: ['twoich', 'twoich', 'twoich', 'waszych'],
twojej: ['twojej', 'twojej', 'twojej', 'waszej'],
usuń: ['usuń', 'usuń', 'usuń', 'usuńcie'],
widzę: ['widzę', 'widzę', 'widzę', 'widzimy'],
widziałem: ['widziałem', 'widziałam', 'widziałom', 'widzieliśmy'],
odwiedziłem: ['odwiedziłem', 'odwiedziłam', 'odwiedziłom', 'odwiedziliśmy'],
mam: ['mam', 'mam', 'mam', 'mamy'],
podjąłeś: ['podjąłeś', 'podjęłaś', 'podjęłoś', 'podjęliście'],
widzisz: ['widzisz', 'widzisz', 'widzisz', 'widzicie'],
wykonaj: ['wykonaj', 'wykonaj', 'wykonaj', 'wykonajcie'],
wyraziłem: ['wyraziłem', 'wyraziłam', 'wyraziłom', 'wyraziliśmy'],
wyraziłeś: ['wyraziłeś', 'wyraziłaś', 'wyraziłoś', 'wyraziliście'],
zamknąłem: ['zamknąłem', 'zamknęłom', 'zamknęłom', 'zamknęliśmy'],
zobacz: ['zobacz', 'zobacz', 'zobacz', 'zobaczcie'],
zamknąłeś: ['zamknąłeś', 'zamknęłaś', 'zamknęłoś', 'zamknęliście'],
znalazłem: ['znalazłem', 'znalazłam', 'znalazłom', 'znaleźliśmy'],
zrobiłem: ['zrobiłem', 'zrobiłam', 'zrobiłom', 'zrobiliśmy'],
zwracam: ['zwracam', 'zwracam', 'zwracam', 'zwracamy'],
moich: ['moich', 'moich', 'moich', 'naszych'],
ciebie: ['ciebie', 'ciebie', 'ciebie', 'was'],
mnie: ['mnie', 'mnie', 'mnie', 'nas'],
podjąłem: ['podjąłem', 'podjęłam', 'podjęłom', 'podjęliśmy'],
dokonałeś: ['dokonałeś', 'dokonałaś', 'dokonałoś', 'dokonaliście'],
odmówiłeś: ['odmówiłeś', 'odmówiłaś', 'odmówiłoś', 'odmówiliście'],
odznaczyłem: ['odznaczyłem', 'odznaczyłam', 'odznaczyłom', 'odznaczyliśmy'],
proszę: ['proszę', 'proszę', 'proszę', 'prosimy'],
odmówiłem: ['odmówiłem', 'odmówiłam', 'odmówiłom', 'odmówiliśmy'],
} as { [key: string]: string[] };
export default words;

View File

@ -12,6 +12,7 @@
top: 0;
background: #ffffff;
z-index: 1;
user-select: none;
.webpage-metadata {
word-break: break-all;

View File

@ -3,6 +3,7 @@
body {
width: 400px;
overflow-x: hidden;
user-select: none;
}
.toolbar {
@ -19,6 +20,7 @@ body {
top: 0;
background: #ffffff;
z-index: 1;
user-select: none;
.webpage-metadata {
word-break: break-all;