Compare commits

..

1 Commits

Author SHA1 Message Date
Ojakoo e5b511148a add authentication wrapper to api requests 2023-02-12 12:52:48 +02:00
47 changed files with 1747 additions and 2012 deletions
+10 -4
View File
@@ -86,8 +86,9 @@ publish:dev:
only:
- master
script:
- docker build . -t "$IMAGE_NAME":latest --build-arg SENTRY_AUTH_TOKEN="$SENTRY_AUTH_TOKEN" --build-arg NEXT_PUBLIC_DEPLOY_ENV=development --build-arg NEXT_PUBLIC_API_URL=https://api.dev.sahkoinsinoorikilta.fi/api --build-arg NEXT_PUBLIC_SITE_URL=https://dev.sahkoinsinoorikilta.fi
- docker info
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build . -t "$IMAGE_NAME":latest --build-arg SENTRY_AUTH_TOKEN="$SENTRY_AUTH_TOKEN" --build-arg NEXT_PUBLIC_DEPLOY_ENV=development --build-arg NEXT_PUBLIC_API_URL=https://api.dev.sahkoinsinoorikilta.fi/api --build-arg NEXT_PUBLIC_SITE_URL=https://dev.sahkoinsinoorikilta.fi
- docker push "$IMAGE_NAME":latest
publish:prod:
@@ -98,8 +99,9 @@ publish:prod:
only:
- production
script:
- docker build . -t "$IMAGE_NAME":prod --build-arg SENTRY_AUTH_TOKEN="$SENTRY_AUTH_TOKEN"
- docker info
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build . -t "$IMAGE_NAME":prod --build-arg SENTRY_AUTH_TOKEN="$SENTRY_AUTH_TOKEN"
- docker push "$IMAGE_NAME":prod
deploy:dev:
@@ -118,9 +120,11 @@ deploy:dev:
- echo "$DEV_TLSCACERT" > ~/.docker/ca.pem
- echo "$DEV_TLSCERT" > ~/.docker/cert.pem
- echo "$DEV_TLSKEY" > ~/.docker/key.pem
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY"
script:
- docker stack deploy --with-registry-auth -c stack-compose-dev.yml "$SERVICE_NAME"
after_script:
- docker logout "$CI_REGISTRY"
deploy:prod:
stage: deploy
@@ -138,6 +142,8 @@ deploy:prod:
- echo "$TLSCACERT" > ~/.docker/ca.pem
- echo "$TLSCERT" > ~/.docker/cert.pem
- echo "$TLSKEY" > ~/.docker/key.pem
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY"
script:
- docker stack deploy --with-registry-auth -c stack-compose.yml "$SERVICE_NAME"
after_script:
- docker logout "$CI_REGISTRY"
+1 -1
View File
@@ -25,5 +25,5 @@ module.exports = withBundleAnalyzer(withSentryConfig({
},
sentry: {
hideSourceMaps: true, // Hide source maps, see: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-source-maps
},
}
}, sentryWebpackPluginOptions));
+1169 -1225
View File
File diff suppressed because it is too large Load Diff
+40 -1
View File
@@ -1,7 +1,10 @@
import {
deleteTokenCookies, getAccessTokenCookie, getRefreshTokenCookie, setAccessTokenCookie, setRefreshTokenCookie,
} from "@utils/auth";
import { APIPath, postBackendAPI } from "./backend";
import {
APIPath, postBackendAPI, getBackendAPI, putBackendAPI, deleteBackendAPI,
API,
} from "./backend";
export type AuthTokenRequest = {
username: string;
@@ -71,3 +74,39 @@ export const authenticate = async (): Promise<boolean> => {
return refreshToken();
}
};
export const authedGetBackendAPI = async <ResponseType>({
path, urlParams, queryParams, authenticated = true,
}: API): Promise<ResponseType> => {
if (authenticated) await authenticate();
return getBackendAPI<ResponseType>({
path, urlParams, queryParams, authenticated,
});
};
export const authedPostBackendAPI = async <RequestType, ResponseType>({
path, urlParams, queryParams, authenticated = true,
}: API, body: RequestType): Promise<ResponseType> => {
if (authenticated) await authenticate();
return postBackendAPI<RequestType, ResponseType>({
path, urlParams, queryParams, authenticated,
}, body);
};
export const authedPutBackendAPI = async <RequestType, ResponseType>({
path, urlParams, queryParams, authenticated = true,
}: API, body: RequestType): Promise<ResponseType> => {
if (authenticated) await authenticate();
return putBackendAPI<RequestType, ResponseType>({
path, urlParams, queryParams, authenticated,
}, body);
};
export const authedDeleteBackendAPI = async <ResponseType>({
path, urlParams, queryParams, authenticated = true,
}: API): Promise<ResponseType> => {
if (authenticated) await authenticate();
return deleteBackendAPI<ResponseType>({
path, urlParams, queryParams, authenticated,
});
};
+12 -9
View File
@@ -1,8 +1,11 @@
/* eslint-disable no-console */
import Event from "@models/Event";
import {
APIPath, deleteBackendAPI, getBackendAPI, postBackendAPI, putBackendAPI,
APIPath,
} from "./backend";
import {
authedGetBackendAPI, authedPostBackendAPI, authedDeleteBackendAPI, authedPutBackendAPI,
} from "./auth";
interface Options {
limit?: number;
@@ -14,7 +17,7 @@ interface Options {
class EventApi {
static getEvent = async (id: number, auth = false): Promise<Event> => {
try {
return await getBackendAPI<Event>({
return await authedGetBackendAPI<Event>({
path: APIPath.EVENTS, urlParams: { id }, authenticated: auth,
});
} catch (err) {
@@ -24,10 +27,10 @@ class EventApi {
};
static getEvents = async ({
since, limit, offset, auth,
since, limit, offset, auth = false,
}: Options = {}): Promise<Event[]> => {
try {
return await getBackendAPI<Event[]>({
return await authedGetBackendAPI<Event[]>({
path: APIPath.EVENTS,
queryParams: {
since,
@@ -44,8 +47,8 @@ class EventApi {
static createEvent = async (data: Event): Promise<Event> => {
try {
return await postBackendAPI<Event, Event>({
path: APIPath.EVENTS, authenticated: true,
return await authedPostBackendAPI<Event, Event>({
path: APIPath.EVENTS,
}, data);
} catch (err) {
console.error(err);
@@ -55,8 +58,8 @@ class EventApi {
static updateEvent = async (data: Event): Promise<Event> => {
try {
return await putBackendAPI<Event, Event>({
path: APIPath.EVENTS, urlParams: { id: data.id }, authenticated: true,
return await authedPutBackendAPI<Event, Event>({
path: APIPath.EVENTS, urlParams: { id: data.id },
}, data);
} catch (err) {
console.error(err);
@@ -66,7 +69,7 @@ class EventApi {
static deleteEvent = async (id: number): Promise<void> => {
try {
await deleteBackendAPI<{ message: "OK" }>({ path: APIPath.EVENTS, urlParams: { id }, authenticated: true });
await authedDeleteBackendAPI<{ message: "OK" }>({ path: APIPath.EVENTS, urlParams: { id } });
} catch (err) {
console.error(err);
throw err;
+12 -9
View File
@@ -1,8 +1,11 @@
/* eslint-disable no-console */
import Post from "@models/Feed";
import {
APIPath, deleteBackendAPI, getBackendAPI, postBackendAPI, putBackendAPI,
APIPath,
} from "./backend";
import {
authedGetBackendAPI, authedPostBackendAPI, authedDeleteBackendAPI, authedPutBackendAPI,
} from "./auth";
interface Options {
limit?: number;
@@ -11,9 +14,9 @@ interface Options {
}
class FeedApi {
static getPost = async (id: number, auth?: boolean): Promise<Post> => {
static getPost = async (id: number, auth = false): Promise<Post> => {
try {
return await getBackendAPI<Post>({
return await authedGetBackendAPI<Post>({
path: APIPath.FEED, urlParams: { id }, authenticated: auth,
});
} catch (err) {
@@ -22,9 +25,9 @@ class FeedApi {
}
};
static getFeed = async ({ limit, offset, auth }: Options = {}): Promise<Post[]> => {
static getFeed = async ({ limit, offset, auth = false }: Options = {}): Promise<Post[]> => {
try {
return await getBackendAPI<Post[]>({
return await authedGetBackendAPI<Post[]>({
path: APIPath.FEED,
queryParams: {
limit,
@@ -40,7 +43,7 @@ class FeedApi {
static createPost = async (data: Post): Promise<Post> => {
try {
return await postBackendAPI<Post, Post>({ path: APIPath.FEED, authenticated: true }, data);
return await authedPostBackendAPI<Post, Post>({ path: APIPath.FEED }, data);
} catch (err) {
console.error(err);
throw err;
@@ -49,8 +52,8 @@ class FeedApi {
static updatePost = async (data: Post): Promise<Post> => {
try {
return await putBackendAPI<Post, Post>({
path: APIPath.FEED, urlParams: { id: data.id }, authenticated: true,
return await authedPutBackendAPI<Post, Post>({
path: APIPath.FEED, urlParams: { id: data.id },
}, data);
} catch (err) {
console.error(err);
@@ -60,7 +63,7 @@ class FeedApi {
static deletePost = async (id: number): Promise<void> => {
try {
await deleteBackendAPI<{ message: "OK" }>({ path: APIPath.EVENTS, urlParams: { id }, authenticated: true });
await authedDeleteBackendAPI<{ message: "OK" }>({ path: APIPath.EVENTS, urlParams: { id } });
} catch (err) {
console.error(err);
throw err;
+12 -9
View File
@@ -1,8 +1,11 @@
/* eslint-disable no-console */
import JobAd from "@models/JobAd";
import {
APIPath, deleteBackendAPI, getBackendAPI, postBackendAPI, putBackendAPI,
APIPath,
} from "./backend";
import {
authedGetBackendAPI, authedPostBackendAPI, authedDeleteBackendAPI, authedPutBackendAPI,
} from "./auth";
interface Options {
since?: Date;
@@ -14,7 +17,7 @@ interface Options {
class JobAdApi {
static getJobAd = async (id: number, auth = false): Promise<JobAd> => {
try {
return await getBackendAPI({
return await authedGetBackendAPI({
path: APIPath.JOBADS, urlParams: { id }, authenticated: auth,
});
} catch (err) {
@@ -24,10 +27,10 @@ class JobAdApi {
};
static getJobAds = async ({
since, limit, offset, auth,
since, limit, offset, auth = false,
}: Options = {}): Promise<JobAd[]> => {
try {
return await getBackendAPI<JobAd[]>({
return await authedGetBackendAPI<JobAd[]>({
path: APIPath.JOBADS,
queryParams: {
since,
@@ -44,8 +47,8 @@ class JobAdApi {
static createJobAd = async (data: JobAd): Promise<JobAd> => {
try {
return await postBackendAPI<JobAd, JobAd>({
path: APIPath.JOBADS, authenticated: true,
return await authedPostBackendAPI<JobAd, JobAd>({
path: APIPath.JOBADS,
}, data);
} catch (err) {
console.error(err);
@@ -55,8 +58,8 @@ class JobAdApi {
static updateJobAd = async (data: JobAd): Promise<JobAd> => {
try {
return await putBackendAPI<JobAd, JobAd>({
path: APIPath.JOBADS, urlParams: { id: data.id }, authenticated: true,
return await authedPutBackendAPI<JobAd, JobAd>({
path: APIPath.JOBADS, urlParams: { id: data.id },
}, data);
} catch (err) {
console.error(err);
@@ -66,7 +69,7 @@ class JobAdApi {
static deleteJobAd = async (id: number): Promise<void> => {
try {
await deleteBackendAPI<{ message: "OK" }>({ path: APIPath.JOBADS, urlParams: { id }, authenticated: true });
await authedDeleteBackendAPI<{ message: "OK" }>({ path: APIPath.JOBADS, urlParams: { id } });
} catch (err) {
console.error(err);
throw err;
+18 -15
View File
@@ -1,8 +1,11 @@
/* eslint-disable no-console */
import { Signup, SignupForm } from "@models/Signup";
import {
APIPath, deleteBackendAPI, getBackendAPI, postBackendAPI, putBackendAPI,
APIPath, postBackendAPI,
} from "./backend";
import {
authedGetBackendAPI, authedPostBackendAPI, authedDeleteBackendAPI, authedPutBackendAPI,
} from "./auth";
export type EmailRequest = {
mode: "all" | "actual" | "reserve";
@@ -13,8 +16,8 @@ export type EmailRequest = {
class SignupApi {
static getSignup = async (id: number): Promise<Signup> => {
try {
return await getBackendAPI<Signup>({
path: APIPath.SIGNUPS, urlParams: { id }, authenticated: true,
return await authedGetBackendAPI<Signup>({
path: APIPath.SIGNUPS, urlParams: { id },
});
} catch (err) {
console.error(err);
@@ -37,7 +40,7 @@ class SignupApi {
try {
const { id } = data;
if (!id) throw new Error("SignupId required!");
return await putBackendAPI<Signup, Signup>({
return await authedPutBackendAPI<Signup, Signup>({
path: APIPath.SIGNUPS_EDIT,
urlParams: {
id,
@@ -54,7 +57,7 @@ class SignupApi {
static getSignupUUID = async (id: number, uuid: string): Promise<Signup> => {
try {
return await getBackendAPI<Signup>({
return await authedGetBackendAPI<Signup>({
path: APIPath.SIGNUPS_EDIT,
urlParams: {
id,
@@ -71,7 +74,7 @@ class SignupApi {
static deleteSignup = async (id: number): Promise<void> => {
try {
await deleteBackendAPI<{ message: "OK" }>({ path: APIPath.SIGNUPS, urlParams: { id }, authenticated: true });
await authedDeleteBackendAPI<{ message: "OK" }>({ path: APIPath.SIGNUPS, urlParams: { id } });
} catch (err) {
console.error(err);
throw err;
@@ -80,7 +83,7 @@ class SignupApi {
static getForm = async (id: number, auth = false): Promise<SignupForm> => {
try {
return await getBackendAPI<SignupForm>({
return await authedGetBackendAPI<SignupForm>({
path: APIPath.SIGNUP_FORMS, urlParams: { id }, authenticated: auth,
});
} catch (err) {
@@ -91,7 +94,7 @@ class SignupApi {
static getForms = async (auth = false): Promise<SignupForm[]> => {
try {
return await getBackendAPI<SignupForm[]>({
return await authedGetBackendAPI<SignupForm[]>({
path: APIPath.SIGNUP_FORMS, authenticated: auth,
});
} catch (err) {
@@ -102,8 +105,8 @@ class SignupApi {
static createForm = async (data: SignupForm): Promise<SignupForm> => {
try {
return await postBackendAPI<SignupForm, SignupForm>({
path: APIPath.SIGNUP_FORMS, authenticated: true,
return await authedPostBackendAPI<SignupForm, SignupForm>({
path: APIPath.SIGNUP_FORMS,
}, data);
} catch (err) {
console.error(err);
@@ -113,8 +116,8 @@ class SignupApi {
static updateForm = async (data: SignupForm): Promise<SignupForm> => {
try {
return await putBackendAPI<SignupForm, SignupForm>({
path: APIPath.SIGNUP_FORMS, urlParams: { id: data.id }, authenticated: true,
return await authedPutBackendAPI<SignupForm, SignupForm>({
path: APIPath.SIGNUP_FORMS, urlParams: { id: data.id },
}, data);
} catch (err) {
console.error(err);
@@ -124,7 +127,7 @@ class SignupApi {
static deleteForm = async (id: number): Promise<void> => {
try {
await deleteBackendAPI<{ message: "OK" }>({ path: APIPath.SIGNUP_FORMS, urlParams: { id }, authenticated: true });
await authedDeleteBackendAPI<{ message: "OK" }>({ path: APIPath.SIGNUP_FORMS, urlParams: { id } });
} catch (err) {
console.error(err);
throw err;
@@ -133,7 +136,7 @@ class SignupApi {
static signupFormSendEmail = async (data: EmailRequest, id: number): Promise<void> => {
try {
await postBackendAPI<EmailRequest, { message: "Email sent" }>({ path: APIPath.SIGNUP_FORMS_EMAIL, urlParams: { id }, authenticated: true }, data);
await authedPostBackendAPI<EmailRequest, { message: "Email sent" }>({ path: APIPath.SIGNUP_FORMS_EMAIL, urlParams: { id } }, data);
} catch (err) {
console.error(err);
throw err;
@@ -142,7 +145,7 @@ class SignupApi {
static getSignups = async (id: number): Promise<Signup[]> => {
try {
return await getBackendAPI<Signup[]>({ path: APIPath.SIGNUP_FORMS_SIGNUPS, urlParams: { id }, authenticated: true });
return await authedGetBackendAPI<Signup[]>({ path: APIPath.SIGNUP_FORMS_SIGNUPS, urlParams: { id } });
} catch (err) {
console.error(err);
throw err;
-6
View File
@@ -28,9 +28,6 @@ const Events: React.FC<EventsProps> = ({ events, lang }) => {
const pageLinkText = t("Kaikki tapahtumat");
const pageLinkDesc = `${t("löydät tapahtumakalenterista")}\xa0`;
const googleCalendarText = t("Lisää killan");
const googleCalendarDesc = `${t("Google-kalenteri")}\xa0`;
const locale = isFi ? "fi-FI" : "en-GB";
const filteredEvents = events.map((e) => ({
@@ -65,9 +62,6 @@ const Events: React.FC<EventsProps> = ({ events, lang }) => {
<PageLink to="/kilta/toiminta#tapahtumat" desc={pageLinkDesc}>
{pageLinkText}
</PageLink>
<PageLink to="https://calendar.google.com/calendar/u/0?cid=Y19mYjhhNWUwMjVjMjhkMTg5YTkzMWYyN2U5N2M4ODBmMGFhNTdmN2M1NDFlYzVhNjdlZDM4NzliYTVhNDEwNWI1QGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20" desc={googleCalendarDesc}>
{googleCalendarText}
</PageLink>
</aside>
</CardSection>
-1
View File
@@ -11,7 +11,6 @@ export const renderNavigationItems = (mobile = false): JSX.Element => (
<NavbarDropdownLink to="/kilta" text="Kilta " exploded={mobile}>
<NavbarChildLink to="/kilta/toiminta">Toiminta</NavbarChildLink>
<NavbarChildLink to="/kilta/fuksi">Fuksi</NavbarChildLink>
<NavbarChildLink to="/kilta/vuokraa">Vuokraa kalustoa</NavbarChildLink>
<NavbarChildLink to="/kilta/kunnianosoitukset">Kunnianosoitukset</NavbarChildLink>
<NavbarChildLink to="https://static.sahkoinsinoorikilta.fi">Dokumenttiarkisto</NavbarChildLink>
<NavbarChildLink to="https://sik.kuvat.fi">Kuvagalleria</NavbarChildLink>
-2
View File
@@ -15,8 +15,6 @@
"ja hallitukset kuulumiset": "and what the board has been up to",
"Kuvia tapahtumista": "Photos from events",
"kuvagalleriassa": "in the photo gallery",
"Lisää killan": "Add guild's",
"Google-kalenteri": "Google-calendar",
"Hakemaasi sivua":
"Page",
+3 -3
View File
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative, formatISO } from "date-fns";
import { formatRelative } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -120,8 +120,8 @@ const Renderer: React.FC = () => {
{events.sort(eventSort).filter(dateFilter).map((event) => (
<tr key={event.id}>
<td><Link to={`${URL}/${event.id}`}>{event.title_fi}</Link></td>
<td>{formatISO(new Date(event.start_time), { representation: "date" })}</td>
<td>{formatISO(new Date(event.end_time), { representation: "date" })}</td>
<td>{formatRelative(new Date(event.start_time), new Date())}</td>
<td>{formatRelative(new Date(event.end_time), new Date())}</td>
<td>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(event)}>
Delete
+2 -2
View File
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative, formatISO } from "date-fns";
import { formatRelative } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -89,7 +89,7 @@ const Renderer: React.FC = () => {
<tr key={post.id}>
<td><Link to={`${URL}/${post.id}`}>{post.title_fi}</Link></td>
<td>{post.description_fi}</td>
<td>{formatISO(new Date(post.publish_time), { representation: "date" })}</td>
<td>{formatRelative(new Date(post.publish_time), new Date())}</td>
<td>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(post)}>
Delete
+2 -2
View File
@@ -1,7 +1,7 @@
import React from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative, formatISO } from "date-fns";
import { formatRelative } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -64,7 +64,7 @@ const Renderer: React.FC = () => {
<td>{ad.description_fi}</td>
<td>
{ad.autohide_enabled
? formatISO(new Date(ad.autohide_at), { representation: "date" })
? formatRelative(new Date(ad.autohide_at), new Date())
: "Disabled"}
</td>
<td>
+3 -3
View File
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative, formatISO } from "date-fns";
import { formatRelative } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -122,8 +122,8 @@ const Renderer: React.FC = () => {
{signupForms.sort(signupFormSort).filter(dateFilter).map((signupForm) => (
<tr key={signupForm.id}>
<td><Link to={`${URL}/${signupForm.id}`}>{signupForm.title_fi}</Link></td>
<td>{formatISO(new Date(signupForm.start_time), { representation: "date" })}</td>
<td>{formatISO(new Date(signupForm.end_time), { representation: "date" })}</td>
<td>{formatRelative(new Date(signupForm.start_time), new Date())}</td>
<td>{formatRelative(new Date(signupForm.end_time), new Date())}</td>
<td><Link to={`${URL}/${signupForm.id}/list`}>View</Link></td>
<td><Link to={`${URL}/${signupForm.id}/email`}>Send</Link></td>
<td>
-18
View File
@@ -1,18 +0,0 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import RentPageView from "@views/RentPage/RentPageView";
import PageWrapper from "@views/common/PageWrapper";
const RentPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/vuokraa`} />
</Head>
<PageWrapper>
<RentPageView />
</PageWrapper>
</>
);
export default RentPage;
+1 -1
View File
@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React from "react";
import { NextPage, GetStaticProps, GetStaticPaths } from "next";
import Head from "next/head";
import { useRouter } from "next/router";
+1 -1
View File
@@ -31,7 +31,7 @@ const ActualPageHero: React.FC = () => (
<HeroAsideItem
header="Keksimistä ja rakentelua"
link="#elepaja"
linkText="SIK-Paja&nbsp;"
linkText="Elektroniikkapaja&nbsp;"
/>
<HeroAsideItem
header="Tiimipelejä ja liikuntaa"
+11 -25
View File
@@ -111,13 +111,13 @@ const ActualPageView: React.FC<ActualPageViewProps> = ({ events, feed }) => (
<div>
<h6 id="elepaja">Rakenna kaikkea elektroniikkaan liittyvää</h6>
<p>
SIK-PAJA on sähköinsinöörikillan ylläpitämä elektroniikkapaja, jossa opiskelijat pääsevät soveltamaan koulussa oppimiaan taitojaan käytännön projekteissa.
Elepaja on sähköinsinöörikillan ylläpitämä elektroniikkapaja, jossa opiskelijat pääsevät soveltamaan koulussa oppimiaan taitojaan käytännön projekteissa.
Opiskelijat ovat aikojen saatossa rakentaneet pajalla mitä monimuotoisempia projekteja kuten ensimmäisiä ledivilkkujaan, teslakäämejä, robotteja ja radiolähettimiä.
Jos elektroniikan rakentelu kiinnostaa tai tarvitset jonkun projektin kanssa apua niin tule ihmeessä käymään elepajalla.
Pajan varustukseen kuluu perustyökalut, kolvit, komponentit sekä laaja valikoima mittauslaitteita.
Tule tutustumaan toimintaamme Kandidaattikeskuksessa ruokala Alvarin alapuolella sijaitseviin tiloihimme.
Pajan varustukseen kuluu perustyökalut, piirilevyn syövytysvälineet, kolvit, komponentit, pylväsporakone sekä laaja valikoima mittauslaitteita.
Ota siis kola ja tule nauttimaan elepajan mukavasta ilmapiiristä Elepajan uusissa tiloissa kanditaattikeskuksessa ruokala alvarin alla.
{" "}
<Link to="https://t.me/sikpaja">Tästä</Link> pääset liittymään pajan Telegram-ryhmään.
<Link to="https://elepaja.fi/tg">Tästä</Link> pääset liittymään elepajan Telegram-ryhmään.
</p>
<h6 id="urheilu">Urheilua ja lajikokeiluja</h6>
<p>
@@ -131,21 +131,21 @@ const ActualPageView: React.FC<ActualPageViewProps> = ({ events, feed }) => (
</p>
<h6 id="kulttuuri&juhla">Kulttuuria ja juhlia teatterista sitseihin</h6>
<p>
Hyvinvointitoimikunta järjestää urheilun ja lajikokeilujen lisäksi myös kultturelleja tapahtumia ja menoja kiltalaisille.
Hyvinvointitoimikunta järjestää urheilun ja lajikokeilun lisäksi myös kultturelleja tapahtumia ja menoja kiltalaisille.
Näihin kultturelleihin tapahtumiin kuuluu hauskaa laidasta laitaan, eli keittiöstä teatteriin ja teatterista mitä mielenkiintoimpiin museoihin.
Lisäksi hupitoimikunta viihdyttää kiltalaisia erilaisilla juhlilla rennoista saunailloista juhlavimpiin sitseihin.
Lisäksi ohjelmatoimikunta viihdyttää kiltalaisia erilaisilla juhlilla rennoista saunailloista juhlavimpiin sitseihin.
Killan nettisivujen <Link to="#tapahtumat">Tapahtumat</Link>-osiosta voit tutkia tulevia kulttuuritapahtumia.
</p>
<h6 id="yritysyhteistyo">Yhteistyö yritysten kanssa</h6>
<p>
Killassa toimiva yrityssuhdetoimikunta vastaa siitä, että killan talous pysyy pystyssä, mutta tämän lisäksi he myös tarjoavat kiltalaisille mahdollisuuksia solmia suhteita alamme huippuyritysten kanssa.
Tällaisia mahdollisuuksia järjestetään excursioiden muodossa, joissa kiltalaiset usein pääsevät yrityksen omiin tiloihin tutustumaan yrityksen toimintaan ja henkilökuntaan, sekä erilaisten Otaniemessä järjestettävien yrityssuhdetapahtumien muodossa.
Killassa toimiva yritystoimikunta vastaa siitä, että killan talous pysyy pystyssä, mutta tämän lisäksi he myös tarjoavat kiltalaisille mahdollisuuksia solmia suhteita alamme huippuyritysten kanssa.
Tällaisia mahdollisuuksia järjestetään excujen muodossa, joissa kiltalaiset usein pääsevät yrityksen omiin tiloihin tutustumaan yrityksen toimintaan ja henkilökuntaan, sekä erilaisten Otaniemessä järjestettävien yrityssuhdetapahtumien muodossa.
Otaniemi-yritystapahtumia ovat esimerkiksi yrityksien kanssa yhteistyössä järjestetyt saunaillat, sekä jokavuotinen yritysbrunssi.
Ilmottautumiset näihin tapahtumiin onnistuvat <Link to="#tapahtumat">Tapahtumat</Link>-osiosta killan nettisivuilta.
</p>
<h6 id="ulkosuhteet">Kansainvälisty ja luo suhteita</h6>
<p>
Ulkotoimikunta järjestää kiltalaisten iloksi tapahtumia monien ystävyysjärjestöjen kanssa niin Suomessa kuin ulkomaillakin.
Ulkotoimikunta järjestää kiltalaisten iloksi tapahtumia monien ystävyysjärjestöjen kanssa niin suomessa kuin ulkomaillakin.
UTMK:n järjestämissä tapahtumissa pääset kasvattamaan ystäväpiiriäsi Otaniemen ulkopuolelle ja jopa kansainvälistymään toden teolla.
UTMK järjestää paljon toimintaa myös vaihto-opiskelijoille ja näihin tapahtumiin kannattaa ehdottomasti osallistua, jos tahtoo luoda ystävyyssuhteita ympäri maailman.
</p>
@@ -159,23 +159,9 @@ const ActualPageView: React.FC<ActualPageViewProps> = ({ events, feed }) => (
<p>Kuinka pääset kiltatoimintaan mukaan?</p>
<div>
<h6>Kiltakokous</h6>
<p>
Kiltakokous on killan ylintä toimivaltaa käyttävä elin, joka koostuu kaikista killan varsinaisista jäsenistä.
Kiltakokouksen tehtävänä on valvoa hallituksen toimintaa ja päättää kaikkia kiltalaisia koskevista asioista.
Kevään kiltakokouksessa hyväksytään toimintasuunnitelma ja talousarvio sekä annetaan vanhalle hallitukselle vastuunvapautus, mikäli tilinpäätös ja toimintakertomus hyväksytään.
Syksyn kiltakokous on moniosainen, jonka 1. osassa valitaan puheenjohtaja, 2. osassa valitaan hallitus ja 3. osassa valitaan toimihenkilöt.
Tämän kokouksen jälkeen killalla on kaikki toimijat valittuna seuraavalle vuodelle.
Tämän lisäksi voidaan pitää ylimääräisiä kokouksia, jos hallitus, yleinen kokous tai vähintään 20 kiltalaista sitä kannattaa.
Killan sääntöihin voit tutustua tarkemmin <Link to="https://static.sahkoinsinoorikilta.fi/saannot/killansaannot.pdf">täältä.</Link>
</p>
<p>Kiltakokous on killan ylintä toimivaltaa käyttävä elin, joka koostuu kaikista killan varsinaisista jäsenistä. Kiltakokouksen tehtävänä on valvoa hallituksen toimintaa ja päättää kaikkia kiltalaisia koskevista asioista. Kevään kiltakokouksessa hyväksytään toimintasuunnitelma ja talousarvio sekä annetaan vanhalle hallitukselle vastuunvapautus, mikäli tilinpäätös ja toimintakertomus hyväksytään. Syksyn kiltakokous on moniosainen, jonka 1. osassa valitaan hallituksen muodostaja. 2. osassa valitaan hallitus ja 3. osassa valitaan toimihenkilöt. Tämän kokouksen jälkeen killalla on kaikki toimijat valittuna seuraavalle vuodelle. Tämän lisäksi voidaan pitää ylimääräisiä kokouksia, jos hallitus, yleinen kokous tai vähintään 20 kiltalaista sitä kannattaa. Killan sääntöihin voit tutustua tarkemmin <Link to="https://static.sahkoinsinoorikilta.fi/saannot/killansaannot.pdf">täältä.</Link></p>
<h6>Kähmyt</h6>
<p>
Killan kähmykaudella voit osoittaa kiinnostuksesi erilaisiin kiltarooleihin kähmyämällä kähmykoneen kautta.
Kähmykausi käynnistyy alkusyksystä ja kestää syksyn 3. kiltakokoukseen asti, jossa kiltalaiset äänestävät seuraavan vuoden toimihenkilöt.
Hallitusvirkaan pyrkiessä täytyy kähmyäminen tehdä syksyn 2. kiltakokoukseen mennessä.
Kähmyttäessäsi voit vapaasti valita tai keksiä roolin ja pyrkiä hallitukseen tai toimihenkilöksi.
Muista kuitenkin, että kähmyäminen ei ole sitova killan tehtäviin vaan enemmänkin mielenkiinnon osoitus.
</p>
<p>Killan kähmykaudella voit osoittaa kiinnostuksesi erilaisiin kiltarooleihin kähmyämällä kähmykoneen kautta. Kähmykausi käynnistyy alkusyksystä ja kestää syksyn 3. kiltakokoukseen asti, jossa kiltalaiset äänestävät ensivuoden toimihenkilöt. Hallitusvirkaan pyrkiessä täytyy kähmyäminen tehdä syksyn 2. kiltakokoukseen mennessä. Kähmyttäessäsi voit vapaasti valita tai keksiä roolin ja pyrkiä hallitukseen tai toimihenkilöksi. Muista kuitenkin, että kähmyäminen ei ole sitova killan tehtäviin vaan enemmänkin mielenkiinnon osoitus.</p>
</div>
</div>
</TextSection>
+30 -33
View File
@@ -5,35 +5,35 @@ import colors from "@theme/colors";
import ContactCard from "@components/ContactCard";
import BoardJson from "./board.json";
import FtmkJson from "./ftmk.json";
import HtmkJson from "./htmk.json";
import HvtmkJson from "./hvtmk.json";
import MtmkJson from "./mtmk.json";
import OptmkJson from "./optmk.json";
import NtmkJson from "./ntmk.json";
import PtmkJson from "./ptmk.json";
import TtmkJson from "./ttmk.json";
import YtmkJson from "./ytmk.json";
import SwtmkJson from "./swtmk.json";
import VtmkJson from "./vtmk.json";
import LtmkJson from "./ltmk.json";
import Others from "./others.json";
// import HvtmkJson from "./hvtmk.json";
// import MtmkJson from "./mtmk.json";
// import NtmkJson from "./ntmk.json";
// import OptmkJson from "./optmk.json";
// import OtmkJson from "./otmk.json";
// import EPtmkJson from "./eptmk.json";
// import SstmkJson from "./sstmk.json";
// import ShntmkJson from "./shntmk.json";
// import ShtmkJson from "./shtmk.json";
// import TtmkJson from "./ttmk.json";
// import UtmkJson from "./utmk.json";
// import YtmkJson from "./ytmk.json";
// import Others from "./others.json";
const orderedCommittees = [
BoardJson,
FtmkJson,
HtmkJson,
LtmkJson,
HvtmkJson,
MtmkJson,
OptmkJson,
YtmkJson,
TtmkJson,
PtmkJson,
VtmkJson,
SwtmkJson,
NtmkJson,
Others,
// HvtmkJson,
// MtmkJson,
// NtmkJson,
// OptmkJson,
// OtmkJson,
// EPtmkJson,
// SstmkJson,
// ShntmkJson,
// ShtmkJson,
// TtmkJson,
// UtmkJson,
// YtmkJson,
// Others,
];
const blankProfile = "/img/blank_profile.png";
@@ -162,7 +162,7 @@ const ContactsPageView: React.FC = () => (
<p>
Asiaa olisi, mutta kehen ottaa yhteyttä?
<br />
Tämä sivu yrittää valottaa sen oikean ihmisen sähköpostiosoitetta.
Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta.
</p>
<aside>
<div>
@@ -182,21 +182,18 @@ const ContactsPageView: React.FC = () => (
{(json.slug === "board") && (
<div>
<p>
{"Koko hallitukseen saa yhteyden lähettämällä sähköpostia osoitteeseen "}
{"Hallitukseen saa yhteyden lähettämällä sähköpostia "}
<BlueLink to="mailto:hallitus@sahkoinsinoorikilta.fi">
hallitus@sahkoinsinoorikilta.fi
</BlueLink>
.
. Hallituksen yksittäisiin jäseniin saat yhteyden etunimi.sukunimi@sahkoinsinoorikilta.fi osoitteista.
</p>
<p>
{"Hallitukselle voi myös lähettää palautetta täyttämällä "}
<BlueLink to="https://docs.google.com/forms/d/e/1FAIpQLSeD8Hm66uvwr7Xa2WGgOCfI2RS1NrZsmISf2QBKUcJf_stv8g/viewform?usp=sf_link">
palautelomakkeen
</BlueLink>
. Lomakkeen vastauksia käydään läpi hallituksen kokouksissa.
</p>
<p>
Toimihenkilöiden sähköpostiosoitteet ovat muotoa etunimi.sukunimi@sahkoinsinoorikilta.fi.
, lomakkeen vastauksia käydään läpi hallituksen kokouksissa.
</p>
</div>
)}
+42 -42
View File
@@ -8,10 +8,10 @@
"name_en": "Chairman of the Board",
"representatives": [
{
"name": "Ville Lairila",
"name": "Otto Julkunen",
"phone_number": null,
"email": "ville.lairila@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/ville.jpg"
"email": "otto.julkunen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -20,10 +20,10 @@
"name_en": "Secretary",
"representatives": [
{
"name": "Akseli Heikkinen",
"name": "Karoliina Talvikangas",
"phone_number": null,
"email": "akseli.heikkinen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/akseli.jpg"
"email": "karoliina.talvikangas@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -32,10 +32,10 @@
"name_en": "Treasurer",
"representatives": [
{
"name": "Alisa Ahonen",
"name": "Ville Lairila",
"phone_number": null,
"email": "alisa.ahonen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/alisa.jpg"
"email": "ville.lairila@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -44,10 +44,10 @@
"name_en": "",
"representatives": [
{
"name": "Sauli Hakala",
"name": "Aaron Löfgren",
"phone_number": null,
"email": "sauli.hakala@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/sauli.jpg"
"email": "aaron.lofgren@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -56,10 +56,10 @@
"name_en": "",
"representatives": [
{
"name": "Valentin Juhela",
"name": "Kasper Skog",
"phone_number": null,
"email": "valentin.juhela@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/valentin.jpg"
"email": "kasper.skog@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -68,10 +68,10 @@
"name_en": "",
"representatives": [
{
"name": "Axel Aurola",
"name": "Roni Vallius",
"phone_number": null,
"email": "axel.aurola@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/axel.jpg"
"email": "roni.vallius@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -80,10 +80,10 @@
"name_en": "",
"representatives": [
{
"name": "Nelli Liljasto",
"name": "Elina Huttunen",
"phone_number": null,
"email": "nelli.liljasto@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/nelli.jpg"
"email": "elina.huttunen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -92,10 +92,10 @@
"name_en": "",
"representatives": [
{
"name": "Peter Lindahl",
"name": "Julia Pykälä-aho",
"phone_number": null,
"email": "peter.lindahl@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/peter.jpg"
"email": "julia.pykalaaho@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -104,34 +104,34 @@
"name_en": "",
"representatives": [
{
"name": "Mikko Sandström",
"name": "Juulia Härkönen",
"phone_number": null,
"email": "mikko.sandstrom@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/mikko.jpg"
"email": "juulia.harkonen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
{
"name_fi": "Teknologiamestari",
"name_fi": "Pajamestari",
"name_en": "",
"representatives": [
{
"name": "Johannes Viirimäki",
"name": "Tommi Sytelä",
"phone_number": null,
"email": "johannes.viirimaki@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/johannes.jpg"
"email": "tommi.sytela@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
{
"name_fi": "KV-fuksikapteeni",
"name_fi": "Ulkomestari",
"name_en": "",
"representatives": [
{
"name": "Verneri Turkki",
"name": "Pyry Vaara",
"phone_number": null,
"email": "verneri.turkki@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/verneri.jpg"
"email": "pyry.vaara@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
@@ -140,22 +140,22 @@
"name_en": "",
"representatives": [
{
"name": "Emma Uusküla",
"name": "Nette Levijoki",
"phone_number": null,
"email": "emma.uuskula@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/emma.jpg"
"email": "nette.levijoki@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
},
{
"name_fi": "Excursio- ja ulkomestari",
"name_fi": "Excursiomestari",
"name_en": "",
"representatives": [
{
"name": "Roope Jaskari",
"name": "Visa Kurvi",
"phone_number": null,
"email": "roope.jaskari@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2024-board/roope.jpg"
"email": "visa.kurvi@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/placeholder.jpg"
}
]
}
@@ -1,14 +1,14 @@
{
"slug": "ptmk",
"name_fi": "Pajatoimikunta",
"slug": "eptmk",
"name_fi": "Elepajatoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Pajamestari",
"name_fi": "Pajapäävastaava",
"name_en": "",
"representatives": [
{
"name": "Axel Söderberg"
"name": "Oskari Ponkala"
}
]
},
@@ -18,12 +18,6 @@
"representatives": [
{
"name": "Karl Lipping"
},
{
"name": "Petrus Asikainen"
},
{
"name": "Samuel Laine"
}
]
},
@@ -32,22 +26,25 @@
"name_en": "",
"representatives": [
{
"name": "Patrick Linnanen"
"name": "Samu Nyman"
},
{
"name": "Niklas Eloranta"
"name": "Veikko Räty"
},
{
"name": "Jere Oinonen"
"name": "Ville Lairila"
},
{
"name": "Joonas Kojo"
"name": "Justus Ojala"
},
{
"name": "Iida Pakarinen"
"name": "Tommi Sytelä"
},
{
"name": "Lisanna Lehtonen"
"name": "Visa Kurvi"
},
{
"name": "Petrus Asikainen"
}
]
}
-55
View File
@@ -1,55 +0,0 @@
{
"slug": "ftmk",
"name_fi": "Fuksitoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Fuksitoimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Sauli Hakala"
}
]
},
{
"name_fi": "Fuksitoimikunnan puheenjohtajan adjutantti",
"name_en": "",
"representatives": [
{
"name": "Valentin Juhela"
}
]
},
{
"name_fi": "KV-fuksikapteeni",
"name_en": "International Fuksi Captain",
"representatives": [
{
"name": "Verneri Turkki"
},
{
"name": "Liisa Haltia"
}
]
},
{
"name_fi": "ISOvastaava",
"name_en": "Tutor Coordinator",
"representatives": [
{
"name": "Auli Purolinna"
}
]
},
{
"name_fi": "KV-ISOvastaava",
"name_en": "International Tutor Coordinator",
"representatives": [
{
"name": "Aleksanteri Vesala"
}
]
}
]
}
-55
View File
@@ -1,55 +0,0 @@
{
"slug": "htmk",
"name_fi": "Hupitoimikunta",
"name_en": "Entertainment Committee",
"roles": [
{
"name_fi": "Hovimestari",
"name_en": "Master of Ceremonies",
"representatives": [
{
"name": "Axel Aurola"
}
]
},
{
"name_fi": "Hovineuvos",
"name_en": "Court Counsellor",
"representatives": [
{
"name": "Nelli Liljasto"
}
]
},
{
"name_fi": "Emäntä",
"name_en": "Hostess",
"representatives": [
{
"name": "Aino Tasapuro"
},
{
"name": "Matilda Ahonen"
}
]
},
{
"name_fi": "Isäntä",
"name_en": "Host",
"representatives": [
{
"name": "Tuomas Rantamäki"
},
{
"name": "Martti Jokinen"
},
{
"name": "Joona Maaranen"
},
{
"name": "Teemu Heikkinen"
}
]
}
]
}
+25 -10
View File
@@ -8,7 +8,7 @@
"name_en": "Master of Wellbeing",
"representatives": [
{
"name": "Peter Lindahl"
"name": "Sofia Öhman"
}
]
},
@@ -17,13 +17,13 @@
"name_en": "Culture Representative",
"representatives": [
{
"name": "Eero Pietiläinen"
"name": "Juha Anttila"
},
{
"name": "Miika Helminen"
"name": "Aleksi Helin"
},
{
"name": "Veikko Räty"
"name": "Julia Pykälä-aho"
}
]
},
@@ -32,16 +32,16 @@
"name_en": "Sports Representative",
"representatives": [
{
"name": "Matias Hendolin"
"name": "Aaro Niskanen"
},
{
"name": "Janne Sjöblom"
"name": "Sauli Norja"
},
{
"name": "Niklas Ritalahti"
"name": "Viola Palolahti"
},
{
"name": "Aino Salmi"
"name": "Eero Tihtonen"
}
]
},
@@ -50,7 +50,19 @@
"name_en": "Guild Room Representative",
"representatives": [
{
"name": "Justus Ojala"
"name": "Patrick Linnanen"
}
]
},
{
"name_fi": "Kiltapäiväkerhovastaava",
"name_en": "",
"representatives": [
{
"name": "Samu Nyman"
},
{
"name": "Aleksanteri Vesala"
}
]
},
@@ -59,7 +71,10 @@
"name_en": "",
"representatives": [
{
"name": "Juulia Härkönen"
"name": "Vilhelmiina Honkanen"
},
{
"name": "Pinja Leppänen"
}
]
}
-64
View File
@@ -1,64 +0,0 @@
{
"slug": "ltmk",
"name_fi": "Lukkaritoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Lukkarimestari",
"name_en": "",
"representatives": [
{
"name": "Jenni Marttinen"
}
]
},
{
"name_fi": "Lukkari",
"name_en": "",
"representatives": [
{
"name": "Kasper Skog"
},
{
"name": "Leevi Oikarinen"
},
{
"name": "Mikko Hokkanen"
},
{
"name": "Patrick Linnanen"
},
{
"name": "Patrik Varteva"
}
]
},
{
"name_fi": "Lukkarikisälli",
"name_en": "",
"representatives": [
{
"name": "Arvi Virkkunen"
},
{
"name": "Aino Salmi"
},
{
"name": "Igor Oinonen"
},
{
"name": "Ilmari Reponen"
},
{
"name": "Karoliina Talvikangas"
},
{
"name": "Markus Aaltio"
},
{
"name": "Tapio Immonen"
}
]
}
]
}
+55 -47
View File
@@ -4,11 +4,11 @@
"name_en": "Media Committee",
"roles": [
{
"name_fi": "Päätoimittaja",
"name_fi": "Puheenjohtaja, Päätoimittaja",
"name_en": "Chair, Editor in Chief",
"representatives": [
{
"name": "Visa Kurvi",
"name": "Aino Suomi",
"phone_number": null,
"email": null,
"image": null
@@ -20,76 +20,56 @@
"name_en": "Journalist",
"representatives": [
{
"name": "Miikka Mäki"
"name": "Emmaleena Ahonen"
},
{
"name": "Elmo Kankkunen"
"name": "Elias Hirvonen"
},
{
"name": "Junias Vasama"
"name": "Ville Lairila"
},
{
"name": "Tapio Immonen"
"name": "Olli Komulainen"
},
{
"name": "Leevi Oikarinen"
"name": "Pinja Salo"
},
{
"name": "Olli Vaismaa"
"name": "Tuukka Syrjänen"
},
{
"name": "Tommi Sytelä"
},
{
"name": "Sauli Norja"
},
{
"name": "Eino Tyrväinen"
},
{
"name": "Topi Manskinen"
},
{
"name": "Patrick Linnanen"
},
{
"name": "Tiitus Koski"
"name": "Aleksanteri Vesala"
}
]
},
{
"name_fi": "Taittaja",
"name_en": "",
"name_fi": "Toimittaja & Valokuvaaja",
"name_en": "Journalist & Photographer",
"representatives": [
{
"name": "Arvi Virkkunen"
},
{
"name": "Patrik Varteva"
},
{
"name": "Otto Kievimaa"
},
{
"name": "Aaron Löfgren"
},
{
"name": "Atte Vitie"
"name": "Jarno Mustonen"
}
]
},
{
"name_fi": "Graafikko",
"name_en": "Photographer & Graphic Artist",
"name_fi": "Taittaja & Valokuvaaja",
"name_en": "Layout Artist & Photographer",
"representatives": [
{
"name": "Elian Salmimaa"
"name": "Jonna Tammikivi"
},
{
"name": "Julia Pykälä-Aho"
},
"name": "Sasu Saalasti"
}
]
},
{
"name_fi": "Taittaja & Toimittaja",
"name_en": "Layout Artist & Journalist",
"representatives": [
{
"name": "Raita Sandberg"
"name": "Juuli Leppänen"
}
]
},
@@ -98,11 +78,39 @@
"name_en": "Photographer",
"representatives": [
{
"name": "Veikko Räty"
"name": "Toni Lyttinen"
},
{
"name": "Milja Kuusela"
"name": "Sauli Norja"
},
{
"name": "Rasmus Räsänen"
}
]
},
{
"name_fi": "Valokuvaaja & Graafikko",
"name_en": "Photographer & Graphic Artist",
"representatives": [
{
"name": "Kalle Petäjäaho"
}
]
},
{
"name_fi": "Graafikko",
"name_en": "Photographer & Graphic Artist",
"representatives": [
{
"name": "Otto Julkunen"
}
]
},
{
"name_fi": "Videokuvaaja",
"name_en": "Videographer",
"representatives": [
{
"name": "Aaro Rasilainen"
}
+32 -32
View File
@@ -4,20 +4,20 @@
"name_en": "",
"roles": [
{
"name_fi": "N-toimikunnan nestori",
"name_fi": "N-toimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Eveliina Ahonen"
"name": "Ville Kaakinen"
}
]
},
{
"name_fi": "N-toimikunnan neuvos",
"name_fi": "N-toimikunnan varapuheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Melisa Dönmez"
"name": "Jami Hyytiäinen"
}
]
},
@@ -26,57 +26,57 @@
"name_en": "",
"representatives": [
{
"name": "Samu Tepponen"
"name": "Ville-Pekka Laakkonen"
}
]
},
{
"name_fi": "Nipsu",
"name_fi": "Alumivastaava",
"name_en": "",
"representatives": [
{
"name": "Venla Vastamäki"
},
{
"name": "Mikko Suhonen"
},
{
"name": "Tommi Oinonen"
},
{
"name": "Nestori Yrjönkoski"
},
{
"name": "Henry Gustafsson"
},
{
"name": "Jenna Lundström"
"name": "Ella Eilola"
}
]
},
{
"name_fi": "Kiltapatruuna",
"name_en": "",
"representatives": [
"name_fi": "N-Toimihenkilö",
"name_en": "",
"representatives": [
{
"name": "Otto Julkunen"
"name": "Timi Tiira"
},
{
"name": "Iikka Huttu"
"name": "Erna Virtanen"
},
{
"name": "Melisa Dönmez"
"name": "Emmaleena Ahonen"
},
{
"name": "Pyry Vaara"
"name": "Jarno Mustonen"
},
{
"name": "Nette Levijoki"
"name": "Pekka Aho"
},
{
"name": "Juulia Härkönen"
"name": "Mikko Haapamäki"
},
{
"name": "Jonna Tammikivi"
},
{
"name": "Juuli Leppänen"
},
{
"name": "Simo Hakanummi"
},
{
"name": "Tuomo Leino"
},
{
"name": "Sasu Saalasti"
}
]
]
}
]
}
+31 -21
View File
@@ -8,7 +8,7 @@
"name_en": "Master of Studies",
"representatives": [
{
"name": "Mikko Sandström"
"name": "Iikka Huttu"
}
]
},
@@ -17,36 +17,46 @@
"name_en": "Study Coordinator",
"representatives": [
{
"name": "Sampo Stranden"
"name": "Juulia Härkönen"
},
{
"name": "Janne Sjöblom"
"name": "Patrick Linnanen"
},
{
"name": "Ville Tjeder"
"name": "Veeti Lahtinen"
},
{
"name": "Otto Rinne"
"name": "Pinja Leppänen"
},
{
"name": "Oona Karjalainen"
},
{
"name": "Mikael Siikonen"
},
{
"name": "Victor Barannik"
},
{
"name": "Max Laine"
},
{
"name": "Iida Luoma"
},
{
"name": "Konsta Langi"
"name": "Mikko Sandström"
}
]
},
{
"name_fi": "Abimarkkinointipäävastaava",
"name_en": "",
"representatives": [
{
"name": "Vilhelmiina Honkanen"
}
]
},
{
"name_fi": "Abimarkkinointivastaava",
"name_en": "",
"representatives": [
{
"name": "Liisa Haltia"
},
{
"name": "Jenni Marttinen"
},
{
"name": "Venla Vastamäki"
}
]
}
]
}
+46 -21
View File
@@ -3,12 +3,38 @@
"name_fi": "Muut",
"name_en": "Other officials",
"roles": [
{
"name_fi": "Kiltapatruuna",
"name_en": "Guild elder",
"representatives": [
{
"name": "Toni Lyttinen",
"phone_number": null,
"email": null
},
{
"name": "Emmaleena Ahonen",
"phone_number": null,
"email": null
},
{
"name": "Johannes Ora",
"phone_number": null,
"email": null
},
{
"name": "Antti Mäki",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "TEK-yhdyshenkilö",
"name_en": "TEK contact person",
"representatives": [
{
"name": "Esko Väänänen",
"name": "Oskari Ponkala",
"phone_number": null,
"email": null
}
@@ -19,42 +45,41 @@
"name_en": "Archivist",
"representatives": [
{
"name": "Iikka Huttu",
"name": "Timi Tiira",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "Teekkarikokouksen kiltaedustaja",
"name_fi": "Häirintäyhdydyshenkilö",
"name_en": "",
"representatives": [
{
"name": "Oliver Hiekkamies"
"name": "Toni Ojala",
"phone_number": null,
"email": null
},
{
"name": "Aino Suomi",
"phone_number": null,
"email": null
},
{
"name": "Sauli Norja",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "Yhdenvertaisuusvastaava",
"name_fi": "Somevastaava",
"name_en": "",
"representatives": [
{
"name": "Salla Lyytikäinen"
},
{
"name": "Emilia Kortelainen"
},
{
"name": "Arttu Pahta"
},
{
"name": "Niklas Ritalahti"
},
{
"name": "Aaron Löfgren"
},
{
"name": "Aino Suomi"
"name": "Aaron Löfgren",
"phone_number": null,
"email": null
}
]
}
+106
View File
@@ -0,0 +1,106 @@
{
"slug": "otmk",
"name_fi": "Ohjelmatoimikunta",
"name_en": "Entertainment Committee",
"roles": [
{
"name_fi": "Hovimestari",
"name_en": "Master of Ceremonies",
"representatives": [
{
"name": "Sakke Kangas"
}
]
},
{
"name_fi": "Hovineuvos",
"name_en": "Court Counsellor",
"representatives": [
{
"name": "Eero Ketonen"
}
]
},
{
"name_fi": "Emäntä",
"name_en": "Hostess",
"representatives": [
{
"name": "Elina Huttunen"
}
]
},
{
"name_fi": "Isäntä",
"name_en": "Host",
"representatives": [
{
"name": "Aleksi Saajakari"
},
{
"name": "Aaron Löfgren"
},
{
"name": "Verneri Turkki"
},
{
"name": "Elias Lindberg"
},
{
"name": "Roni Vallius"
},
{
"name": "Elias Damski"
}
]
},
{
"name_fi": "Lukkari",
"name_en": "",
"representatives": [
{
"name": "Sakari Harjunpää"
},
{
"name": "Eero Torpo"
},
{
"name": "Niilo Ojala"
},
{
"name": "Samuel Laine"
},
{
"name": "Toni Ojala"
},
{
"name": "Ville Kaakinen"
}
]
},
{
"name_fi": "Lukkarikisällit",
"name_en": "",
"representatives": [
{
"name": "Oona Karjalainen"
},
{
"name": "Peter Lindahl"
},
{
"name": "Aino Suomi"
},
{
"name": "Sauli Norja"
},
{
"name": "Venla Vastamäki"
},
{
"name": "Kasper Skog"
}
]
}
]
}
-40
View File
@@ -1,40 +0,0 @@
{
"slug": "swtmk",
"name_fi": "SIKin Wapaa-aika -toimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Myymäläpäällikkö",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren"
}
]
},
{
"name_fi": "Myyjä",
"name_en": "",
"representatives": [
{
"name": "Elina Huttunen"
},
{
"name": "Jere Tahvanainen"
},
{
"name": "Iida Pakarinen"
},
{
"name": "Arkadii Kolchin"
},
{
"name": "Otto Kievimaa"
},
{
"name": "Aino Salmi"
}
]
}
]
}
-40
View File
@@ -1,40 +0,0 @@
{
"slug": "swtmk",
"name_fi": "SIKin Wapaa-aika -toimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Myymäläpäällikkö",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren"
}
]
},
{
"name_fi": "Myyjä",
"name_en": "",
"representatives": [
{
"name": "Elina Huttunen"
},
{
"name": "Jere Tahvanainen"
},
{
"name": "Iida Pakarinen"
},
{
"name": "Arkadii Kolchin"
},
{
"name": "Otto Kievimaa"
},
{
"name": "Aino Salmi"
}
]
}
]
}
+19 -4
View File
@@ -8,25 +8,40 @@
"name_en": "Master of technology",
"representatives": [
{
"name": "Johannes Viirimäki"
"name": "Ilari Ojakorpi"
}
]
},
{
"name_fi": "Teknologiavastaava",
"name_fi": "Teknologianeuvos",
"name_en": "Technology Advisor",
"representatives": [
{
"name": "Aarni Halinen"
},
{
"name": "Jaakko Koskela"
},
{
"name": "Toni Lyttinen"
}
]
},
{
"name_fi": "Teknologiakisälli",
"name_en": "",
"representatives": [
{
"name": "Elmo Kankkunen"
},
{
"name": "Tommi Sytelä"
"name": "Antti Eronen"
},
{
"name": "Justus Ojala"
},
{
"name": "Niklas Eloranta"
"name": "Lasse Ruokokoski"
}
]
}
-37
View File
@@ -1,37 +0,0 @@
{
"slug": "vtmk",
"name_fi": "Viestintätoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Sihteeri",
"name_en": "Secretary",
"representatives": [
{
"name": "Akseli Heikkinen"
}
]
},
{
"name_fi": "Somevastaava",
"name_en": "",
"representatives": [
{
"name": "Jan Lahikainen"
},
{
"name": "Markus Aaltio"
}
]
},
{
"name_fi": "Videokuvaaja",
"name_en": "",
"representatives": [
{
"name": "Mikael Vatiainen"
}
]
}
]
}
+16 -43
View File
@@ -8,16 +8,25 @@
"name_en": "Master of Corporate Relations",
"representatives": [
{
"name": "Emma Uusküla"
"name": "Tommi Oinonen"
}
]
},
{
"name_fi": "Excursio- ja ulkomestari",
"name_en": "Head of Excursions and External Relations",
"name_fi": "Excursiopäävastaava",
"name_en": "Head of Excursions",
"representatives": [
{
"name": "Roope Jaskari"
"name": "Henry Gustafsson"
}
]
},
{
"name_fi": "Excursiovastaava",
"name_en": "",
"representatives": [
{
"name": "Visa Kurvi"
}
]
},
@@ -32,49 +41,13 @@
"name": "Emma Reinikainen"
},
{
"name": "Nette Levijoki"
"name": "Iida Luoma"
},
{
"name": "Matias Hendolin"
"name": "Elma Tuohimetsä"
},
{
"name": "Suvi Nenonen"
},
{
"name": "Tuomas Hintikka"
},
{
"name": "Roman Shalamov"
},
{
"name": "Yassine Ramid"
}
]
},
{
"name_fi": "Excursio- ja ulkovastaava",
"name_en": "",
"representatives": [
{
"name": "Auli Purolinna"
},
{
"name": "Jan Lahikainen"
},
{
"name": "Otto Rinne"
},
{
"name": "Rudolf Peltonen"
},
{
"name": "Miika Passila"
},
{
"name": "Wiljam Laiho"
},
{
"name": "Elmeri Aulasuo"
"name": "Nestori Yrjönkoski"
}
]
}
@@ -65,9 +65,11 @@ const CorporatePageView: React.FC<CorporatePageViewProps> = ({ jobAds }) => (
<h6>Potentiaalin Tasaus</h6>
<p>
Kiltamme viettää perinteikäs vuosijuhlaansa helmikuun kolmantena lauantaina.
Kiltamme viettää perinteikkäi vuosijuhliaan helmikuun kolmantena lauantaina.
Potentiaalin Tasaus on kiltamme juhlavin ja rakkain tapahtuma.
Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella!
Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella.
Killan 100-vuotisjuhla PoTa100 lähestyy myös kovaa vauhtia.
Jos yrityksesi on kiinnostunut 100-vuotisjuhlasta, kannattaa ohjautua osoitteeseen <Link to="https://sik100.fi">sik100.fi</Link>.
</p>
<h6>Killan nettisivut ja työpaikkamainokset</h6>
+6 -6
View File
@@ -13,24 +13,24 @@ const FreshmenPageHero: React.FC = () => (
<HeroAside bgColor="lightTurquoise">
<HeroAsideItem
header="Lue killan fuksiopas"
link="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2023.pdf"
link="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2022.pdf"
linkText="lue fuksiopas täältä!"
/>
<HeroAsideItem
header="Seuraa killan tiedotusta"
link="https://t.me/+AB-JMbAxM2c0MDc0"
linkText="Liity killan Telegram-ryhmään!"
link="https://t.me/+ubTeGSYKTvg3NmVk"
linkText="Liity killan Telegram-ryhmiin"
/>
<HeroAsideItem
header="Kaikki kunnossa opiskelua varten?"
link="https://www.aalto.fi/fi/ohjelmat/sahkotekniikan-kandidaattiohjelma/opintojen-aloittaminen"
link="https://into.aalto.fi/pages/viewpage.action?pageId=1183171"
linkText="Lue korkeakoulun tietopaketti"
/>
<HeroAsideItem
header="Fuksiryhmät ja ISOt?"
header="ISO-ryhmät ja ISO-henkilöt?"
link="#isot"
linkText="Tietoa fuksiryhmistä"
linkText="Tsekkaa ISO-henkilöiden tiedot"
/>
</HeroAside>
</Hero>
+16 -16
View File
@@ -7,8 +7,8 @@ import {
import FreshmenPageHero from "./FreshmenPageHero";
const FUKSI_POINTS_LINK = "https://static.sahkoinsinoorikilta.fi/FTMK/Fuksipisteohje.pdf";
const TG_GROUP_CHAT_LINK = "https://t.me/+6rAKYPVaCmg4ZTlk";
const TG_NOTIFICATIONS_LINK = "https://t.me/+57BnXcTlsuU0YWQ0";
const TG_GROUP_CHAT_LINK = "https://t.me/+1PqQHRVMjiAxMTU0";
const TG_NOTIFICATIONS_LINK = "https://t.me/+Ln8TvQ-_id9kZTU0";
const EMAIL_LINK = "ftmk@sahkoinsinoorikilta.fi";
const EMAIL_LINK_MAILTO = `mailto:${EMAIL_LINK}`;
@@ -58,7 +58,7 @@ const FreshmenPageView: React.FC = () => (
<ImageContainer>
<Image
src="https://static.sahkoinsinoorikilta.fi/uus_webi/fuksikipparit-2023.jpg"
src="https://static.sahkoinsinoorikilta.fi/uus_webi/fuksikipparit-2022.jpg"
alt="Kipparit"
layout="responsive"
width={100}
@@ -69,7 +69,7 @@ const FreshmenPageView: React.FC = () => (
<h6>Fuksikapteenit</h6>
<p>
Me olemme fuksikapteenisi <strong>Aaron</strong> ja <strong>Kasper</strong> ja tulemme olemaan tukenasi sekä valvomassa suorituksiasi fuksivuoden seikkailuissa kohti teekkarilakkia, jonka voit ansaita mahdollisesti järjestettävänä Wappuna ensi keväällä.
Me olemme fuksikapteenisi <strong>Melisa</strong> ja <strong>Eveliina</strong> ja tulemme olemaan tukenasi sekä valvomassa suorituksiasi fuksivuoden seikkailuissa kohti teekkarilakkia, jonka voit ansaita mahdollisesti järjestettävänä Wappuna ensi keväällä.
Jos sinulla on mitään kysymyksiä, ota ihmeessä meihin yhteyttä esimerkiksi <Link to={TG_GROUP_CHAT_LINK} target="_blank">Telegramissa</Link> tai <a href={EMAIL_LINK_MAILTO}>sähköpostitse</a>.
</p>
@@ -79,14 +79,14 @@ const FreshmenPageView: React.FC = () => (
Ajan myötä palapelin palat muodostavat sinun näköisesi kuvan ja pääset itse vaikuttamaan siihen, miltä lopputulos näyttää.
</p>
<p>
Orientaatioviikko järjestetään 28.8.-1.9.2023, mutta jo ennen sitä sinulla on mahdollisuus tulla tutustumaan meihin, muihin fuksiehin ja ISOihin rennon Varaslähtöön. Varaslähtö fuksivuoteen järjestetään 19.8.2023. Siitä lisää Telegram-ryhmissä!
Orientaatioviikko järjestetään 29.08.2022-02.09.2022, mutta jo ennen sitä sinulla on mahdollisuus tulla tutustumaan meihin, muihin fuksiehin ja ISOihin rennon Varaslähtöön. Varaslähtö fuksivuoteen järjestetään 20.8.2022. Siitä lisää Telegram-ryhmissä!
</p>
<h6>Aaron Löfgren</h6>
<p>040 484 5418<br />aaron.lofgren (ät) sahkoinsinoorikilta.fi <br />@aaronlofgren</p>
<h6>Melisa Dönmez</h6>
<p>044 239 2385 <br />melisa.donmez (ät) sahkoinsinoorikilta.fi <br />@melisadonmez</p>
<h6>Kasper Skog</h6>
<p>040 667 5266<br />kasper.skog (ät) sahkoinsinoorikilta.fi <br />@Skooogi</p>
<h6>Eveliina Ahonen</h6>
<p>050 911 8818 <br />eveliina.ahonen (ät) sahkoinsinoorikilta.fi <br />@ahoonen</p>
</div>
<aside>
<div>
@@ -103,14 +103,14 @@ const FreshmenPageView: React.FC = () => (
<div>
<InfoBox>
<h6>Killan Fuksiopas</h6>
<Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2023.pdf" target="_blank">
<Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2022.pdf" target="_blank">
<FopasImage
src="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2023-kansi.png"
src="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2022-kansi.jpg"
/>
</Link>
<p>
Ennen opintojen alkua on hyvä tutustua killan fuksioppaaseen. Sitä pääset selailemaan <Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2023.pdf" target="_blank"> tästä.</Link>
Ennen opintojen alkua on hyvä tutustua killan fuksioppaaseen. Sitä pääset selailemaan <Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2022.pdf" target="_blank"> tästä.</Link>
</p>
<br />
<h6>Telegram?</h6>
@@ -123,12 +123,12 @@ const FreshmenPageView: React.FC = () => (
SIK:n fukseilla on oma Telegram-ryhmä, jonne pääset liitymään tästä:
</p>
<QRImages
src="https://static.sahkoinsinoorikilta.fi/FTMK/sik-fuksit-2023.jpg"
src="https://static.sahkoinsinoorikilta.fi/FTMK/sik-fuksit-2022.jpg"
/>
<p>tai <Link to={TG_GROUP_CHAT_LINK} target="_blank">tästä</Link></p>
<p>Liity myös samalla SIK-fuksien tiedotuskanavalle tästä:</p>
<QRImages
src="https://static.sahkoinsinoorikilta.fi/FTMK/sik-fuksit-2023-tiedotus.jpg"
src="https://static.sahkoinsinoorikilta.fi/FTMK/sik-fuksit-2022-tiedotus.jpg"
/>
<p>tai <Link to={TG_NOTIFICATIONS_LINK} target="_blank">tästä</Link></p>
</InfoBox>
@@ -144,10 +144,10 @@ const FreshmenPageView: React.FC = () => (
</CTASection>
<TextSection>
<h3 id="isot">Fuksiryhmät ja ISO-toiminta</h3>
<h3 id="isot">Isoryhmät</h3>
<div>
<p>
SIK:n fuksit nauttivat hurmaavien ISOjen opastuksesta ja hellästä huolenpidosta omissa fuksiryhmissään.
SIK:n fuksit nauttivat hurmaavien ISOhenkilöidensä opastuksesta ja hellästä huolenpidosta omissa fuksiryhmissään.
</p>
<p>
ISOt ovat hiukan vanhempia opiskelijoita ja kiltalaisia, joiden tehtävänä on olla tukenasi fuksivuoden ajan. Ensimmäisenä päivänä teidät jaetaan noin kymmenen hengen fuksiryhmiin ja jokaiseen ryhmään kuuluu kolmesta viiteen ISOa, joista yksi toimii opintoISOna. ISOilta voit kysyä mitä vain opiskeluun ja opiskelijaelämään liittyen. Vaikka he eivät tietäisi vastausta, he luultavimmin osaavat auttaa sinua vastausten löytämisessä.
+1 -1
View File
@@ -163,7 +163,7 @@ const GuildPageView: React.FC = () => (
</p>
<p>
Kiltalaisten omia projekteja varten kilta ylläpitää Otakaari 1:ssä sijaitsevaa <Link to="https://elepaja.ayy.fi">Elektroniikkapajaa</Link>, josta löytyy tarvikkeita, työkaluja ja tilat monenlaisia töitä varten.
Jos haluat tutustua tiloihin, ota yhteyttä <Link to="/yhteystiedot#ptmk">pajamestariin</Link>!
Jos haluat tutustua tiloihin, ota yhteyttä <Link to="/yhteystiedot#eptmk">pajavastaavaan</Link>!
</p>
</div>
<aside>
+4 -38
View File
@@ -25,7 +25,7 @@ const HonoraryPageView: React.FC = () => (
<li>Seppo Saastamoinen 2022-</li>
</ul>
<h2>Oltermannit</h2>
<p>Oltermanni on yhdyshenkilö killan ja opettajakunnan välillä. Killan yleinen kokous valitsee oltermannin kolmeksi vuodeksi kerrallaan.</p>
<p>Oltermanni on yhdyshenkilö killan ja opettajakunnan välillä. Valtuusto valitsee oltermannin kolmeksi vuodeksi kerrallaan.</p>
<ul>
<li>Martti Paavola 19461965</li>
<li>Martti Tiuri 19651968</li>
@@ -43,7 +43,7 @@ const HonoraryPageView: React.FC = () => (
<li>Anu Lehtovuori 2020</li>
</ul>
<h2>Pro SIK</h2>
<p>ProSIK -kunniamaininnan voi saada killan toiminnassa ansioitunut, yleensä valmistunut tai valmistumisvaiheessa oleva henkilö. ProSIK myönnetään vuosittain Potentiaalin Tasauksen yhteydessä.</p>
<p>Pro SIK -maininnan voi saada killan toiminnassa ansioitunut, yleensä valmistunut tai valmistumisvaiheessa oleva henkilö. Pro SIK myönnetään vuosittain Potentiaalin Tasauksen yhteydessä.</p>
<ul>
<li>1984 Mikko J. Salminen</li>
<li>1985 Mika Sorvettula, Matti Carpén</li>
@@ -84,8 +84,6 @@ const HonoraryPageView: React.FC = () => (
<li>2020 Anni Parkkila, Aliisa Pietilä</li>
<li>2021 Essi Jukkala</li>
<li>2022 Erna Virtanen, Tuukka Syrjänen</li>
<li>2023 Emmaleena Ahonen</li>
<li>2024 Jonna Tammikivi</li>
</ul>
<h2>Standaari</h2>
<p>Standaari voidaan hallituksen päätöksellä lahjoittaa killan toimintaan myönteisesti vaikuttaneille tahoille. Standaarit on numeroitu lahjoittamisjärjestyksessä.</p>
@@ -104,13 +102,10 @@ const HonoraryPageView: React.FC = () => (
<li>2013 Martti Valtonen</li>
<li>2016 ABB Oy</li>
<li>2021 Elektroteknologsektionens Kalle Anka-Kommitté</li>
<li>2023 Tekniikan akateemiset TEK, Automaatio- ja systeemitekniikan kilta ry</li>
</ul>
<h2>Kultaiset ansiomerkit</h2>
<p>
Kultainen ansiomerkki voidaan myöntää killan jäsenelle tai perustellusta syystä myös muulle henkilölle,
joka on osoittanut ylitsevuotavaa kiinnostusta kiltaa sekä sen toimintaa kohtaan, joka on pitkään toiminut aktiivisesti killan hyväksi
ja joka esimerkillään innostaa myös muita entistä aktiivisempaan toimintaan killan parissa.
Kultainen ansiomerkki voidaan myöntää killan jäsenelle tai perustellusta syystä myös muulle henkilölle, joka on osoittanut ylitsevuotavaa kiinnostusta kiltaa sekä sen toimintaa kohtaan, joka on pitkään toiminut aktiivisesti killan hyväksi ja joka esimerkillään innostaa myös muita entistä aktiivisempaan toimintaan killan parissa.
Vastaava merkki jaettiin vuoteen 2006 asti hallitukselle edustusmerkkinä.
</p>
<ul>
@@ -210,20 +205,8 @@ const HonoraryPageView: React.FC = () => (
<li>2022 Sini Huhtinen</li>
<li>2022 Ukko Kasvi</li>
</ul>
<ul>
<li>2023 Sasu Saalasti</li>
<li>2023 Ville Kaakinen</li>
<li>2023 Mikael Liimatainen</li>
<li>2023 Jami Hyytiäinen</li>
</ul>
<ul>
<li>2024 Eveliina Ahonen</li>
<li>2024 Melisa Dönmez</li>
<li>2024 Pyry Vaara</li>
<li>2024 Suvi Karanta</li>
</ul>
<h2>Hopeiset ansiomerkit</h2>
<p>Killan hallitus voi myöntää hopeisen ansiomerkin killan jäsenelle tai perustellusta syystä myös muulle henkilölle tunnustuksena erityisestä kiinnostuksesta kiltaa kohtaan sekä ansioituneesta toiminnasta killan hyväksi.</p>
<p>Killan hallitus voi myöntää hopeitosen ansiomerkin killan jäsenelle tai perustellusta syystä myös muulle henkilölle tunnustuksena erityisestä kiinnostuksesta kiltaa kohtaan sekä ansioituneesta toiminnasta killan hyväksi.</p>
<ul>
<li>1996 Saila Kolehmainen</li>
</ul>
@@ -587,23 +570,6 @@ const HonoraryPageView: React.FC = () => (
<li>2022 Tuomas Pajunpää</li>
<li>2022 Ville-Pekka Laakkonen</li>
</ul>
<ul>
<li>2023 Aleksanteri Vesala</li>
<li>2023 Eero Ketonen</li>
<li>2023 Emilia Sundholm</li>
<li>2023 Emma Reinikainen</li>
<li>2023 Esko Väänänen</li>
<li>2023 Eveliina Ahonen</li>
<li>2023 Heidi Mäkitalo</li>
<li>2023 Iikka Huttu</li>
<li>2023 Melina Sundell</li>
<li>2023 Melisa Dönmez</li>
<li>2023 Miku Männistö</li>
<li>2023 Nestori Yrjönkoski</li>
<li>2023 Salla Lyytikäinen</li>
<li>2023 Tommi Oinonen</li>
<li>2023 Verneri Turkki</li>
</ul>
</div>
</TextSection>
</>
@@ -128,7 +128,7 @@ const InEnglishPageView: React.FC<InEnglishPageViewProps> = ({ events, feed }) =
<p>Balance your studies and get connected</p>
<div>
<h6>Build everything related to electronics</h6>
<p>SIK-PAJA is an electronics workshop run by the guild, where students get to apply skills they have learned at school in practical projects. Over time, students have built diverse projects in the workshop, such as their first LED overall badges, tesla windings, robots and radio transmitters. If you are interested in building electronics or you need help with a project, then come visit the workshop located at Otakaari 1 h023b. The workshop is equipped with basic tools such as circuit boards, etching tools, soldering tools, various components and a wide range of measuring equipment. You can join <Link to="https://t.me/sikpaja">sikpaja&apos;s Telegram group here</Link>.</p>
<p>Elepaja is an electronics workshop run by the guild, where students get to apply skills they have learned at school in practical projects. Over time, students have built diverse projects in the workshop, such as their first LED flashlights, tesla windings, robots and radio transmitters. If you are interested in building electronics or you need help with a project, then come visit the workshop located at Otakaari 1 h023b. The workshop is equipped with basic tools such as circuit boards, etching tools, soldering tools, various components, column drill and a wide range of measuring equipment. You can join <Link to="https://elepaja.fi/tg">elepaja&apos;s Telegram group here</Link>.</p>
<h6>Sports events</h6>
<p>The committee of Well Being runs many things in our guild. One of these is providing sports events to the guild members. In cooperation with other guilds, we regularly organize opportunities to play floorball and other sports. Sports tryouts are available throughout the year and are organized in co-operation with various sports organizations in Otaniemi. Keep your eyes open in the <Link to="#events">events</Link> section and join the <Link to="https://t.me/joinchat/DJRXxkKd0SMj0e9pBPXF1A/"> sports Telegram group.</Link></p>
<h6>Culture from culinarism to theater</h6>
@@ -186,8 +186,6 @@ const InEnglishPageView: React.FC<InEnglishPageViewProps> = ({ events, feed }) =
<h3 id="freshmen">For exchange student</h3>
<div>
<div>
<h6>Telegram group 2023-2024</h6>
<p>For starters, we recommend you join the <Link to="https://t.me/+ewiOhvuTXAcwODRk">Telegram-channel</Link> made for new exchange and master&apos;s students.</p>
<h6>Freshman points</h6>
<p>What is student life like in Finland? What are the unique cool things to experience? To find out we recommend collecting the fuksi points (freshman points) to your fuksi point card. It&apos;s fun! The point card gives you a guideline to experiencing the student life and allows you to get a diploma with the privilege to wear the teekkari cap. Note that internationals are also fuksis on their first year in Aalto even though they are not really freshmen. Even Finns who change to a different study program get to be a fuksi again.</p>
<h6>Overalls</h6>
-33
View File
@@ -1,33 +0,0 @@
import React from "react";
import { TextSection, Link } from "@components/index";
const RentPageView: React.FC = () => (
<TextSection>
<h1>Vuokraa tavaroita</h1>
<div>
<p>Kilta vuokraa erilaisia laittteita ja varusteita korvausta vastaan. Tältä sivulta löydät hinnaston ja varauskalenterin vuokrattaville tavaroille.</p>
<p>Vuokrattavien hinnasto:</p>
<ul>
<li>Mökämasiina <a href="https://static.sahkoinsinoorikilta.fi/img/equipment/mokamasiina.jpg">kuva</a> 50</li>
<li>SIK-Teltta <a href="https://sik.kuvat.fi/kuvat/2021/Varaslähtö/Varaslähtö-Suvi-Karanta-16.jpg">kuva</a> 50 /päivä</li>
<li>Gongi ilmainen</li>
<li>80 kpl kevytpeitteet</li>
<ul>
<li>Alle 5 kpl ilmainen</li>
<li>5 - 50 kpl tapauskohtaisesti</li>
<li>Yli 50 kpl 50</li>
</ul>
<li>6 kpl valokannut (Showtec Compact PAR 7 Tri) <a href="https://static.sahkoinsinoorikilta.fi/img/equipment/par7tri.png">kuva</a></li>
<ul>
<li>1 kpl 10/päivä</li>
<li>6 kpl 50/päivä</li>
</ul>
</ul>
<p>Tiedustelut ja varaukset osoitteesta <a href="mailto:hallitus@sahkoinsinoorikilta.fi">hallitus@sahkoinsinoorikilta.fi</a></p>
<p>Varauskalenteri:</p>
<iframe src="https://calendar.google.com/calendar/embed?src=c_5774a3395a59ebaa0735e55e156b0aedca2755b9b53b85acc44b5d6e4bc1f331%40group.calendar.google.com&ctz=Europe%2FHelsinki" width="100%" height="500" title="rent_calendar" />
</div>
</TextSection>
);
export default RentPageView;
+1 -1
View File
@@ -8,7 +8,7 @@ const StudiesPageHero: React.FC = () => (
<HeroPrimarySection
header="Suomen parasta elektroniikan opetusta"
// eslint-disable-next-line max-len
text="Aalto-yliopistossa sinulla on mahdollisuus opiskella sähkö- ja elektroniikkatekniikkaa loistavien professorien ja opettajien johdolla, vieläpä parhaassa mahdollisessa yhteisössä. Sähkötekniikan korkeakoulusta valmistut matematiikkaa ja fysiikkaa soveltavaksi huippuosaajaksi, jolla on valmiudet vaikka mihin työelämän taitoihin laidasta laitaan. Lue lisää opinnoista, killan roolista yliopistoelämässä ja uramahdollisuuksista alempaa."
text="Aalto-yliopistossa sinulla on mahdollisuus opiskella sähkö- ja elektroniikkatekniikkaa huippu professorien ja opettajien johdolla, vieläpä parhaassa mahdollisessa yhteisössä. Sähkötekniikan korkeakoulusta valmistut matematiikkaa ja fysiikkaa soveltavaksi huippuosaajaksi, jolla on valmiudet vaikka mihin työelämän taitoihin laidasta laitaan. Lue lisää opinnoista, killan roolista yliopistoelämässä ja uramahdollisuuksista alempaa."
/>
<HeroAside bgColor="darkBlue">
+1 -3
View File
@@ -1,6 +1,6 @@
import { Selector } from "testcafe";
import {
getSiteRoot, getPageUrl, generateTestForm, deleteEvent, deleteForm, doLogin, generateAccessToken, getPostRequestLogger, waitForLogger,
getSiteRoot, getPageUrl, generateTestForm, deleteEvent, deleteForm, doLogin, generateAccessToken, getPostRequestLogger,
} from "../utils";
const LOGGER = getPostRequestLogger("events/");
@@ -78,8 +78,6 @@ test("Logged in user can create event", async (t) => {
await t.click(submit);
const parsed = JSON.parse(LOGGER.requests[0].response.body as string);
await waitForLogger(LOGGER);
// eslint-disable-next-line no-param-reassign
t.fixtureCtx.eventId = parsed.id;
+1 -3
View File
@@ -1,6 +1,6 @@
import { Selector } from "testcafe";
import {
getSiteRoot, getPageUrl, deleteForm, doLogin, generateAccessToken, getPostRequestLogger, waitForLogger
getSiteRoot, getPageUrl, deleteForm, doLogin, generateAccessToken, getPostRequestLogger,
} from "../utils";
const LOGGER = getPostRequestLogger("signupForm/");
@@ -97,8 +97,6 @@ test("Logged in user can create signup", async (t) => {
await t.click(submit);
const parsed = JSON.parse(LOGGER.requests[0].response.body as string);
await waitForLogger(LOGGER);
// eslint-disable-next-line no-param-reassign
t.fixtureCtx.formId = parsed.id;
-9
View File
@@ -157,12 +157,3 @@ export const generateTestEvent = async (formIds = [], jwt_access: string) => (
);
export const sleep = async (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
export const waitForLogger = async (logger: RequestLogger) => {
for (let i = 0; i < 50; i++) {
await sleep(100);
if (logger.requests.length > 0 ) {
return;
}
}
}