Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: feeds language filter #410

Merged
merged 55 commits into from
Oct 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
c8b297b
fix(deps): update dependency @aws-amplify/auth to v4 (#352)
renovate[bot] Mar 23, 2022
0504ac9
Feature: Added Dark theme (#365)
nichnarmada Mar 27, 2022
d789596
fix: clear search keywords when onclick related courses
YHhaoareyou Mar 27, 2022
fba8238
Merge branch 'master' into develop
YHhaoareyou Mar 27, 2022
4cc5b89
Merge branch 'master' into develop
YHhaoareyou Mar 29, 2022
bc8ecd7
Merge branch 'master' into develop
YHhaoareyou Mar 29, 2022
67b4a97
Debug: mobile dark mode debug (#373)
YHhaoareyou Apr 1, 2022
ed25abf
chore(deps): update dependency eslint-plugin-react to v7.29.4 (#361)
renovate[bot] Apr 1, 2022
86a91f5
chore(deps): update dependency ts-loader to v9.2.8 (#359)
renovate[bot] Apr 1, 2022
374a41a
feat: remove unused dependencies (#377)
YHhaoareyou Apr 13, 2022
6632a95
Feature/darktheme colors (#378)
YHhaoareyou Apr 13, 2022
2f8dd9b
Merge branch 'master' into develop
YHhaoareyou Apr 17, 2022
8492b1c
Feature: Timetable dark theme (#379)
YHhaoareyou Apr 18, 2022
66db621
feat: add the hovering effect to the member cards (#381)
xinyue296 Apr 26, 2022
ef10256
Migrate from Webpack to Vite (#382)
YHhaoareyou May 2, 2022
84b2c1d
fix: env without using dotenv explicitly (#385)
YHhaoareyou May 5, 2022
c3abb53
fix: packages version
YHhaoareyou May 5, 2022
5993df1
fix: change env var name
YHhaoareyou May 5, 2022
76976ee
fix: remove systemjs package; add peer dependencies
YHhaoareyou May 5, 2022
e52cdef
fix: feeds domain on staging/prod
YHhaoareyou May 5, 2022
59fdef5
Feature: About Us page link from Home page & split Home from Root-con…
YHhaoareyou May 6, 2022
8252657
Feature/fix card padding (#388)
xinyue296 May 10, 2022
f509547
Merge branch 'master' into develop
YHhaoareyou May 17, 2022
25973a1
fix: install missing dependency: @aws-amplify/core
YHhaoareyou May 17, 2022
8f4caf8
fix: remove course function
YHhaoareyou May 18, 2022
e8a35a6
feat: alert translation
YHhaoareyou May 18, 2022
c0585c1
fix: eslint
YHhaoareyou May 18, 2022
5d47e3c
feat: add workbox runtimeCaching config
YHhaoareyou May 19, 2022
7c6cd35
Fix service worker to enable it to replace old one (#389)
YHhaoareyou May 20, 2022
626ceca
feat: add a profile card component; add hover & click effect; add a c…
xinyue296 May 23, 2022
4bc712d
fix: syllabus minor styling issues
YHhaoareyou May 29, 2022
6245a70
Update README.md
YHhaoareyou May 29, 2022
156663d
Migrate from Webpack to Vite (#386)
YHhaoareyou May 29, 2022
6c911c8
add script-src-elem to Content Security Policy (#391)
YHhaoareyou May 29, 2022
081c41c
Hotfix (#392)
YHhaoareyou May 29, 2022
d1e063a
Hotfix (#393)
YHhaoareyou May 29, 2022
bbc1a69
Merge branch 'master' into develop
YHhaoareyou May 29, 2022
4f556ac
fix blob in csp
YHhaoareyou May 29, 2022
6fa7950
Merge branch 'master' into develop
YHhaoareyou May 30, 2022
8b825bf
fix: remove csp
YHhaoareyou May 30, 2022
893d781
Merge branch 'master' into develop
YHhaoareyou May 30, 2022
0af6214
fix: remove all webpack-related packages & setting
YHhaoareyou May 30, 2022
969da50
Allow all in CSP
YHhaoareyou May 30, 2022
a552f36
Merge branch 'master' into develop
YHhaoareyou May 30, 2022
2505b59
Fix: preload style, csp allow all, refactor index html & env var (#404)
YHhaoareyou May 31, 2022
25cdc27
Update README.md (#397)
eltociear Jun 8, 2022
0bc6cd2
chore(deps): update dependency esbuild to v0.14.43 (#384)
renovate[bot] Jun 8, 2022
c40864e
Merge branch 'master' into develop
AustinZhu Jun 8, 2022
02849a9
chore(deps): update dependencies
AustinZhu Jun 8, 2022
fc74d84
chore(deps): update dependencies
AustinZhu Jun 8, 2022
5470785
chore(deps): update dependencies
AustinZhu Jun 8, 2022
768301a
fix: preload & enable styles from other mf app
YHhaoareyou Jul 6, 2022
6c87d18
fix: packages version (fix React to v17)
YHhaoareyou Jul 6, 2022
b3484e5
Merge branch 'master' into develop
YHhaoareyou Aug 16, 2022
4606cab
Language filter for Feeds (#409)
YHhaoareyou Oct 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 15 additions & 24 deletions feeds/components/FeedLink.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ import CardContent from "@material-ui/core/CardContent";
import CardMedia from "@material-ui/core/CardMedia";
import Hidden from "@material-ui/core/Hidden";
import { useEffect, useState } from "react";
import { FeedInfo } from "../constants/types";
import { Lang, LangMap } from "../constants/langs";

const useStyles = makeStyles({
card: {
display: "flex",
padding: '0px 10px !important'
padding: 0
},
cardContent: {
padding: '0px !important'
padding: 20
},
cardDetails: {
flex: 1,
Expand All @@ -25,6 +27,7 @@ const useStyles = makeStyles({
width: 200,
},
title: {
fontSize: 20,
fontFamily: "Lato, Yu Gothic Medium, Segoe UI"
},
text: {
Expand All @@ -40,29 +43,16 @@ const useStyles = makeStyles({
}
});

const LangMap : {
[key: string]: string;
} = {
EN: 'English',
JA: '日本語',
zhCN: '简中',
zhTW: '繁中'
type Props = {
name: string;
feed: FeedInfo;
locale: string;
}

type LangMap = typeof LangMap[keyof typeof LangMap];

const FeedLink = ({ name, locale }: { name: string; locale: string; }) => {
const FeedLink = ({ name, feed, locale }: Props) => {
const classes = useStyles();
const [cover, setCover] = useState('');

const feedInfo = {
date: name.split('-')[0].replace(/_/g, '-'),
partner: name.split('-')[1].replace(/_/g, '-'),
title: name.split('-')[2].replace(/_/g, ' ').replace(/\[/g, '【').replace(/\]/g, '】').replace(/\</g, '(').replace(/\>/g, ')'),
lang: name.split('-')[3],
authors: name.split('-').slice(4).map(author => author.replace(/_/g, ' ').replace(/\</g, '(').replace(/\>/g, ')'))
};

useEffect(() => {
var coverImg;
try {
Expand Down Expand Up @@ -93,14 +83,15 @@ const FeedLink = ({ name, locale }: { name: string; locale: string; }) => {
<div className={classes.cardDetails}>
<CardContent className={classes.cardContent}>
<h3 className={classes.title}>
{feedInfo.title}
{feed.title}
</h3>
<br />
<p className={classes.text}>
<b>{feedInfo.partner}</b> {feedInfo.authors.map((author, i) => i === 0 ? author : ' & ' + author)}
<b>{feed.partner}</b> {feed.authors.map((author, i) => i === 0 ? author : ' & ' + author)}
</p>
<p className={classes.text}>
{feedInfo.date}
<span className={classes.lang}>{LangMap[feedInfo.lang]}</span>
{feed.date}
<span className={classes.lang}>{LangMap[feed.lang as Lang]}</span>
</p>
</CardContent>
</div>
Expand Down
17 changes: 17 additions & 0 deletions feeds/constants/langs.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export enum Lang {
EN = "EN",
JA = "JA",
zhCN = "zhCN",
zhTW = "zhTW",
KR = "KR"
};

export const LangMap : {
[key in Lang]: string;
} = {
EN: 'English',
JA: '日本語',
zhCN: '简中',
zhTW: '繁中',
KR: '한국어'
};
7 changes: 7 additions & 0 deletions feeds/constants/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export type FeedInfo = {
date: string;
partner: string;
title: string;
lang: string;
authors: string[];
};
8 changes: 6 additions & 2 deletions feeds/pages/[lang]/[feed].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,17 @@ const Feed = ({ feed, lang, filename, updatedAt }: Props) => {
</div>
}

<div className="mx-4 md:mx-20 my-4">
<button className="w-[32px] h-[32px] rounded-full text-bold text-light-main border-2 border-light-main hover:text-white hover:bg-light-main" onClick={() => router.back()}>←</button>
</div>

<div className="feedWrapper">
<h1 className='title'>{feedInfo.title}</h1>
<h1 className='text-3xl mb-8 title'>{feedInfo.title}</h1>
<p className='info'>
<b>{feedInfo.partner}</b> {feedInfo.authors.map((author, i) => i === 0 ? author : ' & ' + author)}
</p>
<p className='info'>{feedInfo.date} (Last updated: {updatedAt})</p>
<hr />
<hr className="mb-8" />
<div className='markdownWrapper'>
<ReactMarkdown components={{ img: Img }} children={feed} />
</div>
Expand Down
62 changes: 50 additions & 12 deletions feeds/pages/[lang]/index.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { useState } from 'react';
import type { NextPage } from 'next'
import Head from 'next/head'
import styles from '../../styles/Home.module.css'
import fs from "fs";
import path from "path";
import FeedLink from '../../components/FeedLink';
import Grid from "@material-ui/core/Grid";
import { useLocale } from '../../hooks/useLocale';
import { languages } from '../../i18n.config';
import { FeedInfo } from '../../constants/types';
import { Lang, LangMap } from '../../constants/langs';

interface StaticProps {
params: { lang: string; }
Expand All @@ -19,29 +21,65 @@ interface HomeProps {

const Home: NextPage<HomeProps> = ({ feedNames, lang }) => {
const { locale, t } = useLocale(lang);
const [ filteredLang, setFilteredLang ] = useState("");

const feeds: FeedInfo[] = feedNames.map(name => ({
date: name.split('-')[0].replace(/_/g, '-'),
partner: name.split('-')[1].replace(/_/g, '-'),
title: name.split('-')[2].replace(/_/g, ' ').replace(/\[/g, '【').replace(/\]/g, '】').replace(/\</g, '(').replace(/\>/g, ')'),
lang: name.split('-')[3],
authors: name.split('-').slice(4).map(author => author.replace(/_/g, ' ').replace(/\</g, '(').replace(/\>/g, ')'))
}));

return (
<div className={styles.container}>
<div className="px-4 sm:px-8 md:px-20 py-1">
<Head>
<title>WasedaTime - Feeds</title>
<meta name="description" content="Welcome to WasedaTime Feeds! Here we offer you articles that may be helpful for your student life & future career." />
<link rel="icon" href="/favicon.ico" />
</Head>

<main className={styles.main}>
<h2 style={{ color: "#555" }}>{t.index.welcome}</h2>
<hr style={{ width: "50%", color: "#555" }} />
<div className={styles.description}>
<p>{t.index['top message']}</p>
<p>
{t.index['looking for more blogs']}
<a href="mailto:[email protected]" style={{ color: '#3366ff' }}>[email protected]</a>
</p>
<main className="flex flex-1 flex-col">
<div className="flex flex-col my-8 text-center">
<h2 className="text-3xl text-gray-600">{t.index.welcome}</h2>
<hr className="w-1/2 text-gray-600 my-4 mx-auto" />
<div className="text-center">
<p>{t.index['top message']}</p>
<p>
{t.index['looking for more blogs']}
<a href="mailto:[email protected]" style={{ color: '#3366ff' }}>[email protected]</a>
</p>
</div>
</div>

<div id="filterButtonGroup" className="mb-8 inline-flex rounded-md" role="group">
<button
type="button"
className={"py-2 px-2 md:px-4 text-sm font-medium border border-x-0 border-y-2 border-light-main border-l-2 rounded-l-lg " + (filteredLang === "" ? "bg-light-main text-white" : "text-light-main hover:bg-light-main hover:text-white")}
style={{ borderLeftWidth: 2 }}
onClick={() => setFilteredLang("")}
>
All
</button>
{
Object.values(Lang).map((lang, i) => (
<button
type="button"
className={"py-2 px-2 md:px-4 text-sm font-medium border border-x-0 border-y-2 border-light-main " + (i === Object.values(Lang).length - 1 ? "rounded-r-lg " : " ") + (lang.toString() === filteredLang ? "bg-light-main text-white dark:text-white dark:bg-dark-main" : "text-light-main hover:bg-light-main hover:text-white")}
style={i === Object.values(Lang).length - 1 ? { borderRightWidth: 2 } : {}}
onClick={() => setFilteredLang(lang)}
>
{LangMap[lang]}
</button>
))
}
</div>

<Grid container spacing={4}>
{
feedNames.map((name, i) => <FeedLink key={'feed_link' + i} name={name} locale={locale || 'en'} />)
feeds.filter(feed => !filteredLang || feed.lang === filteredLang).map((feed, i) => (
<FeedLink key={'feed_link' + i} name={feedNames[i]} feed={feed} locale={locale || 'en'} />
))
}
</Grid>
</main>
Expand Down
116 changes: 0 additions & 116 deletions feeds/styles/Home.module.css

This file was deleted.

4 changes: 2 additions & 2 deletions feeds/styles/feed.css
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

.feedWrapper {
padding: 0px 20vw;
padding-top: 70px;
padding-top: 0px;
}

.feedWrapper .title {
Expand Down Expand Up @@ -114,7 +114,7 @@
@media (max-width: 768px) {
.feedWrapper {
padding: 0px 5vw;
padding-top: 70px;
padding-top: 0px;
}

.feedWrapper .markdownWrapper p {
Expand Down
8 changes: 6 additions & 2 deletions feeds/styles/globals.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* @tailwind base;
@tailwind base;
@tailwind components;
@tailwind utilities; */
@tailwind utilities;

@font-face {
font-family: "Segoe UI";
Expand Down Expand Up @@ -38,3 +38,7 @@ a {
* {
box-sizing: border-box;
}

h1, h2, h3, h4, h5, h6 {
font-family: Lato, Yu Gothic Medium, Segoe UI;
}