Skip to main content

ShareResult Komponens

A ShareResult komponens egy megosztható eredménykártyát generál és egy Ant Design modálban előnézetet ad, majd a Web Share API-val (vagy letöltéssel) megosztja a képet.

Működés

  • A gomb megnyomására megnyit egy modált, ahol a megosztható kártya előnézete látszik.
  • A kártyát a html-to-image csomaggal képpé konvertálja (toBlob).
  • Ha a böngésző támogatja a megosztást, a navigator.share segítségével küld fájlt; különben letölti a képet.
  • A kártya vizuális elemeit a shareData.type és a pontszám/eredmény alapján állítja össze.
  • A feladat típus esetén témakör nevekhez lekéri a központi témakör listát.

Propok

NévTípusKötelezőLeírás
shareDataShareableDataIgenA megosztandó eredmény típusa és adatai.
buttonSize'large' | 'middle' | 'small'NemA megosztás gomb mérete.
customButtonClassstringNemOpcionális CSS osztály a gombra.

ShareableData típus

type ShareableData =
| { type: "flashcard"; data: FlashcardData }
| { type: "task"; data: TaskData }
| { type: "streak"; data: StreakData };

FlashcardData

KulcsTípusLeírás
correctstring[]Helyesen megoldott kártyák azonosítói.
incorrectstring[]Hibásan megoldott kártyák azonosítói.
allCardsnumberAz összes kártya száma.

TaskData

KulcsTípusLeírás
gradenumberAz elért osztályzat.
scorenumberAz elért pontszám.
taskNamestringA feladatsor neve.
title?stringOpcionális témakör azonosító.

StreakData

KulcsTípusLeírás
streaknumberAz aktuális sorozat hossza napokban.
lastUpdatedstringUtolsó frissítés dátuma.

Használati példa

import { ShareResult } from "@/components/Share/Share-Result.component";

export default function QuizResult({ score }: { score: number }) {
return (
<ShareResult
shareData={{
type: "task",
data: {
grade: 5,
score,
taskName: "Kvíz",
title: "irodalom"
}
}}
/>
);
}

Alkalmazási példa (az alkalmazásban)

  • A megosztás gomb a feladattípus oldalakon jelenik meg, például web/app/quiz/page.tsx, web/app/tablazat/[id]/page.tsx, web/app/vizsga/megold/page.tsx.
  • A profil statisztikák és szókártya eredmények is használják: web/components/Profile/ProfileStats.tsx, web/components/Flashcard/Flashcards.component.tsx.