From 318d1caa9e72dede06d04b12771a00077cf90bf9 Mon Sep 17 00:00:00 2001 From: log101 Date: Sun, 28 Jul 2024 17:00:10 +0300 Subject: [PATCH] chore: move index.astro script to a seperate file feat: add custom validation for input elements --- bun.lockb | Bin 269838 -> 269152 bytes package.json | 1 - src/env.d.ts | 4 -- src/layouts/Layout.astro | 6 -- src/pages/index.astro | 86 +++------------------------ src/scripts/index.ts | 99 ++++++++++++++++++++++++++++++++ src/scripts/initMap.ts | 22 ++----- src/scripts/initSelectionMap.ts | 11 +++- 8 files changed, 123 insertions(+), 106 deletions(-) create mode 100644 src/scripts/index.ts diff --git a/bun.lockb b/bun.lockb index 753d514a102c50209ccf901b38699f312e037955..5b4bfe54e1cff61ef003646bb7cee46fe71e3ab1 100755 GIT binary patch delta 43645 zcmeFad7O@A|Nnn2uFRFhSZB;wCW$P=3}c32#@LrELv~^?maJpX(#()h$#UVarb$F9 zDMC_BB2*-iC28tbT2v~f)%W>2&-0oY-F4re&+q$q{CA$xA?8=)n%GX((JNe5AtG?S*q1oNHpZV^c3PoIc znZ-RTd-g2cHua!4(4|Pd%%e42t}-rH){AgicrzRd@4MaQDgjTNFlxjg(k(_0!}h{e z;3;qgIIp_PbqhQgTlwtAj)Xg6mxG_ct^~(B_I$^#YWrtqjdl`rfh*z|16PJ4VO7Wn zmxm{$kDi=9-sSq`HkYdy_TaIj#$viA)N{FR!hQw584iuH<9Fa!3VS1Vad^apI#VW$ za=C7gb-7AouSNH}0{8lENnMMp+P0yAoyEBEBPNW#dxC57&=I53DIzP*&SEgED)xj` zTmbV=Ld5Np|}h!#BEInOT(yL=Z75 z+3wJu4kyE^{mf?e$c5mij$TVfDtHO3g4%Yt19*@utqu+){JP-(yqY6 z*z|4I9N6#5bY*?g%C7MeSX1JVV{d|^u&2W+co3`>ZfR?0`~a-@F^=66mR~c6tHKqr zdyq~QY}7#oy0S7TxD1>`#c#|cQ2h?OOS52AVA_-s69*4>xvpYsDtrNJ>Xd|4z`LDX zE`~B|8>|W}g;mg4xEkCUR*S2{HDHgEzCl;puL`URc)QX6Hxnp=psu=u8f^= zr#&=Zz)CQ9@YqRXCc0eF4eScP+1*}@D|^^oTcW4kLqB0_=w`!e&{$aM`@@<8?Hs#F z5Bgt||xLIG@zah*d$~pq8z+0)9 z?3-cv|61SaK{yn9T7NtJP*@duzdn;p1^h(6sVDBEUp2<#Vbyfn*dZ)1muo2YP1sY0 zj~G0>&bZP3fwuq9K!(4%|HU-B*uH@rfBDR_gY1b}d$65m{Mb>WCXI8s0_k@5Pl46j zeH=RlR+&}dO7Jy`ycIqVSAlb3>5ssg*fZc;;Qp{iDaqj~Fn*a?Zb!I41ys;sSSxHV ztlmzaFlf?b2?)mv;EtC|m#1;=XjNBkXf{ ztHWzx_4a&+Cp$dY;Z#_?p6qZPha(*J2SSTg绰KomrVU`i@DU?NFh;?hY<&9g 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 AZvX%Q delta 45032 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 export declare global { - interface Window { - htmx: any - } - namespace astroHTML.JSX { interface HTMLAttributes { _?: any diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index ee8d6d6..b728469 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -38,11 +38,5 @@ - - diff --git a/src/pages/index.astro b/src/pages/index.astro index b957874..82fe7a6 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,10 +1,11 @@ --- -export const prerender = true; +export const prerender = true -import "@/styles/globals.css"; -import "../styles/locked-page.css"; +import "@/styles/globals.css" +import "../styles/locked-page.css" -import Layout from "../layouts/Layout.astro"; +import Layout from "../layouts/Layout.astro" +import { Loader2 } from "lucide-react" --- @@ -126,84 +127,15 @@ import Layout from "../layouts/Layout.astro"; - + + - - diff --git a/src/scripts/index.ts b/src/scripts/index.ts new file mode 100644 index 0000000..6e18379 --- /dev/null +++ b/src/scripts/index.ts @@ -0,0 +1,99 @@ +import { addClasses, removeClasses } from "@/components/LockedContent/domUtils" +import { toast } from "@/lib/utils" + +export function toggleMap() { + const coordinatesText = document.getElementById("coordinates") + + const mapDiv = document.getElementById("map") + + mapDiv?.classList.add("border-slate-900") + coordinatesText?.classList.add("drop-shadow-2xl") + + setTimeout(() => { + mapDiv?.classList.remove("border-slate-900") + coordinatesText?.classList.remove("drop-shadow-2xl") + }, 800) +} + +export function validateFileInput(el: HTMLInputElement) { + const files = el.files + + if (!files) return + + if (files.length > 0) { + if (files[0].size > 4 * 1024 * 1024) { + el.setCustomValidity("Dosya boyutu 4 MB'den küçük olmalıdır.") + el.reportValidity() + } else { + el.setCustomValidity("") + } + } +} + +function toggleButton(elemId: string, spinnerId: string) { + const elem = document.getElementById(elemId) as HTMLButtonElement | null + const spinner = document.getElementById(spinnerId) + + if (!elem) { + throw new Error("Element could not be found!") + } else if (elem.disabled) { + spinner?.classList.add("hidden") + removeClasses(elemId, "bg-slate-500") + addClasses(elemId, "bg-slate-900") + elem.disabled = false + } else { + spinner?.classList.remove("hidden") + removeClasses(elemId, "bg-slate-900") + addClasses(elemId, "bg-slate-500") + elem.disabled = true + setTimeout(() => toggleButton(elemId, spinnerId), 1000) + } +} + +const handleSubmit = async (e: SubmitEvent) => { + e.preventDefault() + toggleButton("submit-button", "submit-button-spinner") + const locationSelected = document.getElementById( + "geolocation-input" + ) as HTMLInputElement | null + + if (!locationSelected) { + throw new Error("Element could not be found!") + } + + if (!locationSelected.value) { + const map = document.getElementById("map") + map?.scrollIntoView({ behavior: "smooth", block: "center" }) + return toggleMap() + } + + const inputEl = document.getElementById( + "photo-selector" + ) as HTMLInputElement | null + + if (!inputEl) { + throw new Error("Element could not be found!") + } + + validateFileInput(inputEl) + + const formData = new FormData(e.target as HTMLFormElement) + + const res = await fetch(`http://127.0.0.1:3000/api/location`, { + method: "POST", + body: formData, + }) + + if (res.status === 200) { + const data = await res.json() + + if (data.url) location.assign("/" + data.url) + } else { + toast("Konulu konum oluşturulamadı, lütfen tekrar deneyin.") + } +} + +document.getElementById("sample-form")!.onsubmit = handleSubmit + +document.getElementById("photo-selector")!.oninput = (ev) => + validateFileInput(ev.target as HTMLInputElement) diff --git a/src/scripts/initMap.ts b/src/scripts/initMap.ts index 7aff35c..df77c29 100644 --- a/src/scripts/initMap.ts +++ b/src/scripts/initMap.ts @@ -1,3 +1,7 @@ +import { + currentLocationIcon, + targetLocationIcon, +} from "@/components/Leaflet/icons" import { toast } from "@/lib/utils" import L from "leaflet" @@ -5,16 +9,6 @@ type TargetLocation = [lat: number, lng: number] | null const mapEl = document.getElementById("map") -var targetLocationIcon = L.icon({ - iconUrl: "goal.svg", - iconSize: [32, 32], -}) - -var currentLocationIcon = L.icon({ - iconUrl: "blue-dot.png", - iconSize: [32, 32], -}) - const targetLocation = mapEl?.dataset.targetLocation const data = targetLocation ? JSON.parse(targetLocation) : null @@ -108,10 +102,6 @@ function addTargetLocationMarker(target: TargetLocation) { } } -function initLocationControls() { - targetLocationControl.addTo(map) - goToCurrentLocationControl.addTo(map) -} - addTargetLocationMarker(TARGET_LOCATION) -initLocationControls() +targetLocationControl.addTo(map) +goToCurrentLocationControl.addTo(map) diff --git a/src/scripts/initSelectionMap.ts b/src/scripts/initSelectionMap.ts index 0e185ce..20cea10 100644 --- a/src/scripts/initSelectionMap.ts +++ b/src/scripts/initSelectionMap.ts @@ -54,7 +54,6 @@ const CurrentLocationControl = L.Control.extend({ locationButton.id = "current-location-control" locationButton.addEventListener("click", (ev) => { - console.log(currentLocationMarker) if (currentLocationMarker) { map.setView(currentLocationMarker.getLatLng(), 12) } else { @@ -116,10 +115,18 @@ map.on("click", (e) => { } const pos = targetLocationMarker.getLatLng() - updateText("coordinates", `${pos.lat}. Enlem, ${pos.lng}. Boylam`) updateInputValue("geolocation-input", `${pos.lat},${pos.lng}`) + updateText("coordinates", `${pos.lat}. Enlem, ${pos.lng}. Boylam`) updateText( "location-selected-confirmation", "Konum seçildi, bir sonraki adıma geçebilirsiniz." ) }) + +const geolocationInputEl = document.getElementById( + "geolocation-input" +) as HTMLInputElement | null + +if (geolocationInputEl?.value) { + geolocationInputEl.value = "" +}