Update GradeCard, improve styles
This commit is contained in:
parent
3d389b606f
commit
7a4f3128ef
@ -19,7 +19,7 @@ const TopBar = ({
|
||||
color: string
|
||||
}) => {
|
||||
const linkClass = ({ isActive }: { isActive: boolean }) =>
|
||||
isActive ? 'underline font-bold' : ''
|
||||
isActive ? 'underline font-bold' : 'hover:text-gray-600 '
|
||||
|
||||
const [yearGroupId, setYearGroupId] = useLocalStorageState('yearGroupId', {
|
||||
defaultValue: 0,
|
||||
|
181
frontend/src/utils/gradeCard.ts
Normal file
181
frontend/src/utils/gradeCard.ts
Normal file
@ -0,0 +1,181 @@
|
||||
const options = [
|
||||
[
|
||||
'brak prezentacji; niezgłoszona nieobecność członków zespołu',
|
||||
'brak demo systemu; brakuje jednej z wymaganych treści',
|
||||
'jedna z treści niedostatecznie zaprezentowana',
|
||||
'wszystkie treści zaprezentowane poprawnie',
|
||||
],
|
||||
[
|
||||
'brak prezentacji; prezentacja zakończona przez komisję (z powodu innego niż przekroczenie czasu)',
|
||||
'zespół prezentował w sposób nieprofesjonalny, prezentacja była nieczytelna lub trwała powyżej 20 minut; język prezentacji był nieadekwatny/niezrozumiały; brak płynności prezentacji',
|
||||
'prezentacja zgodna ze sztuką; 12-16 minut; demonstracja systemu stanowi istotną część prezentacji',
|
||||
'prezentacja zgodna ze sztuką, angażująca i dostosowana do odbiorców, forma prezentacji dopasowana do prezentowanych treści',
|
||||
],
|
||||
[
|
||||
'brak demonstracji',
|
||||
'demonstracja niespójna; prezentacja kodu niezbędna w celu wyjaśnienia jej działania; brak przygotowania odpowiednich danych do prezentacji',
|
||||
'demonstracja poprawna; demonstracja ze środowiska deweloperskiego; brak elastyczności demonstracji (w tym brak możliwości szybkiego przejścia w aplikacji do określonego stanu)',
|
||||
'demonstracja poprawna ze środowiska zbliżonego do docelowego; odpowiednio przygotowane dane do prezentacji; dobrze określony scenariusz prezentacji; brak zbędnych przestojów w demonstracji;',
|
||||
],
|
||||
[
|
||||
'zespół nie był w stanie udzielić żadnej wiarygodnej odpowiedzi na >1 pytanie',
|
||||
'zespół nie był wstanie udzielić wiarygodnej odpowiedzi na 1 pytanie',
|
||||
'odpowiedzi na niektóre pytania były niewyczerpujące, ale zdowalające',
|
||||
'zespół udzielił wyczerpującej odpowiedzi na wszystkie pytania',
|
||||
],
|
||||
[
|
||||
'brak dokumentu; dokument niezgodny z szablonem',
|
||||
'dokument nie zawiera niektórych wymaganych informacji; przedstawione informacje są błędne/nieprawdziwe; dokument nie pozwala ocenić czy projekt ma sens i jest realizowalny; zespół nie potrafi uzasadnić przydatności projektu',
|
||||
'jeden aspekt dokumentu nie jest wystarczająco opisany (np. projekt nie definiuje grupy docelowej/klienta)',
|
||||
'dokument poprawny',
|
||||
],
|
||||
[
|
||||
'brak dokumentu, dokument niezgodny z szablonem; brak wymagań funkcjonalnych; brak kryteriów akceptacji projektu na oba semestry',
|
||||
'brak weryfikowalnych kryteriów akceptacji projektu na oba semestry; dokument nie zawiera wszystkich wymaganych informacji; przedstawione informacje są błędne/nieprawdziwe; dokument nie odzwierciedla aktualnego stanu projektu; zadeklarowany zakres projektu jest zbyt mały; kryteria akceptacji są nie weryfikowalne; wskażniki wdrożeniowe są niemierzalne',
|
||||
'dokument zaakceptowany przez prowadzącego; jeden aspekt dokumentu nie jest wystarczająco opisany; jedno kryterium akceptacji nie jest weryfikowalne; dokument w większości odzwierciedla aktualny stan projektu; zakres prac przewidziany na poszczególne semestry jest adekwatny',
|
||||
'dokument poprawny; odzwierciedla aktualny stan projektu',
|
||||
],
|
||||
[
|
||||
'brak dokumentacji',
|
||||
'trywialna dokumentacja nie wnosząca dodatkowej wiedzy o systemie',
|
||||
'brak dokumentacji, jeśli takie było wymaganie projektowe/dokumentacja tego typu jest zbędna (wymaga uzasadnienia); poprawna dokumentacja nieprzedstawiona klientowi/grupie docelowej',
|
||||
'poprawnie zredagowana i użyteczna dokumentacja przekazana klientowi/grupie docelowej systemu; dokumentacja w postaci samouczka (np. w grach komputerowych)',
|
||||
],
|
||||
[
|
||||
'brak dokumentacji',
|
||||
'trywialna dokumentacja nie wnosząca dodatkowej wiedzy o systemie',
|
||||
'dokumentacja użyteczna, jednak niekompletna (wyjaśnia wszystkich zasobów niezbędnych do rozpoczęcia pracy z projektem)',
|
||||
'kompletna dokumentacja deweloperska określająca wszystkie zasoby niezbędne do rozpoczęcia pracy nad projektem/jego kontynuacji',
|
||||
],
|
||||
[
|
||||
'brak określenia licencji lub udziału członków zespołu we własności projektu',
|
||||
'prawa własności określone w sposób niewiążący lub nieadekwatny do projektu',
|
||||
'poprawnie określone prawa własności i licencja na projekt',
|
||||
'poprawnie i świadomie określone prawa własności; dołożono starań, aby zapewnić możliwie szeroki dostęp open source (jeśli dotyczy); licencja narzucona przez klienta nie jest krzywdząca dla zespołu',
|
||||
],
|
||||
[
|
||||
'projekt zrealizowano w krótkim czasie poprzedzającym obronę',
|
||||
'projekt realizowano tylko przed kamieniami milowymi; projekt realizowany niezgodnie z harmonogramem',
|
||||
'projekt realizowany był przez cały semestr z różną równomiernością; drobne odstępstwa od harmonogramu',
|
||||
'projekt był realizowany równomiernie przez cały semestr; wszystkie etapy projektu zrealizowane w terminie',
|
||||
],
|
||||
[
|
||||
'tylko jedna osoba w zespole wypracowała liczbę godzin przewidzianą w siatce godzin; w zespole istnieją osoby nie prowadzące prac programistycznych (w II semestrze)',
|
||||
'przynajmniej jedna osoba w zespole nie wypracowała liczby godzin przewidzianej w siatkach godzin',
|
||||
'jedna osoba w zespole ma wyraźnie większy wkład w projekt, ale wszyscy spełniają minimalne kryteria; w zespole istnieją osoby nie prowadzące prac programistycznych (w I semestrze)',
|
||||
'wkład wszystkich członków zespołu jest porównywalny',
|
||||
],
|
||||
[
|
||||
'brak klienta, brak określonej grupy docelowej',
|
||||
'brak regularnego kontaktu z klientem/grupą docelową',
|
||||
'projekt realizowany we współpracy z klientem/grupą docelową (minimum 1 spotkanie w miesiącu), klient zaangażowany w testy akceptacyjne/użyteczności',
|
||||
'klient/grupa docelowa aktywnie zaangażowana w określenie wymagań oraz rozwój oprogramowania; ciągły kontakt z klientem',
|
||||
],
|
||||
[
|
||||
'brak śledzenia zmian w zakresie projektu',
|
||||
'zakres projektu statyczny; dominują modyfikacje zakresu wynikające z błędów w harmonogramie lub możliwości technicznych; zespół nie aktualizuje dokumentów projektowych',
|
||||
'zespół próbuje reagować z wyprzedzeniem na zmiany i nowe ryzyka, nawet w przypadku braku akceptacji ze strony klienta/grupy docelowej/prowadzącego',
|
||||
'zespół elastycznie reaguje na zmiany i nowe ryzyka, w kontakcie z klientem oraz prowadzącym dokonuje istotnych zmian w zakresie projektu w celu dostarczenia optymalnego rozwiązania',
|
||||
],
|
||||
[
|
||||
'brak metodyki; realizacja metodyki zawieszana okresowo; nie wszystkie osoby w zespole podporządkowują się metodyce; brak narzędzi wspierających (np. Jira)',
|
||||
'przyjęta metodyka nie została poprawnie zdefiniowana lub nie ma cech z manifestu Agile; zespół pracuje częściowo w wybranej metodyce; dobrane narzędzia wspierające są nieadekwatne',
|
||||
'zespół pracuje zgodnie z metodyką, realizując jej najważniejsze założenia; wykorzystanie narzędzi wspierających jest tylko częściowe i nie pozwala na zarządzanie całością prac w projekcie',
|
||||
'wybrana metodyka pracy wspierana przez narzędzia informatyczne pozwala na skuteczną kontrolę systematyczności i stanu wykonania zadań w projekcie, reagowanie na zmiany w projekcie, kontrolę czasu spędzonego nad wykonaniem zadań projektowych, planowanie i harmonogramowanie prac, kontrolę jakości tworzonego rozwiązania',
|
||||
],
|
||||
[
|
||||
'brak repozytorium kodu; wymiana kodu poza repozytorium (np. przez email)',
|
||||
'część zespołu korzysta z repozytorium kodu; kod w repozytorium nie odzwierciedla aktualnego stanu projektu',
|
||||
'regularność pracy i równomierne rozłożenie commitów pomiędzy członków zespołu oraz w czasie; zawsze istnieje działająca wersja systemu w repozytorium',
|
||||
'regularność pracy i równomierne rozłożenie commitów pomiędzy członków zespołu oraz w czasie; korzystanie z code review; rozsądne zarządzanie branchami (lub pochodnymi)',
|
||||
],
|
||||
[
|
||||
'system wydany/wdrożony tylko na potrzeby prezentacji lub wcale',
|
||||
'więcej niż jedno wydanie w semestrze, brak automatyzacji',
|
||||
'regularne wydania/wdrożenia, tylko część procesów jest zautomatyzowana',
|
||||
'projekt realizowany zgodnie z modelem DevOps: ciągła integracja, regularne wydania, automatyzacja wdrożenia',
|
||||
],
|
||||
[
|
||||
'projekt mało złożony zarówno technicznie, jak i funkcjonalnie; projekt mogłaby zrealizować jedna osoba w ciągu trwania przedmiotu; niska jakość produktu projektu pomimo jego małego rozmiaru',
|
||||
'projekt mało złożony zarówno technicznie, jak i funkcjonalnie, ale akceptowalny dla zespołu mniejszego o jedną osobę; projekt zbyt rozbudowany jak na projekt inżynierski (niewykonalny); projekt za 3 punkty ale niskiej jakości',
|
||||
'projekt mało złożony funkcjonalnie względem rozmiaru grupy, ale obejmuje kilka różnych platform/warstw (przynajmniej 1 na osobę); projekt za 1 punkt ale wysokiej jakości; projekt za 4 punty ale niskiej jakości',
|
||||
'złożoność odpowiednia dla zespołu; projekt za 3 punkty ale wysokiej jakości',
|
||||
],
|
||||
[
|
||||
'brak dostępu/system nie działa u członków komisji',
|
||||
'zapewniono dostęp do systemu; komisja wykryła istotne błędy w systemie',
|
||||
'dostęp ograniczony do urządzeń zapewnionych przez zespół; brak istotnych błędów wykrytych przez komisję',
|
||||
'dostęp na urządzeniach komisji (jeśli taka możliwość wynika z charakteru projektu); brak błędów wykrytych przez komisję',
|
||||
],
|
||||
[
|
||||
'brak dostępu do systemu dla komisji; istotne uchybienia w zakresie bezpieczeństwa (np. brak kontroli dostępu, niezgodne ze sztuką zabezpieczenie haseł, SQL Injection); błędy uniemożliwiające korzystanie z systemu (kluczowa funkcjonalność systemu nie działa)',
|
||||
'brak walidacji danych; błędy istotnie utrudniające korzystanie z systemu (np. brak responsywności systemu); brak HTTPS (jeśli dotyczy)',
|
||||
'system nie jest odporny na ataki złośliwego użytkownika; występuje okresowa nieresponsywność systemu',
|
||||
'brak wykrytych błędów krytycznych',
|
||||
],
|
||||
[
|
||||
'brak dostępu/system nie działa u członków komisji',
|
||||
'zapewniono dostęp do systemu; komisja wykryła istotne błędy w systemie',
|
||||
'brak istotnych błędów wykrytych przez komisję; zapewnienie dostępu do systemu nie jest możliwe (np: projekt obejmuje urządzenie fizyczne; zgoda wymaga akceptacji komisji)',
|
||||
'brak błędów wykrytych przez komisję; wysoka responsywność oraz dostępnosć systemu;',
|
||||
],
|
||||
[
|
||||
'niespełniono wymaganych kryteriów akceptacji',
|
||||
'spełniono wymagane kryteria akceptacji, ale nie spełniono kryteriów oczekiwanych',
|
||||
'spełniono oczekiwane kryteria akceptacji',
|
||||
'spełniono wszystkie zadeklarowane kryteria akceptacji (w tym planowane)',
|
||||
],
|
||||
[
|
||||
'brakuje istotnych funkcjonalności; nie zrealizowano przynajmniej połowy założonych funkcjonalności',
|
||||
'brakuje istotnych funkcjonalności',
|
||||
'zrealizowano wszystkie kluczowe funkcjonalności, oraz przynajmniej 85% pozostałych',
|
||||
'zrealizowano wszystkie założone funkcjonalności',
|
||||
],
|
||||
[
|
||||
'zespół nie potrafi uzasadnić przydatności projektu; zespół projektowy nie daje gwarancji realizacji kluczowych części projektu w czasie trwania przedmiotu; projekt nie daje możliwości zaliczenia PRI',
|
||||
'istnieją uzasadnione obawy co do tego, czy projekt ma szanse zostać zrealizowany w czasie trwania przedmiotu; przedstawiony zakres projektu jest bardzo mały i wymaga rozszerzenia',
|
||||
'kierunek rozwoju projektu nie odpowiada oczekiwaniom i wymaganiom przedmiotu, ale jest spójny',
|
||||
'projekt rokuje na dalszy rozwój po zakończeniu przedmiotu; zespół jest gwarantem zakończenia projektu w czasie; rozmiar całości projektu jest adekwatny do wymagań',
|
||||
],
|
||||
[
|
||||
'projekt nie nadaje się do wdrożenia',
|
||||
'projekt nie został wdrożony; nie spełniono przynajmniej jednego wskaźnika wdrożeniowego ',
|
||||
'projekt wdrożony bez sukcesu (brak rzeczywistych użytkowników); spełnienie wszystkich wskaźników wdrożeniowych; wartości niektórych wskaźników nie są obiektywnie weryfikowalne',
|
||||
'projekt wdrożony z sukcesem (rzeczywiści użytkownicy); spełnienie wszystkich wskaźników wdrożeniowych; wartości wszystkich wskaźników są obiektywnie weryfikowalne',
|
||||
],
|
||||
[
|
||||
'system nie przydatny dla grupy docelowej; brak użyteczności interfejsu oraz jej testów',
|
||||
'niska przydatność dla grupy docelowej; brak użyteczności interfejsu stwierdzona na obronie mimo przeprowadzenia testów przez zespół; średnia użyteczność interfejsu i brak testów użyteczności',
|
||||
'dobra użyteczność systemu przy braku testów; interfejs zgodny z przyjętymi standardami',
|
||||
'dobra użyteczność lub wiarygodne testy użyteczności (w tym raporty z testów); projekt rozwiązuje rzeczywiste problemy grupy docelowej',
|
||||
],
|
||||
[
|
||||
'brak prototypu',
|
||||
'prototyp nieprzydatny, niezgodny ze specyfiką projektu, nieodpowiadający zaprezentowanemu projektowi',
|
||||
'prototyp stworzony na własne potrzeby; częściowo wykorzystany przy tworzeniu docelowego interfejsu systemu',
|
||||
'prototyp adekwatny do projektu, skonsultowany pozytywnie z klientem/grupą docelową i wykorzystany przy tworzeniu docelowego interfejsu systemu',
|
||||
],
|
||||
[
|
||||
'nie przeprowadzono żadnych wiarygodnych testów; brak raportów z testów',
|
||||
'przetestowano co najwyżej jeden obszar; przygotowane raporty z testów; przykładowo same testy jednostkowe lub same testy akceptacyjne',
|
||||
'przetestowano trzy obszary; przygotowane raporty z testów; niektóre z przeprowadzonych testów nie były w pełni zautomatyzowane; przykładowo testy akceptacyjne, jednostowe oraz analiza statyczna jakości kodu',
|
||||
'przetestowano różnorodne obszary z wykorzystaniem mechanizmów automartyzacji testów; przygotowana pełna dokumentacja potestowa; przykładowo testy jednostkowe, akceptacyjne i obciążeniowe',
|
||||
],
|
||||
[
|
||||
'brak widocznej organizacji kodu; brak przemyślanej architektury systemu',
|
||||
'architektura nieadekwatna do problemu; niestosowny dobór technologii i narzędzi',
|
||||
'architektura poprawna, lecz nieudokumentowana; popełniono pewne błędy w projektowaniu oprogramowania',
|
||||
'architektura poprawna i udokumentowana; odpowiadająca docelowemu obciążeniu systemu',
|
||||
],
|
||||
]
|
||||
|
||||
const grades = ['0', '1', '3', '4']
|
||||
|
||||
export const gradeOptions = options.map((optionsArray) => {
|
||||
return optionsArray.map((o, index) => {
|
||||
return {
|
||||
value: grades[index],
|
||||
label: o,
|
||||
}
|
||||
})
|
||||
})
|
File diff suppressed because it is too large
Load Diff
@ -123,9 +123,22 @@ const Groups = () => {
|
||||
<td>{points_for_first_term}</td>
|
||||
<td>{points_for_second_term}</td>
|
||||
<td>
|
||||
<button onClick={() => mutateDelete(id)}>
|
||||
<IconRemove />
|
||||
</button>
|
||||
<div className="flex align-center gap-2">
|
||||
<Link
|
||||
to={`/${
|
||||
location.pathname.includes('coordinator')
|
||||
? 'coordinator'
|
||||
: 'supervisor'
|
||||
}/groups/${id}/grade-card`}
|
||||
>
|
||||
<button className="btn btn-xs btn-success ">
|
||||
KARTA OCENY
|
||||
</button>
|
||||
</Link>
|
||||
<button onClick={() => mutateDelete(id)}>
|
||||
<IconRemove />
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
),
|
||||
|
@ -83,20 +83,24 @@ const Schedules = () => {
|
||||
<button className="btn btn-success mt-4">Stwórz zapisy</button>
|
||||
</form>
|
||||
<h2 className="text-2xl font-bold mb-2">Wybierz zapisy:</h2>
|
||||
{schedules &&
|
||||
schedules?.data?.examination_schedules.map((schedule) => (
|
||||
<h3 className="text-xl " key={schedule.title}>
|
||||
-{' '}
|
||||
<Link
|
||||
to={`/coordinator/schedule/${schedule.id}`}
|
||||
onClick={() => {
|
||||
setScheduleData(schedule)
|
||||
}}
|
||||
<ul className="list-disc list-inside">
|
||||
{schedules &&
|
||||
schedules?.data?.examination_schedules.map((schedule) => (
|
||||
<li
|
||||
className="text-xl underline underline-offset-2 decoration-success "
|
||||
key={schedule.title}
|
||||
>
|
||||
{schedule.title}
|
||||
</Link>
|
||||
</h3>
|
||||
))}
|
||||
<Link
|
||||
to={`/coordinator/schedule/${schedule.id}`}
|
||||
onClick={() => {
|
||||
setScheduleData(schedule)
|
||||
}}
|
||||
>
|
||||
{schedule.title}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -13,15 +13,19 @@ const SupervisorAvailabilities = () => {
|
||||
return (
|
||||
<div>
|
||||
<h2 className="text-2xl font-bold mb-2">Wybierz zapisy:</h2>
|
||||
{schedules &&
|
||||
schedules?.data?.examination_schedules.map((schedule) => (
|
||||
<h3 className="text-xl" key={schedule.title}>
|
||||
-{' '}
|
||||
<Link to={`/coordinator/supervisors_availability/${schedule.id}`}>
|
||||
{schedule.title}
|
||||
</Link>
|
||||
</h3>
|
||||
))}
|
||||
<ul className="list-disc list-inside">
|
||||
{schedules &&
|
||||
schedules?.data?.examination_schedules.map((schedule) => (
|
||||
<li
|
||||
className="text-xl underline underline-offset-2 decoration-success "
|
||||
key={schedule.title}
|
||||
>
|
||||
<Link to={`/coordinator/supervisors_availability/${schedule.id}`}>
|
||||
{schedule.title}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -128,9 +128,22 @@ const SupervisorGroups = () => {
|
||||
<td>{points_for_first_term}</td>
|
||||
<td>{points_for_second_term}</td>
|
||||
<td>
|
||||
<button onClick={() => mutateDelete(id)}>
|
||||
<IconRemove />
|
||||
</button>
|
||||
<div className="flex align-center gap-2">
|
||||
<Link
|
||||
to={`/${
|
||||
location.pathname.includes('coordinator')
|
||||
? 'coordinator'
|
||||
: 'supervisor'
|
||||
}/groups/${id}/grade-card`}
|
||||
>
|
||||
<button className="btn btn-xs btn-success ">
|
||||
KARTA OCENY
|
||||
</button>
|
||||
</Link>
|
||||
<button onClick={() => mutateDelete(id)}>
|
||||
<IconRemove />
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
),
|
||||
|
@ -13,15 +13,19 @@ const SupervisorSchedules = () => {
|
||||
return (
|
||||
<div>
|
||||
<h2 className="text-2xl font-bold mb-2">Wybierz zapisy:</h2>
|
||||
{schedules &&
|
||||
schedules?.data?.examination_schedules.map((schedule) => (
|
||||
<h3 className="text-xl" key={schedule.title}>
|
||||
-{' '}
|
||||
<Link to={`/supervisor/schedule/${schedule.id}`}>
|
||||
{schedule.title}
|
||||
</Link>
|
||||
</h3>
|
||||
))}
|
||||
<ul className="list-disc list-inside">
|
||||
{schedules &&
|
||||
schedules?.data?.examination_schedules.map((schedule) => (
|
||||
<li
|
||||
className="text-xl underline underline-offset-2 decoration-success "
|
||||
key={schedule.title}
|
||||
>
|
||||
<Link to={`/supervisor/schedule/${schedule.id}`}>
|
||||
{schedule.title}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user