From 4ee2bb88764474397755ca734c06e03e6ea84253 Mon Sep 17 00:00:00 2001 From: Akita Noek Date: Mon, 8 Mar 2021 12:19:05 -0700 Subject: [PATCH] Initial achievement list display widget --- assets/achievements/wdc2021.png | Bin 0 -> 28571 bytes .../Achievements/AchievementList.styl | 53 +++++++++++++++ .../Achievements/AchievementList.tsx | 64 ++++++++++++++++++ src/components/Achievements/index.ts | 18 +++++ src/views/User/User.tsx | 8 +++ 5 files changed, 143 insertions(+) create mode 100644 assets/achievements/wdc2021.png create mode 100644 src/components/Achievements/AchievementList.styl create mode 100644 src/components/Achievements/AchievementList.tsx create mode 100644 src/components/Achievements/index.ts diff --git a/assets/achievements/wdc2021.png b/assets/achievements/wdc2021.png new file mode 100644 index 0000000000000000000000000000000000000000..462c4499699d72e6b955267eb911fefe6c6a4865 GIT binary patch literal 28571 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. + */ + +.AchievementList { + +} + +.AchievementEntry { + display: flex; + padding-left: 2rem; + + .icon { + flex-grow: 0; + flex-shrink: 0; + display: inline-block; + width: 3rem; + height: 3rem; + background-size: cover; + } + + .achievement-info { + display: flex; + flex-direction: column; + margin-left: 1rem; + + .title { + font-weight: bold; + } + .description { + font-size: smaller; + } + } + + &.wdc2021 { + .icon { + background-image: url('/achievements/wdc2021.png'); + } + } +} diff --git a/src/components/Achievements/AchievementList.tsx b/src/components/Achievements/AchievementList.tsx new file mode 100644 index 0000000000..5216213448 --- /dev/null +++ b/src/components/Achievements/AchievementList.tsx @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2012-2020 Online-Go.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import * as React from "react"; +import { _, pgettext, interpolate } from "translate"; +//import * as preferences from "preferences"; + +interface AchievementEntry { + name: string; + nth_time_awarded: number; + timestamp: string; + completed: boolean; + progress: number; +} + + +interface AchievementListProps { + list: Array; +} + +export function AchievementList({list}:AchievementListProps): JSX.Element { + return ( +
+ {list.map(render_achievement_entry)} +
+ ); +} + +function render_achievement_entry(entry:AchievementEntry): JSX.Element { + var title = ''; + var description = ''; + + switch (entry.name) { + case 'wdc2021': + title = 'Western Dan Challenge Contender'; + description = 'Played 100 or more games during the 2021 Western Dan Challenge'; + break; + } + + return ( +
+ +
+
{title}
+
{description}
+
+
+ ); +} + diff --git a/src/components/Achievements/index.ts b/src/components/Achievements/index.ts new file mode 100644 index 0000000000..e1e63e8748 --- /dev/null +++ b/src/components/Achievements/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2012-2020 Online-Go.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +export * from "./AchievementList"; diff --git a/src/views/User/User.tsx b/src/views/User/User.tsx index 112c67cca4..ef4e909c51 100644 --- a/src/views/User/User.tsx +++ b/src/views/User/User.tsx @@ -48,6 +48,7 @@ import {associations} from 'associations'; import {browserHistory} from "ogsHistory"; import {chat_markup} from "Chat"; import {Toggle} from 'Toggle'; +import {AchievementList} from 'Achievements'; declare let swal; @@ -1005,6 +1006,13 @@ export class User extends React.PureComponent { } + {(this.state.achievements.length > 0 || null) && + +

{_("Achievements")}

+ +
+ } + {(this.state.titles.length > 0 || this.state.trophies.length > 0 || null) &&

{_("Trophies")}