Skip to content
This repository has been archived by the owner on Feb 6, 2023. It is now read-only.

Feature/update list of result status #335

Merged
merged 6 commits into from
Dec 5, 2019
Merged
Show file tree
Hide file tree
Changes from all 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: 1 addition & 17 deletions frontend/src/actions/entities.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@ export const RESULT_FAILURE = 'RESULT_FAILURE';
export const RESULT_UPDATE_REQUEST = 'RESULT_UPDATE_REQUEST';
export const RESULT_UPDATE_SUCCESS = 'RESULT_UPDATE_SUCCESS';
export const RESULT_UPDATE_FAILURE = 'RESULT_UPDATE_FAILURE';
export const RESULT_DELETE_REQUEST = 'RESULT_DELETE_REQUEST';
export const RESULT_DELETE_SUCCESS = 'RESULT_DELETE_SUCCESS';
export const RESULT_DELETE_FAILURE = 'RESULT_DELETE_FAILURE';
export const RESULTS_PATCH_REQUEST = 'RESULTS_PATCH_REQUEST';
export const RESULTS_PATCH_SUCCESS = 'RESULTS_PATCH_SUCCESS';
export const RESULTS_PATCH_FAILURE = 'RESULTS_PATCH_FAILURE';
Expand Down Expand Up @@ -113,26 +110,13 @@ export const updateResult = (projectId, result = {}) => {
};
};

export const deleteResult = (projectId, resultId) => {
if (!Number.isInteger(resultId)) {
throw new Error('Result id is invalid.');
}
return {
[CALL_API]: {
types: [RESULT_DELETE_REQUEST, RESULT_DELETE_SUCCESS, RESULT_DELETE_FAILURE],
endpoint: `projects/${projectId}/results/${resultId}`,
method: 'DELETE',
},
};
};

export const patchResults = (projectId, results = []) => {
return {
[CALL_API]: {
types: [RESULTS_PATCH_REQUEST, RESULTS_PATCH_SUCCESS, RESULTS_PATCH_FAILURE],
endpoint: `projects/${projectId}/results`,
method: 'PATCH',
body: { results },
body: { projectId, results },
},
};
};
Expand Down
9 changes: 4 additions & 5 deletions frontend/src/actions/status.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@ export const updateResultSelect = (projectId, resultId, selected) => ({
selected,
});

export const CHECKED_OF_RESULT_STATUS_UPDATE = 'CHECKED_OF_RESULT_STATUS_UPDATE';
export const updateCheckedOfResultStatus = (projectId, resultId, checked) => ({
type: CHECKED_OF_RESULT_STATUS_UPDATE,
export const CHECK_OF_RESULT_STATUS_LIST_UPDATE = 'CHECK_OF_RESULT_STATUS_LIST_UPDATE';
export const updateCheckOfResultStatusList = (projectId, results) => ({
type: CHECK_OF_RESULT_STATUS_LIST_UPDATE,
projectId,
resultId,
checked,
results,
});

export const RESULT_FILTER_UPDATE = 'RESULT_FILTER_UPDATE';
Expand Down
10 changes: 5 additions & 5 deletions frontend/src/components/ExperimentsTable.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const ExperimentsTable = (props) => {
onCommandSubmit,
onTableExpandedUpdate,
onTableColumnsVisibilityUpdate,
onCheckedOfResultStatusUpdate,
onCheckOfResultStatusListUpdate,
} = props;
const { argKeys, logKeys } = stats;
const { resultsConfig, tableState } = projectConfig;
Expand Down Expand Up @@ -75,7 +75,7 @@ const ExperimentsTable = (props) => {
project={project}
targetResults={resultList}
resultsStatus={resultsStatus}
onChange={onCheckedOfResultStatusUpdate}
onChange={onCheckOfResultStatusListUpdate}
/>
),
Cell: (p) => {
Expand All @@ -88,7 +88,7 @@ const ExperimentsTable = (props) => {
project={project}
targetResults={[original]}
resultsStatus={resultsStatus}
onChange={onCheckedOfResultStatusUpdate}
onChange={onCheckOfResultStatusListUpdate}
/>
);
},
Expand All @@ -105,7 +105,7 @@ const ExperimentsTable = (props) => {
project={project}
targetResults={groupedResults}
resultsStatus={resultsStatus}
onChange={onCheckedOfResultStatusUpdate}
onChange={onCheckOfResultStatusListUpdate}
/>
);
},
Expand Down Expand Up @@ -328,7 +328,7 @@ ExperimentsTable.propTypes = {
onCommandSubmit: PropTypes.func.isRequired,
onTableExpandedUpdate: PropTypes.func.isRequired,
onTableColumnsVisibilityUpdate: PropTypes.func.isRequired,
onCheckedOfResultStatusUpdate: PropTypes.func.isRequired,
onCheckOfResultStatusListUpdate: PropTypes.func.isRequired,
};

ExperimentsTable.defaultProps = {
Expand Down
10 changes: 4 additions & 6 deletions frontend/src/components/SelectedResultTools.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const SelectedResultTools = (props) => {
resultsStatus,
resultTypeId,
onResultsPatch,
onCheckedOfResultStatusUpdate,
onCheckOfResultStatusListUpdate,
onTableExpandedUpdate,
} = props;

Expand Down Expand Up @@ -39,10 +39,8 @@ const SelectedResultTools = (props) => {

const requestBody = targetResultKeys.map((id) => ({ id, isUnregistered }));
onResultsPatch(project.id, requestBody);

targetResultKeys.forEach((resultKey) => {
onCheckedOfResultStatusUpdate(project.id, results[resultKey].id, false);
});
const resultStatusList = targetResultKeys.map((id) => ({ id, checked: false }));
onCheckOfResultStatusListUpdate(project.id, resultStatusList);
};

return (
Expand All @@ -68,7 +66,7 @@ SelectedResultTools.propTypes = {
resultsStatus: uiPropTypes.resultsStatus,
resultTypeId: PropTypes.string.isRequired,
onResultsPatch: PropTypes.func.isRequired,
onCheckedOfResultStatusUpdate: PropTypes.func.isRequired,
onCheckOfResultStatusListUpdate: PropTypes.func.isRequired,
onTableExpandedUpdate: PropTypes.func.isRequired,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,12 @@ const ResultSelectionCheckbox = (props) => {
type="checkbox"
checked={currentCheckState}
onChange={() =>
props.targetResults.forEach((result) =>
props.onChange(props.project.id, result.id, !currentCheckState)
props.onChange(
props.project.id,
props.targetResults.map((result) => ({
id: result.id,
checked: !currentCheckState,
}))
)
}
/>
Expand Down
10 changes: 5 additions & 5 deletions frontend/src/containers/PlotContainer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
updateTableColumnsVisibility,
updateChartDownloadStatus,
updateTargetResultType,
updateCheckedOfResultStatus,
updateCheckOfResultStatusList,
} from '../actions';
import NavigationBar from './NavigationBar';
import BreadcrumbLink from '../components/BreadcrumbLink';
Expand Down Expand Up @@ -157,7 +157,7 @@ class PlotContainer extends React.Component {
resultsStatus={projectStatus.resultsStatus}
onResultsPatch={this.props.patchResults}
onTableExpandedUpdate={this.props.updateTableExpanded}
onCheckedOfResultStatusUpdate={this.props.updateCheckedOfResultStatus}
onCheckOfResultStatusListUpdate={this.props.updateCheckOfResultStatusList}
/>
<ResultTypeSelector
projectId={projectId}
Expand All @@ -180,7 +180,7 @@ class PlotContainer extends React.Component {
onCommandSubmit={this.props.createCommand}
onTableExpandedUpdate={this.props.updateTableExpanded}
onTableColumnsVisibilityUpdate={this.handleExperimentsTableColumnsVisibilityUpdate}
onCheckedOfResultStatusUpdate={this.props.updateCheckedOfResultStatus}
onCheckOfResultStatusListUpdate={this.props.updateCheckOfResultStatusList}
/>
<ExperimentsTableConfigurator
project={project}
Expand Down Expand Up @@ -226,7 +226,7 @@ PlotContainer.propTypes = {
updateTableColumnsVisibility: PropTypes.func.isRequired,
updateChartDownloadStatus: PropTypes.func.isRequired,
updateTargetResultType: PropTypes.func.isRequired,
updateCheckedOfResultStatus: PropTypes.func.isRequired,
updateCheckOfResultStatusList: PropTypes.func.isRequired,
};

const getTargetTextForFilter = (project, result, filterKey) => {
Expand Down Expand Up @@ -305,6 +305,6 @@ export default connect(
updateTableColumnsVisibility,
updateChartDownloadStatus,
updateTargetResultType,
updateCheckedOfResultStatus,
updateCheckOfResultStatusList,
}
)(PlotContainer);
31 changes: 22 additions & 9 deletions frontend/src/reducers/configReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
GLOBAL_CONFIG_RESULT_NAME_ALIGNMENT_UPDATE,
GLOBAL_CONFIG_HIGHLIGHT_TABLE_AND_CHART,
} from '../actions/config';
import { RESULT_UPDATE_SUCCESS, RESULT_DELETE_SUCCESS } from '../actions/entities';
import { RESULT_UPDATE_SUCCESS, RESULTS_PATCH_SUCCESS } from '../actions/entities';
import { updatePartialState, removePartialState } from './utils';

const axisConfigReducer = (state = {}, action) => {
Expand Down Expand Up @@ -113,7 +113,7 @@ const axesConfigReducer = (state = defaultAxisConfig, action) => {
};

const resultsConfigReducer = (state = {}, action) => {
const { resultId } = action;
const { resultId, response } = action;
switch (action.type) {
case RESULTS_CONFIG_SELECT_UPDATE:
if (resultId) {
Expand Down Expand Up @@ -153,8 +153,18 @@ const resultsConfigReducer = (state = {}, action) => {
};
}
return state;
case RESULT_DELETE_SUCCESS:
return removePartialState(state, resultId);
case RESULTS_PATCH_SUCCESS:
if (response.results) {
let tmpState = state;
const targetResult = response.results.filter(
(result) => result.is_unregistered && result.is_unregistered === true
);
targetResult.forEach((result) => {
tmpState = removePartialState(tmpState, result.id);
});
return tmpState;
}
return state;
default:
return state;
}
Expand Down Expand Up @@ -229,18 +239,21 @@ const projectConfigReducer = combineReducers({
});

const projectsConfigReducer = (state = {}, action) => {
const { projectId } = action;
if (projectId) {
const { projectId: projectIdA, body = {} } = action;
const { projectId: projectIdB } = body;
const targetProjectId = projectIdA || projectIdB;
if (targetProjectId) {
switch (action.type) {
case PROJECT_CONFIG_RESET:
return updatePartialState(state, action, projectId, () =>
return updatePartialState(state, action, targetProjectId, () =>
projectConfigReducer(undefined, action)
);
case RESULTS_PATCH_SUCCESS:
return updatePartialState(state, action, targetProjectId, projectConfigReducer);
default:
return updatePartialState(state, action, projectId, projectConfigReducer);
return updatePartialState(state, action, targetProjectId, projectConfigReducer);
}
}

return state;
};

Expand Down
7 changes: 0 additions & 7 deletions frontend/src/reducers/entitiesReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
RESULT_LIST_SUCCESS,
RESULT_SUCCESS,
RESULT_UPDATE_SUCCESS,
RESULT_DELETE_SUCCESS,
RESULTS_PATCH_SUCCESS,
COMMAND_CREATE_SUCCESS,
RESULT_LIST_CLEAR,
Expand Down Expand Up @@ -104,12 +103,6 @@ const resultsReducer = (state = {}, action) => {
};
}
return state;
case RESULT_DELETE_SUCCESS:
if (action.response && action.response.result) {
const { result } = action.response;
return removePartialState(state, result.id);
}
return state;
case RESULTS_PATCH_SUCCESS:
if (action.response && action.response.results) {
const { results } = action.response;
Expand Down
23 changes: 16 additions & 7 deletions frontend/src/reducers/statusReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { RESULT_LIST_SUCCESS } from '../actions/entities';
import {
CHART_DOWNLOAD_STATUS_UPDATE,
RESULT_SELECT_UPDATE,
CHECKED_OF_RESULT_STATUS_UPDATE,
CHECK_OF_RESULT_STATUS_LIST_UPDATE,
RESULT_FILTER_UPDATE,
} from '../actions/status';
import { updatePartialState } from './utils';
Expand All @@ -29,7 +29,7 @@ const resultSelectedReducer = (state = false, action) => {

const resultCheckedReducer = (state = false, action) => {
switch (action.type) {
case CHECKED_OF_RESULT_STATUS_UPDATE:
case CHECK_OF_RESULT_STATUS_LIST_UPDATE:
return action.checked;
default:
return state;
Expand All @@ -42,12 +42,21 @@ const resultStatusReducer = combineReducers({
});

const resultsStatusReducer = (state = {}, action) => {
const { resultId } = action;
if (resultId) {
return updatePartialState(state, action, resultId, resultStatusReducer);
const { results } = action;
switch (action.type) {
case CHECK_OF_RESULT_STATUS_LIST_UPDATE:
if (results) {
let tmpState = state;
results.forEach((result) => {
const currentAction = { type: action.type, checked: result.checked };
tmpState = updatePartialState(tmpState, currentAction, result.id, resultStatusReducer);
});
return tmpState;
}
return state;
default:
return state;
}

return state;
};

const resultFilterReducer = (state = {}, action) => {
Expand Down