Compare commits

...

322 Commits

Author SHA1 Message Date
Atte Elo c55b07430d Update 5 files
- /src/views/CommitteePage/ltmk.json
- /src/views/CommitteePage/mtmk.json
- /src/views/CommitteePage/vtmk.json
- /src/views/CommitteePage/ptmk.json
- /src/views/CommitteePage/sicc.json
2026-02-27 18:33:49 +00:00
jadera 983e20ac3c changed boardimages 2026-02-16 20:19:57 +02:00
jadera 5c584972d0 update commitee entries 2026-02-13 18:01:48 +02:00
J4DER4 5d069047c8 Edit board.json 2026-01-06 18:08:10 +00:00
J4DER4 6d239d7211 Merge branch 'board26' into 'master'
Edit board.json

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!195
2026-01-06 15:17:49 +00:00
J4DER4 6a6aafcfe5 Edit board.json 2026-01-06 15:09:54 +00:00
Justus Ojala c22bad5718 Use secure websockets for mqtt 2025-10-14 17:59:55 +03:00
Justus Ojala 4fbec0b85c Do not try to connect to MQTT if host undefined 2025-10-14 08:41:25 +03:00
Justus Ojala 81be5a1e60 Merge branch 'Coffeescale' into 'master'
Coffeescale

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!193
2025-10-13 22:02:53 +03:00
Justus Ojala 80ccf1bc66 Coffeescale 2025-10-13 22:02:53 +03:00
Justus Ojala d75c6b4756 Rename submitKey to submit_id 2025-10-13 19:38:28 +03:00
SimeonPursiainen 69c06636ab Fix link for freshmen page on the homepage 2025-10-07 11:43:41 +03:00
Justus Ojala 42ce058dc9 Update guild room custodians 2025-09-23 21:38:58 +03:00
SimeonPursiainen 67627d4d16 Clearer instructions for membership payments 2025-09-23 20:54:32 +03:00
Justus Ojala 4639397d25 Merge branch 'signup_duplicate_prevention' into 'master'
Add submission key to frontend to prevent duplicate signups

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!189
2025-09-16 21:43:15 +03:00
Justus Ojala 630c0bce05 Add submission key to frontend to prevent duplicate signups 2025-09-15 14:00:24 +03:00
Simeon Pursiainen b80942ee53 Merge branch 'New_visual' into 'master'
New visual

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!187
2025-09-11 20:45:14 +03:00
Simeon Pursiainen a27c77e16c New visual 2025-09-11 20:45:14 +03:00
Simeon Pursiainen 813479a602 Merge branch 'New_visual' into 'master'
New visual

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!186
2025-09-11 20:10:29 +03:00
Simeon Pursiainen c12d4c1e73 New visual 2025-09-11 20:10:29 +03:00
SimeonPursiainen 453d20d345 Added kyykkäsetti to rentpage 2025-09-09 19:05:15 +03:00
SimeonPursiainen 7abb7dc414 Fixup 2025-09-09 13:36:16 +03:00
SimeonPursiainen 103f2b163a Changed instructions for job ads 2025-09-05 12:15:15 +03:00
SimeonPursiainen fda39d7372 added new media card for sosso 2025-09-02 16:42:35 +03:00
SimeonPursiainen 3689dbc60c Added Metso to sponsors 2025-09-01 19:52:02 +03:00
SimeonPursiainen 80a961d1f9 fix stack compose 2025-09-01 19:15:28 +03:00
SimeonPursiainen db8c8ea2b9 removing replicas 2025-09-01 18:42:42 +03:00
Justus Ojala a854de921b Merge branch 'text-fix' into 'master'
Reverse captain name order to match photo

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!178
2025-08-16 14:13:05 +03:00
Justus Ojala 9c8a2eb4ce Reverse captain name order to match photo 2025-08-16 14:13:05 +03:00
Justus Ojala ff558534a0 Merge branch 'revert-eng-freshmen' into 'master'
Revert eng freshmen page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!176
2025-08-16 13:34:46 +03:00
Justus Ojala 56531b1cfc Revert eng freshmen page 2025-08-16 13:27:06 +03:00
Justus Ojala a7c297354f Merge branch 'update-links' into 'master'
Update links on international freshman page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!175
2025-08-16 12:56:02 +03:00
Justus Ojala ff5da7a131 Update links on international freshman page 2025-08-16 12:27:35 +03:00
Justus Ojala 7412b652c1 Merge branch 'separate-eng-and-intl-pages' into 'master'
Separate eng and intl pages

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!174
2025-08-16 12:17:13 +03:00
Justus Ojala eb64777252 Separate eng and intl pages 2025-08-16 12:17:13 +03:00
Justus Ojala 73869a4c15 Merge branch 'for-freshmen-update-20250813' into 'master'
Update "for feshmen" page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!172
2025-08-13 20:35:09 +03:00
Justus Ojala b6e0e5ea36 Update "for feshmen" page 2025-08-13 20:35:09 +03:00
Simeon Pursiainen 96a591b1c5 Merge branch 'production' into 'master'
# Conflicts:
#   src/views/ForFreshmenPage/ForFreshmenPageHero.tsx
2025-07-15 21:29:15 +03:00
SimeonPursiainen 19ad40b969 fopas links fix 2025-07-15 20:43:11 +03:00
SimeonPursiainen 482be66b43 new links for fopas 2025-07-09 20:58:23 +03:00
SimeonPursiainen 5439ff9a56 fixing lint 2025-07-02 07:36:43 +03:00
SimeonPursiainen b7c06890fe english fuksipoint guide 2025-07-02 07:35:57 +03:00
SimeonPursiainen cdff86c0f3 english fuksiguide 2025-07-02 07:34:19 +03:00
SimeonPursiainen 984966f3af added replica in case of a failure 2025-07-01 20:56:44 +03:00
SimeonPursiainen fe015c3bce testing force push to refresh site 2025-07-01 19:37:07 +03:00
Simeon Pursiainen a570fde9d7 Merge branch 'master' into 'production'
Translate the freshman page hero

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!170
2025-06-26 07:22:24 +03:00
SimeonPursiainen c683b2d61a removed ramboll from sponsors 2025-06-26 06:51:13 +03:00
SimeonPursiainen c23200401f edited ForFreshmenPage 2025-06-26 06:48:37 +03:00
SimeonPursiainen 827eab0531 edited english freshmen page 2025-06-26 06:47:44 +03:00
Justus Ojala 1ee25d3447 Merge branch '60-forfreshmen' into 'master'
Translate the freshman page hero

Closes #60

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!168
2025-06-24 20:47:28 +03:00
Simeon Pursiainen e62017691c Merge branch 'master' into 'production'
added 2025 fuksiopas

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!169
2025-06-24 18:48:02 +03:00
SimeonPursiainen c116ea27cc added 2025 fuksiopas 2025-06-24 18:12:07 +03:00
Justus Ojala eb67fedde4 Merge branch 'master' into '60-forfreshmen'
# Conflicts:
#   src/views/FreshmenPage/FreshmenPageView.tsx
2025-06-23 21:49:35 +03:00
SimeonPursiainen 006a2dd548 commit5 2025-06-17 22:55:52 +03:00
SimeonPursiainen 49bb413424 commit5 2025-06-17 22:54:32 +03:00
SimeonPursiainen be4358b128 commit4 2025-06-17 22:43:13 +03:00
SimeonPursiainen db662959aa commit3 2025-06-17 22:42:05 +03:00
SimeonPursiainen 58b3e9594a commit2 2025-06-17 22:39:00 +03:00
SimeonPursiainen a120d7580d edited for freshmen 2025-06-17 22:32:25 +03:00
Simeon Pursiainen 7b2393142f Merge branch 'master' into 'production'
updated corporate logos

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!167
2025-06-16 20:47:13 +03:00
SimeonPursiainen 110ea83dc5 updated corporate logos 2025-06-12 20:44:16 +03:00
Simeon Pursiainen d4bdeeb9ae Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!166
2025-06-04 20:12:56 +03:00
SimeonPursiainen 2a44d99814 Removed Merus Power logo from frontpage 2025-06-04 19:57:06 +03:00
SimeonPursiainen 4e56f5d832 same 2025-06-04 19:55:09 +03:00
SimeonPursiainen 5ed2bfcbec same as previous 2025-06-04 19:52:14 +03:00
SimeonPursiainen 9195bd2d59 Edited fukseille-page 2025-06-04 19:49:11 +03:00
SimeonPursiainen a50f6d2562 New picture for Kipparit 2025-05-25 21:08:36 +03:00
Simeon Pursiainen ead8465673 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!165
2025-05-25 18:41:27 +03:00
SimeonPursiainen 749acccb07 Cleaning "fukseille" page 2025-05-25 18:20:30 +03:00
SimeonPursiainen 5ef98ae1f5 New FTMK 2025-05-25 18:18:37 +03:00
SimeonPursiainen c449d2e1d0 same as previous commit 2025-05-25 14:08:33 +03:00
SimeonPursiainen c8b846f518 new tg groupchat links 2025-05-25 13:48:19 +03:00
SimeonPursiainen a80e92dcd4 updated telegram links 2025-05-22 22:21:02 +03:00
Justus Ojala 95f02de0ae Translate the ISO section 2025-05-20 21:42:29 +03:00
Justus Ojala b16ea3d5de Translate the freshman page hero
also removed the link to the bachelor programme info package. It is in finnish only, and is largely not applicable to exchange students and master fuksis
2025-05-20 21:21:50 +03:00
Justus Ojala bad9ace8c8 Copy content of finnish freshmen page to english freshmen page 2025-05-20 21:13:55 +03:00
Simeon Pursiainen 1a2a870f18 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!164
2025-05-17 13:23:18 +03:00
Simeon Pursiainen 34d8213156 Master 2025-05-17 13:23:17 +03:00
SimeonPursiainen 238508f875 added member application link 2025-05-17 11:36:47 +03:00
SimeonPursiainen 0fdc1aef3a freshmen page 2025-05-16 23:59:28 +03:00
SimeonPursiainen 71f209edde english page update 2025-05-16 23:28:54 +03:00
SimeonPursiainen 3181cede9b Added english page for freshmen 2025-05-16 23:15:04 +03:00
Simeon Pursiainen 2579cd4763 Merge branch 'master' into 'production'
Revert "Merge branch 'master' of gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend"

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!163
2025-05-16 22:41:30 +03:00
Simeon Pursiainen 63209bbf20 Merge branch 'production' into 'master'
# Conflicts:
#   src/views/FreshmenPage/FreshmenPageView.tsx
2025-05-16 22:29:22 +03:00
SimeonPursiainen 047c8656ac updated tg-links 2025-05-12 23:21:33 +03:00
SimeonPursiainen e16a3bb8fc changes 2025-05-12 23:05:43 +03:00
SimeonPursiainen 9b34d77c42 Changed links 2025-05-12 23:03:18 +03:00
SimeonPursiainen a76ba2b1df removed due to abuse 2025-05-12 22:35:59 +03:00
Simeon Pursiainen 5b59d36f76 Merge branch 'fix_next_version' into 'master'
Revert "audit" to fix next update try 2

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!159
2025-05-12 17:46:31 +03:00
Joona M b381400903 Revert "audit" to fix next update try 2
This reverts commit 7280edb99f.
2025-05-12 17:32:34 +03:00
Simeon Pursiainen de93bb2a05 allow audit failure 2025-05-04 09:06:19 +03:00
Simeon Pursiainen 4a6b8093bc Merge branch 'production' into 'master'
Production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!157
2025-05-03 21:02:45 +03:00
Simeon Pursiainen d381e39f0f Production 2025-05-03 21:02:45 +03:00
Simeon Pursiainen acb335e010 sponsors 2025-05-03 20:48:28 +03:00
Simeon Pursiainen c630ebdb4d Merge branch 'revert-e1e06f18' into 'master'
Revert "Merge branch 'master' of gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend"

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!156
2025-05-03 20:40:58 +03:00
Simeon Pursiainen 504b035b2a Revert "Merge branch 'master' of gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend"
This reverts commit e1e06f185e
2025-05-03 20:33:33 +03:00
SimeonPursiainen 15843d8970 edit 2025-05-03 20:31:36 +03:00
Simeon Pursiainen d34e371d37 Edit FrontPageView.tsx 2025-05-03 20:06:46 +03:00
Simeon Pursiainen e1e06f185e Merge branch 'master' of gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend 2025-05-03 19:42:16 +03:00
SimeonPursiainen a39e6fec4d updated email link 2025-04-19 16:28:15 +03:00
SimeonPursiainen 12cce80502 testing 2025-04-19 15:31:01 +03:00
Simeon Pursiainen 1be5ef9cb4 Update .gitlab-ci.yml file 2025-04-10 14:28:11 +03:00
Simeon Pursiainen f7a65fabc0 Merge branch 'revert-33ebf456' into 'master'
Revert "updated sponsors"

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!152
2025-04-07 22:27:43 +03:00
Simeon Pursiainen fbe20594dd Revert "updated sponsors" 2025-04-07 22:27:43 +03:00
SimeonPursiainen 734a91c490 updated contacts-page 2025-04-07 21:41:26 +03:00
Simeon Pursiainen 7280edb99f audit 2025-04-06 12:25:31 +03:00
Simeon Pursiainen 613732aed2 Updated contacts 2025-04-06 11:52:17 +03:00
Simeon Pursiainen d22d6cb232 Merge branch 'master' into production 2025-03-19 10:35:56 +02:00
Simeon Pursiainen 744aee88c4 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!151
2025-03-19 09:52:25 +02:00
Simeon Pursiainen 1f2d33ce50 Master 2025-03-19 09:52:25 +02:00
Simeon Pursiainen 33ebf45627 updated sponsors 2025-03-19 09:37:10 +02:00
Simeon Pursiainen b0489b04ca Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!150
2025-03-07 15:15:43 +02:00
Simeon Pursiainen 217ffefb63 Master 2025-03-07 15:15:43 +02:00
Simeon Pursiainen 4df467988a Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!149
2025-03-07 08:29:35 +02:00
Simeon Pursiainen 0d272bc58c Master 2025-03-07 08:29:35 +02:00
SimeonPursiainen 42fed752cc Merge branch 'production'
testing
2025-03-06 23:37:14 +02:00
Simeon Pursiainen e8e9fedf7c Merge branch 'master' into 'production'
merge

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!148
2025-03-06 23:13:18 +02:00
Simeon Pursiainen 98e811e641 merge 2025-03-06 23:13:18 +02:00
SimeonPursiainen dba12edb94 test 2025-03-06 22:50:24 +02:00
Simeon Pursiainen 1360ed2f93 Merge branch 'master' into 'production'
Release kilta-avustus + yhdenvertaisuus pages

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!147
2025-03-06 22:07:10 +02:00
SimeonPursiainen 0a53ede99d edited equitypage 2025-03-06 21:55:06 +02:00
Simeon Pursiainen 82e5b40432 Merge branch 'revert-1434c434' into 'master'
Revert "typos"

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!146
2025-03-04 22:21:52 +02:00
Simeon Pursiainen 9040624ec4 fixes 2025-03-04 22:17:14 +02:00
Simeon Pursiainen 5445d0b419 Revert "typos"
This reverts commit 1434c434bf
2025-03-04 22:14:45 +02:00
Simeon Pursiainen 1434c434bf typos 2025-03-04 21:47:47 +02:00
Simeon Pursiainen e0e8fa6a78 typos 2025-03-04 21:46:00 +02:00
Simeon Pursiainen 5fa35bf681 Merge branch 'master' of https://gitlab.com/sahkoinsinoorikilta/vtmk/web2.0-frontend 2025-03-04 21:24:27 +02:00
Simeon Pursiainen b9ed0181fc Added ProSIK and golden honoraries 2025-03-04 20:35:15 +02:00
Simeon Pursiainen def7c79d82 Added ProSIK and golden honoraries 2025-03-04 20:22:23 +02:00
Simeon Pursiainen fb8340e23e Added funding page 2025-03-04 19:06:52 +02:00
Simeon Pursiainen 6e22c5496a Added equitypage 2025-03-02 16:22:34 +02:00
Simeon Pursiainen 62e2985f39 Merge branch 'master' into 'production'
Updated english page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!145
2025-02-28 20:20:41 +00:00
SimeonPursiainen 7323600314 test 2025-02-28 22:06:52 +02:00
SimeonPursiainen 2e4e862d87 fixed formatting 2025-02-28 21:36:32 +02:00
SimeonPursiainen 63f0b5e99c Added information about joining the guild in english 2025-02-28 18:55:38 +02:00
SimeonPursiainen 58d9d6cc83 updated membership GDPR link 2025-02-28 16:19:12 +02:00
Simeon Pursiainen 970cceef7f Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!144
2025-02-26 20:39:35 +00:00
SimeonPursiainen 3c791f4b3b fixed spelling 2025-02-26 22:24:31 +02:00
SimeonPursiainen cd52f3b609 visual changes for contactcard 2025-02-26 22:20:27 +02:00
SimeonPursiainen 6227a61eb6 updated board member pictures 2025-02-26 17:28:23 +02:00
Simeon Pursiainen 570c1e0b48 Possibility to display job ads in English 2025-01-20 21:54:08 +02:00
Simeon Pursiainen e6457d7487 Merge branch 'master' into 'production'
updated committees (again)

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!143
2025-01-15 19:35:03 +00:00
Simeon Pursiainen 247c8b793d updated committees (again) 2025-01-15 21:17:14 +02:00
Simeon Pursiainen 282cff19a2 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!142
2025-01-11 19:15:01 +00:00
Simeon Pursiainen 11fd154c4b Updated committees for year 2025 2025-01-11 20:44:18 +02:00
Simeon Pursiainen 54c23bd530 minor text fix 2025-01-11 18:57:02 +02:00
Simeon Pursiainen 357ac71186 added existing pics to board page 2025-01-11 17:17:36 +02:00
Simeon Pursiainen bcd35e2041 updated board representatives with new names and emails 2025-01-11 15:56:48 +02:00
Johannes Viirimäki c116036748 Merge branch 'master' into 'production'
Master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!141
2024-10-31 13:42:11 +00:00
Johannes f0101059dd add silver honorarys, fix links 2024-10-31 15:21:31 +02:00
Johannes eb467bf387 Merge branch 'master' of gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend 2024-10-31 15:00:31 +02:00
Johannes cfce1ef859 add new silver honorarys 2024-10-31 14:59:55 +02:00
Johannes Viirimäki fcce680e80 Merge branch 'master' into 'production'
Master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!140
2024-09-24 09:39:59 +00:00
Johannes Viirimäki d649b4fc0c Merge branch 'feature/new-pages' into 'master'
Feature/new pages

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!139
2024-09-23 12:53:32 +00:00
Johannes Viirimäki 0373e07d45 Update yhteystiedot.tsx 2024-09-23 12:46:17 +00:00
Johannes 9745276ffd update corporate logos 2024-09-23 15:41:23 +03:00
Johannes 42835f98f3 delete duplicate info on board page 2024-09-22 17:11:08 +03:00
Johannes 2b150c1d29 Add committee info, fix typos 2024-09-16 15:06:39 +03:00
Johannes 1beb35ee80 create page for membership information 2024-09-11 17:47:02 +03:00
Johannes 4f812dc0c8 Merge remote-tracking branch 'origin/master' into feature/new-pages 2024-09-11 15:02:00 +03:00
Johannes Viirimäki 955664a342 Merge branch 'master' into 'production'
fix typos

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!138
2024-07-02 07:02:12 +00:00
Johannes 53f4f3de4c fix typos 2024-07-02 09:42:23 +03:00
Johannes Viirimäki b77ffff341 Merge branch 'master' into 'production'
update sponsor logos, update fuksi guide link

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!137
2024-06-24 06:31:25 +00:00
Johannes c4e31e3c91 update sponsor logos, update fuksi guide link 2024-06-24 09:11:04 +03:00
Johannes Viirimäki 9f95b3d05f Merge branch 'master' into 'production'
add link to new fopas

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!136
2024-06-20 10:22:59 +00:00
Johannes Viirimäki fd7e41bffb add link to new fopas 2024-06-20 09:58:10 +00:00
Johannes Viirimäki a062841b9c Merge branch 'master' into 'production'
fix typos, update info

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!135
2024-06-03 20:15:51 +00:00
Johannes Viirimäki 643ed1505a fix typos, update info 2024-06-03 19:48:17 +00:00
Johannes Viirimäki 5dde3422e7 Merge branch 'master' into 'production'
Master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!134
2024-05-30 12:26:03 +00:00
Johannes 16504230b2 change picture and info on freshmen page 2024-05-30 15:10:13 +03:00
Johannes 0fd26fa246 update info on freshmen page 2024-05-29 16:32:18 +03:00
Jan Tuomi a33dc3e77e Merge branch 'master' into production 2024-05-27 15:32:55 +03:00
Jan Tuomi 2cf804be05 Merge branch 'update-cicd-docker-images' into 'master'
Use docker:25 based dind services and runner images

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!133
2024-05-27 12:20:01 +00:00
Jan Tuomi 0fe6a29ffc Use docker:25 based dind services and runner images 2024-05-27 15:13:08 +03:00
Johannes Viirimäki 8e1b0b9a30 Merge branch 'master' into 'production'
Master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!132
2024-05-16 22:29:34 +00:00
Johannes Viirimäki ba9d938092 update fuksi tg chat links 2024-05-11 11:34:49 +00:00
Johannes Viirimäki a2e55927ab Merge branch 'master' into 'production'
Master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!131
2024-04-10 10:05:45 +00:00
Johannes 1bda00ac9d update guild's tg link on freshmen page 2024-04-10 12:50:22 +03:00
Johannes bfdfa28b5b asdf 2024-04-10 12:45:03 +03:00
Justus Ojala 96a3709f0c Merge branch '59-chamge-admin-event-date-format' into 'master'
Update date formats

Closes #59

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!130
2024-02-28 16:21:27 +00:00
Justus Ojala a7fff40d74 Update date formats 2024-02-28 18:12:37 +02:00
Johannes Viirimäki 5ac532176c Merge branch 'master' into 'production'
Master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!129
2024-02-19 19:46:38 +00:00
Johannes 325e51953a add new honorarys, add board pictures 2024-02-19 21:27:29 +02:00
Johannes 48d9437f59 stuff 2024-02-19 16:40:33 +02:00
Johannes 3f2cb7717e start new branch 2024-02-03 14:56:21 +02:00
Johannes 2ea74f90ac fix typos, update some info 2024-01-11 00:05:29 +02:00
Johannes Viirimäki af2190c447 Merge branch 'master' into 'production'
master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!128
2024-01-10 21:15:20 +00:00
Johannes f413435194 update contacts and committees 2024-01-10 22:21:21 +02:00
Johannes e770722ad0 update committee info 2024-01-10 17:56:22 +02:00
tommi s 4cab856739 Merge branch 'master' into 'production'
update contacts page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!127
2024-01-03 18:26:20 +00:00
Johannes 0e5f7339e8 update contacts page 2024-01-03 18:22:51 +02:00
tommi s d53cd5f34c Merge branch 'master' into 'production'
Master to prod (leasing page)

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!126
2023-12-19 19:15:59 +00:00
tommi s 6c73fe9675 Merge branch 'feat/rent_page' into 'master'
Feat/rent page to master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!125
2023-12-16 09:58:08 +00:00
Tommi S a02e4891c2 fix lint 2023-12-16 11:43:15 +02:00
Tommi S 57ef1484a9 fix lint 2023-12-16 11:42:38 +02:00
Tommi S 25245939ff fix lint 2023-12-16 11:41:42 +02:00
Tommi S 225626137a edit rent page 2023-12-16 11:27:28 +02:00
Tommi S fffd2588f9 edit rent page 2023-12-16 11:24:16 +02:00
Tommi S 95244d6e47 Create renting page 2023-12-15 23:18:40 +02:00
Tommi S 452f11eefe Create renting page 2023-12-15 23:17:58 +02:00
Tommi S 824ab05843 Create renting page 2023-12-15 23:15:24 +02:00
Tommi S bcbd61c18c Create renting page 2023-12-15 23:08:35 +02:00
Tommi S e4ab992be4 Edit contacts page 2023-12-15 21:38:03 +02:00
Tommi S 10ff54f6b0 add mutate to signup 2023-12-15 21:22:35 +02:00
Tommi S d5f6cb359f audit fix 2023-12-15 20:42:09 +02:00
Ojakoo d54652bcc7 add new silver honorarys 2023-11-23 10:28:08 +02:00
Ojakoo 24aa0839de revert form button disable 2023-11-23 10:25:10 +02:00
Aarni Halinen d62ce26759 npm audit fix 2023-10-03 19:30:18 +03:00
Ojakoo faf5269eba set defult value for formSent to disable form hiding in edit view 2023-09-26 14:32:40 +03:00
Ojakoo 9a20cc009d quick fix #42 2023-09-26 13:53:40 +03:00
tommi s 057823c221 Merge branch 'master' into 'production'
Master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!124
2023-08-08 17:07:35 +00:00
Tommi S 6891f87447 add new words 2023-08-08 19:44:03 +03:00
Tommi S 17633f3345 Add english page international telegram group link 2023-08-02 22:55:10 +03:00
Tommi S 59e7194cf7 Add english page international telegram group link 2023-08-02 22:52:41 +03:00
Ojakoo 5a097080ee fix typo 2023-07-11 11:11:59 +03:00
tommi s f57bf98f31 Merge branch 'master' into 'production'
Master to Prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!123
2023-06-27 20:00:01 +00:00
Tommi S 433d9c67d7 Add 2023 silver and proSIK honors 2023-06-27 22:17:48 +03:00
Tommi S d538e6c92e Change freshmen page titles 2023-06-27 17:05:00 +03:00
Tommi S 1be914f37f Update freshmen page contacts and links 2023-06-26 17:55:15 +03:00
Ilari Ojakorpi 437adf1fc2 Merge branch 'master' into 'production'
Merge master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!122
2023-05-30 07:19:19 +00:00
Tommi S 521df27aa1 Merge branch 'master' of gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend 2023-05-29 00:39:44 +03:00
Tommi S 8bf38f512c Add google calendar link to front page 2023-05-29 00:29:01 +03:00
Tommi S 3ffe8a1e17 Front page google calendar link added and corporate page text updated 2023-05-29 00:23:53 +03:00
Aarni Halinen 32e541533f Small CI/CD cleanup 2023-05-28 23:35:48 +03:00
Aarni Halinen 9f33c667d3 Copy working login from build step 2023-05-28 23:34:34 +03:00
Aarni Halinen 0e4e02e1b3 Revert "Test deploy token"
This reverts commit cfc7dd11f5.
2023-05-28 23:30:29 +03:00
Aarni Halinen cfc7dd11f5 Test deploy token 2023-05-28 23:14:43 +03:00
Tommi S 63df5e6f5f Add google calendar link to front page 2023-05-24 16:03:44 +03:00
Tommi S bdcf4840f5 Add google calendar link to front page 2023-05-24 15:57:17 +03:00
Tommi S 0dc349161e Remove sik100 info 2023-05-20 12:05:48 +03:00
Tommi S d101931020 Remove sik100 info 2023-05-20 11:54:48 +03:00
Tommi S b4d41cd6a7 Removed sik100 info 2023-05-19 17:53:54 +03:00
Tommi S ea82b493d5 Updated sikpaja info and links 2023-03-23 11:49:17 +02:00
Ilari Ojakorpi e767b395a9 Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!121
2023-03-05 17:23:56 +00:00
tommi s fe8f9328fa Updated board pictures 2023-03-03 14:04:36 +00:00
Ojakoo 71d19d44cf add utility to wait for logger 2023-02-12 13:34:57 +02:00
Ilari Ojakorpi 4146af7207 Merge branch 'update-react' into 'master'
Update React & Next.js

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!109
2023-02-12 08:01:22 +00:00
Ojakoo c243e76324 fix lint 2023-02-02 22:09:56 +02:00
Ilari Ojakorpi 659d0e63a0 Merge branch 'master' into 'update-react'
# Conflicts:
#   src/views/ContactsPage/ContactsPageView.tsx
2023-02-02 10:47:00 +00:00
Ojakoo 2c6c1d1e67 Update sentry 2023-02-01 13:47:44 +02:00
Ojakoo eeb2f949c6 Update Next Link 2023-02-01 13:04:05 +02:00
Ojakoo 894e630664 Update next image import to legacy version 2023-02-01 12:52:28 +02:00
Ojakoo 56c13dbf64 Next 13 2023-02-01 12:48:33 +02:00
Ilari Ojakorpi c3bbb3eda8 Merge branch 'master' into 'production'
Merge 'Master' into 'Production'

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!118
2023-01-27 08:59:51 +00:00
Ojakoo 9c0e1a0e61 Updated sponsor links 2023-01-26 14:20:29 +02:00
Ojakoo 3b2d0596c9 Updated board info 2023-01-26 14:17:39 +02:00
Ojakoo 2395321825 Updated contacts 2023-01-19 13:19:06 +02:00
Ojakoo 05b045c2fc update media card 2023-01-09 16:05:21 +02:00
Ilari Ojakorpi 8a6b2e0846 Merge branch 'master' into 'production'
Updated board info

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!117
2023-01-02 01:16:53 +00:00
Ojakoo faf12816bb Updated board info 2023-01-02 00:52:44 +02:00
Ilari Ojakorpi ea333b7c69 Merge branch 'master' into 'production'
Merge Master to Production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!116
2022-12-25 13:41:15 +00:00
Ojakoo e7ef69d75f fix spelling mistake 2022-12-25 14:53:36 +02:00
Ojakoo 03e6131fe8 #47 add 2022 honors 2022-12-21 16:58:25 +02:00
Ojakoo 87f803ca3e Update readme. 2022-12-21 16:41:50 +02:00
Ilari Ojakorpi 9c77cab47e Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!115
2022-11-06 13:38:14 +00:00
Ojakoo dd3eded4a1 add filter and sort functionality to admin pages 2022-11-06 14:25:07 +02:00
Ojakoo efacbe9c40 useSWR in admin signups 2022-11-06 14:05:17 +02:00
Ojakoo c7a1502a26 correct asc/desc 2022-11-06 12:46:56 +02:00
Ojakoo 59a4f3567e basic styling, use arrow functions 2022-11-06 12:44:37 +02:00
Ojakoo 0ad59bfba6 dont use python syntax in js 2022-11-06 12:26:40 +02:00
Ojakoo 6aa0b3fe19 Added filter base 2022-11-06 11:56:55 +02:00
Ojakoo 88d5e57858 Added GE healthcare to corporate logos. 2022-10-11 18:19:52 +03:00
Ilari Ojakorpi 0301f3a996 Merge branch 'master' into 'production'
Master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!112
2022-09-22 12:23:42 +00:00
Ilari Ojakorpi ee1be687bb Merge branch 'master' into 'production'
Master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!111
2022-09-19 08:46:42 +00:00
Ilari Ojakorpi adb505d8ce Merge branch 'master' into 'production'
Merge master to production.

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!110
2022-09-15 17:03:45 +00:00
Aarni Halinen 07efb4caed override react-mde react peer dependencies 2022-07-25 00:07:27 +03:00
Aarni Halinen ce29f5a311 fix lint issues after next update 2022-07-25 00:07:27 +03:00
Aarni Halinen e1d4a300c5 update next 2022-07-25 00:07:27 +03:00
Aarni Halinen 90f33048d7 update lockfile 2022-07-25 00:07:27 +03:00
Aarni Halinen c55c7699c7 update _document 2022-07-25 00:07:27 +03:00
Aarni Halinen 2e37072703 add children props 2022-07-25 00:07:27 +03:00
Aarni Halinen aa90d97007 update all react packages 2022-07-25 00:07:27 +03:00
Ilari Ojakorpi 56669d5031 Merge branch 'master' into 'production'
Merge 'master' into production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!107
2022-07-06 20:01:54 +00:00
Ilari Ojakorpi 1e2ba706bf Merge branch 'master' into 'production'
Merge 'master' into 'prod'

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!106
2022-06-04 10:21:17 +00:00
Ilari Ojakorpi c9b885df9e Merge branch 'master' into 'production'
Merge dev into master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!105
2022-05-20 19:54:01 +00:00
Ilari Ojakorpi 492d28381f Merge branch 'master' into 'production'
Merge master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!103
2022-05-04 08:58:45 +00:00
Toni Lyttinen 22f306ff3c Merge branch 'master' into 'production'
master -> prod contacts page update

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!100
2022-02-16 14:16:58 +00:00
Toni Lyttinen c1ff6bbeae Merge branch 'master' into 'production'
Master->Production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!99
2022-02-16 00:12:55 +00:00
Ilari Ojakorpi bb3b9cb27f Merge branch 'master' into 'production'
Merge branch 'master' into 'production'

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!96
2022-01-31 21:38:25 +00:00
Ilari Ojakorpi 4449003cc8 Merge branch 'master' into 'production'
Prod deploy: Package updates

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!92
2022-01-17 14:10:26 +00:00
koskelj8 b4aa3c4871 Merge branch 'master' into production 2022-01-04 19:31:45 +02:00
Ilari Ojakorpi f91bb57932 Merge branch 'master' into 'production'
Prod deploy: Siemens logo and new board

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!91
2022-01-03 14:12:32 +00:00
Aarni Halinen 045d48c988 Merge branch 'master' into 'production'
Prod deploy: Sentry

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!88
2021-12-03 00:31:42 +00:00
Oskari Ponkala b4b29d6c9b Merge branch 'master' into 'production'
Add ramboll to logos

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!86
2021-10-25 13:11:53 +00:00
Aarni Halinen e5f6d5f659 Merge branch 'master' into 'production'
Prod deploy: Translated signup questions & preparation for PoTa100 signup

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!84
2021-09-06 10:37:48 +00:00
Oskari Ponkala 6b05fcab4a Merge branch 'master' into 'production'
Master

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!82
2021-08-27 11:22:24 +00:00
Aarni Halinen 3f660efa5a Merge branch 'master' into 'production'
Prod deploy: Improve image loading

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!80
2021-08-22 17:34:30 +00:00
Toni Lyttinen dd3adae35f Merge branch 'master' into 'production'
update weboodi to sisu for prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!78
2021-08-04 18:00:19 +00:00
Aarni Halinen e9fdeaeb5b Merge branch 'master' into 'production'
Prod deploy: Remove NRC logo

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!77
2021-07-22 14:36:11 +00:00
Aarni Halinen 77122aeea6 Revert "Update FrontPageView.tsx"
This reverts commit c9d6c815d0.
2021-07-22 17:34:00 +03:00
Oskari Ponkala c9d6c815d0 Update FrontPageView.tsx 2021-07-21 17:41:53 +00:00
Aarni Halinen be3ce96b4a Merge branch 'master' into 'production'
Prod deploy: Signup fixes

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!75
2021-06-29 17:26:34 +00:00
Toni Lyttinen 1a8764f725 Merge branch 'master' into 'production'
dev to prod: styling, added fopas etc

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!74
2021-06-29 16:04:22 +00:00
Aarni Halinen 7547b10d70 Merge branch 'master' into 'production'
Prod deploy: Contacts page and minor fixes

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!71
2021-06-16 20:05:45 +00:00
Toni Lyttinen 0561c7ea50 Merge branch 'master' into 'production'
fix actual page read more button style

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!68
2021-06-01 09:57:40 +00:00
Toni Lyttinen 084f7b7a81 Merge branch 'master' into 'production'
Merge 'added max 4 limit to fetch feed on in_english page'

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!67
2021-05-28 18:32:44 +00:00
Toni Lyttinen 01f663756b Merge branch 'master' into 'production'
Dev->Production. Updated Freshman page to 2021

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!66
2021-05-28 15:38:07 +00:00
Aarni Halinen 0979e84567 Merge branch 'master' into 'production'
Prod deploy: Quickfix SWR events API infinite loop, add translations & end time on signup page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!65
2021-05-15 23:13:18 +00:00
Aarni Halinen 2b16776ee3 Merge branch 'master' into 'production'
Production deploy: Update packages, improved Docker images & style fixes

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!64
2021-05-15 15:41:48 +00:00
Aarni Halinen fc4b327e4b Merge branch 'master' into 'production'
Prod Deploy: i18n support & minor SEO fixes

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!59
2021-04-08 20:27:58 +00:00
Aarni Halinen a525fe81c6 Merge branch 'master' into 'production'
Prod deploy: Update dependencies, fix next/image cache

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!56
2021-04-01 12:20:15 +00:00
Toni Lyttinen 3c0e320bf3 Merge branch 'master' into 'production'
added Tuukka's career story to studies page

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!54
2021-04-01 07:23:22 +00:00
Toni Lyttinen 648cec04ef Merge branch 'master' into 'production'
fix card size on calendars to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!53
2021-03-31 22:25:56 +00:00
Toni Lyttinen 65430c9017 Merge branch 'master' into 'production'
Master to Production merge: fixed news feed image

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!52
2021-03-31 22:02:13 +00:00
Aarni Halinen f70ff3eedf Merge branch 'master' into 'production'
1st Live deploy

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!48
2021-03-31 21:17:15 +00:00
Toni Lyttinen 6596aa2ec8 Merge branch 'master' into 'production'
Prod deploy

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!45
2021-03-29 16:47:43 +00:00
Toni Lyttinen 6ce9c791b0 Merge branch 'master' into 'production'
master to prod

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!33
2021-02-22 19:13:40 +00:00
Toni Lyttinen d19613f08f Merge branch 'master' into 'production'
Merge dev environment text context and structure changes to prod environment.

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!32
2021-02-20 19:13:24 +00:00
Toni Lyttinen ff7143a5fa Merge branch 'master' into 'production'
master to production merge

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!31
2021-02-11 16:37:44 +00:00
Toni Lyttinen 830538d56e Merge branch 'master' into 'production'
Production deploy

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!30
2021-02-10 19:06:20 +00:00
Toni Lyttinen 2b1e9c6a0b Merge branch 'master' into 'production'
merge master to production

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!27
2021-01-28 13:06:41 +00:00
Aarni Halinen e997cdab8c Merge branch 'master' into 'production'
Prod deploy

* NextJS

* Contact Page

* CSS fixes

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!26
2021-01-19 15:55:41 +00:00
Aarni Halinen d98e44e17f Merge branch 'master' into 'production'
Huge production merge

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!18
2020-12-12 14:15:45 +00:00
Aarni Halinen 067843d2b1 Merge branch 'master' into 'production'
API modifications

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!11
2020-08-29 12:23:50 +00:00
Aarni Halinen c25e93ae2c Merge branch 'master' into 'production'
Few form fixes

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!10
2020-07-24 21:48:53 +00:00
Aarni Halinen 8a05a4c459 Merge branch 'master' into 'production'
Signup modifications

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!9
2020-07-24 19:35:09 +00:00
Aarni Halinen 48e4f2f6f8 Merge branch 'master' into production 2020-03-05 19:20:25 +02:00
Aarni Halinen ae1c2b0d24 Merge branch 'master' into 'production'
Production testing cookies for the static.sika.sik.party login

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!8
2020-03-02 21:02:18 +00:00
Aarni Halinen e32070eb7b Merge branch 'master' into production 2019-12-18 17:18:41 +02:00
Aarni Halinen f848259bbf Merge branch 'master' into 'production'
Path fix

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!7
2019-12-18 15:01:30 +00:00
Aarni Halinen 6132aec379 Merge branch 'master' into 'production'
Env testing

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!6
2019-12-18 11:28:03 +00:00
Aarni Halinen 0f344ad70d Merge branch 'master' into 'production'
Prod API_URL for Filebrowser testing

See merge request sahkoinsinoorikilta/vtmk/web2.0-frontend!5
2019-12-17 23:18:54 +00:00
118 changed files with 6765 additions and 3166 deletions
+1
View File
@@ -1,3 +1,4 @@
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
+11 -16
View File
@@ -23,6 +23,7 @@ install:
audit:
image: node:16
needs: ["install"]
allow_failure: true
stage: audit
script:
- npm audit --audit-level=critical
@@ -79,34 +80,32 @@ test:e2e:
publish:dev:
stage: publish
image: docker:stable
image: docker:25-cli
needs: ["build", "test:e2e", "es:lint", "css:lint"]
services:
- docker:stable-dind
- docker:25-dind
only:
- master
script:
- 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 login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker push "$IMAGE_NAME":latest
publish:prod:
stage: publish
image: docker:stable
image: docker:25-cli
services:
- docker:stable-dind
- docker:25-dind
only:
- production
script:
- 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 login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker push "$IMAGE_NAME":prod
deploy:dev:
stage: deploy
image: docker:stable
image: docker:25-cli
only:
- master
environment:
@@ -120,15 +119,13 @@ 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_BUILD_TOKEN" "$CI_REGISTRY"
- docker login -u gitlab-ci-token -p $CI_JOB_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
image: docker:stable
image: docker:25-cli
only:
- production
environment:
@@ -142,8 +139,6 @@ 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_BUILD_TOKEN" "$CI_REGISTRY"
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script:
- docker stack deploy --with-registry-auth -c stack-compose.yml "$SERVICE_NAME"
after_script:
- docker logout "$CI_REGISTRY"
+16 -5
View File
@@ -5,14 +5,25 @@ This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next
* **[React](https://facebook.github.io/react/)** (17.x)
* **[Typescript](https://www.typescriptlang.org/)** (4.x)
* **[Next.js](https://nextjs.org/)** (12.x)
* [Testcafe](https://devexpress.github.io/testcafe/) - E2E Testing framework
* **[Testcafe](https://devexpress.github.io/testcafe/)** - E2E Testing framework
## Installation
1. Clone/download repo
2. Install node v16 ([`nvm`](https://github.com/nvm-sh/nvm))
3. `cp .env.local.example .env.local`
4. `npm install`
Install node v16 with **[Node Version Manager](https://github.com/nvm-sh/nvm#installing-and-updating)**.
Set up your SSH key authentication in GitLab Profile Settings. Then clone the repository and checkout the master branch:
```bash
git clone git@gitlab.com:sahkoinsinoorikilta/vtmk/web2.0-frontend.git
cd web2.0-frontend
git checkout master
```
Create local env file for development and install dependencies:
```bash
cp .env.local.example .env.local
npm install
```
## Getting Started
+3 -1
View File
@@ -16,7 +16,6 @@ const sentryWebpackPluginOptions = {
};
module.exports = withBundleAnalyzer(withSentryConfig({
target: "server",
images: {
domains: [
"api.sahkoinsinoorikilta.fi",
@@ -24,4 +23,7 @@ module.exports = withBundleAnalyzer(withSentryConfig({
"api.dev.sahkoinsinoorikilta.fi",
],
},
sentry: {
hideSourceMaps: true, // Hide source maps, see: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-source-maps
},
}, sentryWebpackPluginOptions));
+3609 -1642
View File
File diff suppressed because it is too large Load Diff
+23 -15
View File
@@ -37,9 +37,9 @@
"@types/jest": "^27.4.1",
"@types/js-cookie": "^3.0.1",
"@types/node": "^16.11.36",
"@types/react": "^17.0.19",
"@types/react-csv": "^1.1.2",
"@types/react-dom": "^17.0.9",
"@types/react": "^18.0.15",
"@types/react-csv": "^1.1.3",
"@types/react-dom": "^18.0.6",
"@types/shortid": "^0.0.29",
"@types/styled-components": "^5.1.25",
"@typescript-eslint/eslint-plugin": "^5.18.0",
@@ -48,11 +48,11 @@
"eslint": "^8.13.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-next": "^12.1.4",
"eslint-config-next": "^13.1.6",
"eslint-plugin-import": "^2.26.0",
"husky": "^7.0.4",
"jest": "^27.5.1",
"next-sitemap": "^2.5.19",
"next-sitemap": "^3.1.11",
"npm-run-all": "^4.1.5",
"postcss-jsx": "^0.36.4",
"postcss-syntax": "^0.36.2",
@@ -64,31 +64,39 @@
"typescript": "^4.6.3"
},
"dependencies": {
"@next/bundle-analyzer": "^12.1.4",
"@rjsf/core": "^4.1.1",
"@sentry/nextjs": "^6.19.6",
"@next/bundle-analyzer": "^12.2.3",
"@rjsf/core": "^4.2.0",
"@sentry/nextjs": "^7.34.0",
"axios": "^0.26.1",
"date-fns": "^2.28.0",
"fast-deep-equal": "^3.1.3",
"js-cookie": "^3.0.1",
"lodash": "^4.17.21",
"next": "^12.1.4",
"mqtt": "^5.14.1",
"next": "^13.1.6",
"normalize.css": "^8.0.1",
"react": "^17.0.2",
"react": "^18.2.0",
"react-csv": "^2.2.2",
"react-dnd": "15.0.2",
"react-dnd-html5-backend": "15.0.2",
"react-dnd-touch-backend": "15.0.2",
"react-dom": "^17.0.2",
"react-is": "^17.0.2",
"react-markdown": "^8.0.2",
"react-dom": "^18.2.0",
"react-is": "^18.2.0",
"react-markdown": "^8.0.3",
"react-mde": "^11.5.0",
"react-toastify": "^8.2.0",
"react-toastify": "^9.0.7",
"rehype-raw": "^6.1.1",
"rehype-sanitize": "^5.0.1",
"sharp": "^0.30.3",
"shortid": "^2.2.16",
"styled-components": "^5.3.5",
"swr": "^1.2.2"
"swr": "^1.2.2",
"uuid": "^13.0.0"
},
"overrides": {
"react-mde": {
"react": "$react",
"react-dom": "$react-dom"
}
}
}
+1
View File
@@ -49,6 +49,7 @@ const Panel = styled.div<{ $visible?: boolean }>`
interface AccordionProps {
title: string;
children: React.ReactNode;
}
const Accordion: React.FC<AccordionProps> = ({ title, children }) => {
+1 -1
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
const Icon = "/img/add-icon.png";
+1
View File
@@ -6,6 +6,7 @@ interface ButtonProps {
onClick: () => void;
buttonStyle: "hero" | "filled" | "filter" | "bordered";
selected?: boolean;
children: React.ReactNode;
}
const StyledButton = styled.button<{ $selected?: boolean }>`
+1 -1
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import colors from "@theme/colors";
import Link from "@components/Link";
+12 -6
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import colors from "@theme/colors";
@@ -18,8 +18,8 @@ const Row = styled.div`
const ImageContainer = styled.div`
position: relative;
height: 125px;
width: 125px;
height: 8rem;
width: 8rem;
flex-shrink: 0;
img {
@@ -35,13 +35,19 @@ const Info = styled.div`
margin-left: -20px;
min-width: 150px;
padding: 2rem;
padding-top: 10px;
color: ${colors.darkBlue};
& > p {
font-size: 1.0rem;
font-size: 1rem;
margin: 0;
}
& > a {
font-weight: 400;
font-size: 0.9rem;
}
& > h3 {
font-size: 1.2rem;
font-weight: 500;
@@ -68,7 +74,7 @@ const ContactCard: React.FC<ContactCardProps> = ({
src={image}
alt={name}
layout="fill"
objectFit="scale-down"
objectFit="cover"
/>
</ImageContainer>
) : null}
@@ -76,7 +82,7 @@ const ContactCard: React.FC<ContactCardProps> = ({
<h3>{name}</h3>
<p>{role_fi || role_en}</p>
{phone ? <p>{phone}</p> : null}
{email ? <p>{email}</p> : null}
{email ? <a href={`mailto:${email}`}>{email}</a> : null}
</Info>
</Row>
</Card>
+1 -1
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image, { ImageProps } from "next/image";
import Image, { ImageProps } from "next/legacy/image";
import styled, { keyframes, Keyframes } from "styled-components";
interface CrossFadeImagesProps {
+2 -1
View File
@@ -6,13 +6,14 @@ interface DropDownBoxProps {
onMouseEnter: () => void;
onMouseLeave: () => void;
visible: boolean;
children: React.ReactNode;
}
const Box = styled.div`
background-color: ${colors.white};
border: 1px solid ${colors.black};
margin-top: 0.8rem;
position: absolute;
/* margin-top: 0.8rem; hides cool onhover effect but fixes a gap problem */
left: 0;
top: 2.5rem;
z-index: 20;
+6
View File
@@ -28,6 +28,9 @@ 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) => ({
@@ -62,6 +65,9 @@ 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>
+30 -2
View File
@@ -1,6 +1,7 @@
import React from "react";
import styled from "styled-components";
import { Link } from "@components/index";
import Icon, { IconType } from "@components/Icon";
import colors from "@theme/colors";
import breakpoints from "@theme/breakpoints";
@@ -28,6 +29,7 @@ const Content = styled.div`
h4 {
color: ${colors.lightBlue};
padding: 1.5rem 0;
text-align: center;
}
a {
@@ -67,6 +69,27 @@ const Map = styled.div`
}
`;
const SomeContainer = styled.div`
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
a {
display: flex;
flex-flow: row nowrap;
justify-content: center;
margin-right: 0.5rem;
color: inherit;
text-decoration: none;
}
svg{
width: 24px;
height: 24px;
fill: ${colors.white};
}
`;
const FooterContent: React.FC = () => (
<Content>
<div>
@@ -77,10 +100,8 @@ const FooterContent: React.FC = () => (
<div>
<p>TUAS-Talo</p>
<p>Maarintie 8</p>
<p>PL 15500, 00076 Aalto</p>
</div>
<div>
<p>Y-tunnus: 1627010-1</p>
<p>hallitus@sahkoinsinoorikilta.fi</p>
<Link to="/yhteystiedot">Yhteystiedot</Link>
</div>
@@ -92,6 +113,13 @@ const FooterContent: React.FC = () => (
<Link to="https://sik.kuvat.fi">Kuvagalleria</Link>
<Link to="https://static.sahkoinsinoorikilta.fi/logot-ja-grafiikka/">Logot ja grafiikka</Link>
</div>
<div>
<SomeContainer>
<Icon name={IconType.Facebook} link="https://www.facebook.com/AaltoYliopistonSIK/" />
<Icon name={IconType.Instagram} link="https://www.instagram.com/sahkoinsinoorikilta/" />
<Icon name={IconType.LinkedIn} link="https://www.linkedin.com/groups/8103057/" />
</SomeContainer>
</div>
</Columns>
</MarginSpace>
</div>
+7
View File
@@ -26,6 +26,13 @@ const Sticky = styled.div<{ $isHidden?: boolean; $mobileMenuOpen?: boolean }>`
transition: all 200ms ease-out;
height: ${(p) => (p.$mobileMenuOpen ? "100vh" : "unset")};
/* tape to allow mobile dropdown menu scrolling */
@media screen and (max-width: ${breakpoints.mobile}) {
overflow-y: ${(p) => (p.$mobileMenuOpen ? "auto" : "visible")};
overflow-x: hidden;
-webkit-overflow-scrolling: touch; /* apparently some ios optimization for smoother scrolin' */
}
${(p) => (p.$isHidden ? (`
transition: all 200ms ease-in;
transform: translateY(-100%);
+1 -1
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import { Link } from "@components/index";
+5 -1
View File
@@ -23,7 +23,11 @@ const Container = styled.div`
}
`;
const Hero: React.FC = ({ children }) => (
type HeroProps = {
children: React.ReactNode;
};
const Hero: React.FC<HeroProps> = ({ children }) => (
<Container>
{children}
</Container>
+1
View File
@@ -35,6 +35,7 @@ type Colors = "darkBlue" | "lightTurquoise";
interface HeroAsideProps {
bgColor: Colors;
children: React.ReactNode;
}
// TODO: Color combos
@@ -6,6 +6,7 @@ import breakpoints from "@theme/breakpoints";
interface HeroPrimarySectionProps {
header: string;
text?: string;
children?: React.ReactNode;
}
const Section = styled.section`
@@ -22,6 +22,7 @@ const Item = styled.div`
interface HeroSecondarySectionItemProps {
note?: string;
children: React.ReactNode;
}
export const HeroSecondarySectionItem: React.FC<HeroSecondarySectionItemProps> = ({ note, children }) => (
@@ -52,6 +53,7 @@ const Items = styled.div`
interface HeroSecondarySectionProps {
heading: string;
children: React.ReactNode;
}
const HeroSecondarySection: React.FC<HeroSecondarySectionProps> = ({ heading, children }) => (
+5 -1
View File
@@ -6,7 +6,11 @@ const Box = styled.div`
text-align: center;
`;
const InfoBox: React.FC = ({ children }) => (
type InfoBoxProps = {
children?: React.ReactNode
};
const InfoBox: React.FC<InfoBoxProps> = ({ children }) => (
<Box>
{children}
</Box>
+18 -8
View File
@@ -2,6 +2,7 @@ import React from "react";
import NextJSLink, { LinkProps } from "next/link";
interface Props extends Omit<LinkProps, "href" | "as"> {
children?: React.ReactNode;
to: string;
template?: string;
target?: string;
@@ -15,18 +16,27 @@ const Link: React.FC<Props> = ({
}) => {
if (template) {
return (
<NextJSLink href={template} passHref={passHref} as={to} {...props}>
{/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
<a onClick={onClick} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} {...props} />
</NextJSLink>
<NextJSLink
href={template}
passHref={passHref}
as={to}
{...props}
onClick={onClick}
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
/>
);
}
if (to.startsWith("/") || to.startsWith("#")) {
return (
<NextJSLink href={to} passHref={passHref} {...props}>
{/* eslint-disable-next-line jsx-a11y/anchor-has-content */}
<a onClick={onClick} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} {...props} />
</NextJSLink>
<NextJSLink
href={to}
passHref={passHref}
{...props}
onClick={onClick}
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
/>
);
}
+1
View File
@@ -6,6 +6,7 @@ import { Link } from "@components/index";
interface NavbarChildLinkProps {
to: string;
children: React.ReactNode;
}
const StyledLink = styled(Link)`
+1
View File
@@ -38,6 +38,7 @@ interface NavbarDropdownLinkProps {
to: string;
text: string;
exploded?: boolean; // if exploded, show items directly underneath without a dropdown menu
children?: React.ReactNode;
}
const NavbarDropdownLink: React.FC<NavbarDropdownLinkProps> = ({
+20 -24
View File
@@ -10,20 +10,29 @@ 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/jasenyys">Jäsenyys</NavbarChildLink>
<NavbarChildLink to="/kilta/hallitus">Hallitus</NavbarChildLink>
<NavbarChildLink to="/kilta/toimihenkilot">Toimihenkilöt</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>
<NavbarChildLink to="/kilta/kilta-avustus">Kilta-avustus</NavbarChildLink>
</NavbarDropdownLink>
<NavbarDropdownLink to="/" text="New students " exploded={mobile}>
<NavbarChildLink to="/newStudent/fuksi">Fukseille</NavbarChildLink>
<NavbarChildLink to="/newStudent/fukseille_en">For Freshmen</NavbarChildLink>
<NavbarChildLink to="/newStudent/forExchangers">For Exchange/MSc students</NavbarChildLink>
</NavbarDropdownLink>
<NavbarDropdownLink to="/opinnot_ja_ura" text="Opinnot ja ura" exploded={mobile} />
<NavbarDropdownLink to="/yritysyhteistyo" text="Yritysyhteistyö" exploded={mobile} />
<NavbarDropdownLink to="/yhteystiedot" text="Yhteystiedot" exploded={mobile}>
{/* <NavbarChildLink to="https://en.wikipedia.org/wiki/Gay">Simo Höglund</NavbarChildLink> */}
</NavbarDropdownLink>
<NavbarDropdownLink to="/yhdenvertaisuus" text="Yhdenvertaisuus" exploded={mobile} />
<NavbarDropdownLink to="/in_english" text="In English" exploded={mobile} />
</>
);
const Nav = styled.div`
flex: 1 0 auto;
display: flex;
@@ -47,6 +56,11 @@ const Nav = styled.div`
@media screen and (max-width: ${breakpoints.mobile}) {
justify-content: center;
margin-left: 0;
/* line 59 */
border-top: 2px solid ${colors.lightBlue}; /* Add line above */
padding-top: 0.5rem; /* Add some spacing */
padding-bottom: 0.5rem; /* Add some spacing */
cursor: pointer; /* Make entire nav clickable */
}
svg {
@@ -68,22 +82,12 @@ const DesktopContainer = styled.div`
}
`;
const SomeContainer = styled.div`
display: flex;
flex-flow: row nowrap;
a {
display: flex;
flex-flow: row nowrap;
justify-content: center;
margin: 1rem;
}
`;
const MobileMenu = styled.div`
display: flex;
margin: 0 1rem;
align-items: center;
cursor: pointer;
padding: 0 50%; /* Large clickable area horizontally cheeze */
span {
display: flex;
@@ -93,9 +97,6 @@ const MobileMenu = styled.div`
display: none;
}
@media screen and (max-width: ${breakpoints.mobile}) {
margin-left: 3rem;
}
`;
interface NavigationProps {
@@ -109,13 +110,8 @@ const Navigation: React.FC<NavigationProps> = ({ onMobileMenuOpen }) => {
<DesktopContainer>
{desktopItems}
</DesktopContainer>
<SomeContainer>
<Icon name={IconType.Facebook} link="https://www.facebook.com/AaltoYliopistonSIK/" />
<Icon name={IconType.Instagram} link="https://www.instagram.com/sahkoinsinoorikilta/" />
<Icon name={IconType.LinkedIn} link="https://www.linkedin.com/groups/8103057/" />
</SomeContainer>
<MobileMenu>
<Icon name={IconType.HamburgerMenu} onClick={onMobileMenuOpen} />
<MobileMenu onClick={onMobileMenuOpen}>
<Icon name={IconType.HamburgerMenu} />
</MobileMenu>
</Nav>
);
+2 -2
View File
@@ -4,8 +4,8 @@ import colors from "@theme/colors";
import { renderNavigationItems } from "./Navigation";
const Nav = styled.nav`
padding: 1rem 2rem;
padding: 1rem 1rem;
padding-bottom: 20rem;
a {
fill: ${colors.lightBlue};
color: ${colors.lightBlue};
+1
View File
@@ -6,6 +6,7 @@ import Link from "@components/Link";
interface PageLinkProps {
to: string;
desc: string;
children: React.ReactNode;
}
const StyledPageLink = styled.div`
+12
View File
@@ -0,0 +1,12 @@
import styled from "styled-components";
const StyledSelect = styled.select`
padding: 0.25rem;
margin: 0.5rem;
`;
const SelectWrapper = styled.div`
padding: 0.5rem;
`;
export { StyledSelect, SelectWrapper };
+6 -4
View File
@@ -1,5 +1,5 @@
import React, {
createContext, useContext, useReducer,
createContext, useContext, useMemo, useReducer,
} from "react";
import fi from "./locales/fi/common.json";
import en from "./locales/en/common.json";
@@ -67,8 +67,7 @@ const Reducer = (state: Store, action: Lang) => {
};
const LocaleContext = createContext(initialState);
const LocaleStore: React.FC = ({ children }) => {
const LocaleStore: React.FC<{ children?: React.ReactNode }> = ({ children }) => {
const [state, dispatch] = useReducer(Reducer, initialState);
const changeLanguage = (action: Lang) => {
dispatch(action);
@@ -78,8 +77,11 @@ const LocaleStore: React.FC = ({ children }) => {
// Just ignore if fails to store value in user's browser
}
};
const localeValue = useMemo(() => ({ ...state, changeLanguage }), [state]);
return (
<LocaleContext.Provider value={{ ...state, changeLanguage }}>
<LocaleContext.Provider value={localeValue}>
{children}
</LocaleContext.Provider>
);
+3 -1
View File
@@ -15,6 +15,8 @@
"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",
@@ -48,7 +50,7 @@
"Se aukeaa":
"Signup opens at",
"Ilmoittauminen sulkeutuu":
"Ilmoittautuminen sulkeutuu":
"Signup closes at",
"Ilmoittauminen on umpeutunut!":
+2 -1
View File
@@ -1,7 +1,8 @@
import { OptionTypes } from "@components/Widgets/SignupQuestionsWidget/common";
export interface Signup {
id?: number;
id?: number; // Database id for completed signup
submit_id?: string; // Signup request idempotency key
signupForm_id: number;
answer: string;
}
+7 -12
View File
@@ -1,12 +1,12 @@
import React from "react";
import Document, {
Html, Head, Main, NextScript, DocumentContext, DocumentInitialProps,
Html, Head, Main, NextScript, DocumentContext,
} from "next/document";
import { ServerStyleSheet } from "styled-components";
import Favicons from "@components/Favicons";
export default class MyDocument extends Document<{ styleTags: unknown }> {
static getInitialProps = async (ctx: DocumentContext): Promise<DocumentInitialProps> => {
export default class MyDocument extends Document {
static async getInitialProps(ctx: DocumentContext) {
const sheet = new ServerStyleSheet();
const originalRenderPage = ctx.renderPage;
try {
@@ -16,20 +16,15 @@ export default class MyDocument extends Document<{ styleTags: unknown }> {
const initialProps = await Document.getInitialProps(ctx);
return {
...initialProps,
styles: (
<>
{initialProps.styles}
{sheet.getStyleElement()}
</>
),
styles: [initialProps.styles, sheet.getStyleElement()],
};
} finally {
sheet.seal();
}
};
}
render(): JSX.Element {
const { styleTags } = this.props;
const { styles } = this.props;
return (
<Html lang="fi">
<Head>
@@ -37,7 +32,7 @@ export default class MyDocument extends Document<{ styleTags: unknown }> {
<Favicons />
</Head>
<body>
{styleTags}
{styles}
<Main />
<NextScript />
</body>
+84 -25
View File
@@ -1,7 +1,7 @@
import React from "react";
import React, { useState, useEffect } from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative } from "date-fns";
import { formatRelative, formatISO } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -10,6 +10,7 @@ import AddLink from "@components/AddLink";
import Event from "@models/Event";
import EventApi from "@api/eventApi";
import { fetcher, APIPath, API } from "@api/backend";
import { StyledSelect, SelectWrapper } from "@components/Select";
const URL = "/admin/events";
@@ -37,42 +38,100 @@ const Renderer: React.FC = () => {
const api: API = { path: APIPath.EVENTS, authenticated: true };
const { data: events, error } = useSWR<Event[]>(api, fetcher);
const [sort, setSort] = useState<string>("start_time");
const [order, setOrder] = useState<string>("descending");
const [filter, setFilter] = useState<string>("all");
const eventSort = (a, b) => {
let result = 0;
if (order === "descending") {
if (["start_time", "end_time"].includes(sort)) {
result = new Date(b[sort]).getTime() - new Date(a[sort]).getTime();
} else if (sort === "id") {
result = b[sort] - a[sort];
}
} else if (order === "ascending") {
if (["start_time", "end_time"].includes(sort)) {
result = new Date(a[sort]).getTime() - new Date(b[sort]).getTime();
} else if (sort === "id") {
result = a[sort] - b[sort];
}
}
return result;
};
const dateFilter = (a) => {
let result = true;
if (filter === "upcoming") {
result = new Date(a.end_time).getTime() > Date.now();
} else if (filter === "past") {
result = new Date(a.end_time).getTime() < Date.now();
}
return result;
};
useEffect(() => {
}, [sort, order, filter, events]);
if (error) {
console.error(error);
return (
<div>
Failed loading events
Failed loading events.
</div>
);
}
if (!events?.length) {
return <div>No events.</div>;
}
return (
<table>
<thead>
<tr>
<th>Title</th>
<th>Start time</th>
<th>End time</th>
</tr>
</thead>
<tbody>
{events.map((event) => (
<tr key={event.id}>
<td><Link to={`${URL}/${event.id}`}>{event.title_fi}</Link></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
</StyledButton>
</td>
<div>
<SelectWrapper>
Sort by:
<StyledSelect name="" onChange={(e) => setSort(e.target.value)}>
<option value="start_time">Start time</option>
<option value="end_time">End time</option>
<option value="id">Creation order</option>
</StyledSelect>
Order:
<StyledSelect name="" onChange={(e) => setOrder(e.target.value)}>
<option value="descending">Descending</option>
<option value="ascending">Ascending</option>
</StyledSelect>
Filter:
<StyledSelect name="" onChange={(e) => setFilter(e.target.value)}>
<option value="all">All</option>
<option value="upcoming">Upcoming</option>
<option value="past">Past</option>
</StyledSelect>
</SelectWrapper>
<table>
<thead>
<tr>
<th>Title</th>
<th>Start time</th>
<th>End time</th>
</tr>
))}
</tbody>
</table>
</thead>
<tbody>
{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>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(event)}>
Delete
</StyledButton>
</td>
</tr>
))}
</tbody>
</table>
</div>
);
};
+49 -24
View File
@@ -1,7 +1,7 @@
import React from "react";
import React, { useState, useEffect } from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative } from "date-fns";
import { formatRelative, formatISO } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -10,6 +10,7 @@ import AddLink from "@components/AddLink";
import Post from "@models/Feed";
import PostApi from "@api/feedApi";
import { fetcher, APIPath, API } from "@api/backend";
import { SelectWrapper, StyledSelect } from "@components/Select";
const URL = "/admin/feed";
@@ -37,6 +38,21 @@ const Renderer: React.FC = () => {
const api: API = { path: APIPath.FEED, authenticated: true };
const { data: feed, error } = useSWR<Post[]>(api, fetcher);
const [order, setOrder] = useState<string>("descending");
const feedSort = (a, b) => {
let result = 0;
if (order === "descending") {
result = new Date(b.publish_time).getTime() - new Date(a.publish_time).getTime();
} else if (order === "ascending") {
result = new Date(a.publish_time).getTime() - new Date(b.publish_time).getTime();
}
return result;
};
useEffect(() => {
}, [order, feed]);
if (error) {
console.error(error);
return (
@@ -52,29 +68,38 @@ const Renderer: React.FC = () => {
}
return (
<table>
<thead>
<tr>
<th>Title</th>
<th>Description</th>
<th>Publish time</th>
</tr>
</thead>
<tbody>
{feed.map((post) => (
<tr key={post.id}>
<td><Link to={`${URL}/${post.id}`}>{post.title_fi}</Link></td>
<td>{post.description_fi}</td>
<td>{formatRelative(new Date(post.publish_time), new Date())}</td>
<td>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(post)}>
Delete
</StyledButton>
</td>
<div>
<SelectWrapper>
Order:
<StyledSelect name="" onChange={(e) => setOrder(e.target.value)}>
<option value="descending">Descending</option>
<option value="ascending">Ascending</option>
</StyledSelect>
</SelectWrapper>
<table>
<thead>
<tr>
<th>Title</th>
<th>Description</th>
<th>Publish time</th>
</tr>
))}
</tbody>
</table>
</thead>
<tbody>
{feed.sort(feedSort).map((post) => (
<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>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(post)}>
Delete
</StyledButton>
</td>
</tr>
))}
</tbody>
</table>
</div>
);
};
+2 -2
View File
@@ -1,7 +1,7 @@
import React from "react";
import { NextPage } from "next";
import useSWR from "swr";
import { formatRelative } from "date-fns";
import { formatRelative, formatISO } 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
? formatRelative(new Date(ad.autohide_at), new Date())
? formatISO(new Date(ad.autohide_at), { representation: "date" })
: "Disabled"}
</td>
<td>
+109 -46
View File
@@ -1,6 +1,7 @@
import React, { useEffect, useState } from "react";
import React, { useState, useEffect } from "react";
import { NextPage } from "next";
import { formatRelative } from "date-fns";
import useSWR from "swr";
import { formatRelative, formatISO } from "date-fns";
import { toast } from "react-toastify";
import styled from "styled-components";
import AdminListCommon from "@views/admin/AdminListCommon";
@@ -8,6 +9,8 @@ import { Button, Link } from "@components/index";
import AddLink from "@components/AddLink";
import { SignupForm } from "@models/Signup";
import SignupApi from "@api/signupApi";
import { fetcher, APIPath, API } from "@api/backend";
import { SelectWrapper, StyledSelect } from "@components/Select";
const URL = "/admin/signups";
@@ -31,57 +34,117 @@ const confirmDelete = async (signup: SignupForm) => {
}
};
const renderData = (signupForms: SignupForm[]) => {
if (!signupForms || signupForms.length === 0) {
const Renderer: React.FC = () => {
const api: API = { path: APIPath.SIGNUP_FORMS, authenticated: true };
const { data: signupForms, error } = useSWR<SignupForm[]>(api, fetcher);
const [sort, setSort] = useState<string>("start_time");
const [order, setOrder] = useState<string>("descending");
const [filter, setFilter] = useState<string>("all");
const signupFormSort = (a, b) => {
let result = 0;
if (order === "descending") {
if (["start_time", "end_time"].includes(sort)) {
result = new Date(b[sort]).getTime() - new Date(a[sort]).getTime();
} else if (sort === "id") {
result = b[sort] - a[sort];
}
} else if (order === "ascending") {
if (["start_time", "end_time"].includes(sort)) {
result = new Date(a[sort]).getTime() - new Date(b[sort]).getTime();
} else if (sort === "id") {
result = a[sort] - b[sort];
}
}
return result;
};
const dateFilter = (a) => {
let result = true;
if (filter === "upcoming") {
result = new Date(a.end_time).getTime() > Date.now();
} else if (filter === "past") {
result = new Date(a.end_time).getTime() < Date.now();
}
return result;
};
useEffect(() => {
}, [sort, order, filter, signupForms]);
if (error) {
console.error(error);
return (
<div>
Failed loading events.
</div>
);
}
if (!signupForms?.length) {
return <div>No signup forms.</div>;
}
return (
<table>
<thead>
<tr>
<th>Title</th>
<th>Start time</th>
<th>End time</th>
<th>Sign-ups</th>
<th>Send email</th>
</tr>
</thead>
<tbody>
{signupForms.map((signupForm) => (
<tr key={signupForm.id}>
<td><Link to={`${URL}/${signupForm.id}`}>{signupForm.title_fi}</Link></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>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(signupForm)}>
Delete
</StyledButton>
</td>
<div>
<SelectWrapper>
Sort by:
<StyledSelect name="" onChange={(e) => setSort(e.target.value)}>
<option value="start_time">Start time</option>
<option value="end_time">End time</option>
<option value="id">Creation order</option>
</StyledSelect>
Order:
<StyledSelect name="" onChange={(e) => setOrder(e.target.value)}>
<option value="descending">Descending</option>
<option value="ascending">Ascending</option>
</StyledSelect>
Filter:
<StyledSelect name="" onChange={(e) => setFilter(e.target.value)}>
<option value="all">All</option>
<option value="upcoming">Upcoming</option>
<option value="past">Past</option>
</StyledSelect>
</SelectWrapper>
<table>
<thead>
<tr>
<th>Title</th>
<th>Start time</th>
<th>End time</th>
<th>Sign-ups</th>
<th>Send email</th>
</tr>
))}
</tbody>
</table>
</thead>
<tbody>
{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><Link to={`${URL}/${signupForm.id}/list`}>View</Link></td>
<td><Link to={`${URL}/${signupForm.id}/email`}>Send</Link></td>
<td>
<StyledButton $colorOverride="red" buttonStyle="filled" onClick={() => confirmDelete(signupForm)}>
Delete
</StyledButton>
</td>
</tr>
))}
</tbody>
</table>
</div>
);
};
const AdminSignupPage: NextPage = () => {
const [forms, setForms] = useState<SignupForm[]>(null);
useEffect(() => {
SignupApi.getForms(true)
.then((res) => setForms(res));
}, []);
return (
<AdminListCommon>
<h1>Sign-up forms</h1>
<AddLink text="Create signup form" to={`${URL}/create`} data-e2e="create-signup" />
{renderData(forms)}
</AdminListCommon>
);
};
const AdminSignupPage: NextPage = () => (
<AdminListCommon>
<h1>Sign-up forms</h1>
<AddLink text="Create signup form" to={`${URL}/create`} data-e2e="create-signup" />
<Renderer />
</AdminListCommon>
);
export default AdminSignupPage;
+18
View File
@@ -0,0 +1,18 @@
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;
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import BoardPageView from "@views/BoardPage/BoardPageView";
import PageWrapper from "@views/common/PageWrapper";
const BoardPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/hallitus`} />
</Head>
<PageWrapper>
<BoardPageView />
</PageWrapper>
</>
);
export default BoardPage;
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import MembershipPageView from "@views/MembershipPage/MembershipPageView";
import PageWrapper from "@views/common/PageWrapper";
const MembershipPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/jasenyys`} />
</Head>
<PageWrapper>
<MembershipPageView />
</PageWrapper>
</>
);
export default MembershipPage;
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import FundPageView from "@views/FundPage/FundPageView";
import PageWrapper from "@views/common/PageWrapper";
const FundPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/kilta-avustus`} />
</Head>
<PageWrapper>
<FundPageView />
</PageWrapper>
</>
);
export default FundPage;
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import CommitteePageView from "@views/CommitteePage/CommitteePageView";
import PageWrapper from "@views/common/PageWrapper";
const CommitteePage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/yhteystiedot`} />
</Head>
<PageWrapper>
<CommitteePageView />
</PageWrapper>
</>
);
export default CommitteePage;
+18
View File
@@ -0,0 +1,18 @@
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;
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import ForInternationalPageView from "@views/ForInternationalPage/ForIntlPageView";
import PageWrapper from "@views/common/PageWrapper";
const ForInternationalPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/newStudent/ForIntl`} />
</Head>
<PageWrapper>
<ForInternationalPageView />
</PageWrapper>
</>
);
export default ForInternationalPage;
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import ContactsPageView from "@views/ForFreshmenPage/ForFreshmenPageView";
import PageWrapper from "@views/common/PageWrapper";
const ContactsPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/newStudent/ForFreshmen`} />
</Head>
<PageWrapper>
<ContactsPageView />
</PageWrapper>
</>
);
export default ContactsPage;
@@ -7,7 +7,7 @@ import PageWrapper from "@views/common/PageWrapper";
const FreshmenPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/fuksi`} />
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/newStudent/fuksi`} />
</Head>
<PageWrapper>
<FreshmenPageView />
+4 -1
View File
@@ -1,4 +1,4 @@
import React from "react";
import React, { useState } from "react";
import { NextPage, GetStaticProps, GetStaticPaths } from "next";
import Head from "next/head";
import { useRouter } from "next/router";
@@ -13,6 +13,7 @@ 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;
@@ -23,6 +24,7 @@ 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 });
@@ -43,6 +45,7 @@ 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,
};
+18
View File
@@ -0,0 +1,18 @@
import React from "react";
import { NextPage } from "next";
import Head from "next/head";
import ContactsPageView from "@views/EquityPage/EquityPageView";
import PageWrapper from "@views/common/PageWrapper";
const ContactsPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/yhdenvertaisuus`} />
</Head>
<PageWrapper>
<ContactsPageView />
</PageWrapper>
</>
);
export default ContactsPage;
+1 -1
View File
@@ -7,7 +7,7 @@ import PageWrapper from "@views/common/PageWrapper";
const ContactsPage: NextPage = () => (
<>
<Head>
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/yhteystiedot`} />
<link rel="canonical" href={`${process.env.NEXT_PUBLIC_SITE_URL}/kilta/yhteystiedot`} />
</Head>
<PageWrapper>
<ContactsPageView />
+1 -1
View File
@@ -31,7 +31,7 @@ const ActualPageHero: React.FC = () => (
<HeroAsideItem
header="Keksimistä ja rakentelua"
link="#elepaja"
linkText="Elektroniikkapaja&nbsp;"
linkText="SIK-Paja&nbsp;"
/>
<HeroAsideItem
header="Tiimipelejä ja liikuntaa"
+30 -15
View File
@@ -111,13 +111,13 @@ const ActualPageView: React.FC<ActualPageViewProps> = ({ events, feed }) => (
<div>
<h6 id="elepaja">Rakenna kaikkea elektroniikkaan liittyvää</h6>
<p>
Elepaja on sähköinsinöörikillan ylläpitämä elektroniikkapaja, jossa opiskelijat pääsevät soveltamaan koulussa oppimiaan taitojaan käytännön projekteissa.
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.
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, 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.
Pajan varustukseen kuluu perustyökalut, kolvit, komponentit sekä laaja valikoima mittauslaitteita.
Tule tutustumaan toimintaamme Kandidaattikeskuksessa ruokala Alvarin alapuolella sijaitseviin tiloihimme.
{" "}
<Link to="https://elepaja.fi/tg">Tästä</Link> pääset liittymään elepajan Telegram-ryhmään.
<Link to="https://t.me/sikpaja">Tästä</Link> pääset liittymään pajan Telegram-ryhmään.
</p>
<h6 id="urheilu">Urheilua ja lajikokeiluja</h6>
<p>
@@ -125,29 +125,30 @@ const ActualPageView: React.FC<ActualPageViewProps> = ({ events, feed }) => (
Yksi näistä asioista on urheilun ja lajikokeiluiden tarjoaminen kiltalaisille.
Järjestämme säännöllisesti muiden kiltojen kanssa yhteistyössä mahdollisuuksia pelata esimerkiksi säbää ja muita urheilulajeja.
Jopa kesällä monien harrastuksien jäädessä tauolle, voit tulla messiin pelaamaan lentopalloa viikottain.
Lajikokeiluita on tarjolla läpi vuoden ja niitä järjestetään yhteistyössä Otaniemen eri urheilu/harrastelujärjestöjen kanssa.
Lajikokeiluita on tarjolla läpi vuoden ja niitä järjestetään yhteistyössä Otaniemen eri urheilu-/harrastelujärjestöjen kanssa.
Pidä silmät auki killan nettisivujen tapahtumaosiossa ja liity <Link to="https://t.me/joinchat/DJRXxkKd0SMj0e9pBPXF1A">Telegram-ryhmään</Link>.
Jos sinulla on ehdotuksia lajikokeiluihin, nykäise urheiluvastaavia tai hyvivointimestaria hihasta!
Jos sinulla on ehdotuksia lajikokeiluihin, nykäise liikuntavastaavia tai hyvivointimestaria hihasta!
</p>
<h6 id="kulttuuri&juhla">Kulttuuria ja juhlia teatterista sitseihin</h6>
<p>
Hyvinvointitoimikunta järjestää urheilun ja lajikokeilun lisäksi myös kultturelleja tapahtumia ja menoja kiltalaisille.
Hyvinvointitoimikunta järjestää urheilun ja lajikokeilujen 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 ohjelmatoimikunta viihdyttää kiltalaisia erilaisilla juhlilla rennoista saunailloista juhlavimpiin sitseihin.
Lisäksi hupitoimikunta 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 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.
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.
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.
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.
Ulkosuhdevastaavat järjestävät kiltalaisten iloksi tapahtumia monien ystävyysjärjestöjen kanssa niin Suomessa kuin ulkomaillakin.
issä tapahtumissa pääset kasvattamaan ystäväpiiriäsi Otaniemen ulkopuolelle ja jopa kansainvälistymään toden teolla.
Kilta järjestää paljon toimintaa myös vaihto-opiskelijoille ja näihin tapahtumiin kannattaa ehdottomasti osallistua, jos tahtoo luoda ystävyyssuhteita ympäri maailman.
</p>
</div>
</div>
@@ -159,9 +160,23 @@ 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 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>
<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>
<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 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>
<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>
</div>
</div>
</TextSection>
+136
View File
@@ -0,0 +1,136 @@
import React from "react";
import styled from "styled-components";
import { TextSection, Link } from "@components/index";
import colors from "@theme/colors";
import ContactCard from "@components/ContactCard";
import BoardJson from "./board.json";
const orderedCommittees = [
BoardJson,
];
const blankProfile = "/img/blank_profile.png";
const BlueLink = styled(Link)`
color: ${colors.blue1};
&:hover {
color: ${colors.lightBlue};
}
`;
const Container = styled.div`
color: ${colors.darkBlue};
align-items: center;
justify-content: center;
width: 50vw;
& > h2 {
text-transform: uppercase;
font-size: 4rem;
width: 100%;
}
& > div {
display: flex;
flex-flow: row wrap;
}
@media (max-width: 950px) {
width: 100vw;
}
`;
const ContactContainer = styled.div`
overflow-x: hidden;
@media (max-width: 950px) {
margin-top: 0;
}
`;
const CommitteeContainer: React.FC<{
committee: Committee;
children: React.ReactNode;
}> = ({ committee, children }) => (
<Container>
<div>
{committee.roles.map((role) => (
role.representatives.map((representative) => (
<ContactCard
key={representative.name}
name={representative.name}
phone={representative.phone_number}
email={representative.email}
image={representative.image || blankProfile}
role_fi={role.name_fi}
role_en={role.name_en}
/>
))
))}
</div>
{children}
</Container>
);
interface Committee {
name_fi: string;
name_en: string;
roles: Array<Role>;
}
interface Role {
name_fi: string;
name_en: string;
representatives: Array<Representative>
}
interface Representative {
name: string;
phone_number?: string;
email?: string;
image?: string;
}
const BoardPageView: React.FC = () => (
<>
<TextSection>
<h1>Hallitus</h1>
<div>
<p>
Tältä sivulta löydät killan hallituksen jäsenten yhteystiedot.
</p>
<p>
{"Koko hallitukseen saa yhteyden lähettämällä sähköpostia osoitteeseen "}
<BlueLink to="mailto:hallitus@sahkoinsinoorikilta.fi">
hallitus@sahkoinsinoorikilta.fi
</BlueLink>
.
</p>
<p>
Muut yhteystiedot löydät <Link to="/yhteystiedot">täältä.</Link>
</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>
</div>
</TextSection>
<ContactContainer>
{orderedCommittees.map((json) => (
<React.Fragment key={json.slug}>
<TextSection id={json.slug}>
<CommitteeContainer committee={json}>
{(json.slug === "board")}
</CommitteeContainer>
</TextSection>
</React.Fragment>
))}
</ContactContainer>
</>
);
export default BoardPageView;
@@ -1,6 +1,6 @@
{
"slug": "board",
"name_fi": "Hallitus",
"name_fi": "Hallitus 2024",
"name_en": "Board",
"roles": [
{
@@ -8,22 +8,22 @@
"name_en": "Chairman of the Board",
"representatives": [
{
"name": "Mikko Suhonen",
"name": "Sauli Hakala",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/mikko.jpg"
"email": "sauli.hakala@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/sauli.jpg"
}
]
},
{
"name_fi": "Sihteeri",
"name_en": "Secretary",
"name_fi": "Varapuheenjohtaja",
"name_en": "Vice Chair",
"representatives": [
{
"name": "Emilia Kortelainen",
"name": "Eemeli Hintsanen",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/emilia.jpg"
"email": "eemeli.hintsanen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/eemeli.jpg"
}
]
},
@@ -32,22 +32,22 @@
"name_en": "Treasurer",
"representatives": [
{
"name": "Esko Väänänen",
"name": "Nea Kanerva",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/esko.jpg"
"email": "nea.kanerva@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/nea.jpg"
}
]
},
{
"name_fi": "Fuksitoimikunnan Puheenjohtaja",
"name_fi": "Fuksitoimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Melisa Dönmez",
"name": "Aura Friman",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/melisa.jpg"
"email": "aura.friman@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/aura.jpg"
}
]
},
@@ -56,10 +56,10 @@
"name_en": "",
"representatives": [
{
"name": "Eveliina Ahonen",
"name": "Antti Salpakari",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/eveliina.jpg"
"email": "antti.salpakari@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/antti.jpg"
}
]
},
@@ -68,10 +68,10 @@
"name_en": "",
"representatives": [
{
"name": "Sakke Kangas",
"name": "Aino Saarela",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/sakke.jpg"
"email": "aino.saarela@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/aino_sa.jpg"
}
]
},
@@ -80,22 +80,10 @@
"name_en": "",
"representatives": [
{
"name": "Eero Ketonen",
"name": "Rosanna Reims",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/eero.jpg"
}
]
},
{
"name_fi": "ISOvastaava",
"name_en": "",
"representatives": [
{
"name": "Salla Lyytikäinen",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/salla.jpg"
"email": "rosanna.reims@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/rosanna.jpg"
}
]
},
@@ -104,10 +92,10 @@
"name_en": "",
"representatives": [
{
"name": "Sofia Öhman",
"name": "Valentin Juhela",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/sofia.jpg"
"email": "valentin.juhela@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/valentin.jpg"
}
]
},
@@ -116,10 +104,10 @@
"name_en": "",
"representatives": [
{
"name": "Iikka Huttu",
"name": "Elida Widgren",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/iikka.jpg"
"email": "elida.widgren@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/elida.jpg"
}
]
},
@@ -128,22 +116,22 @@
"name_en": "",
"representatives": [
{
"name": "Ilari Ojakorpi",
"name": "Joona Maaranen",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/ilari.jpg"
"email": "joona.maaranen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/joona.jpg"
}
]
},
{
"name_fi": "Ulkomestari",
"name_fi": "KV-fuksikapteeni",
"name_en": "",
"representatives": [
{
"name": "Heidi Mäkitalo",
"name": "Jere Oinonen",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/heidi.jpg"
"email": "jere.oinonen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/jere.jpg"
}
]
},
@@ -152,10 +140,22 @@
"name_en": "",
"representatives": [
{
"name": "Tommi Oinonen",
"name": "Into Saarinen",
"phone_number": null,
"email": null,
"image": "https://static.sahkoinsinoorikilta.fi/img/board/tommmi.jpg"
"email": "into.saarinen@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/into.jpg"
}
]
},
{
"name_fi": "Viestintämestari",
"name_en": "",
"representatives": [
{
"name": "Aino Svahn",
"phone_number": null,
"email": "aino.svahn@sahkoinsinoorikilta.fi",
"image": "https://static.sahkoinsinoorikilta.fi/img/board/2026/aino_sv.jpg"
}
]
}
@@ -0,0 +1,218 @@
import React from "react";
import styled from "styled-components";
import { Divider, TextSection, Link } from "@components/index";
import colors from "@theme/colors";
import ContactCard from "@components/ContactCard";
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 SiccJson from "./sicc.json";
import SptmkJson from "./sptmk.json";
import PotatmkJson from "./potatmk.json"
import Others from "./others.json";
const orderedCommittees = [
FtmkJson,
HtmkJson,
LtmkJson,
HvtmkJson,
MtmkJson,
OptmkJson,
YtmkJson,
TtmkJson,
PtmkJson,
VtmkJson,
SwtmkJson,
NtmkJson,
SiccJson,
SptmkJson,
PotatmkJson,
Others,
];
const BlueLink = styled(Link)`
color: ${colors.blue1};
&:hover {
color: ${colors.lightBlue};
}
`;
const IndexUL = styled.ul`
padding: 0;
list-style: none;
li::before {
content: attr(data-icon);
margin-right: 4px;
}
`;
const Index: React.FC<{ committees: typeof orderedCommittees }> = ({ committees }) => (
<IndexUL>
{committees.map(({ slug, name_fi }) => (
<BlueLink to={`#${slug}`} key={slug}>
<li data-icon="»">
{name_fi}
</li>
</BlueLink>
))}
</IndexUL>
);
const Container = styled.div`
color: ${colors.darkBlue};
align-items: center;
justify-content: center;
width: 50vw;
& > h2 {
text-transform: uppercase;
font-size: 4rem;
width: 100%;
}
& > div {
display: flex;
flex-flow: row wrap;
}
@media (max-width: 950px) {
width: 100vw;
}
`;
const ContactContainer = styled.div`
overflow-x: hidden;
@media (max-width: 950px) {
margin-top: 0;
}
`;
const TitleContainer = styled.div`
display: flex;
width: 100%;
align-items: center;
justify-content: center;
padding: 10px 10px;
flex-direction: column;
margin: auto;
`;
const CommitteeContainer: React.FC<{
committee: Committee;
children: React.ReactNode;
}> = ({ committee, children }) => (
<Container>
<TitleContainer>
<h2>
{committee.name_fi || committee.name_en}
</h2>
</TitleContainer>
<p>
{committee.info}
</p>
<div>
{committee.roles.map((role) => (
role.representatives.map((representative) => (
<ContactCard
key={representative.name}
name={representative.name}
phone={representative.phone_number}
email={representative.email}
image={null}
role_fi={role.name_fi}
role_en={role.name_en}
/>
))
))}
</div>
{children}
</Container>
);
interface Committee {
name_fi: string;
name_en: string;
info: string;
roles: Array<Role>;
}
interface Role {
name_fi: string;
name_en: string;
representatives: Array<Representative>
}
interface Representative {
name: string;
phone_number?: string;
email?: string;
image?: string;
}
const CommitteePageView: React.FC = () => (
<>
<TextSection>
<h1>Toimihenkilöt</h1>
<p>
Tältä sivulta löytyvät killan toimihenkilöt sekä lyhyet kuvaukset toimikunnista.
<br />
<br />
Toimihenkilöiden sähköpostiosoitteet ovat muotoa etunimi.sukunimi@sahkoinsinoorikilta.fi.
</p>
<aside>
<div>
<h6>Toimikuntaluettelo</h6>
<Index committees={orderedCommittees} />
</div>
</aside>
</TextSection>
<ContactContainer>
{orderedCommittees.map((json) => (
<React.Fragment key={json.slug}>
{(json.slug !== "board") && (
<Divider />
)}
<TextSection id={json.slug}>
<CommitteeContainer committee={json}>
{(json.slug === "board") && (
<div>
<p>
{"Koko hallitukseen saa yhteyden lähettämällä sähköpostia osoitteeseen "}
<BlueLink to="mailto:hallitus@sahkoinsinoorikilta.fi">
hallitus@sahkoinsinoorikilta.fi
</BlueLink>
.
</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.
</p>
</div>
)}
</CommitteeContainer>
</TextSection>
</React.Fragment>
))}
</ContactContainer>
</>
);
export default CommitteePageView;
+56
View File
@@ -0,0 +1,56 @@
{
"slug": "ftmk",
"name_fi": "Fuksitoimikunta",
"name_en": "",
"info": "Fuksitoimikuntaan kuuluu fuksikapteenit, KV-kapteenit, ISOvastaava sekä KV-ISOvastaava. Fuksitoimikunta huolehtii fukseista ja fukseille annettavasta fuksikasvatuksesta. ISOvastaava ja KV-ISOvastaava ovat taas vastuussa killan ISOhenkilöistä ja heidän ohjaamisestaan.",
"roles": [
{
"name_fi": "Fuksitoimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Aura Friman"
}
]
},
{
"name_fi": "Fuksitoimikunnan puheenjohtajan adjutantti",
"name_en": "",
"representatives": [
{
"name": "Antti Salpakari"
}
]
},
{
"name_fi": "KV-fuksikapteeni",
"name_en": "International Fuksi Captain",
"representatives": [
{
"name": "Jere Oinonen"
},
{
"name": "Hocine Montenez"
}
]
},
{
"name_fi": "ISOvastaava",
"name_en": "Tutor Coordinator",
"representatives": [
{
"name": "Veera Lindroos"
}
]
},
{
"name_fi": "KV-ISOvastaava",
"name_en": "International Tutor Coordinator",
"representatives": [
{
"name": "Janne Yrjölä"
}
]
}
]
}
+59
View File
@@ -0,0 +1,59 @@
{
"slug": "htmk",
"name_fi": "Hupitoimikunta",
"name_en": "Entertainment Committee",
"info": "Hupitoimikunta järjestää päätoimenaan kaikenkirjavia tapahtumia, kuten sitsejä, saunailtoja sekä muita juhlia. Hupitoimikuntaa johtaa Hovimestari ja Hovineuvos. Toimikunnassa toimii Hovin lisäksi emäntiä ja isäntiä, jotka hoitavat juhlien käytännön järjestelyjä, esimerkiksi ruoanlaiton, kattauksen ja tarjoilun Hovin johdolla.",
"roles": [
{
"name_fi": "Hovimestari",
"name_en": "Master of Ceremonies",
"representatives": [
{
"name": "Aino Saarela"
}
]
},
{
"name_fi": "Hovineuvos",
"name_en": "Court Counsellor",
"representatives": [
{
"name": "Rosanna Reims"
}
]
},
{
"name_fi": "Emäntä",
"name_en": "Hostess",
"representatives": [
{
"name": "Elina Pyylampi"
},
{
"name": "Elle Leivo"
},
{
"name": "Emma Salmenaho"
}
]
},
{
"name_fi": "Isäntä",
"name_en": "Host",
"representatives": [
{
"name": "Aleksi Nuutinen"
},
{
"name": "Juho Rosnell"
},
{
"name": "Julius Härkönen"
},
{
"name": "Joonas Hilvo"
}
]
}
]
}
+101
View File
@@ -0,0 +1,101 @@
{
"slug": "hvtmk",
"name_fi": "Hyvinvointitoimikunta",
"name_en": "Committee of Wellbeing",
"info": "Hyvinvointitoimikunta järjestää monipuolisesti kiltalaisten hyvinvointia edistävää hyvän mielen toimintaa. Toimikunta koostuu liikunta-, retkeily-, kulttuuri- ja kiltahuonevastaavista, ja toimikuntaa johtaa hyvinvointimestari.",
"roles": [
{
"name_fi": "Hyvinvointimestari",
"name_en": "Master of Wellbeing",
"representatives": [
{
"name": "Valentin Juhela"
}
]
},
{
"name_fi": "Kulttuurivastaava",
"name_en": "Culture Representative",
"representatives": [
{
"name": "Johannes Viirimäki"
},
{
"name": "Linnea Viitasalo"
},
{
"name": "Matilda Ahonen"
}
]
},
{
"name_fi": "Liikuntavastaava",
"name_en": "Sports Representative",
"representatives": [
{
"name": "Aino Salmi"
},
{
"name": "Eeda Alasaari"
},
{
"name": "Iiris Kuulusa"
}
]
},
{
"name_fi": "Kiltahuonevastaava",
"name_en": "Guild Room Representative",
"representatives": [
{
"name": "Milja Kuusela"
},
{
"name": "Tuomas Rantamäki"
}
]
},
{
"name_fi": "Retkeilyvastaava",
"name_en": "",
"representatives": [
{
"name": "Arvi Virkkunen"
},
{
"name": "Auli Purolinna"
},
{
"name": "Ville Lairila"
},
{
"name": "Tiitus Koski"
}
]
},
{
"name_fi": "Yhdenvertaisuusvastaava",
"name_en": "",
"representatives": [
{
"name": "Teemu Heikkinen"
},
{
"name": "Aaron Löfgren"
},
{
"name": "Matilda Ahonen"
}
]
},
{
"name_fi": "Kiltamuori",
"name_en": "",
"representatives": [
{
"name": "Markus Aaltio"
}
]
}
]
}
+65
View File
@@ -0,0 +1,65 @@
{
"slug": "ltmk",
"name_fi": "Lukkaritoimikunta",
"name_en": "",
"info": "Lukkaritoimikunta on vastuussa killan laulukulttuurin kehittämisestä sekä ylläpitämisestä. Toimikunnan muodostaa lukkarimestari, lukkarit sekä lukkarikisällit. Meidät tapaat sitseillä sekä muissa tapahtumissa muistuttamassa, että teekkari laulaa mieluummin kuin hyvin.",
"roles": [
{
"name_fi": "Lukkarimestari",
"name_en": "",
"representatives": [
{
"name": "Aino Salmi"
}
]
},
{
"name_fi": "Lukkari",
"name_en": "",
"representatives": [
{
"name": "Alex Hyytinen"
},
{
"name": "Ilmari Reponen"
},
{
"name": "Iiris Kuulusa"
},
{
"name": "Samuel Södervall"
},
{
"name": "Tapio Immonen"
}
]
},
{
"name_fi": "Lukkarikisälli",
"name_en": "",
"representatives": [
{
"name": "Aapo Palojärvi"
},
{
"name": "André Palosaari"
},
{
"name": "Kaisa Lehtimäki"
},
{
"name": "Olav Hamel"
},
{
"name": "Otto Tuominen"
},
{
"name": "Panu Leinonen"
},
{
"name": "Terhi Lukkari"
}
]
}
]
}
+110
View File
@@ -0,0 +1,110 @@
{
"slug": "mtmk",
"name_fi": "Sössö-toimikunta",
"name_en": "Media Committee",
"info": "Sössö-toimikunta toimittaa Sössöä, Sähköinsinöörikillan ikiomaa lehteä, joka on ikänsä ja laatunsa puolesta Otaniemen eliittiä. Toimikunta julkaisee vuodessa kaksi painettua lehteä sekä lukuisia nettiartikkeleita ynnä muuta. Toimikunta hoitaa lisäksi myös valokuvat ja live-striimit.",
"roles": [
{
"name_fi": "Päätoimittaja",
"name_en": "Editor in Chief",
"representatives": [
{
"name": "Joona Komonen",
"phone_number": null,
"email": null,
"image": null
}
]
},
{
"name_fi": "Tyhjäntoimittaja",
"name_en": "",
"representatives": [
{
"name": "Topi Manskinen",
"phone_number": null,
"email": null,
"image": null
}
]
},
{
"name_fi": "Toimittaja",
"name_en": "Journalist",
"representatives": [
{
"name": "Aake Laukkanen"
},
{
"name": "Alex Hyytinen"
},
{
"name": "Apollo Ailus"
},
{
"name": "Eetu Tossavainen"
},
{
"name": "Jenni Marttinen"
},
{
"name": "Juho Laukka"
},
{
"name": "Lauri Anttila"
},
{
"name": "Otto kievimaa"
},
{
"name": "Sampo Haarala"
},
{
"name": "Venla Nikkanen"
}
]
},
{
"name_fi": "Taittaja",
"name_en": "",
"representatives": [
{
"name": "Atte Vitie"
},
{
"name": "Lauri Anttila"
},
{
"name": "Otto Kievimaa"
},
{
"name": "Partrik Varteva"
}
]
},
{
"name_fi": "Graafikko",
"name_en": "Photographer & Graphic Artist",
"representatives": [
{
"name": "Annika Tattari"
},
{
"name": "Elian Salmimaa"
},
{
"name": "Lotta Kähönen"
}
]
},
{
"name_fi": "Heevistriimaaja",
"name_en": "Heevistreamer",
"representatives": [
{
"name": "Aaro Rasilainen"
}
]
}
]
}
+89
View File
@@ -0,0 +1,89 @@
{
"slug": "ntmk",
"name_fi": "N-Toimikunta",
"name_en": "",
"info": "N-toimikunta järjestää erinäisiä tapahtumia vanhemmille ja vanhemmanmielisille kiltalaisille, kuten sitsejä, aftereita, ulkoilutapahtumia ja mitä ikinä keksitäänkään. N-toimikunta toimii myös matalan kynnyksen välinä Sklubiin, eli alumniyhdistykseemme. N-toimikuntaan kuuluu myös killan kiltapatruunat, jotka pitävät huolta killan jatkuvuudesta.",
"roles": [
{
"name_fi": "N-toimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Elina Huttunen"
}
]
},
{
"name_fi": "N-toimikunnan Varapuheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Ville Lairila"
}
]
},
{
"name_fi": "Kiltapatruuna",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren"
},
{
"name": "Axel Aurola"
},
{
"name": "Emma Uusküla"
},
{
"name": "Johannes Viirimäki"
},
{
"name": "Tuomas Rantamäki"
},
{
"name": "Yassine Ramid"
}
]
},
{
"name_fi": "N-vastaava",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren"
},
{
"name": "Aleksi Saajakari"
},
{
"name": "Elian Salmimaa"
},
{
"name": "Johannes Viirimäki"
},
{
"name": "Karoliina Talvikangas"
},
{
"name": "Markus Aaltio"
},
{
"name": "Miika Helminen"
},
{
"name": "Mikael Siikonen"
},
{
"name": "Peter Lindahl"
},
{
"name": "Veikko Räty"
},
{
"name": "Verneri Turkki"
}
]
}
]
}
+54
View File
@@ -0,0 +1,54 @@
{
"slug": "optmk",
"name_fi": "Opintotoimikunta",
"name_en": "Study Committee",
"info": "Opintotoimikunta vastaa edunvalvonnasta, killan tekemästä abimarkkinoinnista, sekä pitää yhteyttä korkeakoulun henkilökuntaan. Toimikunta järjestää opintoihin liittyviä tapahtumia, kuten opintosaunoja. Tomikunta koostuu opintomestarista ja opintovastaavista.",
"roles": [
{
"name_fi": "Opintomestari",
"name_en": "Master of Studies",
"representatives": [
{
"name": "Elida Widgren"
}
]
},
{
"name_fi": "Opintovastaava",
"name_en": "Study Coordinator",
"representatives": [
{
"name": "Aapo Tynninen"
},
{
"name": "Aleksi Liukkonen"
},
{
"name": "Antti Lehtonen"
},
{
"name": "Atu Vahla"
},
{
"name": "Iiris Kuulusa"
},
{
"name": "Ilmari Reponen"
},
{
"name": "Jesper Seppäläinen"
},
{
"name": "Mikael Vatiainen"
},
{
"name": "Vi Tam"
},
{
"name": "Yassine Ramid"
}
]
}
]
}
+52
View File
@@ -0,0 +1,52 @@
{
"slug": "others",
"name_fi": "Muut",
"name_en": "Other officials",
"info": "",
"roles": [
{
"name_fi": "Arkistovastaava",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "Sklubi-yhdyshenkilö",
"name_en": "",
"representatives": [
{
"name": "Ville Kurko",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "Teekkarikokousen kiltaedustaja",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "TEK-yhdyshenkilö",
"name_en": "",
"representatives": [
{
"name": "Visa Kurvi",
"phone_number": null,
"email": null
}
]
}
]
}
+83
View File
@@ -0,0 +1,83 @@
{
"slug": "potatmk",
"name_fi": "Potentiaalin Tasaus 105-toimikunta",
"name_en": "",
"info": "Killan vuosijuhlat",
"roles": [
{
"name_fi": "PoTa-tirehtööri",
"name_en": "",
"representatives": [
{
"name": "Axel Aurola"
},
{
"name": "Karoliina Talvikangas"
}
]
},
{
"name_fi": "Kukkohäntävastaava",
"name_en": "",
"representatives": [
{
"name": "Antti Salpakari"
},
{
"name": "Tuomas Rantamäki"
}
]
},
{
"name_fi": "Seremoniamestari",
"name_en": "",
"representatives": [
{
"name": "Henri Aito"
}
]
},
{
"name_fi": "Jatkovastaava",
"name_en": "",
"representatives": [
{
"name": "Aino Tasapuro"
},
{
"name": "Eemeli Hintsanen"
}
]
},
{
"name_fi": "Koristeluvastaava",
"name_en": "",
"representatives": [
{
"name": "Elina Huttunen"
}
]
},
{
"name_fi": "Sillisvastaava",
"name_en": "",
"representatives": [
{
"name": "Leevi Oikarinen"
},
{
"name": "Valentin Juhela"
}
]
},
{
"name_fi": "Graafikko",
"name_en": "",
"representatives": [
{
"name": "Elian Salmimaa"
}
]
}
]
}
+56
View File
@@ -0,0 +1,56 @@
{
"slug": "ptmk",
"name_fi": "Pajatoimikunta",
"name_en": "",
"info": "Pajatoimikunta vastaa killan oman elektroniikkapajan eli SIK-pajan ylläpidosta ja kehityksestä. Toimikuntaa johtaa pajamestari ja toimikunta koostuu pajavastaavista ja pajakisälleistä.",
"roles": [
{
"name_fi": "Pajamestari",
"name_en": "",
"representatives": [
{
"name": "Simeon Pursiainen"
}
]
},
{
"name_fi": "Pajavastaava",
"name_en": "",
"representatives": [
{
"name": "Axel Söderberg"
},
{
"name": "Đình Minh Trần"
}
]
},
{
"name_fi": "Pajakisälli",
"name_en": "",
"representatives": [
{
"name": "Aapo Tynninen"
},
{
"name": "Aarni Kämppi"
},
{
"name": "Atte Elo"
},
{
"name": "Emma Uusküla"
},
{
"name": "Jusi Seppälä"
},
{
"name": "Tuomas Rantamäki"
},
{
"name": "Vi Tam"
}
]
}
]
}
+44
View File
@@ -0,0 +1,44 @@
{
"slug": "sicc",
"name_fi": "SIK International Committee Council",
"name_en": "SIK International Committee Council",
"info": "*coming soon*",
"roles": [
{
"name_fi": "International Ambassador",
"name_en": "International Ambassador",
"representatives": [
{
"name": "Igor Oinonen"
}
]
},
{
"name_fi": "International Attaché",
"name_en": "International Attaché",
"representatives": [
{
"name": "Kuura Janhunen"
}
]
},
{
"name_fi": "International Envoy",
"name_en": "International Envoy",
"representatives": [
{
"name": "Aleksanteri Vesala"
},
{
"name": "Apollo Ailus"
},
{
"name": "Juho Aikio"
},
{
"name": "Léo Di Poi"
}
]
}
]
}
+45
View File
@@ -0,0 +1,45 @@
{
"slug": "sptmk",
"name_fi": "Sähköpäivätoimikunta",
"name_en": "",
"info": "",
"roles": [
{
"name_fi": "Sähköpäivätirehtööri",
"name_en": "",
"representatives": [
{
"name": "Aino Tasapuro"
},
{
"name": "Matilda Ahonen"
}
]
},
{
"name_fi": "Sähköpäivävastaava",
"name_en": "",
"representatives": [
{
"name": "Aapo Nyyssönen"
},
{
"name": "Aapo Saranpää"
},
{
"name": "André Palosaari"
},
{
"name": "Ilmari Reponen"
},
{
"name": "Oliver Hannula"
},
{
"name": "Teemu Heikkinen"
}
]
}
]
}
+47
View File
@@ -0,0 +1,47 @@
{
"slug": "swtmk",
"name_fi": "SIKin Wapaa-aika -toimikunta",
"name_en": "",
"info": "Sikin Wapaa-aika -toimikunta eli tuttavallisemmin SiWa on killan uusin toimikunta. Toimikunnan tavoitteena on järjestää monipuolisesti erilaisia hassunhauskoja matalan kynnyksen tapahtumia kiltalaisille laidasta laitaan. Esimerkkejä SiWan tapahtumista ovat mm. wappulautta, pitsapäivä ja pokeriturnaus.",
"roles": [
{
"name_fi": "Myymäläpäällikkö",
"name_en": "Head of sales",
"representatives": [
{
"name": "Leevi Oikarinen"
}
]
},
{
"name_fi": "Myyjä",
"name_en": "Clerk",
"representatives": [
{
"name": "Alexandr Lemin"
},
{
"name": "Henri Aito"
},
{
"name": "Ossi Jalkanen"
},
{
"name": "Tiitus Koski"
},
{
"name": "Veikko Räty"
}
]
},
{
"name_fi": "Kiltapäiväkerhovastaava",
"name_en": "",
"representatives": [
{
"name": "Matilda Ahonen"
}
]
}
]
}
+35
View File
@@ -0,0 +1,35 @@
{
"slug": "ttmk",
"name_fi": "Teknologiatoimikunta",
"name_en": "Technology Committee",
"info": "Teknologiatoimikunta huolehtii killan tekniikan toiminnasta. Toimikunnan vastuulle kuuluu killan tietojärjestelmien ylläpito ja kehitys sekä viestintäkanavien toimivuudesta huolehtiminen. Toimikunta koostuu teknologiamestarista ja teknologiavastaavista.",
"roles": [
{
"name_fi": "Teknologiamestari",
"name_en": "Master of technology",
"representatives": [
{
"name": "Joona Maaranen"
}
]
},
{
"name_fi": "Teknologiavastaava",
"name_en": "",
"representatives": [
{
"name": "Alekdsandr Lemin"
},
{
"name": "Atte Elo"
},
{
"name": "Dat Tram"
},
{
"name": "Oiva Haapaniemi"
}
]
}
]
}
+94
View File
@@ -0,0 +1,94 @@
{
"slug": "vtmk",
"name_fi": "Viestintätoimikunta",
"name_en": "Communications Committee",
"info": "Viestintätoimikunta huolehtii kiltalaisten tiedottamisesta, tuottaa sisältöä killan sosiaalisen median kanaviin ja suunnittelee killan myyntituotteita. Toimikuntaa johtaa killan viestintämestari ja toimikunta koostuu somevastaavista, brändivastaavista sekä videokuvaajista.",
"roles": [
{
"name_fi": "Viestintämestari",
"name_en": "Head of communcations",
"representatives": [
{
"name": "Aino Svahn"
}
]
},
{
"name_fi": "Somevastaava",
"name_en": "",
"representatives": [
{
"name": "Aada Tättilä"
},
{
"name": "Ada Minkkinen"
},
{
"name": "Aino Tasapuro"
},
{
"name": "Ira Kosunen"
},
{
"name": "Lukas Iles"
},
{
"name": "Tytti Solonen"
}
]
},
{
"name_fi": "Brändivastaava",
"name_en": "",
"representatives": [
{
"name": "Aapo Saranpää"
},
{
"name": "Aapo Nyyssönen"
},
{
"name": "Kehrä Halme"
}
]
},
{
"name_fi": "Videokuvaaja",
"name_en": "",
"representatives": [
{
"name": "Apollo Ailus"
},
{
"name": "Julius Männistö"
}
]
},
{
"name_fi": "Valokuvaaja",
"name_en": "",
"representatives": [
{
"name": "Aaro Rasilainen"
},
{
"name": "Apollo Ailus"
},
{
"name": "Arvi Virkkunen"
},
{
"name": "Julius Männistö"
},
{
"name": "Lotta Kähönen"
},
{
"name": "Veikko Räty"
}
]
}
]
}
+56
View File
@@ -0,0 +1,56 @@
{
"slug": "ytmk",
"name_fi": "Yrityssuhdetoimikunta",
"name_en": "Corporate Relations Committee",
"info": "Yrityssuhdetoimikunta toimii linkkinä yritysmaailman ja Sähköinsinöörikillan välillä. Toimikunnan tehtäviin kuuluu esimerkiksi excursioiden eli yritysvierailujen järjestäminen, yrityssaunailtojen ja muiden yhteistyösopimuksilla rahoitettujen tapahtumien järjestäminen, sekä sponsoreiden hankinta Sähköinsinöörikillan puhtaanvalkoisiin haalareihin. Lisäksi yrityssuhdetoimikunnan vastuulla on ulkosuhteiden ylläpito ystävyysainejärjestöihin kotimaassa ja ulkomailla.",
"roles": [
{
"name_fi": "Yrityssuhdemestari",
"name_en": "Head of Corporate Relations",
"representatives": [
{
"name": "Into Saarinen"
}
]
},
{
"name_fi": "Yrityssuhdeguru",
"name_en": "Guru of yritysuhde",
"representatives": [
{
"name": "Tuomas Hintikka"
}
]
},
{
"name_fi": "Excursiomestari",
"name_en": "Head of Excursions",
"representatives": [
{
"name": "Roope Palo"
}
]
},
{
"name_fi": "Yrityssuhde- ja excursiovastaava",
"name_en": "Apprentice of Corporate Relations",
"representatives": [
{
"name": "Axel Aurola"
},
{
"name": "Mikael Sundell"
},
{
"name": "Kaisa Lehtimäki"
},
{
"name": "Timo Kaleva"
},
{
"name": "Väinö Saarinen"
}
]
}
]
}
+27 -203
View File
@@ -1,211 +1,35 @@
import React from "react";
import styled from "styled-components";
import { Divider, TextSection, Link } from "@components/index";
import colors from "@theme/colors";
import ContactCard from "@components/ContactCard";
import BoardJson from "./board.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,
HvtmkJson,
MtmkJson,
NtmkJson,
OptmkJson,
OtmkJson,
EPtmkJson,
SstmkJson,
ShntmkJson,
ShtmkJson,
TtmkJson,
UtmkJson,
YtmkJson,
Others,
];
const blankProfile = "/img/blank_profile.png";
const BlueLink = styled(Link)`
color: ${colors.blue1};
&:hover {
color: ${colors.lightBlue};
}
`;
const IndexUL = styled.ul`
padding: 0;
list-style: none;
li::before {
content: attr(data-icon);
margin-right: 4px;
}
`;
const Index: React.FC<{ committees: typeof orderedCommittees }> = ({ committees }) => (
<IndexUL>
{committees.map(({ slug, name_fi }) => (
<BlueLink to={`#${slug}`} key={slug}>
<li data-icon="»">
{name_fi}
</li>
</BlueLink>
))}
</IndexUL>
);
const Container = styled.div`
color: ${colors.darkBlue};
align-items: center;
justify-content: center;
width: 50vw;
& > h2 {
text-transform: uppercase;
font-size: 4rem;
width: 100%;
}
& > div {
display: flex;
flex-flow: row wrap;
}
@media (max-width: 950px) {
width: 100vw;
}
`;
const ContactContainer = styled.div`
margin-top: -13rem;
overflow-x: hidden;
@media (max-width: 950px) {
margin-top: 0;
}
`;
const TitleContainer = styled.div`
display: flex;
width: 100%;
align-items: center;
justify-content: center;
padding: 10px 10px;
flex-direction: column;
margin: auto;
`;
const CommitteeContainer: React.FC<{
committee: Committee;
}> = ({ committee, children }) => (
<Container>
<TitleContainer>
<h2>
{committee.name_fi || committee.name_en}
</h2>
</TitleContainer>
<div>
{committee.roles.map((role) => (
role.representatives.map((representative) => (
<ContactCard
key={representative.name}
name={representative.name}
phone={representative.phone_number}
email={representative.email}
image={(committee.name_en === "Board") ? (representative.image || blankProfile) : null}
role_fi={role.name_fi}
role_en={role.name_en}
/>
))
))}
</div>
{children}
</Container>
);
interface Committee {
name_fi: string;
name_en: string;
roles: Array<Role>;
}
interface Role {
name_fi: string;
name_en: string;
representatives: Array<Representative>
}
interface Representative {
name: string;
phone_number?: string;
email?: string;
image?: string;
}
import { TextSection, Link } from "@components/index";
const ContactsPageView: React.FC = () => (
<>
<TextSection>
<h1>Yhteystiedot</h1>
<TextSection>
<h1>Yhteystiedot</h1>
<div>
<h6>Hallitus</h6>
<p>
Asiaa olisi, mutta kehen ottaa yhteyttä?
<br />
Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta.
Koko hallitukseen saat yhteyden osoitteesta hallitus@sahkoinsinoorikilta.fi.
Yksittäisten hallituksen jäsenten yhteystiedot löydät <Link to="/kilta/hallitus">täältä.</Link>
</p>
<aside>
<div>
<h6>Toimikuntaluettelo</h6>
<Index committees={orderedCommittees} />
</div>
</aside>
</TextSection>
<ContactContainer>
{orderedCommittees.map((json) => (
<React.Fragment key={json.slug}>
{(json.slug !== "board") && (
<Divider />
)}
<TextSection id={json.slug}>
<CommitteeContainer committee={json}>
{(json.slug === "board") && (
<div>
<p>
{"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>
</div>
)}
</CommitteeContainer>
</TextSection>
</React.Fragment>
))}
</ContactContainer>
</>
<h6>Postiosoite</h6>
<p>
Aalto-yliopisto <br />
Aalto-yliopiston Sähköinsinöörikilta ry <br />
PL 15500 <br />
00076 Aalto
</p>
<h6>Laskutus</h6>
<p>
Yhdistys : Aalto-yliopiston Sähköinsinöörikilta ry <br />
Y-tunnus: 1627010-1 <br />
Sähköpostilaskut: <a href="mailto:rahastonhoitaja@sahkoinsinoorikilta.fi">rahastonhoitaja@sahkoinsinoorikilta.fi</a>
</p>
<h6>Kiltahuone</h6>
<p>
Maarintie 8 <br />
Huoneet 1130-1134
</p>
</div>
</TextSection>
);
export default ContactsPageView;
-52
View File
@@ -1,52 +0,0 @@
{
"slug": "eptmk",
"name_fi": "Elepajatoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Pajapäävastaava",
"name_en": "",
"representatives": [
{
"name": "Oskari Ponkala"
}
]
},
{
"name_fi": "Pajavastaava",
"name_en": "",
"representatives": [
{
"name": "Karl Lipping"
}
]
},
{
"name_fi": "Pajakisälli",
"name_en": "",
"representatives": [
{
"name": "Samu Nyman"
},
{
"name": "Veikko Räty"
},
{
"name": "Ville Lairila"
},
{
"name": "Justus Ojala"
},
{
"name": "Tommi Sytelä"
},
{
"name": "Visa Kurvi"
},
{
"name": "Petrus Asikainen"
}
]
}
]
}
-82
View File
@@ -1,82 +0,0 @@
{
"slug": "hvtmk",
"name_fi": "Hyvinvointitoimikunta",
"name_en": "Committee of Wellbeing",
"roles": [
{
"name_fi": "Hyvinvointimestari",
"name_en": "Master of Wellbeing",
"representatives": [
{
"name": "Sofia Öhman"
}
]
},
{
"name_fi": "Kulttuurivastaava",
"name_en": "Culture Representative",
"representatives": [
{
"name": "Juha Anttila"
},
{
"name": "Aleksi Helin"
},
{
"name": "Julia Pykälä-aho"
}
]
},
{
"name_fi": "Liikuntavastaava",
"name_en": "Sports Representative",
"representatives": [
{
"name": "Aaro Niskanen"
},
{
"name": "Sauli Norja"
},
{
"name": "Viola Palolahti"
},
{
"name": "Eero Tihtonen"
}
]
},
{
"name_fi": "Kiltahuonevastaava",
"name_en": "Guild Room Representative",
"representatives": [
{
"name": "Patrick Linnanen"
}
]
},
{
"name_fi": "Kiltapäiväkerhovastaava",
"name_en": "",
"representatives": [
{
"name": "Samu Nyman"
},
{
"name": "Aleksanteri Vesala"
}
]
},
{
"name_fi": "Retkeilyvastaava",
"name_en": "",
"representatives": [
{
"name": "Vilhelmiina Honkanen"
},
{
"name": "Pinja Leppänen"
}
]
}
]
}
-120
View File
@@ -1,120 +0,0 @@
{
"slug": "mtmk",
"name_fi": "Sössö-toimikunta",
"name_en": "Media Committee",
"roles": [
{
"name_fi": "Puheenjohtaja, Päätoimittaja",
"name_en": "Chair, Editor in Chief",
"representatives": [
{
"name": "Aino Suomi",
"phone_number": null,
"email": null,
"image": null
}
]
},
{
"name_fi": "Toimittaja",
"name_en": "Journalist",
"representatives": [
{
"name": "Emmaleena Ahonen"
},
{
"name": "Elias Hirvonen"
},
{
"name": "Ville Lairila"
},
{
"name": "Olli Komulainen"
},
{
"name": "Pinja Salo"
},
{
"name": "Tuukka Syrjänen"
},
{
"name": "Aleksanteri Vesala"
}
]
},
{
"name_fi": "Toimittaja & Valokuvaaja",
"name_en": "Journalist & Photographer",
"representatives": [
{
"name": "Jarno Mustonen"
}
]
},
{
"name_fi": "Taittaja & Valokuvaaja",
"name_en": "Layout Artist & Photographer",
"representatives": [
{
"name": "Jonna Tammikivi"
},
{
"name": "Sasu Saalasti"
}
]
},
{
"name_fi": "Taittaja & Toimittaja",
"name_en": "Layout Artist & Journalist",
"representatives": [
{
"name": "Juuli Leppänen"
}
]
},
{
"name_fi": "Valokuvaaja",
"name_en": "Photographer",
"representatives": [
{
"name": "Toni Lyttinen"
},
{
"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"
}
]
}
]
}
-82
View File
@@ -1,82 +0,0 @@
{
"slug": "ntmk",
"name_fi": "N-Toimikunta",
"name_en": "",
"roles": [
{
"name_fi": "N-toimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Ville Kaakinen"
}
]
},
{
"name_fi": "N-toimikunnan varapuheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Jami Hyytiäinen"
}
]
},
{
"name_fi": "Sklubi-yhdyshenkilö",
"name_en": "",
"representatives": [
{
"name": "Ville-Pekka Laakkonen"
}
]
},
{
"name_fi": "Alumivastaava",
"name_en": "",
"representatives": [
{
"name": "Ella Eilola"
}
]
},
{
"name_fi": "N-Toimihenkilö",
"name_en": "",
"representatives": [
{
"name": "Timi Tiira"
},
{
"name": "Erna Virtanen"
},
{
"name": "Emmaleena Ahonen"
},
{
"name": "Jarno Mustonen"
},
{
"name": "Pekka Aho"
},
{
"name": "Mikko Haapamäki"
},
{
"name": "Jonna Tammikivi"
},
{
"name": "Juuli Leppänen"
},
{
"name": "Simo Hakanummi"
},
{
"name": "Tuomo Leino"
},
{
"name": "Sasu Saalasti"
}
]
}
]
}
-62
View File
@@ -1,62 +0,0 @@
{
"slug": "optmk",
"name_fi": "Opintotoimikunta",
"name_en": "Study Committee",
"roles": [
{
"name_fi": "Opintomestari",
"name_en": "Master of Studies",
"representatives": [
{
"name": "Iikka Huttu"
}
]
},
{
"name_fi": "Opintovastaava",
"name_en": "Study Coordinator",
"representatives": [
{
"name": "Juulia Härkönen"
},
{
"name": "Patrick Linnanen"
},
{
"name": "Veeti Lahtinen"
},
{
"name": "Pinja Leppänen"
},
{
"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"
}
]
}
]
}
-87
View File
@@ -1,87 +0,0 @@
{
"slug": "others",
"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": "Oskari Ponkala",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "Arkistonhoitaja",
"name_en": "Archivist",
"representatives": [
{
"name": "Timi Tiira",
"phone_number": null,
"email": null
}
]
},
{
"name_fi": "Häirintäyhdydyshenkilö",
"name_en": "",
"representatives": [
{
"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": "Somevastaava",
"name_en": "",
"representatives": [
{
"name": "Aaron Löfgren",
"phone_number": null,
"email": null
}
]
}
]
}
-106
View File
@@ -1,106 +0,0 @@
{
"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"
}
]
}
]
}
-37
View File
@@ -1,37 +0,0 @@
{
"slug": "shntmk",
"name_fi": "SIK100-historianäyttelytiimi",
"name_en": "",
"roles": [
{
"name_fi": "SIK100-historianäyttelyvastaava",
"name_en": "",
"representatives": [
{
"name": "Timi Tiira"
}
]
},
{
"name_fi": "Yrityssuhdevastaava",
"name_en": "",
"representatives": [
{
"name": "Ella Eilola"
},
{
"name": "Taneli Myllykangas"
},
{
"name": "Jesse Räisänen"
},
{
"name": "Ville Kaakinen"
},
{
"name": "Ville-Pekka Laakkonen"
}
]
}
]
}
-34
View File
@@ -1,34 +0,0 @@
{
"slug": "shtmk",
"name_fi": "SIK100-historiatoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "SIK100-historiatoimikunnan puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Joni Kurvinen"
}
]
},
{
"name_fi": "SIK100-historiatoimihenkilö",
"name_en": "",
"representatives": [
{
"name": "Anni Parkkila"
},
{
"name": "Erna Virtanen"
},
{
"name": "Tommi Askola"
},
{
"name": "Mikko Leino"
}
]
}
]
}
-91
View File
@@ -1,91 +0,0 @@
{
"slug": "sstmk",
"name_fi": "SIK100-toimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Puheenjohtaja",
"name_en": "",
"representatives": [
{
"name": "Erna Virtanen"
}
]
},
{
"name_fi": "Webivastaava",
"name_en": "",
"representatives": [
{
"name": "Jaakko Koskela"
}
]
},
{
"name_fi": "Markkinointivastaava",
"name_en": "",
"representatives": [
{
"name": "Sasu Saalasti"
}
]
},
{
"name_fi": "Yritysvastaava",
"name_en": "",
"representatives": [
{
"name": "Juuli Leppänen"
}
]
},
{
"name_fi": "Seminaarivastaava",
"name_en": "",
"representatives": [
{
"name": "Sini Huhtinen"
}
]
},
{
"name_fi": "Kevätkarnevaalimajuri",
"name_en": "",
"representatives": [
{
"name": "Olli Komulainen"
}
]
},
{
"name_fi": "PoTa100-pääjuhlatirehtööri",
"name_en": "",
"representatives": [
{
"name": "Emmaleena Ahonen"
},
{
"name": "Jonna Tammikivi"
}
]
},
{
"name_fi": "PoTa100-jatkotirehtööri",
"name_en": "",
"representatives": [
{
"name": "Mikael Liimatainen"
}
]
},
{
"name_fi": "PoTa100-sillistirehtööri",
"name_en": "",
"representatives": [
{
"name": "Tuomo Leino"
}
]
}
]
}
-49
View File
@@ -1,49 +0,0 @@
{
"slug": "ttmk",
"name_fi": "Teknologiatoimikunta",
"name_en": "",
"roles": [
{
"name_fi": "Teknologiamestari",
"name_en": "Master of technology",
"representatives": [
{
"name": "Ilari Ojakorpi"
}
]
},
{
"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": "Antti Eronen"
},
{
"name": "Justus Ojala"
},
{
"name": "Lasse Ruokokoski"
}
]
}
]
}
-89
View File
@@ -1,89 +0,0 @@
{
"slug": "utmk",
"name_fi": "Ulkotoimikunta",
"name_en": "External Affairs Committeee",
"roles": [
{
"name_fi": "Ulkomestari",
"name_en": "Master of External Affairs",
"representatives": [
{
"name": "Heidi Mäkitalo"
}
]
},
{
"name_fi": "Kv-Fuksikapteeni",
"name_en": "",
"representatives": [
{
"name": "Suvi Karanta"
}
]
},
{
"name_fi": "Kv-ISOvastaava",
"name_en": "International Tutor Coordinator",
"representatives": [
{
"name": "Pyry Vaara"
}
]
},
{
"name_fi": "International Helper",
"name_en": "International Helper",
"representatives": [
{
"name": "Aaro Niskanen"
},
{
"name": "Eerik Eskola"
}
,
{
"name": "Oona Karjalainen"
},
{
"name": "Aleksi Helin"
}
]
},
{
"name_fi": "Ulkosuhdevastaava",
"name_en": "Apprentice of External Affairs",
"representatives": [
{
"name": "Nestori Yrjönkoski"
},
{
"name": "Johannes Ora"
},
{
"name": "Eino Tyrvänen"
},
{
"name": "Jenni Marttinen"
}
]
},
{
"name_fi": "Ulkowanhus & Ulkopatruuna",
"name_en": "",
"representatives": [
{
"name": "Oliver Hiekkamies"
}
]
},
{
"name_fi": "KVummisetä",
"name_en": "",
"representatives": [
{
"name": "Elias Hirvonen"
}
]
}
]
}
-55
View File
@@ -1,55 +0,0 @@
{
"slug": "ytmk",
"name_fi": "Yrityssuhdetoimikunta",
"name_en": "Corporate Relations Committee",
"roles": [
{
"name_fi": "Yrityssuhdemestari",
"name_en": "Master of Corporate Relations",
"representatives": [
{
"name": "Tommi Oinonen"
}
]
},
{
"name_fi": "Excursiopäävastaava",
"name_en": "Head of Excursions",
"representatives": [
{
"name": "Henry Gustafsson"
}
]
},
{
"name_fi": "Excursiovastaava",
"name_en": "",
"representatives": [
{
"name": "Visa Kurvi"
}
]
},
{
"name_fi": "Yrityssuhdevastaava",
"name_en": "Apprentice of Corporate Relations",
"representatives": [
{
"name": "Melina Sundell"
},
{
"name": "Emma Reinikainen"
},
{
"name": "Iida Luoma"
},
{
"name": "Elma Tuohimetsä"
},
{
"name": "Nestori Yrjönkoski"
}
]
}
]
}
@@ -25,7 +25,7 @@ const CorporatePageHero: React.FC = () => (
<HeroAsideItem
header="LinkedIn"
link="https://linkedin.com/groups/8103057"
linkText="Killan LinkedIn ryhmä"
linkText="Killan LinkedIn-ryhmä"
/>
</HeroAside>
</Hero>
+12 -12
View File
@@ -6,8 +6,10 @@ import JobAd from "@models/JobAd";
import CorporatePageHero from "./CorporatePageHero";
import JobAdList from "./JobAdList";
import BoardJson from "../BoardPage/board.json";
const EXCURSION_RULES = "https://static.sahkoinsinoorikilta.fi/saannot/excursiosaannot.pdf";
const CORPORATE_MASTER_MAIL = "tommi.oinonen@sahkoinsinoorikilta.fi";
const CORPORATE_MASTER_INFO = BoardJson.roles.filter((role) => role.name_fi === "Yrityssuhdemestari")[0].representatives[0];
interface CorporatePageViewProps {
jobAds: JobAd[];
@@ -63,18 +65,16 @@ const CorporatePageView: React.FC<CorporatePageViewProps> = ({ jobAds }) => (
<h6>Potentiaalin Tasaus</h6>
<p>
Kiltamme viettää perinteikkäi vuosijuhliaan helmikuun kolmantena lauantaina.
Kiltamme viettää perinteikäs vuosijuhlaansa helmikuun kolmantena lauantaina.
Potentiaalin Tasaus on kiltamme juhlavin ja rakkain tapahtuma.
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>.
Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella!
</p>
<h6>Killan nettisivut ja työpaikkamainokset</h6>
<p>
Killan nettisivuilla on listattu killan yritysyhteistyökumppanit.
Killan sivuilta löytyvät myös yritysyhteistyökumppaneiden avoimet työpaikkamainokset.
Nämä mainokset ohjataan killan jäsenistölle eteenpäin myös viikottaisin kiltamailin kautta, jotta kaikki mainokset saavat parhaan mahdollisen näkyvyyden kiltalaisten arjessa.
Nämä mainokset ohjataan killan jäsenistölle eteenpäin myös viikoittaisen kiltamailin kautta, jotta kaikki mainokset saavat parhaan mahdollisen näkyvyyden kiltalaisten arjessa.
</p>
<h6>Sössö</h6>
@@ -82,7 +82,7 @@ const CorporatePageView: React.FC<CorporatePageViewProps> = ({ jobAds }) => (
<Link to="https://sosso.fi">Sössö</Link> on Sähköinsinöörikillan hauska ja rakas opiskelijalehti.
Sössö on kerännyt suosiota ja kartuttanut lukijamäärää jo vuodesta 1969 asti.
Sössö ilmestyy perinteisesti paperisena, mutta myös Netti-Sössössä julkaistaan jatkuvasti uusia artikkeleja.
Sössö tavoittaa noin tuhat elektroniikan, sähkötekniikan ja tietoliikennetekniikan opiskelijaa sekä koko tiedekunnan henkilökunnan.
Sössö tavoittaa noin tuhat elektroniikan ja sähkötekniikan opiskelijaa sekä koko tiedekunnan henkilökunnan.
Lisäksi lehti lähetetään muille opiskelijajärjestöille. Yritysten on mahdollista saada mainostilaa Sössön sivuilta.
</p>
</div>
@@ -92,16 +92,16 @@ const CorporatePageView: React.FC<CorporatePageViewProps> = ({ jobAds }) => (
<TextSection>
<h3>Olethan yhteydessä!</h3>
<div>
<p>Yllämainituista mahdollisuuksista, sekä muista ideoista kiinnostuneena, voit olla yhteydessä Yrityssuhdemestariimme Tommiin.</p>
<p>Yllämainituista mahdollisuuksista, sekä muista ideoista kiinnostuneena, voit olla yhteydessä Yrityssuhdemestariimme.</p>
<h6>Yrityssuhdemestari</h6>
<p>Tommi Oinonen <br />044 299 3439<br /> <a href={`mailto:${CORPORATE_MASTER_MAIL}`}>{CORPORATE_MASTER_MAIL}</a></p>
<p>{CORPORATE_MASTER_INFO.name} <br /> <a href={`mailto:${CORPORATE_MASTER_INFO.email}`}>{CORPORATE_MASTER_INFO.email}</a></p>
</div>
</TextSection>
<CTASection
bgColor="orange1"
link="https://sosso.fi/wp-content/uploads/2022/01/sossomediakortti22.pdf"
linkText="Killan lehden mediakortin löydät täältä&nbsp;"
link="https://static.sahkoinsinoorikilta.fi/sekalaista/sossomediakortti25-web.pdf"
linkText="Killan lehden mediakortti&nbsp;"
>
Mainos Sössöön?
</CTASection>
@@ -110,7 +110,7 @@ const CorporatePageView: React.FC<CorporatePageViewProps> = ({ jobAds }) => (
<h3 id="tyopaikat">Työpaikkailmoitukset</h3>
<div>
<JobAdList jobAds={jobAds} />
<p>Voit saada yrityksesi työpaikkailmoituksen listalle lähettämällä sen osoitteeseen <a href={`mailto:${CORPORATE_MASTER_MAIL}`}>{CORPORATE_MASTER_MAIL}</a></p>
<p> Haluatko työpaikkailmoituksesti näkyviin listalle? Lähetä tarjous osoitteeseen <a href={`mailto:${CORPORATE_MASTER_INFO.email}`}>{CORPORATE_MASTER_INFO.email}</a></p>
</div>
</TextSection>
+42
View File
@@ -0,0 +1,42 @@
import React from "react";
import styled from "styled-components";
import JobAd from "@models/JobAd";
import { Accordion } from "@components/index";
import ReactMarkdown from "react-markdown";
import rehypeRaw from "rehype-raw";
import rehypeSanitize from "rehype-sanitize";
interface JobAdListProps {
jobAds: JobAd[];
}
const List = styled.ul`
padding: 0;
li {
margin: 1rem 0;
list-style: none;
}
`;
const JobAdList: React.FC<JobAdListProps> = ({ jobAds }) => (
<List>
{jobAds.map((ad) => (
<li key={ad.id}>
<Accordion title={ad.title_en}>
<div>
<p>
{ad.description_en}
</p>
<ReactMarkdown rehypePlugins={[rehypeRaw, rehypeSanitize]}>
{ad.content_en}
</ReactMarkdown>
</div>
</Accordion>
</li>
))}
</List>
);
export default JobAdList;
+19
View File
@@ -0,0 +1,19 @@
import React from "react";
import { TextSection } from "@components/index";
const EquityPageView: React.FC = () => (
<TextSection>
<h1>Yhdenvertaisuus</h1>
<div>
<p>Sähköinsinöörikilta ry on sitoutunut edistämään yhdenvertaisuutta ja tasa-arvoa. Kilta on kaikille avoin ja
toivottaa kaikki uudet jäsenet tervetulleiksi toimintaansa. Kilta ei hyväksy minkäänlaista syrjintää, kiusaamista tai häirintää.
</p>
<p>
Mikäli kohtaat epäasiallista käytöstä, voit täyttää <a href="https://docs.google.com/forms/d/e/1FAIpQLSdG4U2gBG25YehNLvor5KP9CRmd83unWtP1-jmd-3e5fCyomQ/viewform">tämän</a> lomakkeen.
Löydät oheisesta lomakkeesta myös yhdenvertaisuusvastaavien yhteystiedot.
</p>
</div>
</TextSection>
);
export default EquityPageView;
+1 -1
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import rehypeRaw from "rehype-raw";
import rehypeSanitize from "rehype-sanitize";
+1 -1
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import rehypeRaw from "rehype-raw";
import rehypeSanitize from "rehype-sanitize";
@@ -0,0 +1,35 @@
import React from "react";
import {
Hero, HeroPrimarySection, HeroAside, HeroAsideItem,
} from "@components/Hero";
const ForFreshmenPageHero: React.FC = () => (
<Hero>
<HeroPrimarySection
header="Welcome to study in Otaniemi!"
text="This is the frontpage for fuksis (freshmen). Here we have collected all the most important information that you will need during your first year.
Of course, everything happening in the guild can't fit here, so it is recommended that you also check out the more general 'in english' page."
/>
<HeroAside bgColor="lightTurquoise">
<HeroAsideItem
header="Read the guild freshman guide"
link="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_en_web.pdf"
linkText="read the freshman guide here!"
/>
<HeroAsideItem
header="Follow the guild's announcements"
link="https://t.me/+KxOI-aQ0jpFhNTJk"
linkText="Join the guild's Telegram-group!"
/>
<HeroAsideItem
header="Fuksi groups and ISOs?"
link="#isos"
linkText="Information about the fuksi groups"
/>
</HeroAside>
</Hero>
);
export default ForFreshmenPageHero;
@@ -0,0 +1,170 @@
import React from "react";
import Image from "next/legacy/image";
import styled from "styled-components";
import {
CTASection, TextSection, InfoBox, PageLink, Link,
} from "@components/index";
import ForFreshmenPageHero from "./ForFreshmenPageHero";
const FUKSI_POINTS_LINK = "https://static.sahkoinsinoorikilta.fi/FTMK/Fuksipisteohje.pdf";
const TG_GROUP_CHAT_LINK = "https://t.me/+ctpg4H0-Y3hlZTY0";
const TG_NOTIFICATIONS_LINK = "https://t.me/+v30Nts-MrIMyMjNk";
const EMAIL_LINK = "ftmk@sahkoinsinoorikilta.fi";
const EMAIL_LINK_MAILTO = `mailto:${EMAIL_LINK}`;
const ImageContainer = styled.div`
width: 100%;
display: block;
margin: auto;
`;
const QRImages = styled.img`
width: 10em;
height: 10em;
`;
const FopasImage = styled.img`
width: 15em;
margin-bottom: 1em;
`;
const ForFreshmenPageView: React.FC = () => (
<>
<ForFreshmenPageHero />
<TextSection>
<h3 id="abeille">Congratulations on an awesome choice of studies!</h3>
<div>
<p>
You have made an excellent choice by taking the first step on a journey where you will first become an engineering student, ...known better in finnish
as &quot;teekkari&quot; and later a Master of Science in Engineering &quot;Diplomi-insinööri&quot;.
You have just become a technical high school graduate and a freshman.
A great achievement that certainly deserves celebration, and there is no better place for that celebration than Otaniemi.
Welcome!
</p>
<p>
As a first step, we recommend that you join the Telegram channels created for freshmen.
{" "}
<Link to={TG_GROUP_CHAT_LINK} target="_blank">Click here</Link> to get acquainted with your fellow freshmen and ISOs, and <Link to={TG_NOTIFICATIONS_LINK} target="_blank">click here</Link> to join the notification channel.
</p>
<h6>A story named Teekkarius</h6>
<p>
Every teekkari&apos;s journey is unique.
The guild, the student union, and the other organizations in Otaniemi will undoubtedly offer something for everyone.
You are now part of Aalto University&apos;s Electrical Engineering Guild, and we will support you throughout your teekkari journey so that you can find the places that are perfect for you to make an impact and pursue your hobbies.
To make this possible, we have placed you in a freshman group, which you will get to know during orientation week and which will serve as your support group for new adventures.
Your freshman group also includes a few tutors better known as ISOs.
You can find more information about them <Link to="#isot">below</Link>.
</p>
<ImageContainer>
<Image
src="https://static.sahkoinsinoorikilta.fi/FTMK/IMG_6539.JPG"
alt="Kipparit"
layout="responsive"
width={100}
height={80}
objectFit="contain"
/>
</ImageContainer>
<h6>Freshmen captains</h6>
<p>
We are your freshman captains <strong>Teemu</strong> and <strong>Henri</strong> and we&apos;ll be here to support you and monitor your
progress throughout the freshman year adventures toward earning your engineer&apos;s hat (= teekkarilakki),
which you might possibly earn during May Day next spring.
If you have any questions, feel free to contact us via <Link to={TG_GROUP_CHAT_LINK} target="_blank">Telegram</Link> or <a href={EMAIL_LINK_MAILTO}>email</a>.
</p>
<h6>Smile When We Meet!</h6>
<p>
Although the first days in Otaniemi might bring along some funny and strange experiences, don&apos;t be alarmed by them!
Over time, the pieces of the puzzle will come together to form an image that reflects you, and you&apos;ll have the opportunity to shape what the final result looks like.
</p>
<p>
Orientation week is held from August 25th to 29th, 2025, but even before then, you&apos;ll have the chance to meet us, other freshmen, and the ISOs at a relaxed Pre-Start event.
The Pre-Start for the freshman year is organized on Saturday, August 16th, 2025. Find more details in the Telegram groups!
</p>
<h6>Teemu Heikkinen</h6>
<p>040 097 1835<br />teemu.heikkinen (ät) sahkoinsinoorikilta.fi <br />@heikkinenteemu</p>
<h6>Henri Aito</h6>
<p>045 328 2883<br />henri.aito (ät) sahkoinsinoorikilta.fi <br />@henriaito</p>
</div>
<aside>
<div>
<PageLink to={EMAIL_LINK_MAILTO} desc={EMAIL_LINK}>
You can reach the freshman captains at
</PageLink>
<PageLink to="https://api.sahkoinsinoorikilta.fi/members/application" desc="And join our activities!&nbsp;">
Join the guild!
</PageLink>
<PageLink to={FUKSI_POINTS_LINK} desc="Take a look at the fuksipoints&nbsp;">
Fuksipoint guide - This will be translated later so don&apos;t worry if you don&apos;t understand Finnish!
</PageLink>
</div>
<div>
<InfoBox>
<h6>Fuksiguide</h6>
<Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_en_web.pdf" target="_blank">
<FopasImage
src="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_kansi.jpg"
/>
</Link>
<p>
It&apos;s a good idea to take a look at the fuksiguide before starting your studies!
The guide contains lots of useful information about the guild, the student union, and the student life in Otaniemi.
You can find the guide <Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_en_web.pdf" target="_blank">here</Link>.
</p>
<br />
<h6>Telegram?</h6>
<p>
Telegram is a messaging app used in Otaniemi.
More info can be found here: <Link to="https://telegram.org/faq" target="_blank">https://telegram.org/faq</Link>.
</p>
<p>
SIK fuksis have a group chat, which you can join by scanning the QR code below:
</p>
<QRImages
src="https://static.sahkoinsinoorikilta.fi/FTMK/SIK-Fuksit-2025.jpg"
/>
<p>or <Link to={TG_GROUP_CHAT_LINK} target="_blank">press me!</Link></p>
<p>Also join the notifications channel for SIK fuksis, to stay in the loop!:</p>
<QRImages
src="https://static.sahkoinsinoorikilta.fi/FTMK/SIK-Fuksit-tiedotus-2025.jpg"
/>
<p>or <Link to={TG_NOTIFICATIONS_LINK} target="_blank">press me!</Link></p>
</InfoBox>
</div>
</aside>
</TextSection>
<CTASection
bgColor="lightBlue"
link="/kilta/toiminta"
linkText="Follow what the guild is up to"
>
The guild organises lots of things!
</CTASection>
<TextSection>
<h3 id="isos">Freshman groups and ISOs</h3>
<div>
<p>SIK freshmen enjoy the guidance and care of their wonderful ISOs in their own freshman groups</p>
<p>
ISOs are older students and guild members, who are there to support you throughout your freshman year. You will be divided into groups.
You can ask your ISOs anything regarding studying and student life. Even though they don&apos;t know all the answers, they can likely help you finding them.
</p>
<p>
As stated above, your ISOs will support you through your whole freshman year, but you will see them most during the orientation week,
during which they will wander through Otaniemi together with your group and guide you into the ways of the teekkari.
They will also help you find whatever is needed to start your studies here, and will support you in creating your timetable and getting your library, HSL and student cards.
</p>
<p>ISOs are also invited to the first event of the freshman year, the head start. Come meet them there early!</p>
</div>
</TextSection>
</>
);
export default ForFreshmenPageView;
@@ -0,0 +1,35 @@
import React from "react";
import {
Hero, HeroPrimarySection, HeroAside, HeroAsideItem,
} from "@components/Hero";
const ForFreshmenPageHero: React.FC = () => (
<Hero>
<HeroPrimarySection
header="Welcome to Aalto and Otaniemi!"
text="This is the frontpage for fuksis (freshmen). Here we have collected all the most important information that you will need during your first year.
Of course, everything happening in the guild can't fit here, so it is recommended that you also check out the more general 'in english' page."
/>
<HeroAside bgColor="lightTurquoise">
<HeroAsideItem
header="Read the guild&apos;s fuksi guide"
link="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_en_web.pdf"
linkText="Read the fuksi guide here!"
/>
<HeroAsideItem
header="Follow the guild&apos;s announcements"
link="https://t.me/+KxOI-aQ0jpFhNTJk"
linkText="Join the guild's Telegram group!"
/>
<HeroAsideItem
header="Fuksi groups and ISOs?"
link="#isos"
linkText="Information about the fuksi groups"
/>
</HeroAside>
</Hero>
);
export default ForFreshmenPageHero;
@@ -0,0 +1,191 @@
import React from "react";
import Image from "next/legacy/image";
import styled from "styled-components";
import {
CTASection, TextSection, InfoBox, PageLink, Link,
} from "@components/index";
import ForIntlPageHero from "./ForIntlPageHero";
const FUKSI_POINTS_LINK = "https://static.sahkoinsinoorikilta.fi/FTMK/Fuksipisteohje.pdf";
const TG_GROUP_CHAT_LINK = "https://t.me/+oNrBDLI5cXZhNDEx";
const TG_NOTIFICATIONS_LINK = "https://t.me/sikhotline2526";
const EMAIL_LINK = "ftmk@sahkoinsinoorikilta.fi";
const EMAIL_LINK_MAILTO = `mailto:${EMAIL_LINK}`;
const ImageContainer = styled.div`
width: 100%;
display: block;
margin: auto;
`;
const QRImages = styled.img`
width: 10em;
height: 10em;
`;
const FopasImage = styled.img`
width: 15em;
margin-bottom: 1em;
`;
const ForIntlPageView: React.FC = () => (
<>
<ForIntlPageHero />
<TextSection>
<h3 id="abeille">Congratulations on your admission!</h3>
<div>
<p>
You&apos;ve not only become a new student at Aalto, but also what&apos;s known as a teekkari
a term used to describe students of technology in Finland, and which is synonymous
with a distinct, tradition-filled student culture.
</p>
<p>
Whether you&apos;ve learned about this before or it&apos;s your first time hearing about it, it&apos;s absolutely worth celebrating, and the best place for this is definitely our campus in Otaniemi. Welcome!
</p>
<p>
As a first step, we recommend that you join the Telegram channels made for fuksis. This is where you can get to know your fellow new students and your student tutors known as ISOs. This is also where you can access the information channel.
{" "}
<Link to={TG_GROUP_CHAT_LINK} target="_blank">Click here</Link> to get acquainted with your fellow freshmen and ISOs, and <Link to={TG_NOTIFICATIONS_LINK} target="_blank">click here</Link> to join the notification channel.
</p>
<h6>A journey called Teekkarius</h6>
<p>
Every teekkari&apos;s journey is unique.
The guild, the student union, and the other organizations in Otaniemi will undoubtedly offer something for everyone.
You are now part of Aalto University&apos;s Electrical Engineering Guild, and we will support you throughout your teekkari journey so that you can find the places that are perfect for you to make an impact and pursue your hobbies.
To make this possible, we have placed you in a freshman group, which you will get to know during orientation week and which will serve as your support group for new adventures.
Your freshman group also includes a few tutors better known as ISOs.
You can find more information about them <Link to="#isot">below</Link>.
</p>
<p>
The journey of a teekkari is unique to everyone. The guild, the Aalto Student Union,
and other organizations in Otaniemi offer various opportunities to pursue hobbies,
passions, and social lives.
</p>
<p>
You are now part of the Aalto University Guid of Electrical Engineering
(SIK, short for Sähköinsinöörikilta in Finnish) and we will support you in
settling in and finding the right places to have fun and make an impact.
</p>
<p>
To make this successful, weve placed you in a small fuksi group with other new students,
whom you will get to know and adventure with starting in Orientation Week.
Your fuksi group also includes a few ISOs, who have studied here for at least a year and will
lean on their experience to show you around and help you get comfortable.
</p>
<ImageContainer>
<Image
src="https://static.sahkoinsinoorikilta.fi/FTMK/Captains2025.jpg"
alt="Kipparit"
layout="responsive"
width={100}
height={80}
objectFit="contain"
/>
</ImageContainer>
<h6>International captains</h6>
<p>
We are your International Fuksi Captains <strong>Markus</strong> and <strong>Apollo</strong>,
and we will be there to support you in getting started at Aalto, but also to guide you through
the awesome (and distinctly Finnish) process of becoming a full-blown teekkari.
This involves participating in many fun activities and traditions, culminating in earning the famous
Teekkari Cap and having an amazing community alongside you. If you have any questions,
please contact us on Telegram or by email.
</p>
<h6>Looking forward to meeting you!</h6>
<p>
Even though your first few days in Otaniemi may bring some new and unfamiliar experiences,
please don&apos;t be intimidated! Over time, the pieces of the puzzle will come together and you&apos;ll be
having just as much fun as we are. Always remember that as a teekkari in Otaniemi, you&apos;re never alone.
</p>
<p>
Orientation week will be held from 25 to 29 August 2025, but even before that you have the
opportunity to come and get to know us, other freshmen and ISOs at a relaxed Headstart event.
This will be held on Saturday 16 August 2025. More about that in the Telegram groups!
</p>
<h6>Apollo Ailus</h6>
<p>+358 045 803 3662<br />apollo.ailus@sahkoinsinoorikilta.fi <br />@SIKCaptain</p>
<h6>Markus Aaltio</h6>
<p>+358 044 050 4028<br />markus.aaltio@sahkoinsinoorikilta.fi <br />@KvCaptain</p>
</div>
<aside>
<div>
<PageLink to={EMAIL_LINK_MAILTO} desc={EMAIL_LINK}>
You can reach the freshman captains at
</PageLink>
<PageLink to="https://api.sahkoinsinoorikilta.fi/members/application" desc="And join our activities!&nbsp;">
Join the guild!
</PageLink>
<PageLink to={FUKSI_POINTS_LINK} desc="Take a look at the fuksipoints&nbsp;">
Fuksipoint guide - This will be translated later so don&apos;t worry if you don&apos;t understand Finnish!
</PageLink>
</div>
<div>
<InfoBox>
<h6>Fuksiguide</h6>
<Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiguide_25_web.pdf" target="_blank">
<FopasImage
src="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiguide_25_cover.png"
/>
</Link>
<p>
It&apos;s a good idea to take a look at the fuksiguide before starting your studies!
The guide contains lots of useful information about the guild, the student union, and the student life in Otaniemi.
You can find the guide <Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_en_web.pdf" target="_blank">here</Link>.
</p>
<br />
<h6>Telegram?</h6>
<p>
Telegram is a messaging app used in Otaniemi.
More info can be found here: <Link to="https://telegram.org/faq" target="_blank">https://telegram.org/faq</Link>.
</p>
<p>
SIK fuksis have a group chat, which you can join by scanning the QR code below:
</p>
<QRImages
src="https://static.sahkoinsinoorikilta.fi/FTMK/SIK-Fuksit-2025.jpg"
/>
<p>or <Link to={TG_GROUP_CHAT_LINK} target="_blank">press me!</Link></p>
<p>Also join the notifications channel for SIK fuksis, to stay in the loop!:</p>
<QRImages
src="https://static.sahkoinsinoorikilta.fi/FTMK/SIK-Fuksit-tiedotus-2025.jpg"
/>
<p>or <Link to={TG_NOTIFICATIONS_LINK} target="_blank">press me!</Link></p>
</InfoBox>
</div>
</aside>
</TextSection>
<CTASection
bgColor="lightBlue"
link="/kilta/toiminta"
linkText="Follow what the guild is up to"
>
The guild organises lots of things!
</CTASection>
<TextSection>
<h3 id="isos">Freshman groups and ISOs</h3>
<div>
<p>SIK freshmen enjoy the guidance and care of their wonderful ISOs in their own freshman groups</p>
<p>
ISOs are older students and guild members, who are there to support you throughout your freshman year. You will be divided into groups.
You can ask your ISOs anything regarding studying and student life. Even though they don&apos;t know all the answers, they can likely help you finding them.
</p>
<p>
As stated above, your ISOs will support you through your whole freshman year, but you will see them most during the orientation week,
during which they will wander through Otaniemi together with your group and guide you into the ways of the teekkari.
They will also help you find whatever is needed to start your studies here, and will support you in creating your timetable and getting your library, HSL and student cards.
</p>
<p>ISOs are also invited to the first event of the freshman year, the head start. Come meet them there early!</p>
</div>
</TextSection>
</>
);
export default ForIntlPageView;
+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/Fuksiopas2022.pdf"
link="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_web.pdf"
linkText="lue fuksiopas täältä!"
/>
<HeroAsideItem
header="Seuraa killan tiedotusta"
link="https://t.me/+ubTeGSYKTvg3NmVk"
linkText="Liity killan Telegram-ryhmiin"
link="https://t.me/+KxOI-aQ0jpFhNTJk"
linkText="Liity killan Telegram-ryhmään!"
/>
<HeroAsideItem
header="Kaikki kunnossa opiskelua varten?"
link="https://into.aalto.fi/pages/viewpage.action?pageId=1183171"
link="https://www.aalto.fi/fi/ohjelmat/sahkotekniikan-kandidaattiohjelma/opintojen-aloittaminen"
linkText="Lue korkeakoulun tietopaketti"
/>
<HeroAsideItem
header="ISO-ryhmät ja ISO-henkilöt?"
header="Fuksiryhmät ja ISOt?"
link="#isot"
linkText="Tsekkaa ISO-henkilöiden tiedot"
linkText="Tietoa fuksiryhmistä"
/>
</HeroAside>
</Hero>
+28 -21
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import {
CTASection, TextSection, InfoBox, PageLink, Link,
@@ -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/+1PqQHRVMjiAxMTU0";
const TG_NOTIFICATIONS_LINK = "https://t.me/+Ln8TvQ-_id9kZTU0";
const TG_GROUP_CHAT_LINK = "https://t.me/+ctpg4H0-Y3hlZTY0";
const TG_NOTIFICATIONS_LINK = "https://t.me/+v30Nts-MrIMyMjNk";
const EMAIL_LINK = "ftmk@sahkoinsinoorikilta.fi";
const EMAIL_LINK_MAILTO = `mailto:${EMAIL_LINK}`;
@@ -43,7 +43,7 @@ const FreshmenPageView: React.FC = () => (
<p>
Ensi askeleina suosittelemme, että liityt teille fukseille tehdyille Telegram-kanaville.
{" "}
<Link to={TG_GROUP_CHAT_LINK} target="_blank">Tästä</Link> tutustumaan fuksikavereihin ja ISOihisi ja <Link to={TG_NOTIFICATIONS_LINK} target="_blank">tästä</Link> pääset tiedotuskanavalle.
<Link to={TG_GROUP_CHAT_LINK} target="_blank">Tästä</Link> pääset tutustumaan fuksikavereihisi sekä ISOihin ja <Link to={TG_NOTIFICATIONS_LINK} target="_blank">tästä</Link> pääset tiedotuskanavalle.
</p>
<h6>Matka nimeltä Teekkarius</h6>
@@ -58,7 +58,7 @@ const FreshmenPageView: React.FC = () => (
<ImageContainer>
<Image
src="https://static.sahkoinsinoorikilta.fi/uus_webi/fuksikipparit-2022.jpg"
src="https://static.sahkoinsinoorikilta.fi/FTMK/IMG_6539.JPG"
alt="Kipparit"
layout="responsive"
width={100}
@@ -69,7 +69,8 @@ const FreshmenPageView: React.FC = () => (
<h6>Fuksikapteenit</h6>
<p>
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ä.
Me olemme fuksikapteenisi <strong>Teemu</strong> ja <strong>Henri</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 +80,15 @@ 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 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ä!
Orientaatioviikko järjestetään 25.-29.8.2025, mutta jo ennen sitä sinulla on mahdollisuus tulla tutustumaan meihin, muihin fukseihin ja ISOihin rentoon Varaslähtöön.
Varaslähtö fuksivuoteen järjestetään lauantaina 16.8.2025. Siitä lisää Telegram-ryhmissä!
</p>
<h6>Melisa Dönmez</h6>
<p>044 239 2385 <br />melisa.donmez (ät) sahkoinsinoorikilta.fi <br />@melisadonmez</p>
<h6>Teemu Heikkinen</h6>
<p>040 097 1835<br />teemu.heikkinen (ät) sahkoinsinoorikilta.fi <br />@heikkinenteemu</p>
<h6>Eveliina Ahonen</h6>
<p>050 911 8818 <br />eveliina.ahonen (ät) sahkoinsinoorikilta.fi <br />@ahoonen</p>
<h6>Henri Aito</h6>
<p>045 328 2883<br />henri.aito (ät) sahkoinsinoorikilta.fi <br />@henriaito</p>
</div>
<aside>
<div>
@@ -94,7 +96,7 @@ const FreshmenPageView: React.FC = () => (
Fuksikipparit tavoitat
</PageLink>
<PageLink to="https://api.sahkoinsinoorikilta.fi/members/application" desc="ja tule mukaan toimintaamme&nbsp;">
Liity jäseneksi
Liity jäseneksi tästä
</PageLink>
<PageLink to={FUKSI_POINTS_LINK} desc="Katso fuksipisteitä&nbsp;">
Fuksipisteohje
@@ -103,14 +105,15 @@ const FreshmenPageView: React.FC = () => (
<div>
<InfoBox>
<h6>Killan Fuksiopas</h6>
<Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2022.pdf" target="_blank">
<Link to="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_web.pdf" target="_blank">
<FopasImage
src="https://static.sahkoinsinoorikilta.fi/FTMK/Fuksiopas2022-kansi.jpg"
src="https://static.sahkoinsinoorikilta.fi/FTMK/Fopas_25_kansi.jpg"
/>
</Link>
<p>
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>
Ennen opintojen alkua on hyvä tutustua killan fuksioppaaseen.
Oppaan pääset lukemaan tästä!
</p>
<br />
<h6>Telegram?</h6>
@@ -123,12 +126,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-2022.jpg"
src="https://static.sahkoinsinoorikilta.fi/FTMK/SIK-Fuksit-2025.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-2022-tiedotus.jpg"
src="https://static.sahkoinsinoorikilta.fi/FTMK/SIK-Fuksit-tiedotus-2025.jpg"
/>
<p>tai <Link to={TG_NOTIFICATIONS_LINK} target="_blank">tästä</Link></p>
</InfoBox>
@@ -144,16 +147,20 @@ const FreshmenPageView: React.FC = () => (
</CTASection>
<TextSection>
<h3 id="isot">Isoryhmät</h3>
<h3 id="isot">Fuksiryhmät ja ISO-toiminta</h3>
<div>
<p>
SIK:n fuksit nauttivat hurmaavien ISOhenkilöidensä opastuksesta ja hellästä huolenpidosta omissa fuksiryhmissään.
SIK:n fuksit nauttivat hurmaavien ISOjen 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ä.
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ä.
</p>
<p>
Kuten sanottu ISOt tukevat sinua koko fuksivuoden ajan, mutta eniten tulet näkemään heitä Orientaatioviikolla, jolloin he kulkevat fuksiryhmäsi kanssa ympäri Otaniemeä ja avaavat ovia teekkariuden saloihin. He auttavat sinua myös löytämään opintojen aloittamiseen tarvittavat asiat ja tukevat esimerkiksi lukujärjestyksen tekemisessä ja kirjastokortin, sekä matkakortin ja opiskelijakortin hankkimisessa.
Kuten sanottu, ISOt tukevat sinua koko fuksivuoden ajan, mutta eniten tulet näkemään heitä Orientaatioviikolla,
jolloin he kulkevat fuksiryhmäsi kanssa ympäri Otaniemeä ja avaavat ovia teekkariuden saloihin.
He auttavat sinua myös löytämään opintojen aloittamiseen tarvittavat asiat ja tukevat esimerkiksi lukujärjestyksen tekemisessä sekä kirjastokortin, matkakortin ja opiskelijakortin hankkimisessa.
</p>
<p>
ISOt ovat myös kutsuttuna fuksivuotesi ensimmäiseen tapahtumaan, eli Varaslähtöön. Tule tutustumaan heihin jo siellä!
+1 -1
View File
@@ -30,7 +30,7 @@ const FrontPageHero: React.FC = () => (
<HeroAsideItem
header="Vasta-aloittaneelle opiskelijalle"
text="Fuksikasvatusta ja ISOtoimintaa"
link="/kilta/fuksi"
link="/newStudent/fuksi"
linkText="Fuksit&nbsp; "
/>
<HeroAsideItem
+25 -5
View File
@@ -1,5 +1,5 @@
import React from "react";
import Image from "next/image";
import Image from "next/legacy/image";
import styled from "styled-components";
import {
Divider,
@@ -24,6 +24,11 @@ const Fingrid = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/fingr
const Okmetic = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/okmetic.jpg";
const Nokia = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/nokia.jpg";
const Granlund = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/granlund.jpg";
const Eaton = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/eaton.png";
const Ericsson = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/ericsson.png";
const Saab = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/Saab.png";
const STUL = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/stul_logo.png";
const Metso = "https://static.sahkoinsinoorikilta.fi/img/corporate_logos/Metso-logo.png";
interface FrontPageViewProps {
events: Event[];
@@ -87,16 +92,16 @@ const FrontPageView: React.FC<FrontPageViewProps> = ({ events, feed }) => (
<h6>Yhteistyössä:</h6>
<SponsorReel>
<div>
<Link to="https://new.abb.com/fi/uralle">
<Link to="https://new.abb.com/fi/">
<Image src={ABB} alt="ABB" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.caruna.fi/tietoa-meista/tyonhakijalle/tyonantajalupaus">
<Link to="https://caruna.fi/">
<Image src={Caruna} alt="Caruna" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.nokia.com/fi_fi/">
<Link to="https://www.nokia.com/">
<Image src={Nokia} alt="Nokia" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.ensto.com/fi">
<Link to="https://www.ensto.com/fi/">
<Image src={Ensto} alt="Ensto" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.esett.com/">
@@ -111,6 +116,21 @@ const FrontPageView: React.FC<FrontPageViewProps> = ({ events, feed }) => (
<Link to="https://www.granlund.fi/">
<Image src={Granlund} alt="Granlund" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.eaton.com/fi/fi-fi.html">
<Image src={Eaton} alt="Eaton" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.ericsson.com/en">
<Image src={Ericsson} alt="Ericsson" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.saab.com/fi/markets/finland">
<Image src={Saab} alt="Saab" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.stul.fi/">
<Image src={STUL} alt="STUL" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
<Link to="https://www.metso.com/fi/">
<Image src={Metso} alt="Metso" layout="responsive" width={200} height={100} objectFit="contain" />
</Link>
</div>
<Link to="/yritysyhteistyo">Haluatko kuulla lisää yhteistyöstä kanssamme?</Link>
</SponsorReel>
+24
View File
@@ -0,0 +1,24 @@
import React from "react";
import { TextSection } from "@components/index";
const FundPageView: React.FC = () => (
<TextSection>
<h1>Kilta-avustus</h1>
<div>
<p>
Aalto-yliopiston Sähköinsinöörikillan vuosittaisesta budjetista on varattu osa kiltalaisten erilaisten projektien toteuttamiseen.
Kilta-avustuksen tarkoitus on antaa jokaiselle kiltalaiselle mahdollisuus toteuttaa uusia ideoita, jotka edistävät killan toimintaa.
</p>
<p>Kilta voi myöntää taloudellista tukea esimerkiksi tapahtumien järjestämiseen, tilavuokrien kattamiseen tai tarvikehankintoihin, joille ei ole erikseen varattu budjettia killan talousarviossa.
Kilta-avustusta voi hakea kuka tahansa killan jäsen.
Hakemuksesta täytyy tulla ilmi vähintään hakemuksen tekijä(t), mihin avustusta haetaan sekä arvio projektin kustannuksista. Hallitus tekee päätöksen hakemuksesta seuraavassa kokouksessaan.
Mikäli tarkentavia kysymyksiä ei tule esille, hallitus tiedottaa päätöksestä hakijalle.
</p>
<p>Mikäli hallitus hyväksyy hakemuksen, avustus tulee käyttää ainoastaan myönnettyyn tarkoitukseen. Ota talteen kuitit kulukorvausta varten, lisäksi laadi raportti siitä, miten avustus on käytetty ja lähetä se
osoitteeseen <a href="mailto:hallitus@sahkoinsinoorikilta.fi">hallitus@sahkoinsinoorikilta.fi</a>. Lähetä kulukorvaus osoitteeseen <a href="mailto:rahastonhoitaja@sahkoinsinoorikilta.fi">rahastonhoitaja@sahkoinsinoorikilta.fi</a>.
</p>
</div>
</TextSection>
);
export default FundPageView;

Some files were not shown because too many files have changed in this diff Show More