Compare commits

..

7 Commits

Author SHA1 Message Date
Simeon Pursiainen 6494647ec9 Merge branch 'master' into 'New_visual'
# Conflicts:
#   src/components/Navigation.tsx
2025-09-11 20:37:57 +03:00
SimeonPursiainen 3e7cd87f97 Fixed mobile scrolling + 404 site not found 2025-09-11 20:34:19 +03:00
SimeonPursiainen 1f72bfbf05 Changes to page setup 2025-09-11 19:57:40 +03:00
jadera eb1348445f removed social links from navbar to footer, cleaned up navbar on mobile 2025-09-11 00:18:13 +03:00
jadera dc1d641c17 teipattu mobile menu scrollaus takas. syypää on blockscroll.tsx ja tää teippaa sen 2025-09-10 22:21:30 +03:00
jadera 45dc2ed3b8 rako poistettu navigationin dropdown hommeli 2025-09-10 22:20:28 +03:00
Justus Ojala 7c23bc5103 Moved new student stuff under new dropdown 2025-09-10 17:14:45 +03:00
12 changed files with 101 additions and 1182 deletions
-1
View File
@@ -1,4 +1,3 @@
NEXT_PUBLIC_DEPLOY_ENV=local
NEXT_PUBLIC_API_URL=https://api.dev.sahkoinsinoorikilta.fi/api
NEXT_PUBLIC_SITE_URL=https://dev.sahkoinsinoorikilta.fi
NEXT_MQTT_HOST=mqtt.dev.sahkoinsinoorikilta.fi
+59 -999
View File
File diff suppressed because it is too large Load Diff
+1 -3
View File
@@ -72,7 +72,6 @@
"fast-deep-equal": "^3.1.3",
"js-cookie": "^3.0.1",
"lodash": "^4.17.21",
"mqtt": "^5.14.1",
"next": "^13.1.6",
"normalize.css": "^8.0.1",
"react": "^18.2.0",
@@ -90,8 +89,7 @@
"sharp": "^0.30.3",
"shortid": "^2.2.16",
"styled-components": "^5.3.5",
"swr": "^1.2.2",
"uuid": "^13.0.0"
"swr": "^1.2.2"
},
"overrides": {
"react-mde": {
-1
View File
@@ -43,7 +43,6 @@ const StyledCard = styled.article`
}
h3 {
hyphens: auto;
padding: 0.5rem;
font-size: 1.5rem;
font-weight: 300;
+1 -2
View File
@@ -1,8 +1,7 @@
import { OptionTypes } from "@components/Widgets/SignupQuestionsWidget/common";
export interface Signup {
id?: number; // Database id for completed signup
submit_id?: string; // Signup request idempotency key
id?: number;
signupForm_id: number;
answer: string;
}
-18
View File
@@ -1,18 +0,0 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import GuildroomPageView from "@views/GuildroomPage/GuildroomPageView";
import PageWrapper from "@views/common/PageWrapper";
const GuildroomPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/guildroom`} />
</Head>
<PageWrapper>
<GuildroomPageView />
</PageWrapper>
</>
);
export default GuildroomPage;
-3
View File
@@ -13,7 +13,6 @@ import PageWrapper from "@views/common/PageWrapper";
import LoadingView from "@views/common/LoadingView";
import noop from "@utils/noop";
import NotFoundPage from "@pages/404";
import { v4 as uuid } from "uuid";
type InitialProps = {
initialForm: SignupForm;
@@ -24,7 +23,6 @@ const FORM_URL = `${process.env.NEXT_PUBLIC_API_URL}/signupForm/`;
const SignUpPage: NextPage<InitialProps> = ({ initialForm }) => {
const router = useRouter();
const id = String(initialForm?.id ?? "");
const SUBMIT_ID = uuid(); // Submission key, generated on page refresh
const URL = `${FORM_URL}${id}/`;
const { data: signupForm, error } = useSWR<SignupForm>(URL, (url) => axios.get(url).then((res) => res.data), { fallbackData: initialForm });
@@ -45,7 +43,6 @@ const SignUpPage: NextPage<InitialProps> = ({ initialForm }) => {
const onSubmit = async ({ formData }: ISubmitEvent<string>) => {
const payload: Signup = {
submit_id: SUBMIT_ID, // This is for preventing duplicate requests; NOT RELATED TO THE SIGNUP ID IN DATABASE
signupForm_id: signupForm.id,
answer: formData,
};
+38 -38
View File
@@ -8,10 +8,10 @@
"name_en": "Chairman of the Board",
"representatives": [
{
"name": "Sauli Hakala",
"name": "Emma Uusküla",
"phone_number": null,
"email": "sauli.hakala@sahkoinsinoorikilta.fi",
"image": ""
"email": "emma.uuskula@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Emma.jpg"
}
]
},
@@ -20,10 +20,10 @@
"name_en": "Vice Chair",
"representatives": [
{
"name": "Eemeli Hintsanen",
"name": "Johannes Viirimäki",
"phone_number": null,
"email": "eemeli.hintsanen@sahkoinsinoorikilta.fi",
"image": ""
"email": "johannes.viirimaki@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Johannes.jpg"
}
]
},
@@ -32,10 +32,10 @@
"name_en": "Treasurer",
"representatives": [
{
"name": "Nea Kanerva",
"name": "Nelli Liljasto",
"phone_number": null,
"email": "nea.kanerva@sahkoinsinoorikilta.fi",
"image": ""
"email": "nelli.liljasto@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Nelli.jpg"
}
]
},
@@ -44,10 +44,10 @@
"name_en": "",
"representatives": [
{
"name": "Aura Friman",
"name": "Teemu Heikkinen",
"phone_number": null,
"email": "aura.friman@sahkoinsinoorikilta.fi",
"image": ""
"email": "teemu.heikkinen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Teemu.jpg"
}
]
},
@@ -56,10 +56,10 @@
"name_en": "",
"representatives": [
{
"name": "Antti Salpakari",
"name": "Henri Aito",
"phone_number": null,
"email": "antti.salpakari@sahkoinsinoorikilta.fi",
"image": ""
"email": "henri.aito@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Henri.jpg"
}
]
},
@@ -68,10 +68,10 @@
"name_en": "",
"representatives": [
{
"name": "Aino Saarela",
"name": "Tuomas Rantamäki",
"phone_number": null,
"email": "aino.saarela@sahkoinsinoorikilta.fi",
"image": ""
"email": "tuomas.rantamaki@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/TuomasR.jpg"
}
]
},
@@ -80,10 +80,10 @@
"name_en": "",
"representatives": [
{
"name": "Rosanna Reims",
"name": "Matilda Ahonen",
"phone_number": null,
"email": "rosanna.reims@sahkoinsinoorikilta.fi",
"image": ""
"email": "matilda.ahonen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Matilda.jpg"
}
]
},
@@ -92,9 +92,9 @@
"name_en": "",
"representatives": [
{
"name": "Valentin Juhela",
"name": "Niklas Ritalahti",
"phone_number": null,
"email": "valentin.juhela@sahkoinsinoorikilta.fi",
"email": "niklas.ritalahti@sahkoinsinoorikilta.fi",
"image": ""
}
]
@@ -104,10 +104,10 @@
"name_en": "",
"representatives": [
{
"name": "Elida Widgren",
"name": "Mikael Vatiainen",
"phone_number": null,
"email": "elida.widgren@sahkoinsinoorikilta.fi",
"image": ""
"email": "mikael.vatiainen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Mikael.jpg"
}
]
},
@@ -116,10 +116,10 @@
"name_en": "",
"representatives": [
{
"name": "Joona Maaranen",
"name": "Simeon Pursiainen",
"phone_number": null,
"email": "joona.maaranen@sahkoinsinoorikilta.fi",
"image": ""
"email": "simeon.pursiainen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Simeon.jpg"
}
]
},
@@ -128,10 +128,10 @@
"name_en": "",
"representatives": [
{
"name": "Jere Oinonen",
"name": "Markus Aaltio",
"phone_number": null,
"email": "jere.oinonen@sahkoinsinoorikilta.fi",
"image": ""
"email": "markus.aaltio@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Markus.jpg"
}
]
},
@@ -140,10 +140,10 @@
"name_en": "",
"representatives": [
{
"name": "Into Saarinen",
"name": "Tuomas Hintikka",
"phone_number": null,
"email": "into.saarinen@sahkoinsinoorikilta.fi",
"image": ""
"email": "tuomas.hintikka@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/TuomasH.jpg"
}
]
},
@@ -152,10 +152,10 @@
"name_en": "",
"representatives": [
{
"name": "Aino Svahn",
"name": "Yassine Ramid",
"phone_number": null,
"email": "aino.svahn@sahkoinsinoorikilta.fi",
"image": ""
"email": "yassine.ramid@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/Yassine.jpg"
}
]
}
+1 -1
View File
@@ -54,7 +54,7 @@
"name_en": "Guild Room Representative",
"representatives": [
{
"name": "Milja Kuusela"
"name": "Justus Ojala"
},
{
"name": "Aaro Rasilainen"
+1 -1
View File
@@ -30,7 +30,7 @@ const FrontPageHero: React.FC = () => (
<HeroAsideItem
header="Vasta-aloittaneelle opiskelijalle"
text="Fuksikasvatusta ja ISOtoimintaa"
link="/newStudent/fuksi"
link="/kilta/fuksi"
linkText="Fuksit&nbsp; "
/>
<HeroAsideItem
@@ -1,97 +0,0 @@
import { useState, useEffect } from "react";
import mqtt from "mqtt";
import { TextSection } from "@components/index";
import styled from "styled-components";
const CoffeeTitle = styled.div`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 3rem;
font-weight: bold;
`;
const Cups = styled.div`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 7rem;
font-variant-numeric: tabular-nums;
`;
const Time = styled.div`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 1rem;
`;
const GuildroomView = () => {
const [brewing, setBrewing] = useState<boolean>(false);
const [time, setTime] = useState<number>(0);
const [cups, setCups] = useState<number>(0);
const [client, setClient] = useState<mqtt.MqttClient | null>(null);
const [status, setStatus] = useState<boolean>(false);
useEffect(() => {
setStatus(false);
if (process.env.NEXT_PUBLIC_MQTT_HOST) {
setClient(mqtt.connect(`wss://${process.env.NEXT_PUBLIC_MQTT_HOST}`));
} else {
console.error("MQTT host undefined");
}
}, []);
useEffect(() => {
if (client) {
client.on("connect", () => {
setStatus(true);
client.subscribe("sik/kiltahuone/kahvivaaka/#", (err) => {
if (!err) {
console.log("Connected to MQTT server!");
}
});
});
client.on("error", (err) => {
console.error("Connection error: ", err);
client.end();
});
client.on("reconnect", () => {
setStatus(false);
});
client.on("offline", () => {
setStatus(false);
});
client.on("message", (topic, message) => {
if (topic === "sik/kiltahuone/kahvivaaka/cups") {
setCups(Number(message.toString()));
}
if (topic === "sik/kiltahuone/kahvivaaka/brewtime") {
setTime(Number(message.toString()));
}
if (topic === "sik/kiltahuone/kahvivaaka/brewing") {
setBrewing(Boolean(message.toString()));
}
});
}
}, [client]);
if (!status) {
return (
<CoffeeTitle style={{ margin: "10%" }}>NO MQTT CONNECTION</CoffeeTitle>
);
}
return (
<div style={{ margin: "10%" }}>
<CoffeeTitle>{brewing ? "Brewing more..." : "Cups left"}</CoffeeTitle>
<Cups>{cups}</Cups>
<Time>Brewed {time} min ago</Time>
</div>
);
};
export default GuildroomView;
@@ -19,19 +19,6 @@ const MembershipPageView: React.FC = () => (
Killan ulkojäseneksi voidaan hyväksyä jäsenmaksun maksanut henkilö, joita ei voida hyväksyä varsinaiseksi jäseneksi.
Killan kannatusjäseneksi voidaan hyväksyä henkilö tai yhteisö, joka haluaa tukea killan toimintaa.
</p>
<p>
Killan sääntöjen mukaan jäsenmaksuista määrätään seuraavasti:
<br />
</p>
<p>
<h5>8 § Jäsenmaksut</h5>
<br />
Jäsenet ovat velvollisia suorittamaan lukuvuosittain killalle jäsenmaksun.
Kunniajäsenet ovat vapautettuja jäsenmaksuista.
</p>
<p>
Jäsenmaksujen suuruudet määrää killan yleinen kokous.
</p>
<h6 id="jasenmaksu">Jäsenmaksu</h6>
<p>
@@ -49,11 +36,6 @@ const MembershipPageView: React.FC = () => (
Jäsenrekisterin tietosuojaseloste
</Link>
</p>
<p>
<Link to="https://static.sahkoinsinoorikilta.fi/saannot/killansaannot.pdf">
Killan säännöt
</Link>
</p>
</div>
</TextSection>
</>