Skip to content

Commit

Permalink
add evaluation result list page
Browse files Browse the repository at this point in the history
  • Loading branch information
yuki-mt committed May 22, 2019
1 parent 471187e commit 8ce193e
Show file tree
Hide file tree
Showing 11 changed files with 888 additions and 1 deletion.
21 changes: 21 additions & 0 deletions frontend/src/actions/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,13 @@ export const uploadEvaluationDispatcher = asyncAPIRequestDispatcherCreator<Apis.
Apis.uploadEvaluation
)

export const evaluateActionCreators =
new APIRequestActionCreators<Apis.EvaluateParam, boolean>('EVALUATE')
export const evaluateDispatcher = asyncAPIRequestDispatcherCreator<Apis.EvaluateParam, boolean>(
evaluateActionCreators,
Apis.evaluate
)

export const fetchAllProjectsActionCreators =
new APIRequestActionCreators<{}, Apis.Project[]>('FETCH_ALL_PROJECTS')
export const fetchAllProjectsDispatcher = asyncAPIRequestDispatcherCreator<{}, Apis.Project[]>(
Expand Down Expand Up @@ -221,6 +228,13 @@ export const fetchAllEvaluationsDispatcher = asyncAPIRequestDispatcherCreator<Ap
Apis.fetchAllEvaluations
)

export const fetchAllEvaluationResultsActionCreators =
new APIRequestActionCreators<Apis.FetchEvaluationResultByIdParam, Apis.EvaluationResult[]>('FETCH_ALL_EVALUATION_RESULTS')
export const fetchAllEvaluationResultsDispatcher = asyncAPIRequestDispatcherCreator<Apis.FetchEvaluationResultByIdParam, Apis.EvaluationResult[]>(
fetchAllEvaluationResultsActionCreators,
Apis.fetchAllEvaluationResults
)

export const fetchAllServicesActionCreators =
new APIRequestActionCreators<Apis.FetchServiceParam, Apis.Service[]>('FETCH_ALL_SERVICES')
export const fetchAllServicesDispatcher = asyncAPIRequestDispatcherCreator<Apis.FetchServiceParam, Apis.Service[]>(
Expand Down Expand Up @@ -305,6 +319,13 @@ export const deleteEvaluationsDispatcher = asyncAPIRequestDispatcherCreator<Apis
Apis.deleteEvaluations
)

export const deleteEvaluationResultsActionCreators =
new APIRequestActionCreators<Apis.IdParam[], boolean[]>('DELETE_EVALUTION_RESULTS')
export const deleteEvaluationResultsDispatcher = asyncAPIRequestDispatcherCreator<Apis.IdParam[], boolean[]>(
deleteEvaluationResultsActionCreators,
Apis.deleteEvaluationResults
)

// Login
export const settingsActionCreators =
new APIRequestActionCreators<{}, any>('SETTINGS')
Expand Down
58 changes: 58 additions & 0 deletions frontend/src/apis/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,22 @@ export async function uploadEvaluation(params: UploadEvaluationParam) {
return APICore.formDataRequest(`${process.env.API_HOST}:${process.env.API_PORT}/api/projects/${params.projectId}/applications/${params.applicationId}/evaluations`, requestBody, convert, 'POST')
}

export interface EvaluateParam {
projectId: number
applicationId: string
modelId: number
evaluationId: number
}
export async function evaluate(params: EvaluateParam) {
const requestBody = {
...params
}

const convert = (result) => result.status

return APICore.formDataRequest(`${process.env.API_HOST}:${process.env.API_PORT}/api/projects/${params.projectId}/applications/${params.applicationId}/evaluate`, requestBody, convert, 'POST')
}

// GET APIs
export class Project {
constructor(
Expand Down Expand Up @@ -524,6 +540,34 @@ export async function fetchAllEvaluations(params: FetchEvaluationByIdParam): Pro
return APICore.getRequest(`${process.env.API_HOST}:${process.env.API_PORT}/api/projects/${params.projectId}/applications/${params.applicationId}/evaluations`, convert)
}

export class EvaluationResult {
constructor(
public evaluationResultId: number,
public evaluationId: number,
public modelDescription: string = '',
public evaluationDescription: string = '',
public registerDate: Date = null
) { }
}
export interface FetchEvaluationResultByIdParam {
evaluationResultId?: number
projectId: number
applicationId: string
}
export async function fetchAllEvaluationResults(params: FetchEvaluationResultByIdParam): Promise<EvaluationResult[]> {
const convert =
(results) => results.map((result): EvaluationResult => {
return {
evaluationResultId: result.evaluation_result_id,
evaluationId: result.evaluation_id,
modelDescription: result.model.description,
evaluationDescription: result.evaluation.description,
registerDate: new Date(Date.parse(result.register_date + ' GMT'))
}
})
return APICore.getRequest(`${process.env.API_HOST}:${process.env.API_PORT}/api/projects/${params.projectId}/applications/${params.applicationId}/evaluation_results`, convert)
}

export class Service {
constructor(
public serviceId: string,
Expand Down Expand Up @@ -720,6 +764,7 @@ export interface IdParam {
serviceId?: string
modelId?: number
evaluationId?: number
evaluationResultId?: number
}

export async function deleteKubernetes(params: IdParam): Promise<any> {
Expand Down Expand Up @@ -788,6 +833,19 @@ export async function deleteEvaluations(params: IdParam[]): Promise<Array<Promis
return APICore.rawMultiRequest<boolean>(entryPoints, convert, requestList)
}

export async function deleteEvaluationResults(params: IdParam[]): Promise<Array<Promise<boolean>>> {
const convert = (result) => result.status
const entryPoints = params.map(
(param) =>
`${process.env.API_HOST}:${process.env.API_PORT}/api/projects/${param.projectId}/applications/${param.applicationId}/evaluation_results/${param.evaluationResultId}`
)
const requestList = params.map(
(param) => ({ options: { method: 'DELETE' } })
)

return APICore.rawMultiRequest<boolean>(entryPoints, convert, requestList)
}

// Login API
export class AuthToken {
constructor(
Expand Down
6 changes: 6 additions & 0 deletions frontend/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
updateServiceRoutingReducer,
uploadModelReducer,
uploadEvaluationReducer,
evaluateReducer,
updateModelReducer,
fetchAllProjectsReducer,
fetchProjectByIdReducer,
Expand All @@ -24,6 +25,7 @@ import {
fetchAllModelsReducer,
fetchModelByIdReducer,
fetchAllEvaluationsReducer,
fetchAllEvaluationResultsReducer,
fetchAllServicesReducer,
fetchServiceByIdReducer,
fetchKubernetesGitKeyReducer,
Expand All @@ -36,6 +38,7 @@ import {
deleteServicesReducer,
deleteModelsReducer,
deleteEvaluationsReducer,
deleteEvaluationResultsReducer,
loginReducer,
settingsReducer,
userInfoReducer,
Expand Down Expand Up @@ -64,6 +67,7 @@ const store = createStore(
updateServiceRoutingReducer,
uploadModelReducer,
uploadEvaluationReducer,
evaluateReducer,
updateModelReducer,
fetchAllProjectsReducer,
fetchProjectByIdReducer,
Expand All @@ -75,6 +79,7 @@ const store = createStore(
fetchAllModelsReducer,
fetchModelByIdReducer,
fetchAllEvaluationsReducer,
fetchAllEvaluationResultsReducer,
fetchAllServicesReducer,
fetchServiceByIdReducer,
fetchKubernetesGitKeyReducer,
Expand All @@ -87,6 +92,7 @@ const store = createStore(
deleteServicesReducer,
deleteModelsReducer,
deleteEvaluationsReducer,
deleteEvaluationResultsReducer,
loginReducer,
settingsReducer,
userInfoReducer,
Expand Down
5 changes: 5 additions & 0 deletions frontend/src/components/App/Application/SideMenu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ class SideMenu extends React.Component<SideMenuProps, SideMenuState> {
path: 'evaluations',
icon: 'file',
},
{
text: 'Result',
path: 'evaluation_results',
icon: 'diagnoses',
},
]
}

Expand Down
Loading

0 comments on commit 8ce193e

Please sign in to comment.