From 586f371ea59f8ca6fc3ad2d9e76173cf0b947351 Mon Sep 17 00:00:00 2001 From: michaelost Date: Mon, 23 Oct 2017 17:22:35 +0300 Subject: [PATCH 01/14] commit --- src/components/Header/Task.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Header/Task.js b/src/components/Header/Task.js index 9900583..9b6d5ba 100644 --- a/src/components/Header/Task.js +++ b/src/components/Header/Task.js @@ -40,7 +40,8 @@ class Task extends React.Component { }, payload: checked, }); - + console.log('form', form); + console.log('field', field) actionToggleTask({ form, field, checked }); } From 1a808c7e9781102f919790c2152b931626f7497d Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 15:03:57 +0300 Subject: [PATCH 02/14] log --- src/actions/Tasks.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index 2db83b5..df58b88 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -31,6 +31,9 @@ const recalculateTime = (field, getState, selector, dispatch, form) => { changeWrapper({ dispatch, form, field: `${field}.minimumMinutes`, payload: sumTasks.min }); changeWrapper({ dispatch, form, field: `${field}.maximumMinutes`, payload: sumTasks.max }); + console.log('form', form); + console.log('field', field); + console.log('state', getState()); const parentField = field.replace(/.?tasks\[\d+\]$/, ''); From b44a4766a0b1987c6ad85ab67b4d5c4a9a7a43de Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 17:15:32 +0300 Subject: [PATCH 03/14] console.log --- src/actions/Tasks.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index df58b88..7626530 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -44,7 +44,17 @@ export const actionToggleTask = ({ form, field }) => (dispatch, getState) => { const selector = formValueSelector(form); const parentField = field.replace(/.?tasks\[\d+\]$/, ''); - + // find out task index + const match = field.split('.'); + const task = match && match[0]; + const replaceExp = /(task\[)|(\])/g; + const taskIndex = parseInt(task.replace(replaceExp), 10); + if (taskIndex >= 0) { + // toggle all subtasks + const subtasks = getState().form[ESTIMATE_FORM].values.tasks[index].tasks + const subtaskCount = subtasks && subtasks.length; + console.log('subtaskCount'); + } recalculateTime(parentField, getState, selector, dispatch, form); dispatch(actionGeneralCalculation({ form })); From c649ebbdd964d78039535ef2035dfb3e052b06e5 Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 17:19:45 +0300 Subject: [PATCH 04/14] toggle subtasks --- src/actions/Tasks.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index 7626530..7bbfbd7 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -47,13 +47,19 @@ export const actionToggleTask = ({ form, field }) => // find out task index const match = field.split('.'); const task = match && match[0]; - const replaceExp = /(task\[)|(\])/g; + const replaceExp = /(tasks\[)|(\])/g; const taskIndex = parseInt(task.replace(replaceExp), 10); if (taskIndex >= 0) { // toggle all subtasks const subtasks = getState().form[ESTIMATE_FORM].values.tasks[index].tasks const subtaskCount = subtasks && subtasks.length; - console.log('subtaskCount'); + console.log(subtaskCount); + if (subtaskCount) { + for(let i = 0; i < subtaskCount; i++ ) { + const subtaskField = `tasks[${taskIndex}].tasks[${i}]`; + changeWrapper({ dispatch, form, field: subtaskField , payload: { isChecked: false } }); + } + } } recalculateTime(parentField, getState, selector, dispatch, form); From d01bab2b532c33cc03abc212732211f9c91081be Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 17:28:51 +0300 Subject: [PATCH 05/14] console.log --- src/actions/Tasks.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index 7bbfbd7..ca97664 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -49,6 +49,10 @@ export const actionToggleTask = ({ form, field }) => const task = match && match[0]; const replaceExp = /(tasks\[)|(\])/g; const taskIndex = parseInt(task.replace(replaceExp), 10); + console.log('!!!!!!!!!'); + console.log(taskIndex); + console.log(task); + console.log('!!!!!!!!!'); if (taskIndex >= 0) { // toggle all subtasks const subtasks = getState().form[ESTIMATE_FORM].values.tasks[index].tasks From baed12c1b87464c475affc77e59d85cb77f1f0c6 Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 17:33:00 +0300 Subject: [PATCH 06/14] m --- src/actions/Tasks.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index ca97664..89cb91e 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -34,16 +34,6 @@ const recalculateTime = (field, getState, selector, dispatch, form) => { console.log('form', form); console.log('field', field); console.log('state', getState()); - - const parentField = field.replace(/.?tasks\[\d+\]$/, ''); - - return recalculateTime(parentField, getState, selector, dispatch, form); -}; - -export const actionToggleTask = ({ form, field }) => - (dispatch, getState) => { - const selector = formValueSelector(form); - const parentField = field.replace(/.?tasks\[\d+\]$/, ''); // find out task index const match = field.split('.'); const task = match && match[0]; @@ -65,6 +55,16 @@ export const actionToggleTask = ({ form, field }) => } } } + const parentField = field.replace(/.?tasks\[\d+\]$/, ''); + + return recalculateTime(parentField, getState, selector, dispatch, form); +}; + +export const actionToggleTask = ({ form, field }) => + (dispatch, getState) => { + const selector = formValueSelector(form); + const parentField = field.replace(/.?tasks\[\d+\]$/, ''); + recalculateTime(parentField, getState, selector, dispatch, form); dispatch(actionGeneralCalculation({ form })); From 01c32a28b1b5927cefd9ca4620a28f52f4905c9f Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 17:40:19 +0300 Subject: [PATCH 07/14] m --- src/actions/Tasks.js | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index 89cb91e..dce62c3 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -34,6 +34,17 @@ const recalculateTime = (field, getState, selector, dispatch, form) => { console.log('form', form); console.log('field', field); console.log('state', getState()); + + const parentField = field.replace(/.?tasks\[\d+\]$/, ''); + + return recalculateTime(parentField, getState, selector, dispatch, form); +}; + +export const actionToggleTask = ({ form, field }) => + (dispatch, getState) => { + const selector = formValueSelector(form); + const parentField = field.replace(/.?tasks\[\d+\]$/, ''); + console.log('actionToggleTask'); // find out task index const match = field.split('.'); const task = match && match[0]; @@ -55,16 +66,6 @@ const recalculateTime = (field, getState, selector, dispatch, form) => { } } } - const parentField = field.replace(/.?tasks\[\d+\]$/, ''); - - return recalculateTime(parentField, getState, selector, dispatch, form); -}; - -export const actionToggleTask = ({ form, field }) => - (dispatch, getState) => { - const selector = formValueSelector(form); - const parentField = field.replace(/.?tasks\[\d+\]$/, ''); - recalculateTime(parentField, getState, selector, dispatch, form); dispatch(actionGeneralCalculation({ form })); From 7301da629cb3db1b0f34ac1c86b9d3f7fee8c1e7 Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 18:21:43 +0300 Subject: [PATCH 08/14] m --- src/actions/Tasks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index dce62c3..a5eacb7 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -49,7 +49,7 @@ export const actionToggleTask = ({ form, field }) => const match = field.split('.'); const task = match && match[0]; const replaceExp = /(tasks\[)|(\])/g; - const taskIndex = parseInt(task.replace(replaceExp), 10); + const taskIndex = parseInt(task.replace(replaceExp, ''), 10); console.log('!!!!!!!!!'); console.log(taskIndex); console.log(task); From 8945998dce88cb7a06667c0af60a4ad25eb06efd Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 18:25:30 +0300 Subject: [PATCH 09/14] m --- src/actions/Tasks.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index a5eacb7..6045e0a 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -54,14 +54,17 @@ export const actionToggleTask = ({ form, field }) => console.log(taskIndex); console.log(task); console.log('!!!!!!!!!'); - if (taskIndex >= 0) { + if (taskIndex >= 0 && match.length < 2) { // toggle all subtasks - const subtasks = getState().form[ESTIMATE_FORM].values.tasks[index].tasks + const task = getState().form[ESTIMATE_FORM].values.tasks[index]; + console.log('task', task); + const subtasks = task && task.tasks const subtaskCount = subtasks && subtasks.length; console.log(subtaskCount); if (subtaskCount) { for(let i = 0; i < subtaskCount; i++ ) { const subtaskField = `tasks[${taskIndex}].tasks[${i}]`; + const checked = task.isChecked; changeWrapper({ dispatch, form, field: subtaskField , payload: { isChecked: false } }); } } From c07ee25a9ba79f7e8773f03e75eecfd2e99d5df7 Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 18:29:37 +0300 Subject: [PATCH 10/14] m --- src/actions/Tasks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index 6045e0a..8ef8c0f 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -56,7 +56,7 @@ export const actionToggleTask = ({ form, field }) => console.log('!!!!!!!!!'); if (taskIndex >= 0 && match.length < 2) { // toggle all subtasks - const task = getState().form[ESTIMATE_FORM].values.tasks[index]; + const task = getState().form['ESTIMATE_FORM'].values.tasks[index]; console.log('task', task); const subtasks = task && task.tasks const subtaskCount = subtasks && subtasks.length; From 0f5ac37990367a155ded559905da08d8c3230229 Mon Sep 17 00:00:00 2001 From: michaelost Date: Tue, 24 Oct 2017 18:36:37 +0300 Subject: [PATCH 11/14] m --- src/actions/Tasks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index 8ef8c0f..bc61721 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -56,7 +56,7 @@ export const actionToggleTask = ({ form, field }) => console.log('!!!!!!!!!'); if (taskIndex >= 0 && match.length < 2) { // toggle all subtasks - const task = getState().form['ESTIMATE_FORM'].values.tasks[index]; + const task = getState().form['ESTIMATE_FORM'].values.tasks[taskIndex]; console.log('task', task); const subtasks = task && task.tasks const subtaskCount = subtasks && subtasks.length; From 4d856400f40ac2f26142fd6d4f3165afaad94df5 Mon Sep 17 00:00:00 2001 From: michaelost Date: Wed, 25 Oct 2017 11:14:08 +0300 Subject: [PATCH 12/14] subtasks checked is toggled with task --- src/actions/Tasks.js | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/actions/Tasks.js b/src/actions/Tasks.js index bc61721..57ce456 100644 --- a/src/actions/Tasks.js +++ b/src/actions/Tasks.js @@ -8,7 +8,7 @@ import { actionGeneralCalculation } from './Calculation'; const changeWrapper = ({ dispatch, form, field, payload, touch = true }) => { - dispatch({ + return dispatch({ type: '@@redux-form/CHANGE', meta: { form, @@ -24,16 +24,16 @@ const recalculateTime = (field, getState, selector, dispatch, form) => { if (!field) return null; const currentTask = selector(getState(), field); - const sumTasks = currentTask.tasks.filter(({ isChecked }) => isChecked).reduce((sum, item) => ({ - min: sum.min + item.minimumMinutes, - max: sum.max + item.maximumMinutes, - }), { min: 0, max: 0 }); + const { tasks, maximumMinutes, minimumMinutes } = currentTask; + const sumTasks = tasks ? + tasks.filter(({ isChecked }) => isChecked).reduce((sum, item) => ({ + min: sum.min + item.minimumMinutes, + max: sum.max + item.maximumMinutes, + }), { min: 0, max: 0 }) + : { min: minimumMinutes, max: maximumMinutes } changeWrapper({ dispatch, form, field: `${field}.minimumMinutes`, payload: sumTasks.min }); changeWrapper({ dispatch, form, field: `${field}.maximumMinutes`, payload: sumTasks.max }); - console.log('form', form); - console.log('field', field); - console.log('state', getState()); const parentField = field.replace(/.?tasks\[\d+\]$/, ''); @@ -41,36 +41,34 @@ const recalculateTime = (field, getState, selector, dispatch, form) => { }; export const actionToggleTask = ({ form, field }) => - (dispatch, getState) => { + async (dispatch, getState) => { const selector = formValueSelector(form); const parentField = field.replace(/.?tasks\[\d+\]$/, ''); - console.log('actionToggleTask'); // find out task index const match = field.split('.'); const task = match && match[0]; const replaceExp = /(tasks\[)|(\])/g; const taskIndex = parseInt(task.replace(replaceExp, ''), 10); - console.log('!!!!!!!!!'); - console.log(taskIndex); - console.log(task); - console.log('!!!!!!!!!'); if (taskIndex >= 0 && match.length < 2) { // toggle all subtasks const task = getState().form['ESTIMATE_FORM'].values.tasks[taskIndex]; - console.log('task', task); const subtasks = task && task.tasks const subtaskCount = subtasks && subtasks.length; - console.log(subtaskCount); if (subtaskCount) { + const { isChecked } = task; + const allChanges = []; for(let i = 0; i < subtaskCount; i++ ) { const subtaskField = `tasks[${taskIndex}].tasks[${i}]`; - const checked = task.isChecked; - changeWrapper({ dispatch, form, field: subtaskField , payload: { isChecked: false } }); + const subTask = Object.assign({}, subtasks[i], { isChecked }); + allChanges.push(changeWrapper({ dispatch, form, field: subtaskField , payload: subTask })) } + await Promise.all(allChanges); + recalculateTime(`tasks[${taskIndex}].tasks[${0}]`, getState, selector, dispatch, form); + } + } else { + recalculateTime(parentField, getState, selector, dispatch, form); } - recalculateTime(parentField, getState, selector, dispatch, form); - dispatch(actionGeneralCalculation({ form })); }; From bea0c11b3f51121d33f5712c3fa5f759fd24274f Mon Sep 17 00:00:00 2001 From: michaelost Date: Wed, 25 Oct 2017 12:33:05 +0300 Subject: [PATCH 13/14] only checked tasks are passed to estimate --- src/components/Header/Task.js | 5 ++++- src/utils/spreadsheets/sheetHelper.js | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/Header/Task.js b/src/components/Header/Task.js index 9b6d5ba..bbc06d0 100644 --- a/src/components/Header/Task.js +++ b/src/components/Header/Task.js @@ -41,7 +41,10 @@ class Task extends React.Component { payload: checked, }); console.log('form', form); - console.log('field', field) + console.log('field', field); + console.log('context', this.context); + const exp = /task(\[){1,1}[0-9]+\]{1,1}/; + const tasks = field.split('.')[0]; actionToggleTask({ form, field, checked }); } diff --git a/src/utils/spreadsheets/sheetHelper.js b/src/utils/spreadsheets/sheetHelper.js index d3a35db..6704bbd 100644 --- a/src/utils/spreadsheets/sheetHelper.js +++ b/src/utils/spreadsheets/sheetHelper.js @@ -31,6 +31,7 @@ const createTaskTable = (startRow ,tasks, moneyRate) => { let totalMax = 0; tasks.forEach((t,i) => { + if (!t.isChecked) return; totalMin += t.minimumMinutes / 60; totalMax += t.maximumMinutes / 60; const { maximumMinutes , minimumMinutes, taskName } = t; @@ -52,6 +53,7 @@ const createTaskTable = (startRow ,tasks, moneyRate) => { // prink subtasks if (t.tasks) { t.tasks.forEach((subTask,j) => { + if (!subTask.isChecked) return; const subTaskCells = []; const { maximumMinutes , minimumMinutes, taskName } = subTask; subTaskCells.push(formatCell(createCell(`${i+1}.${j+1}. ${taskName}`), subtaskNameOptions)); From 4703ef554da50de14715ec05a828d5b6d0dbc38d Mon Sep 17 00:00:00 2001 From: michaelost Date: Wed, 25 Oct 2017 12:46:13 +0300 Subject: [PATCH 14/14] remove logs --- src/components/Header/Task.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/Header/Task.js b/src/components/Header/Task.js index bbc06d0..ff47d06 100644 --- a/src/components/Header/Task.js +++ b/src/components/Header/Task.js @@ -40,9 +40,6 @@ class Task extends React.Component { }, payload: checked, }); - console.log('form', form); - console.log('field', field); - console.log('context', this.context); const exp = /task(\[){1,1}[0-9]+\]{1,1}/; const tasks = field.split('.')[0]; actionToggleTask({ form, field, checked });