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.