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']}