From 865593644705fb2c66e922e54a2e58374a1dbe80 Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Mon, 3 Sep 2018 15:49:14 +1000 Subject: [PATCH] WIP: hook selectedDocId and selectedLocaleId into MTMerge container --- .../src/app/actions/version-actions.js | 2 +- .../app/components/MTMerge/MTMerge.story.tsx | 2 +- .../app/components/MTMerge/MTMergeModal.tsx | 10 +- .../app/components/MTMerge/MTMergeOptions.tsx | 92 ++++++++++++------- .../ProjectVersion/MTMergeContainer.ts | 12 ++- server/zanata-frontend/src/app/jsf/index.js | 3 +- .../zanata-frontend/src/app/reducers/state.ts | 4 +- .../src/app/reducers/version-reducer.js | 24 ++++- .../src/app/reducers/version-reducer.test.js | 10 +- .../layout/version/languages-tab.xhtml | 2 +- .../src/main/webapp/iteration/view.xhtml | 2 +- 11 files changed, 107 insertions(+), 56 deletions(-) diff --git a/server/zanata-frontend/src/app/actions/version-actions.js b/server/zanata-frontend/src/app/actions/version-actions.js index 1dac5f27428..ffd4793a99d 100644 --- a/server/zanata-frontend/src/app/actions/version-actions.js +++ b/server/zanata-frontend/src/app/actions/version-actions.js @@ -60,7 +60,7 @@ import { */ export const toggleMTMergeModal = - createAction(TOGGLE_MT_MERGE_MODAL) + createAction(TOGGLE_MT_MERGE_MODAL, toggle => toggle, (args) => ({ args })) /** Open or close the TM Merge modal */ export const toggleTMMergeModal = createAction(TOGGLE_TM_MERGE_MODAL) diff --git a/server/zanata-frontend/src/app/components/MTMerge/MTMerge.story.tsx b/server/zanata-frontend/src/app/components/MTMerge/MTMerge.story.tsx index 78eccf75109..8fa7ac2a027 100644 --- a/server/zanata-frontend/src/app/components/MTMerge/MTMerge.story.tsx +++ b/server/zanata-frontend/src/app/components/MTMerge/MTMerge.story.tsx @@ -96,7 +96,7 @@ storiesOf('MTMergeModal', module) // Redux dispatch, ie connect's TDispatchProps @@ -78,7 +80,7 @@ export class MTMergeModal extends Component { public render() { const { - showMTMerge, + show, projectSlug, versionSlug, availableLocales, @@ -101,7 +103,7 @@ export class MTMergeModal extends Component { return ( {

: ( { public render() { // are all the boxes checked? - const allChecked = this.props.availableLocales.length === this.props.checkedLocales.length + const { + availableLocales, checkedLocales, allowMultiple, docId, localeId + } = this.props + const allChecked = availableLocales.length === checkedLocales.length // are some of the boxes checked? (not zero, not all) - const someChecked = ![0, this.props.availableLocales.length].includes(this.props.checkedLocales.length) + const someChecked = ![0, availableLocales.length].includes(checkedLocales.length) + const isSingleDocument = docId && localeId return ( @@ -57,38 +63,56 @@ export class MTMergeOptions extends Component {
- {/* Select Languages */} -

- - {this.props.allowMultiple ? "Languages" : "Language"} -

- {this.props.allowMultiple - ?
- {/*this is the "check all" checkbox*/} -
- - All languages - -
-
- - {this.props.availableLocales.map(loc => - - {loc.displayName} - )} - -
- : + + {isSingleDocument && + +

+ + Document +

+ {docId} + +

+ + Language +

+ {localeId} +
+ } + + {!isSingleDocument && + +

+ + {allowMultiple ? "Languages" : "Language"} +

+ {allowMultiple + ?
+ {/*this is the "check all" checkbox*/} +
+ + All languages + +
+
+ + {availableLocales.map(loc => + + {loc.displayName} + )} + +
+ : + } +
} {/* Other options */} diff --git a/server/zanata-frontend/src/app/containers/ProjectVersion/MTMergeContainer.ts b/server/zanata-frontend/src/app/containers/ProjectVersion/MTMergeContainer.ts index d4ed92e155e..1a51b33f10a 100644 --- a/server/zanata-frontend/src/app/containers/ProjectVersion/MTMergeContainer.ts +++ b/server/zanata-frontend/src/app/containers/ProjectVersion/MTMergeContainer.ts @@ -19,16 +19,20 @@ const mapReduxStateToProps = (state: RootState): MTMergeModalStateProps => { projectVersion: { locales, MTMerge: { - showMTMerge, + show, processStatus, + docId, + localeId // queryStatus } } } = state return { - showMTMerge, + show, availableLocales: locales as Locale[], processStatus, + docId, + localeId // queryStatus } } @@ -45,7 +49,9 @@ const mapDispatchToProps = (dispatch: any): MTMergeModalDispatchProps => { dispatch(currentMTMergeProcessFinished()) }, onCancel: () => { - dispatch(toggleMTMergeModal()) + dispatch(toggleMTMergeModal({MTMerge: + {show: false, docId: undefined, localeId: undefined} + })) }, onSubmit: (projectSlug, versionSlug, mtMergeOptions) => { dispatch(mergeVersionFromMT(projectSlug, versionSlug, mtMergeOptions)) diff --git a/server/zanata-frontend/src/app/jsf/index.js b/server/zanata-frontend/src/app/jsf/index.js index a773e81d53b..8d71fe3dddf 100644 --- a/server/zanata-frontend/src/app/jsf/index.js +++ b/server/zanata-frontend/src/app/jsf/index.js @@ -56,7 +56,8 @@ const enhancedHistory = syncHistoryWithStore(history, store) export default function mountReactToJsf () { // Attaching to window object so modals can be triggered from the JSF page - window.toggleMTMergeModal = () => store.dispatch(toggleMTMergeModal()) + window.toggleMTMergeModal = (show, docId, localeId) => + store.dispatch(toggleMTMergeModal({MTMerge: {show, docId, localeId}})) window.toggleTMMergeModal = () => store.dispatch(toggleTMMergeModal()) window.toggleTMXExportModal = (show) => store.dispatch(showExportTMXModal(show)) diff --git a/server/zanata-frontend/src/app/reducers/state.ts b/server/zanata-frontend/src/app/reducers/state.ts index 8103b431898..c5418564a01 100644 --- a/server/zanata-frontend/src/app/reducers/state.ts +++ b/server/zanata-frontend/src/app/reducers/state.ts @@ -23,10 +23,12 @@ export type RootState = DeepReadonly<{ // TODO verify types export type ProjectVersionState = { MTMerge: { - showMTMerge: boolean + show: boolean triggered: boolean processStatus?: ProcessStatus queryStatus?: string + localeId?: string + docId?: string } TMMerge: { show: boolean diff --git a/server/zanata-frontend/src/app/reducers/version-reducer.js b/server/zanata-frontend/src/app/reducers/version-reducer.js index f25b6acc57a..35e06e35d97 100644 --- a/server/zanata-frontend/src/app/reducers/version-reducer.js +++ b/server/zanata-frontend/src/app/reducers/version-reducer.js @@ -32,10 +32,12 @@ import { SEVERITY, statusToSeverity } from '../actions/common-actions' export const defaultState = { // See mapReduxStateToProps in MTMergeContainer.ts MTMerge: { - showMTMerge: false, + show: false, triggered: false, processStatus: undefined, queryStatus: undefined, + localeId: undefined, + docId: undefined }, TMMerge: { show: false, @@ -56,10 +58,18 @@ export const defaultState = { // Should be fixed by Redux 4: https://github.com/reactjs/redux/pull/2773 /** @type {import('redux').Reducer} */ const version = handleActions({ - [TOGGLE_MT_MERGE_MODAL]: (state, _action) => { - return update(state, { - MTMerge: { showMTMerge: { $set: !state.MTMerge.showMTMerge } } - }) + [TOGGLE_MT_MERGE_MODAL]: (state, action) => { + const {show, docId, localeId} = action.payload ? action.payload.MTMerge + : state.MTMerge + return { + ...state, + MTMerge: { + ...state.MTMerge, + show, + docId, + localeId + } + } }, [TOGGLE_TM_MERGE_MODAL]: (state, _action) => { return update(state, { @@ -223,6 +233,10 @@ const version = handleActions({ [MT_MERGE_PROCESS_FINISHED]: (state, _action) => { return update(state, { // MTMerge: { processStatus: { $set: undefined } }, + MTMerge: { + docId: { $set: undefined }, + localeId: { $set: undefined } + }, notification: { $set: { severity: `${state.MTMerge.processStatus diff --git a/server/zanata-frontend/src/app/reducers/version-reducer.test.js b/server/zanata-frontend/src/app/reducers/version-reducer.test.js index 8bb694adcc3..38981a1d8b8 100644 --- a/server/zanata-frontend/src/app/reducers/version-reducer.test.js +++ b/server/zanata-frontend/src/app/reducers/version-reducer.test.js @@ -30,11 +30,11 @@ describe('version-reducer test', () => { const initial = versionReducer(undefState, dummyAction) const shown = versionReducer(initial, { type: TOGGLE_TM_MERGE_MODAL, - payload: { show: true } + payload: { TMMerge: {show: true}} }) const hidden = versionReducer(shown, { type: TOGGLE_TM_MERGE_MODAL, - payload: { show: false } + payload: { TMMerge: {show: false}} }) expect(initial.TMMerge).toEqual({ processStatus: undefined, @@ -290,7 +290,7 @@ describe('version-reducer test', () => { MTMerge: { processStatus: undefined, queryStatus: undefined, - showMTMerge: false, + show: false, triggered: false }, TMMerge: { @@ -339,7 +339,7 @@ describe('version-reducer test', () => { MTMerge: { processStatus: undefined, queryStatus: undefined, - showMTMerge: false, + show: false, triggered: false }, TMMerge: { @@ -370,7 +370,7 @@ describe('version-reducer test', () => { MTMerge: { processStatus: undefined, queryStatus: undefined, - showMTMerge: false, + show: false, triggered: false }, TMMerge: { diff --git a/server/zanata-war/src/main/webapp/WEB-INF/layout/version/languages-tab.xhtml b/server/zanata-war/src/main/webapp/WEB-INF/layout/version/languages-tab.xhtml index fd15c1ddb79..672869e541a 100644 --- a/server/zanata-war/src/main/webapp/WEB-INF/layout/version/languages-tab.xhtml +++ b/server/zanata-war/src/main/webapp/WEB-INF/layout/version/languages-tab.xhtml @@ -418,7 +418,7 @@
  • - + #{msgs['jsf.iteration.MTMerge']} diff --git a/server/zanata-war/src/main/webapp/iteration/view.xhtml b/server/zanata-war/src/main/webapp/iteration/view.xhtml index bbc66d72137..cccbf1b94e3 100644 --- a/server/zanata-war/src/main/webapp/iteration/view.xhtml +++ b/server/zanata-war/src/main/webapp/iteration/view.xhtml @@ -425,7 +425,7 @@
  • - + #{msgs['jsf.iteration.MTMerge']}