Compare commits

..

18 Commits

Author SHA1 Message Date
Justus Ojala d580af1f01 Update guild room custodians
(cherry picked from commit 42ce058dc9)

Co-authored-by: Justus Ojala <justus.ojala@aalto.fi>
2025-09-24 21:04:32 +03:00
Simeon Pursiainen 3c72152704 Merge branch 'textFix' into 'production'
Textfix

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!191
2025-09-24 13:00:08 +03:00
SimeonPursiainen 2ad2907f5f Fixup 2025-09-23 21:27:48 +03:00
SimeonPursiainen f61fc155a8 Updated membership fee payment info 2025-09-23 21:18:20 +03:00
Simeon Pursiainen 802b308826 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!188
2025-09-11 21:21:13 +03:00
Simeon Pursiainen e4784e1932 Master 2025-09-11 21:21:13 +03:00
Simeon Pursiainen c015f0a275 Merge branch 'master' into 'production'
touch d'andre

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!185
2025-09-09 19:18:11 +03:00
Simeon Pursiainen 6a9cb63cff touch d'andre 2025-09-09 19:18:11 +03:00
Simeon Pursiainen 5007d443e7 Merge branch 'master' into 'production'
Fixup

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!184
2025-09-09 14:42:39 +03:00
Simeon Pursiainen 648c49582e Merge branch 'master' into 'production'
Changed instructions for job ads

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!183
2025-09-05 12:30:03 +03:00
Simeon Pursiainen c50a09c691 Merge branch 'master' into 'production'
added new media card for sosso

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!182
2025-09-02 16:55:36 +03:00
Simeon Pursiainen 2b75f5a567 Merge branch 'master' into 'production'
Added Metso to sponsors

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!181
2025-09-01 20:04:25 +03:00
Simeon Pursiainen 4e27d892d5 Merge branch 'master' into 'production'
fix stack compose

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!180
2025-09-01 19:29:30 +03:00
Simeon Pursiainen 0a36c1c233 Merge branch 'master' into 'production'
removing replicas

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!179
2025-09-01 18:57:43 +03:00
Simeon Pursiainen 9459930291 Merge branch 'master' into 'production'
Separate eng and international fuksi pages

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!177
2025-08-16 14:51:57 +03:00
Justus Ojala cea106b134 Separate eng and international fuksi pages 2025-08-16 14:51:57 +03:00
Simeon Pursiainen af9b115205 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!173
2025-08-13 21:16:40 +03:00
Simeon Pursiainen 7ed7849c43 Merge branch 'master' into 'production'
FIx fopas links

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!171
2025-07-15 21:41:51 +03:00
11 changed files with 102 additions and 1165 deletions
-1
View File
@@ -1,4 +1,3 @@
NEXT_PUBLIC_DEPLOY_ENV=local NEXT_PUBLIC_DEPLOY_ENV=local
NEXT_PUBLIC_API_URL=https://api.dev.sahkoinsinoorikilta.fi/api NEXT_PUBLIC_API_URL=https://api.dev.sahkoinsinoorikilta.fi/api
NEXT_PUBLIC_SITE_URL=https://dev.sahkoinsinoorikilta.fi 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", "fast-deep-equal": "^3.1.3",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mqtt": "^5.14.1",
"next": "^13.1.6", "next": "^13.1.6",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"react": "^18.2.0", "react": "^18.2.0",
@@ -90,8 +89,7 @@
"sharp": "^0.30.3", "sharp": "^0.30.3",
"shortid": "^2.2.16", "shortid": "^2.2.16",
"styled-components": "^5.3.5", "styled-components": "^5.3.5",
"swr": "^1.2.2", "swr": "^1.2.2"
"uuid": "^13.0.0"
}, },
"overrides": { "overrides": {
"react-mde": { "react-mde": {
-1
View File
@@ -43,7 +43,6 @@ const StyledCard = styled.article`
} }
h3 { h3 {
hyphens: auto;
padding: 0.5rem; padding: 0.5rem;
font-size: 1.5rem; font-size: 1.5rem;
font-weight: 300; font-weight: 300;
+1 -2
View File
@@ -1,8 +1,7 @@
import { OptionTypes } from "@components/Widgets/SignupQuestionsWidget/common"; import { OptionTypes } from "@components/Widgets/SignupQuestionsWidget/common";
export interface Signup { export interface Signup {
id?: number; // Database id for completed signup id?: number;
submit_id?: string; // Signup request idempotency key
signupForm_id: number; signupForm_id: number;
answer: string; 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 LoadingView from "@views/common/LoadingView";
import noop from "@utils/noop"; import noop from "@utils/noop";
import NotFoundPage from "@pages/404"; import NotFoundPage from "@pages/404";
import { v4 as uuid } from "uuid";
type InitialProps = { type InitialProps = {
initialForm: SignupForm; initialForm: SignupForm;
@@ -24,7 +23,6 @@ const FORM_URL = `${process.env.NEXT_PUBLIC_API_URL}/signupForm/`;
const SignUpPage: NextPage<InitialProps> = ({ initialForm }) => { const SignUpPage: NextPage<InitialProps> = ({ initialForm }) => {
const router = useRouter(); const router = useRouter();
const id = String(initialForm?.id ?? ""); const id = String(initialForm?.id ?? "");
const SUBMIT_ID = uuid(); // Submission key, generated on page refresh
const URL = `${FORM_URL}${id}/`; const URL = `${FORM_URL}${id}/`;
const { data: signupForm, error } = useSWR<SignupForm>(URL, (url) => axios.get(url).then((res) => res.data), { fallbackData: initialForm }); 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 onSubmit = async ({ formData }: ISubmitEvent<string>) => {
const payload: Signup = { 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, signupForm_id: signupForm.id,
answer: formData, answer: formData,
}; };
+38 -38
View File
@@ -8,10 +8,10 @@
"name_en": "Chairman of the Board", "name_en": "Chairman of the Board",
"representatives": [ "representatives": [
{ {
"name": "Sauli Hakala", "name": "Emma Uusküla",
"phone_number": null, "phone_number": null,
"email": "sauli.hakala@sahkoinsinoorikilta.fi", "email": "emma.uuskula@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Emma.jpg"
} }
] ]
}, },
@@ -20,10 +20,10 @@
"name_en": "Vice Chair", "name_en": "Vice Chair",
"representatives": [ "representatives": [
{ {
"name": "Eemeli Hintsanen", "name": "Johannes Viirimäki",
"phone_number": null, "phone_number": null,
"email": "eemeli.hintsanen@sahkoinsinoorikilta.fi", "email": "johannes.viirimaki@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Johannes.jpg"
} }
] ]
}, },
@@ -32,10 +32,10 @@
"name_en": "Treasurer", "name_en": "Treasurer",
"representatives": [ "representatives": [
{ {
"name": "Nea Kanerva", "name": "Nelli Liljasto",
"phone_number": null, "phone_number": null,
"email": "nea.kanerva@sahkoinsinoorikilta.fi", "email": "nelli.liljasto@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Nelli.jpg"
} }
] ]
}, },
@@ -44,10 +44,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Aura Friman", "name": "Teemu Heikkinen",
"phone_number": null, "phone_number": null,
"email": "aura.friman@sahkoinsinoorikilta.fi", "email": "teemu.heikkinen@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Teemu.jpg"
} }
] ]
}, },
@@ -56,10 +56,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Antti Salpakari", "name": "Henri Aito",
"phone_number": null, "phone_number": null,
"email": "antti.salpakari@sahkoinsinoorikilta.fi", "email": "henri.aito@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Henri.jpg"
} }
] ]
}, },
@@ -68,10 +68,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Aino Saarela", "name": "Tuomas Rantamäki",
"phone_number": null, "phone_number": null,
"email": "aino.saarela@sahkoinsinoorikilta.fi", "email": "tuomas.rantamaki@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/TuomasR.jpg"
} }
] ]
}, },
@@ -80,10 +80,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Rosanna Reims", "name": "Matilda Ahonen",
"phone_number": null, "phone_number": null,
"email": "rosanna.reims@sahkoinsinoorikilta.fi", "email": "matilda.ahonen@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Matilda.jpg"
} }
] ]
}, },
@@ -92,9 +92,9 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Valentin Juhela", "name": "Niklas Ritalahti",
"phone_number": null, "phone_number": null,
"email": "valentin.juhela@sahkoinsinoorikilta.fi", "email": "niklas.ritalahti@sahkoinsinoorikilta.fi",
"image": "" "image": ""
} }
] ]
@@ -104,10 +104,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Elida Widgren", "name": "Mikael Vatiainen",
"phone_number": null, "phone_number": null,
"email": "elida.widgren@sahkoinsinoorikilta.fi", "email": "mikael.vatiainen@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Mikael.jpg"
} }
] ]
}, },
@@ -116,10 +116,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Joona Maaranen", "name": "Simeon Pursiainen",
"phone_number": null, "phone_number": null,
"email": "joona.maaranen@sahkoinsinoorikilta.fi", "email": "simeon.pursiainen@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Simeon.jpg"
} }
] ]
}, },
@@ -128,10 +128,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Jere Oinonen", "name": "Markus Aaltio",
"phone_number": null, "phone_number": null,
"email": "jere.oinonen@sahkoinsinoorikilta.fi", "email": "markus.aaltio@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Markus.jpg"
} }
] ]
}, },
@@ -140,10 +140,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Into Saarinen", "name": "Tuomas Hintikka",
"phone_number": null, "phone_number": null,
"email": "into.saarinen@sahkoinsinoorikilta.fi", "email": "tuomas.hintikka@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/TuomasH.jpg"
} }
] ]
}, },
@@ -152,10 +152,10 @@
"name_en": "", "name_en": "",
"representatives": [ "representatives": [
{ {
"name": "Aino Svahn", "name": "Yassine Ramid",
"phone_number": null, "phone_number": null,
"email": "aino.svahn@sahkoinsinoorikilta.fi", "email": "yassine.ramid@sahkoinsinoorikilta.fi",
"image": "" "image": "https://static.sahkoinsinoorikilta.fi/img/board/Yassine.jpg"
} }
] ]
} }
+1 -1
View File
@@ -30,7 +30,7 @@ const FrontPageHero: React.FC = () => (
<HeroAsideItem <HeroAsideItem
header="Vasta-aloittaneelle opiskelijalle" header="Vasta-aloittaneelle opiskelijalle"
text="Fuksikasvatusta ja ISOtoimintaa" text="Fuksikasvatusta ja ISOtoimintaa"
link="/newStudent/fuksi" link="/kilta/fuksi"
linkText="Fuksit&nbsp; " linkText="Fuksit&nbsp; "
/> />
<HeroAsideItem <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;
@@ -15,8 +15,8 @@ const MembershipPageView: React.FC = () => (
sekä pääsyn killan tiloihin kuten kiltahuoneelle ja SIK-pajalle. sekä pääsyn killan tiloihin kuten kiltahuoneelle ja SIK-pajalle.
</p> </p>
<p> <p>
Killan varsinaiseksi jäseneksi voidaan hyväksyä kaikki killan toiminnasta kiinnotuneet AYY:n jäsenet. Killan varsinaiseksi jäseneksi voidaan hyväksyä kaikki killan toiminnasta kiinnostuneet AYY:n jäsenet.
Killan ulkojäseneksi voidaan hyväksyä jäsenmaksun maksanut henkilö, joita ei voida hyväksyä varsinaiseksi jäseneksi. Killan ulkojäseneksi voidaan hyväksyä jäsenmaksun maksanut henkilö, jota ei voida hyväksyä varsinaiseksi jäseneksi.
Killan kannatusjäseneksi voidaan hyväksyä henkilö tai yhteisö, joka haluaa tukea killan toimintaa. Killan kannatusjäseneksi voidaan hyväksyä henkilö tai yhteisö, joka haluaa tukea killan toimintaa.
</p> </p>
<p> <p>