From 1e592385107d4c1abb57c03ef9a091c52dc5bcfe Mon Sep 17 00:00:00 2001
From: Alex Eng
Date: Mon, 3 Sep 2018 15:49:14 +1000
Subject: [PATCH] hook selectedDocId and selectedLocaleId into MTMerge
container
---
.../service/MachineTranslationResource.java | 4 +-
.../src/app/actions/version-actions.js | 9 +-
.../app/components/MTMerge/MTMerge.story.tsx | 2 +-
.../app/components/MTMerge/MTMergeModal.tsx | 24 ++++-
.../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 +-
12 files changed, 126 insertions(+), 62 deletions(-)
diff --git a/server/services/src/main/java/org/zanata/rest/service/MachineTranslationResource.java b/server/services/src/main/java/org/zanata/rest/service/MachineTranslationResource.java
index f7da3a5e95..ae5bfae860 100644
--- a/server/services/src/main/java/org/zanata/rest/service/MachineTranslationResource.java
+++ b/server/services/src/main/java/org/zanata/rest/service/MachineTranslationResource.java
@@ -169,11 +169,11 @@ public Response prefillProjectVersionByMachineTranslation(
@CheckRole("mt-bulk")
@POST
- @Path("project/{projectSlug}/version/{versionSlug}/document/{docId}")
+ @Path("project/{projectSlug}/version/{versionSlug}/document")
public Response prefillDocumentByMachineTranslation(
@PathParam("projectSlug") String projectSlug,
@PathParam("versionSlug") String versionSlug,
- @PathParam("docId") String docId,
+ @QueryParam("docId") String docId,
MachineTranslationPrefill prefillRequest) {
if (mtServiceURL == null) {
return Response.status(Response.Status.SERVICE_UNAVAILABLE).build();
diff --git a/server/zanata-frontend/src/app/actions/version-actions.js b/server/zanata-frontend/src/app/actions/version-actions.js
index 1dac5f2742..5f6817ca58 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)
@@ -141,7 +141,10 @@ const toProjectVersionString = (projectVersion) => {
* @returns {APIAction} redux api action object FIXME
*/
export function mergeVersionFromMT (projectSlug, versionSlug, mergeOptions) {
- const endpoint = `${apiUrl}/mt/project/${projectSlug}/version/${versionSlug}`
+ const api = `${apiUrl}/mt/project/${projectSlug}/version/${versionSlug}` +
+ (mergeOptions.selectedDocId
+ ? `/document?docId=${mergeOptions.selectedDocId}` : '')
+
/** @type {APITypes} */
const types = [VERSION_MT_MERGE_REQUEST,
{
@@ -167,7 +170,7 @@ export function mergeVersionFromMT (projectSlug, versionSlug, mergeOptions) {
overwriteFuzzy: true, // mergeOptions.overwriteFuzzy
}
const apiRequest = buildAPIRequest(
- endpoint, 'POST', getJsonHeaders(), types, JSON.stringify(serverOptions)
+ api, 'POST', getJsonHeaders(), types, JSON.stringify(serverOptions)
)
return {
[CALL_API]: apiRequest
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 78eccf7510..8fa7ac2a02 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,15 +81,20 @@ export class MTMergeModal extends Component {
public render() {
const {
- showMTMerge,
+ show,
projectSlug,
versionSlug,
availableLocales,
processStatus,
onCancelMTMerge,
queryMTMergeProgress,
+ docId,
+ localeId
} = this.props
- const enableSubmit = this.state.checkedLocales.length > 0 && !processStatus
+
+ const isSingleDocument = docId && localeId
+ const enableSubmit = isSingleDocument ? true
+ : (this.state.checkedLocales.length > 0 && !processStatus)
const queryProgress = () => {
queryMTMergeProgress(processStatus ? processStatus.url : '')
}
@@ -101,7 +109,7 @@ export class MTMergeModal extends Component {
return (
{
: (
{
}
private handleOk = (_: React.MouseEvent) => {
+ const isSingleDoc = this.props.docId && this.props.localeId
+ const locales = isSingleDoc && this.props.localeId ?
+ [this.props.localeId] : this.state.checkedLocales
const opts: MTMergeAPIOptions = {
- selectedLocales: this.state.checkedLocales,
+ selectedDocId: isSingleDoc ? this.props.docId : undefined,
+ selectedLocales: locales,
saveAs: this.state.saveAs,
overwriteFuzzy: this.state.overwriteFuzzy
}
diff --git a/server/zanata-frontend/src/app/components/MTMerge/MTMergeOptions.tsx b/server/zanata-frontend/src/app/components/MTMerge/MTMergeOptions.tsx
index 71e618e29a..d34a445338 100644
--- a/server/zanata-frontend/src/app/components/MTMerge/MTMergeOptions.tsx
+++ b/server/zanata-frontend/src/app/components/MTMerge/MTMergeOptions.tsx
@@ -26,6 +26,8 @@ export type MTMergeOptionsParams = Readonly<{
allowMultiple: boolean
projectSlug: string
versionSlug: string
+ docId?: string
+ localeId?: LocaleId
availableLocales: Locale[]
checkedLocales: LocaleId[]
saveAs: MTTranslationStatus
@@ -46,9 +48,13 @@ export class MTMergeOptions extends Component {
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 d4ed92e155..1a51b33f10 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 a773e81d53..8d71fe3ddd 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 8103b43189..98914fa890 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?: LocaleId
+ 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 f25b6acc57..35e06e35d9 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 8bb694adcc..38981a1d8b 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 fd15c1ddb7..672869e541 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 bbc66d7213..cccbf1b94e 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']}