Skip to content

Commit b321dca

Browse files
committed
Group by project in MyDay
1 parent a2b24ad commit b321dca

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

src/helpers/TreeModelHelper.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
import { toJS } from 'mobx';
2+
13
import { ITreeItem, ITreeItemWithParent } from '../types/ITreeItem';
24
import { TaskInMyDay } from '../modules/tasks/models/TaskInMyDay';
35
import TaskModel from '../modules/tasks/models/TaskModel';
46
import TaskFactory from '../modules/tasks/TaskFactory';
7+
import ProjectModel from '../modules/projects/models/ProjectModel';
8+
9+
// @ts-ignore TODO remove
10+
window.toJS = toJS;
511

612
const TreeModelHelper = {
713
getPathToNode<T extends ITreeItemWithParent = ITreeItemWithParent>(node: T) {
@@ -17,6 +23,48 @@ const TreeModelHelper = {
1723
return result;
1824
},
1925

26+
copyItemsToTreeUnderProject(
27+
project: ProjectModel | undefined,
28+
sourceTree: TaskModel[],
29+
destTree: TaskInMyDay[],
30+
keysToNode: string[]
31+
): boolean {
32+
if (!project) {
33+
return false;
34+
}
35+
36+
let destProject = destTree.find((node) => node.key === project.key);
37+
if (!destProject) {
38+
destProject = TaskFactory.createTaskModelProxy(
39+
new TaskModel({
40+
key: project.key,
41+
projectId: project.key,
42+
title: project.title,
43+
active: false,
44+
checked: false,
45+
children: [],
46+
datesInProgress: [],
47+
details: [],
48+
expanded: true,
49+
inMyDay: new Date().toString(),
50+
parent: null,
51+
time: [],
52+
withoutActions: true,
53+
})
54+
);
55+
destTree.push(destProject);
56+
}
57+
58+
return TreeModelHelper.copyItemsToTree(
59+
sourceTree,
60+
destProject.children,
61+
keysToNode
62+
);
63+
},
64+
65+
/**
66+
* Make a copy of tasks to 'My Day'
67+
*/
2068
copyItemsToTree(
2169
sourceTree: TaskModel[],
2270
destTree: TaskInMyDay[],

src/modules/tasks/TaskStore.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import TaskModel, { ITimeRangeModel } from './models/TaskModel';
55
import TasksByProject from '../../modules/tasks/models/TasksByProject';
66
import TreeModelHelper from '../../helpers/TreeModelHelper';
77
import BadgeService from '../BadgeService';
8-
import { RootStore } from '../RootStore';
8+
import rootStore, { RootStore } from '../RootStore';
99
import GaService from '../../services/gaService/GaService';
1010
import {
1111
EEventCategory,
@@ -98,7 +98,8 @@ export default class TaskStore {
9898
// @ts-ignore
9999
const pathToNode = TreeModelHelper.getPathToNode(task);
100100

101-
TreeModelHelper.copyItemsToTree(
101+
TreeModelHelper.copyItemsToTreeUnderProject(
102+
rootStore.projectStore.get(task.projectId),
102103
this.tasks[task.projectId],
103104
// @ts-ignore
104105
this.tasks[DEFAULT_PROJECT_ID.MyDay],

src/modules/tasks/models/TaskModel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export default class TaskModel extends AbstractModel
6363
time: ITimeRangeModel[] = [];
6464
datesInProgress: Date[] = [];
6565
details: string = '';
66+
withoutActions: boolean = false; // TODO make a new class
6667

6768
constructor(props: IJsonTaskModel | TaskModel) {
6869
super();

0 commit comments

Comments
 (0)