diff --git a/web-app/src/containers/Tutorial/components/Reset.tsx b/web-app/src/containers/Tutorial/components/Reset.tsx index 197a9674..7b02d329 100644 --- a/web-app/src/containers/Tutorial/components/Reset.tsx +++ b/web-app/src/containers/Tutorial/components/Reset.tsx @@ -4,6 +4,8 @@ import { Button, Dialog, Message } from '@alifd/next' interface Props { disabled?: boolean onReset(): void + warning?: boolean + style?: React.CSSProperties } const Reset = (props: Props) => { @@ -24,11 +26,13 @@ const Reset = (props: Props) => { return ( <> diff --git a/web-app/src/containers/Tutorial/components/SideMenu.tsx b/web-app/src/containers/Tutorial/components/SideMenu.tsx index 68b15b05..31323880 100644 --- a/web-app/src/containers/Tutorial/components/SideMenu.tsx +++ b/web-app/src/containers/Tutorial/components/SideMenu.tsx @@ -81,10 +81,10 @@ const SideMenu = (props: Props) => { About - {/* { onMenuClose() props.setPage('settings') @@ -92,8 +92,7 @@ const SideMenu = (props: Props) => { > Settings - {' '} - */} + ) diff --git a/web-app/src/containers/Tutorial/containers/Settings.tsx b/web-app/src/containers/Tutorial/containers/Settings.tsx index 2b5cfc56..76ee9dea 100644 --- a/web-app/src/containers/Tutorial/containers/Settings.tsx +++ b/web-app/src/containers/Tutorial/containers/Settings.tsx @@ -1,15 +1,78 @@ -import * as React from 'react' +import Button from 'components/Button' +import React, { useState, useEffect } from 'react' +import { Theme } from '../../../styles/theme' +import Reset from '../components/Reset' + +import * as T from 'typings' const styles = { - container: { + flexColumn: { + display: 'flex' as 'flex', + flexDirection: 'column' as 'column', + }, + container: (theme: Theme) => ({ display: 'flex' as 'flex', flexDirection: 'column' as 'column', - padding: '1rem', + backgroundColor: theme['$color-white'], + height: 'auto', + }), + header: (theme: Theme) => ({ + display: 'flex' as 'flex', + alignItems: 'center', + justifyContent: 'space-between', + height: '2rem', + backgroundColor: theme['$color-fill1-2'], + fontSize: '1rem', + lineHeight: '1rem', + padding: '10px 0.4rem', + }), + content: { + padding: '0.5rem', }, + menu: {}, + menuItem: { + display: 'flex' as 'flex', + border: '1px solid rgb(173, 173, 173)', + borderRadius: '5px', + padding: '0.5rem', + }, + menuItemHeader: { + fontWeight: 'bold' as 'bold', + }, + menuItemContent: {}, + menuItemButton: { + marginLeft: 'auto' as 'auto', + }, +} + +interface Props { + onReset(): void } -const SettingsPage = () => { - return
Settings coming soon...
+const SettingsPage = (props: Props) => { + return ( +
+
+
Settings
+
+
+
+
+
+
Reset Tutorial
+
+ This will reset the whole tutorial and change the source files back to the first level and first task + checkpoint. This will reset the whole tutorial and change the source files back to the first level and + first task checkpoint. This will reset the whole tutorial and change the source files back to the first + level and first task checkpoint. +
+
+ +
+
+
+
+ ) } export default SettingsPage diff --git a/web-app/src/containers/Tutorial/index.tsx b/web-app/src/containers/Tutorial/index.tsx index c7827e8d..c16c62e2 100644 --- a/web-app/src/containers/Tutorial/index.tsx +++ b/web-app/src/containers/Tutorial/index.tsx @@ -18,6 +18,7 @@ import ScrollContent from './components/ScrollContent' import CompletedBanner from './components/CompletedBanner' import { Theme } from '../../styles/theme' import { useTheme } from 'emotion-theming' +import SettingsPage from './containers/Settings' const styles = { page: { @@ -127,6 +128,18 @@ const TutorialPage = (props: PageProps) => { const [page, setPage] = React.useState<'about' | 'level' | 'review' | 'settings'>('level') + const onSettingsReset = () => { + //Reset to first level first step + const level: T.LevelUI | null = levels.length ? levels[1] : null + if (level) { + onResetToPosition({ + levelId: level.id, + stepId: level.steps.length ? level.steps[0].id : null, + complete: false, + }) + setPage('level') + } + } // format level code with status for easy rendering const { level, levels, levelIndex, stepIndex } = formatLevels({ position, @@ -155,7 +168,7 @@ const TutorialPage = (props: PageProps) => { )} {page === 'review' && } - {/* {page === 'settings' && } */} + {page === 'settings' && } {props.state === 'Completed' ? ( diff --git a/web-app/stories/Settings.stories.tsx b/web-app/stories/Settings.stories.tsx new file mode 100644 index 00000000..2d442aff --- /dev/null +++ b/web-app/stories/Settings.stories.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import { storiesOf } from '@storybook/react' +import SideBarDecorator from './utils/SideBarDecorator' +import Settings from '../src/containers/Tutorial/containers/Settings' + +storiesOf('Settings', module) + .addDecorator(SideBarDecorator) + .add('Settings Page', () => { + return console.log('Reset...')} /> + })