From 7a4f3128ef2fefa9fcb4c5ccefff93028e6a4127 Mon Sep 17 00:00:00 2001 From: adam-skowronek Date: Fri, 13 Jan 2023 03:59:54 +0100 Subject: [PATCH] Update GradeCard, improve styles --- frontend/src/components/TopBar.tsx | 2 +- frontend/src/utils/gradeCard.ts | 181 +++ frontend/src/views/GradeCard.tsx | 1175 +++++++++++++---- .../views/coordinator/CoordinatorGroups.tsx | 19 +- frontend/src/views/coordinator/Schedules.tsx | 30 +- .../coordinator/SupervisorAvailabilities.tsx | 22 +- .../src/views/supervisor/SupervisorGroups.tsx | 19 +- .../views/supervisor/SupervisorSchedules.tsx | 22 +- 8 files changed, 1187 insertions(+), 283 deletions(-) create mode 100644 frontend/src/utils/gradeCard.ts diff --git a/frontend/src/components/TopBar.tsx b/frontend/src/components/TopBar.tsx index 1592d4f..2853c18 100644 --- a/frontend/src/components/TopBar.tsx +++ b/frontend/src/components/TopBar.tsx @@ -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, diff --git a/frontend/src/utils/gradeCard.ts b/frontend/src/utils/gradeCard.ts new file mode 100644 index 0000000..4fd03b0 --- /dev/null +++ b/frontend/src/utils/gradeCard.ts @@ -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, + } + }) +}) diff --git a/frontend/src/views/GradeCard.tsx b/frontend/src/views/GradeCard.tsx index dedde77..52d2d17 100644 --- a/frontend/src/views/GradeCard.tsx +++ b/frontend/src/views/GradeCard.tsx @@ -1,16 +1,19 @@ -import { useForm } from 'react-hook-form' +import { useEffect } from 'react' +import { useForm, Controller } from 'react-hook-form' import { useMutation, useQuery } from 'react-query' import { useParams } from 'react-router-dom' +import ReactSelect from 'react-select' import useLocalStorageState from 'use-local-storage-state' import { getGradesForSupervisor, updateGradesFirstTerm, updateGradesSecondTerm, } from '../api/grades' -import styles from './GradeCard.module.css' // Import css modules stylesheet as styles +import { gradeOptions } from '../utils/gradeCard' +import styles from './GradeCard.module.css' const GradeCard = () => { - const { register, handleSubmit, setValue } = useForm() + const { register, handleSubmit, setValue, control, formState } = useForm() const { id } = useParams<{ id: string }>() const [supervisorId] = useLocalStorageState('userId') @@ -61,6 +64,82 @@ const GradeCard = () => { mutateGradesFirstTerm(firstTermGrades) mutateGradesSecondTerm(secondTermGrades) } + // const data = useWatch(getValues()) + + useEffect(() => { + console.log(formState) + }, [formState]) + + const gradeColor: { [key: number]: string } = { + 0: '#f8696b', + 1: 'orange', + 3: '#9cec9c', + 4: '#63BE7B', + } + + // const CustomSelect = ({ + // options, + // onChange, + // value, + // }: { + // value: number + // options: { + // value: string + // label: string + // }[] + // onChange: (...event: any[]) => void + // }) => { + // return ( + // Number(v.value) === value)?.label} + // onChange={(val) => onChange(val?.value)} + // styles={{ + // control: (styles) => ({ + // ...styles, + // padding: '0.3rem', + // borderRadius: '0.5rem', + // width: '300px', + // borderColor: gradeColor[value], + // borderWidth: 3, + // }), + // singleValue: (styles) => ({ + // ...styles, + // overflow: 'visible', + // textOverflow: 'initial', + // whiteSpace: 'initial', + // }), + // placeholder: (styles) => ({ + // ...styles, + // color: 'black', + // }), + // }} + // /> + // ) + // } + const getStyles = (value: number) => { + return { + control: (styles: any) => ({ + ...styles, + padding: '0.3rem', + borderRadius: '0.5rem', + width: '300px', + borderColor: gradeColor[value], + borderWidth: 3, + }), + singleValue: (styles: any) => ({ + ...styles, + overflow: 'visible', + textOverflow: 'initial', + whiteSpace: 'initial', + }), + placeholder: (styles: any) => ({ + ...styles, + color: 'black', + }), + } + } return (
@@ -74,10 +153,8 @@ const GradeCard = () => { Kryterium Waga I semestr Waga II semestr - Punkty I semestr [0,1,3,4] - Punkty II semestr [0,1,3,4] - Udział I - Udział II + Punkty I semestr + Punkty II semestr @@ -89,8 +166,6 @@ const GradeCard = () => { 1,5     -   -   @@ -103,19 +178,41 @@ const GradeCard = () => { 3 1 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 3,5% - 1,2% @@ -126,19 +223,41 @@ const GradeCard = () => { 4 4 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 4,6% - 4,6% @@ -147,19 +266,41 @@ const GradeCard = () => { 4 6 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 4,6% - 6,9% @@ -169,25 +310,41 @@ const GradeCard = () => { 2 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> )} /> - 2,3% - 2,3% {/* */} @@ -199,151 +356,304 @@ const GradeCard = () => { 1 -   -   Dokument wizji projektu * 3 0 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 7,5% - 0,0% Dokument wymagań projektowych * 3 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 7,5% - 2,9% Dokumentacja dla klienta/grupy docelowej/użytkownika 0 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 0,0% - 2,9% Dokumentacja deweloperska 1 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 2,5% - 2,9% Licencja i podział praw własności 1 1 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 2,5% - 1,4% {/* */} - Praca grupy w semestrze + + {' '} +

Praca grupy w semestrze

+ 3 3     -   -   Systematyczność pracy w semestrze * 5 5 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 7,9% - 6,5% Podział prac w semestrze * (obowiązkowe w II sem) 3 3 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 4,7% - 3,9% @@ -352,99 +662,216 @@ const GradeCard = () => { 4 4 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 6,3% - 5,2% Zarządzanie ryzykiem i zakresem projektu 2 3 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 3,2% - 3,9% Metodyka pracy i narzędzia ją wspierające * 3 3 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 4,7% - 3,9% Zarządzanie kodem źródłowym * 2 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 3,2% - 2,6% DevOps 0 3 - + ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} + /> - + ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} + />{' '} - 0,0% - 3,9% {/* */} - Produkty projektu + + {' '} +

Produkty projektu

+ 3,5 4,5     -   -   @@ -454,19 +881,41 @@ const GradeCard = () => { 3 5 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 4,8% - 6,6% @@ -477,19 +926,41 @@ const GradeCard = () => { 1 1 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 1,6% - 1,3% @@ -500,19 +971,41 @@ const GradeCard = () => { 0 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 0,0% - 2,6% @@ -522,44 +1015,82 @@ const GradeCard = () => { 0 5 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> )} /> - 0,0% - 6,6% Spełnienie kryteriów akceptacji * 5 5 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 8,0% - 6,6% @@ -569,57 +1100,123 @@ const GradeCard = () => { 2 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 3,2% - 2,6% Czy projekt dobrze rokuje? 5 0 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 8,0% - 0,0% Czy projekt został wdrożony? 0 3 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 0,0% - 4,0% @@ -629,38 +1226,82 @@ const GradeCard = () => { 3 5 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 4,8% - 6,6% Czy przygotowano prototyp projektu zgodnie ze sztuką? * 2 0 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 3,2% - 0,0% @@ -672,19 +1313,41 @@ const GradeCard = () => { 0 4 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 0,0% - 5,3% @@ -694,19 +1357,41 @@ const GradeCard = () => { 1 2 - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - ( + Number(v.value) === value) + ?.label + } + closeMenuOnSelect={true} + onChange={(val) => onChange(val?.value)} + styles={getStyles(value)} + /> + )} /> - 1,6% - 2,6% diff --git a/frontend/src/views/coordinator/CoordinatorGroups.tsx b/frontend/src/views/coordinator/CoordinatorGroups.tsx index b422461..802fe8c 100644 --- a/frontend/src/views/coordinator/CoordinatorGroups.tsx +++ b/frontend/src/views/coordinator/CoordinatorGroups.tsx @@ -123,9 +123,22 @@ const Groups = () => { {points_for_first_term} {points_for_second_term} - +
+ + + + +
), diff --git a/frontend/src/views/coordinator/Schedules.tsx b/frontend/src/views/coordinator/Schedules.tsx index 459f02c..89ed936 100644 --- a/frontend/src/views/coordinator/Schedules.tsx +++ b/frontend/src/views/coordinator/Schedules.tsx @@ -83,20 +83,24 @@ const Schedules = () => {

Wybierz zapisy:

- {schedules && - schedules?.data?.examination_schedules.map((schedule) => ( -

- -{' '} - { - setScheduleData(schedule) - }} +
    + {schedules && + schedules?.data?.examination_schedules.map((schedule) => ( +
  • - {schedule.title} - -

- ))} + { + setScheduleData(schedule) + }} + > + {schedule.title} + + + ))} +
) } diff --git a/frontend/src/views/coordinator/SupervisorAvailabilities.tsx b/frontend/src/views/coordinator/SupervisorAvailabilities.tsx index f7fca07..031eb22 100644 --- a/frontend/src/views/coordinator/SupervisorAvailabilities.tsx +++ b/frontend/src/views/coordinator/SupervisorAvailabilities.tsx @@ -13,15 +13,19 @@ const SupervisorAvailabilities = () => { return (

Wybierz zapisy:

- {schedules && - schedules?.data?.examination_schedules.map((schedule) => ( -

- -{' '} - - {schedule.title} - -

- ))} +
    + {schedules && + schedules?.data?.examination_schedules.map((schedule) => ( +
  • + + {schedule.title} + +
  • + ))} +
) } diff --git a/frontend/src/views/supervisor/SupervisorGroups.tsx b/frontend/src/views/supervisor/SupervisorGroups.tsx index 3dd969a..9cdd8fc 100644 --- a/frontend/src/views/supervisor/SupervisorGroups.tsx +++ b/frontend/src/views/supervisor/SupervisorGroups.tsx @@ -128,9 +128,22 @@ const SupervisorGroups = () => { {points_for_first_term} {points_for_second_term} - +
+ + + + +
), diff --git a/frontend/src/views/supervisor/SupervisorSchedules.tsx b/frontend/src/views/supervisor/SupervisorSchedules.tsx index 589762d..8bf9680 100644 --- a/frontend/src/views/supervisor/SupervisorSchedules.tsx +++ b/frontend/src/views/supervisor/SupervisorSchedules.tsx @@ -13,15 +13,19 @@ const SupervisorSchedules = () => { return (

Wybierz zapisy:

- {schedules && - schedules?.data?.examination_schedules.map((schedule) => ( -

- -{' '} - - {schedule.title} - -

- ))} +
    + {schedules && + schedules?.data?.examination_schedules.map((schedule) => ( +
  • + + {schedule.title} + +
  • + ))} +
) }