Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix/api updates#46

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
ShMcK merged 3 commits intomasterfromfix/api-updates
Oct 26, 2019
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
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
18 changes: 0 additions & 18 deletionstypings/context.d.ts
View file
Open in desktop

This file was deleted.

25 changes: 9 additions & 16 deletionstypings/graphql.d.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,15 @@ export type GithubUser = {
export type Level = {
__typename?: 'Level',
id: Scalars['ID'],
index?: number
title: Scalars['String'],
/** A summary of the level */
description: Scalars['String'],
/** The lesson content of the level, parsed as markdown */
content: Scalars['String'],
/** A set of tasks for users linked to unit tests */
steps: Array<Step>,
/** Actions run on level start up for configuring setup */
setup?: Maybe<StepActions>,
status: ProgressStatus,
};

export type Mutation = {
Expand All@@ -102,11 +105,6 @@ export type MutationCreateTutorialVersionArgs = {
input: CreateTutorialVersionInput
};

export type ProgressStatus =
'ACTIVE' |
'COMPLETE' |
'INCOMPLETE';

export type Query = {
__typename?: 'Query',
tutorial?: Maybe<Tutorial>,
Expand DownExpand Up@@ -135,10 +133,9 @@ export type Step = {
__typename?: 'Step',
id: Scalars['ID'],
title: Scalars['String'],
description: Scalars['String'],
content: Scalars['String'],
setup: StepActions,
solution: StepActions,
status: ProgressStatus,
};

/** Load commits, open files or run commands */
Expand DownExpand Up@@ -336,7 +333,6 @@ export type ResolversTypes = {
Sha1: ResolverTypeWrapper<Scalars['Sha1']>,
Level: ResolverTypeWrapper<Level>,
Step: ResolverTypeWrapper<Step>,
ProgressStatus: ProgressStatus,
Boolean: ResolverTypeWrapper<Scalars['Boolean']>,
tutorialRepoInput: TutorialRepoInput,
Commit: ResolverTypeWrapper<Commit>,
Expand DownExpand Up@@ -374,7 +370,6 @@ export type ResolversParentTypes = {
Sha1: Scalars['Sha1'],
Level: Level,
Step: Step,
ProgressStatus: ProgressStatus,
Boolean: Scalars['Boolean'],
tutorialRepoInput: TutorialRepoInput,
Commit: Commit,
Expand DownExpand Up@@ -432,9 +427,9 @@ export type LevelResolvers<ContextType = any, ParentType extends ResolversParent
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
description?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
content?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
steps?: Resolver<Array<ResolversTypes['Step']>, ParentType, ContextType>,
setup?: Resolver<Maybe<ResolversTypes['StepActions']>, ParentType, ContextType>,
status?: Resolver<ResolversTypes['ProgressStatus'], ParentType, ContextType>,
};

export type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = {
Expand All@@ -456,10 +451,9 @@ export interface Sha1ScalarConfig extends GraphQLScalarTypeConfig<ResolversTypes
export type StepResolvers<ContextType = any, ParentType extends ResolversParentTypes['Step'] = ResolversParentTypes['Step']> = {
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>,
title?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
description?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
content?: Resolver<ResolversTypes['String'], ParentType, ContextType>,
setup?: Resolver<ResolversTypes['StepActions'], ParentType, ContextType>,
solution?: Resolver<ResolversTypes['StepActions'], ParentType, ContextType>,
status?: Resolver<ResolversTypes['ProgressStatus'], ParentType, ContextType>,
};

export type StepActionsResolvers<ContextType = any, ParentType extends ResolversParentTypes['StepActions'] = ResolversParentTypes['StepActions']> = {
Expand DownExpand Up@@ -583,5 +577,4 @@ export interface IntrospectionResultData {
}[];
}[];
};
}

}
70 changes: 1 addition & 69 deletionstypings/index.d.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,75 +2,7 @@ import {send} from 'xstate'
import Storage from '../src/services/storage'
import * as G from './graphql'

export interface TutorialLevel {
stepList: string[]
content: {
title: string
text: string
}
actions?: {
setup: TutorialAction
}
}

export interface TutorialHint {
text: string
displayed?: boolean
}

export interface TutorialAction {
commits: string[]
commands?: string[]
files?: string[]
}

export interface TutorialStepContent {
text: string
title?: string
}

export interface TutorialStep {
content: TutorialStepContent
actions: {
setup: TutorialAction
solution: TutorialAction
}
hints?: TutorialHint[]
}

export interface TutorialData {
summary: TutorialSummary
levels: {
[levelId: string]: TutorialLevel
}
steps: {
[stepId: string]: TutorialStep
}
}

export interface TutorialMeta {
version: string
repo: string
createdBy: string
createdAt: string
updatedBy: string
updatedAt: string
contributors: string[]
languages: string[]
testRunner: string
}

export interface TutorialSummary {
title: string
description: string
levelList: string[]
}

export interface Tutorial {
id: string
meta: TutorialMeta
data: TutorialData
}
export type ProgressStatus = 'ACTIVE' | 'COMPLETE' | 'INCOMPLETE'

export interface Progress {
levels: {
Expand Down
4 changes: 3 additions & 1 deletionweb-app/src/containers/Overview/OverviewPage.tsx
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,8 @@ import * as React from 'react'
import { Button } from '@alifd/next'
import * as G from 'typings/graphql'

import Markdown from '../../components/Markdown'

const styles = {
summary: {
padding: '0rem 1rem 1rem 1rem',
Expand DownExpand Up@@ -55,7 +57,7 @@ const Summary = ({ title, description, levels, onNext }: Props) => (
</div>
<div style={styles.summary}>
<h2 style={styles.title}>{title}</h2>
<p style={styles.description}>{description}</p>
<Markdown>{description}</Markdown>
</div>
<div>
<div style={styles.header}>
Expand Down
13 changes: 6 additions & 7 deletionsweb-app/src/containers/Tutorial/LevelPage/Level/index.tsx
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
import { Button, Step } from '@alifd/next'
import * as React from 'react'
import * as G from 'typings/graphql'
import * as T from 'typings'

import Markdown from '../../../../components/Markdown'
import StepDescription from './StepDescription'
Expand DownExpand Up@@ -45,7 +46,7 @@ const styles = {
}

interface Props {
level: G.Level
level: G.Level & { status: T.ProgressStatus; index: number; steps: Array<G.Step & { status: T.ProgressStatus }> }
onContinue(): void
onLoadSolution(): void
}
Expand All@@ -56,7 +57,7 @@ const Level = ({ level, onContinue, onLoadSolution }: Props) => {
}

// grab the active step
const activeIndex: number = level.steps.findIndex((step: G.Step | null) => {
const activeIndex: number = level.steps.findIndex((step: G.Step& { status: T.ProgressStatus }| null) => {
return step && step.status === 'ACTIVE'
})

Expand All@@ -68,25 +69,23 @@ const Level = ({ level, onContinue, onLoadSolution }: Props) => {
</div>
<div style={styles.content}>
<h2 style={styles.title}>{level.title}</h2>
<Markdown>{level.description || ''}</Markdown>
<Markdown>{level.content || ''}</Markdown>
</div>
</div>

<div>
<div style={styles.header}>Tasks</div>
<div style={styles.steps}>
<Step current={activeIndex} direction="ver" shape="dot" animation readOnly>
{level.steps.map((step: G.Step | null, index: number) => {
{level.steps.map((step: G.Step& { status: T.ProgressStatus }| null, index: number) => {
if (!step) {
return null
}
return (
<Step.Item
key={step.id}
title={step.title || `Step ${index + 1}`}
content={
<StepDescription text={step.description} mode={step.status} onLoadSolution={onLoadSolution} />
}
content={<StepDescription text={step.content} mode={step.status} onLoadSolution={onLoadSolution} />}
/>
)
})}
Expand Down
38 changes: 24 additions & 14 deletionsweb-app/src/containers/Tutorial/LevelPage/index.tsx
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
import * as React from 'react'
import * asCR from 'typings'
import * asT from 'typings'
import * as G from 'typings/graphql'
import * as selectors from '../../../services/selectors'

import Level from './Level'

interface PageProps {
context:CR.MachineContext
send(action:CR.Action): void
context:T.MachineContext
send(action:T.Action): void
}

const LevelSummaryPageContainer = (props: PageProps) => {
const { position, progress } = props.context

const level: G.Level = selectors.currentLevel(props.context)
const version = selectors.currentVersion(props.context)
const levelData: G.Level = selectors.currentLevel(props.context)

const onContinue = (): void => {
props.send({
Expand All@@ -28,16 +29,25 @@ const LevelSummaryPageContainer = (props: PageProps) => {
props.send({ type: 'STEP_SOLUTION_LOAD' })
}

level.steps.forEach((step: G.Step) => {
if (progress.steps[step.id]) {
step.status = 'COMPLETE'
} else if (step.id === position.stepId) {
step.status = 'ACTIVE'
} else {
step.status = 'INCOMPLETE'
}
})
level.status = progress.levels[position.levelId] ? 'COMPLETE' : 'ACTIVE'
const level: G.Level & {
status: T.ProgressStatus
index: number
steps: Array<G.Step & { status: T.ProgressStatus }>
} = {
...levelData,
index: version.data.levels.findIndex((l: G.Level) => l.id === position.levelId),
status: progress.levels[position.levelId] ? 'COMPLETE' : 'ACTIVE',
steps: levelData.steps.map((step: G.Step) => {
// label step status for step component
let status: T.ProgressStatus = 'INCOMPLETE'
if (progress.steps[step.id]) {
status = 'COMPLETE'
} else if (step.id === position.stepId) {
status = 'ACTIVE'
}
return { ...step, status }
}),
}

return <Level level={level} onContinue={onContinue} onLoadSolution={onLoadSolution} />
}
Expand Down
View file
Open in desktop

This file was deleted.

Loading

[8]ページ先頭

©2009-2025 Movatter.jp