From 8c756033097c6899a1e54826754fae6665038161 Mon Sep 17 00:00:00 2001 From: Dominic Zimmer Date: Mon, 26 Oct 2020 02:41:52 +0100 Subject: [PATCH] Refactor code --- src/App.css | 6 ++++++ src/Gallery.tsx | 32 +++++--------------------------- src/GalleryCard.tsx | 23 ++++++++++++++++++++--- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/App.css b/src/App.css index 57bbcbe..6f28f01 100644 --- a/src/App.css +++ b/src/App.css @@ -20,6 +20,12 @@ body { padding: 0px 1px 0px 1px; } +.img-card-hidden { + width: 95px; + padding: 0px 1px 0px 1px; + display: none; +} + .App-header { background-color: #282c34; min-height: 100vh; diff --git a/src/Gallery.tsx b/src/Gallery.tsx index d92889a..3d3e2ce 100644 --- a/src/Gallery.tsx +++ b/src/Gallery.tsx @@ -1,13 +1,8 @@ import React, { Fragment, useEffect, useState } from 'react'; -import './App.css'; import GalleryCard from './GalleryCard'; +import './App.css'; -const defaultSet: any = (size: number) => { - const newSet = new Set(); - for (var i: number = 1; i <= size; i++) newSet.add(i); - return newSet; -} - +const defaultSet: (size: number) => Set = (size: number) => new Set([...Array.from(Array(size).keys()).map(v => v + 1)]); const stateToString: (s: Set) => (string) = (s: Set) => { const numbers: Array = Array.from(s).sort((a, b) => a - b); @@ -69,7 +64,7 @@ const loadSet: (() => Set) = () => { return numbers; }; -const storeSet: ((set: Set) => void) = (collection) => { +const storeSet: ((set: Set) => void) = (collection: Set) => { var href = document.location.href; var pureHref: string = href.split("#")[0]; @@ -87,27 +82,10 @@ const Gallery: React.FC<{ size: number }> = ({ size }) => { useEffect(() => storeSet(collection)); - const clickHandler: ((value: number) => ((eve: React.MouseEvent) => any)) = (value) => { - return (event: React.MouseEvent) => { - var element = event.currentTarget; - element.setAttribute("style", ""); - var opacity = 1.0; // initial opacity - var timer = setInterval(function () { - if (opacity <= 0.1) { - clearInterval(timer); - addToCollection(value); - } else { - element.setAttribute("style", `opacity: ${opacity};`); - } - opacity *= 0.9; - }, 7); - }; - }; - return ( - {Array.from(originalSet).filter(element => !collection.has(element)).map((value, key, theset) => - + {Array.from(originalSet).map((value, key, theset) => + ) }; diff --git a/src/GalleryCard.tsx b/src/GalleryCard.tsx index ae498fa..1ae3fba 100644 --- a/src/GalleryCard.tsx +++ b/src/GalleryCard.tsx @@ -1,10 +1,27 @@ import React from 'react'; import './App.css'; -const GalleryCard: React.FC<{ id: number, clickHandler: any }> = ({ id, clickHandler }) => { +const GalleryCard: React.FC<{ id: number, hidden: boolean, removeCallback: () => any }> = ({ id, hidden, removeCallback}) => { + + const clickHandler: ((value: number) => ((eve: React.MouseEvent) => any)) = (value) => { + return (event: React.MouseEvent) => { + var element = event.currentTarget; + element.setAttribute("style", ""); + var opacity = 1.0; // initial opacity + var timer = setInterval(function () { + if (opacity <= 0.1) { + clearInterval(timer); + removeCallback(); + } + element.setAttribute("style", `opacity: ${opacity};`); + opacity *= 0.9; + }, 7); + }; + }; + return {}: clickHandler(id)} + className={hidden?"img-card-hidden":"img-card"} alt={`Pokemon card with number ${String(id)}`} src={`https://dominic.leafbla.de/cards/res/${String(id).padStart(3, '0')}.jpg`} />;