evmtools-node 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/.prettierrc +9 -0
  2. package/.vscode/settings.json +20 -0
  3. package/LICENSE +201 -0
  4. package/README.md +71 -0
  5. package/class.pu +62 -0
  6. package/dist/common/index.d.ts +4 -0
  7. package/dist/common/index.d.ts.map +1 -0
  8. package/dist/common/index.js +20 -0
  9. package/dist/common/index.js.map +1 -0
  10. package/dist/common/myStyles.d.ts +10 -0
  11. package/dist/common/myStyles.d.ts.map +1 -0
  12. package/dist/common/myStyles.js +52 -0
  13. package/dist/common/myStyles.js.map +1 -0
  14. package/dist/common/styles.d.ts +12 -0
  15. package/dist/common/styles.d.ts.map +1 -0
  16. package/dist/common/styles.js +30 -0
  17. package/dist/common/styles.js.map +1 -0
  18. package/dist/common/utils.d.ts +53 -0
  19. package/dist/common/utils.d.ts.map +1 -0
  20. package/dist/common/utils.js +163 -0
  21. package/dist/common/utils.js.map +1 -0
  22. package/dist/domain/Project.d.ts +98 -0
  23. package/dist/domain/Project.d.ts.map +1 -0
  24. package/dist/domain/Project.js +291 -0
  25. package/dist/domain/Project.js.map +1 -0
  26. package/dist/domain/ProjectCreator.d.ts +8 -0
  27. package/dist/domain/ProjectCreator.d.ts.map +1 -0
  28. package/dist/domain/ProjectCreator.js +3 -0
  29. package/dist/domain/ProjectCreator.js.map +1 -0
  30. package/dist/domain/ProjectProgressCreator.d.ts +5 -0
  31. package/dist/domain/ProjectProgressCreator.d.ts.map +1 -0
  32. package/dist/domain/ProjectProgressCreator.js +3 -0
  33. package/dist/domain/ProjectProgressCreator.js.map +1 -0
  34. package/dist/domain/ProjectRepository.d.ts +5 -0
  35. package/dist/domain/ProjectRepository.d.ts.map +1 -0
  36. package/dist/domain/ProjectRepository.js +3 -0
  37. package/dist/domain/ProjectRepository.js.map +1 -0
  38. package/dist/domain/ProjectService.d.ts +59 -0
  39. package/dist/domain/ProjectService.d.ts.map +1 -0
  40. package/dist/domain/ProjectService.js +216 -0
  41. package/dist/domain/ProjectService.js.map +1 -0
  42. package/dist/domain/TaskNode.d.ts +37 -0
  43. package/dist/domain/TaskNode.d.ts.map +1 -0
  44. package/dist/domain/TaskNode.js +54 -0
  45. package/dist/domain/TaskNode.js.map +1 -0
  46. package/dist/domain/TaskRow.d.ts +222 -0
  47. package/dist/domain/TaskRow.d.ts.map +1 -0
  48. package/dist/domain/TaskRow.js +260 -0
  49. package/dist/domain/TaskRow.js.map +1 -0
  50. package/dist/domain/TaskRowCreator.d.ts +11 -0
  51. package/dist/domain/TaskRowCreator.d.ts.map +1 -0
  52. package/dist/domain/TaskRowCreator.js +3 -0
  53. package/dist/domain/TaskRowCreator.js.map +1 -0
  54. package/dist/domain/TaskService.d.ts +18 -0
  55. package/dist/domain/TaskService.d.ts.map +1 -0
  56. package/dist/domain/TaskService.js +56 -0
  57. package/dist/domain/TaskService.js.map +1 -0
  58. package/dist/domain/index.d.ts +9 -0
  59. package/dist/domain/index.d.ts.map +1 -0
  60. package/dist/domain/index.js +25 -0
  61. package/dist/domain/index.js.map +1 -0
  62. package/dist/infrastructure/ExcelBufferProjectCreator.d.ts +9 -0
  63. package/dist/infrastructure/ExcelBufferProjectCreator.d.ts.map +1 -0
  64. package/dist/infrastructure/ExcelBufferProjectCreator.js +23 -0
  65. package/dist/infrastructure/ExcelBufferProjectCreator.js.map +1 -0
  66. package/dist/infrastructure/ExcelProjectCreator.d.ts +8 -0
  67. package/dist/infrastructure/ExcelProjectCreator.d.ts.map +1 -0
  68. package/dist/infrastructure/ExcelProjectCreator.js +31 -0
  69. package/dist/infrastructure/ExcelProjectCreator.js.map +1 -0
  70. package/dist/infrastructure/ExcelTaskRowCreator.d.ts +8 -0
  71. package/dist/infrastructure/ExcelTaskRowCreator.d.ts.map +1 -0
  72. package/dist/infrastructure/ExcelTaskRowCreator.js +24 -0
  73. package/dist/infrastructure/ExcelTaskRowCreator.js.map +1 -0
  74. package/dist/infrastructure/MappingProjectCreator.d.ts +9 -0
  75. package/dist/infrastructure/MappingProjectCreator.d.ts.map +1 -0
  76. package/dist/infrastructure/MappingProjectCreator.js +36 -0
  77. package/dist/infrastructure/MappingProjectCreator.js.map +1 -0
  78. package/dist/infrastructure/ProjectRepositoryImpl.d.ts +6 -0
  79. package/dist/infrastructure/ProjectRepositoryImpl.d.ts.map +1 -0
  80. package/dist/infrastructure/ProjectRepositoryImpl.js +124 -0
  81. package/dist/infrastructure/ProjectRepositoryImpl.js.map +1 -0
  82. package/dist/infrastructure/TaskRowCreatorImpl.d.ts +11 -0
  83. package/dist/infrastructure/TaskRowCreatorImpl.d.ts.map +1 -0
  84. package/dist/infrastructure/TaskRowCreatorImpl.js +135 -0
  85. package/dist/infrastructure/TaskRowCreatorImpl.js.map +1 -0
  86. package/dist/infrastructure/TaskRowFactory.d.ts +9 -0
  87. package/dist/infrastructure/TaskRowFactory.d.ts.map +1 -0
  88. package/dist/infrastructure/TaskRowFactory.js +47 -0
  89. package/dist/infrastructure/TaskRowFactory.js.map +1 -0
  90. package/dist/infrastructure/index.d.ts +9 -0
  91. package/dist/infrastructure/index.d.ts.map +1 -0
  92. package/dist/infrastructure/index.js +25 -0
  93. package/dist/infrastructure/index.js.map +1 -0
  94. package/dist/infrastructure/types.d.ts +29 -0
  95. package/dist/infrastructure/types.d.ts.map +1 -0
  96. package/dist/infrastructure/types.js +66 -0
  97. package/dist/infrastructure/types.js.map +1 -0
  98. package/dist/logger.d.ts +7 -0
  99. package/dist/logger.d.ts.map +1 -0
  100. package/dist/logger.js +42 -0
  101. package/dist/logger.js.map +1 -0
  102. package/dist/presentation/cli-pbevm-diff.d.ts +2 -0
  103. package/dist/presentation/cli-pbevm-diff.d.ts.map +1 -0
  104. package/dist/presentation/cli-pbevm-diff.js +39 -0
  105. package/dist/presentation/cli-pbevm-diff.js.map +1 -0
  106. package/dist/presentation/cli-pbevm-show-project.d.ts +2 -0
  107. package/dist/presentation/cli-pbevm-show-project.d.ts.map +1 -0
  108. package/dist/presentation/cli-pbevm-show-project.js +38 -0
  109. package/dist/presentation/cli-pbevm-show-project.js.map +1 -0
  110. package/dist/presentation/cli-pbevm-summary.d.ts +3 -0
  111. package/dist/presentation/cli-pbevm-summary.d.ts.map +1 -0
  112. package/dist/presentation/cli-pbevm-summary.js +35 -0
  113. package/dist/presentation/cli-pbevm-summary.js.map +1 -0
  114. package/dist/presentation/cli-test.d.ts +3 -0
  115. package/dist/presentation/cli-test.d.ts.map +1 -0
  116. package/dist/presentation/cli-test.js +123 -0
  117. package/dist/presentation/cli-test.js.map +1 -0
  118. package/dist/presentation/project-test2.d.ts +22 -0
  119. package/dist/presentation/project-test2.d.ts.map +1 -0
  120. package/dist/presentation/project-test2.js +106 -0
  121. package/dist/presentation/project-test2.js.map +1 -0
  122. package/dist/usercase/index.d.ts +4 -0
  123. package/dist/usercase/index.d.ts.map +1 -0
  124. package/dist/usercase/index.js +20 -0
  125. package/dist/usercase/index.js.map +1 -0
  126. package/dist/usercase/pbevm-diff-usercase.d.ts +10 -0
  127. package/dist/usercase/pbevm-diff-usercase.d.ts.map +1 -0
  128. package/dist/usercase/pbevm-diff-usercase.js +67 -0
  129. package/dist/usercase/pbevm-diff-usercase.js.map +1 -0
  130. package/dist/usercase/pbevm-show-project-usecase.d.ts +10 -0
  131. package/dist/usercase/pbevm-show-project-usecase.d.ts.map +1 -0
  132. package/dist/usercase/pbevm-show-project-usecase.js +19 -0
  133. package/dist/usercase/pbevm-show-project-usecase.js.map +1 -0
  134. package/dist/usercase/pbevm-summary-usercase.d.ts +8 -0
  135. package/dist/usercase/pbevm-summary-usercase.d.ts.map +1 -0
  136. package/dist/usercase/pbevm-summary-usercase.js +47 -0
  137. package/dist/usercase/pbevm-summary-usercase.js.map +1 -0
  138. package/eslint.config.mjs +25 -0
  139. package/now.xlsm +0 -0
  140. package/package.json +71 -0
  141. package/prev.xlsm +0 -0
@@ -0,0 +1,59 @@
1
+ import { Project } from './Project';
2
+ import { TaskRow } from './TaskRow';
3
+ export declare class ProjectService {
4
+ calculateTaskDiffs(now: Project, prev: Project): TaskDiff[];
5
+ calculateProjectDiffs(taskDiffs: TaskDiff[]): ProjectDiff[];
6
+ calculateAssigneeDiffs(taskDiffs: TaskDiff[]): AssigneeDiff[];
7
+ /**
8
+ * 親を遡って、名前を"/"でjoinする
9
+ * @param task 子のタスク
10
+ * @param taskMap 親のタスクIDも存在する、<id,TaskRow>なMap
11
+ * @returns
12
+ */
13
+ private buildFullTaskName;
14
+ }
15
+ export type DiffType = 'modified' | 'added' | 'removed' | 'none';
16
+ export type TaskDiffBase = {
17
+ readonly prevPV?: number;
18
+ readonly currentPV?: number;
19
+ readonly prevEV?: number;
20
+ readonly currentEV?: number;
21
+ readonly deltaPV?: number;
22
+ readonly deltaEV?: number;
23
+ readonly hasDiff: boolean;
24
+ readonly finished: boolean;
25
+ };
26
+ export type ProjectDiff = {
27
+ modifiedCount: number;
28
+ addedCount: number;
29
+ removedCount: number;
30
+ } & TaskDiffBase;
31
+ export type AssigneeDiff = {
32
+ modifiedCount: number;
33
+ addedCount: number;
34
+ removedCount: number;
35
+ readonly assignee?: string;
36
+ } & TaskDiffBase;
37
+ export type TaskDiff = {
38
+ readonly id: number;
39
+ readonly name: string;
40
+ readonly fullName: string;
41
+ readonly assignee?: string;
42
+ readonly parentId?: number;
43
+ readonly deltaProgressRate?: number;
44
+ readonly prevProgressRate?: number;
45
+ readonly currentProgressRate?: number;
46
+ readonly hasProgressRateDiff: boolean;
47
+ readonly hasPvDiff: boolean;
48
+ readonly hasEvDiff: boolean;
49
+ readonly diffType: DiffType;
50
+ readonly isOverdueAt: boolean;
51
+ readonly prevTask?: TaskRow;
52
+ readonly currentTask?: TaskRow;
53
+ readonly prevBaseDate?: Date;
54
+ readonly currentBaseDate?: Date;
55
+ readonly baseDate?: Date;
56
+ readonly daysOverdueAt?: number;
57
+ readonly daysStrOverdueAt?: string;
58
+ } & TaskDiffBase;
59
+ //# sourceMappingURL=ProjectService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectService.d.ts","sourceRoot":"","sources":["../../src/domain/ProjectService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,qBAAa,cAAc;IACvB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE;IA6I3D,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;IA4B3D,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE;IAgC7D;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAW5B;AA2BD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEhE,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CAEvB,GAAG,YAAY,CAAA;AAEhB,MAAM,MAAM,YAAY,GAAG;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC7B,GAAG,YAAY,CAAA;AAEhB,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACrC,GAAG,YAAY,CAAA"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProjectService = void 0;
4
+ const tidy_1 = require("@tidyjs/tidy");
5
+ const utils_1 = require("../common/utils");
6
+ class ProjectService {
7
+ calculateTaskDiffs(now, prev) {
8
+ const prevTasks = prev.toTaskRows();
9
+ // key:TaskRow#id, value: TaskRow のMap
10
+ const prevTasksMap = new Map(prevTasks.map((row) => [row.id, row]));
11
+ const nowTasks = now.toTaskRows();
12
+ const nowTasksMap = new Map(nowTasks.map((row) => [row.id, row]));
13
+ const diffs = [];
14
+ // 変更 or 追加 の処理を1ループにまとめる
15
+ // nowTaskはあるがprevTaskはない、時がある
16
+ for (const nowTask of nowTasks) {
17
+ // isLeaf なタスクのみ後続処理
18
+ if (!nowTask.isLeaf)
19
+ continue;
20
+ const prevTask = prevTasksMap.get(nowTask.id);
21
+ const isNew = !prevTask; // prevTaskがなかったらNew
22
+ const deltaProgressRate = delta(nowTask.progressRate, prevTask?.progressRate);
23
+ const deltaPV = delta(nowTask.pv, prevTask?.pv);
24
+ const deltaEV = delta(nowTask.ev, prevTask?.ev);
25
+ // const deltaSPI = delta(nowTask.spi, prevTask.spi)
26
+ const hasAnyChange = isNew ||
27
+ [deltaProgressRate, deltaPV, deltaEV].some((d) => d !== undefined && d !== 0);
28
+ // 個々の変更アリナシ
29
+ const hasProgressRateDiff = deltaProgressRate !== undefined && deltaProgressRate !== 0;
30
+ const hasPvDiff = deltaPV !== undefined && deltaPV !== 0;
31
+ const hasEvDiff = deltaEV !== undefined && deltaEV !== 0;
32
+ const fullName = this.buildFullTaskName(nowTask, nowTasksMap);
33
+ const isOverdueAt = nowTask.isOverdueAt(now.baseDate);
34
+ const prevBaseDate = prevTask ? prev.baseDate : undefined;
35
+ const currentBaseDate = now.baseDate;
36
+ const baseDate = currentBaseDate;
37
+ const daysOverdueAt = (0, utils_1.formatRelativeDaysNumber)(baseDate, nowTask.endDate);
38
+ const daysStrOverdueAt = (0, utils_1.formatRelativeDays)(baseDate, nowTask.endDate);
39
+ diffs.push({
40
+ id: nowTask.id,
41
+ name: nowTask.name,
42
+ fullName,
43
+ assignee: nowTask.assignee,
44
+ parentId: nowTask.parentId,
45
+ deltaProgressRate,
46
+ deltaPV,
47
+ deltaEV,
48
+ prevPV: prevTask?.pv,
49
+ prevEV: prevTask?.ev,
50
+ currentPV: nowTask.pv,
51
+ currentEV: nowTask.ev,
52
+ prevProgressRate: prevTask?.progressRate,
53
+ currentProgressRate: nowTask.progressRate,
54
+ hasDiff: hasAnyChange,
55
+ hasProgressRateDiff,
56
+ hasPvDiff,
57
+ hasEvDiff,
58
+ diffType: isNew ? 'added' : hasAnyChange ? 'modified' : 'none',
59
+ finished: nowTask.finished,
60
+ isOverdueAt,
61
+ prevBaseDate,
62
+ currentBaseDate,
63
+ baseDate,
64
+ daysOverdueAt,
65
+ daysStrOverdueAt,
66
+ currentTask: nowTask,
67
+ prevTask,
68
+ });
69
+ // console.log(nowTask.id)
70
+ // console.log(nowTask.plotMap)
71
+ }
72
+ // 削除されたタスク
73
+ for (const prevTask of prevTasks) {
74
+ // isLeaf かつ nowにないタスクのみ後続処理
75
+ if (!prevTask.isLeaf || nowTasksMap.has(prevTask.id))
76
+ continue;
77
+ const deltaProgressRate = delta(undefined, prevTask.progressRate);
78
+ const deltaPV = delta(undefined, prevTask.pv);
79
+ const deltaEV = delta(undefined, prevTask.ev);
80
+ // 個々の変更アリナシ
81
+ const hasProgressRateDiff = deltaProgressRate !== undefined && deltaProgressRate !== 0;
82
+ const hasPvDiff = deltaPV !== undefined && deltaPV !== 0;
83
+ const hasEvDiff = deltaEV !== undefined && deltaEV !== 0;
84
+ const fullName = this.buildFullTaskName(prevTask, prevTasksMap);
85
+ const isOverdueAt = prevTask.isOverdueAt(prev.baseDate);
86
+ const prevBaseDate = prev.baseDate;
87
+ const currentBaseDate = undefined;
88
+ const baseDate = prevBaseDate;
89
+ const daysOverdueAt = (0, utils_1.formatRelativeDaysNumber)(baseDate, prevTask.endDate);
90
+ const daysStrOverdueAt = (0, utils_1.formatRelativeDays)(baseDate, prevTask.endDate);
91
+ diffs.push({
92
+ id: prevTask.id,
93
+ name: prevTask.name,
94
+ fullName,
95
+ assignee: prevTask.assignee,
96
+ parentId: prevTask.parentId,
97
+ deltaProgressRate,
98
+ deltaPV,
99
+ deltaEV,
100
+ prevPV: prevTask.pv,
101
+ prevEV: prevTask.ev,
102
+ currentPV: undefined,
103
+ currentEV: undefined,
104
+ prevProgressRate: prevTask.progressRate,
105
+ currentProgressRate: undefined,
106
+ hasDiff: true, // 削除も常に差分ありとみなす
107
+ hasProgressRateDiff,
108
+ hasPvDiff,
109
+ hasEvDiff,
110
+ diffType: 'removed',
111
+ finished: prevTask.finished,
112
+ isOverdueAt,
113
+ prevBaseDate,
114
+ currentBaseDate,
115
+ baseDate,
116
+ daysOverdueAt,
117
+ daysStrOverdueAt,
118
+ currentTask: undefined,
119
+ prevTask,
120
+ });
121
+ }
122
+ return diffs;
123
+ }
124
+ // private _calcProgressRafe(group: TaskDiff[]) {
125
+ // const pv = sumDelta(group.map((g) => g.deltaPV))
126
+ // const ev = sumDelta(group.map((g) => g.deltaEV))
127
+ // return calcRate(ev, pv)
128
+ // }
129
+ calculateProjectDiffs(taskDiffs) {
130
+ const result = (0, tidy_1.tidy)(taskDiffs.filter((taskDiff) => taskDiff.hasDiff),
131
+ // taskDiffs,
132
+ (0, tidy_1.summarize)({
133
+ // deltaProgressRate: (group) => this._calcProgressRate(group),
134
+ deltaPV: (group) => sumDelta(group.map((g) => g.deltaPV)),
135
+ deltaEV: (group) => sumDelta(group.map((g) => g.deltaEV)),
136
+ // deltaSPI: (group) => sumDelta(group.map((g) => g.deltaSPI)), // これはおかしい。
137
+ prevPV: (group) => sumDelta(group.filter((g) => g.hasPvDiff).map((g) => g.prevPV)),
138
+ prevEV: (group) => sumDelta(group.filter((g) => g.hasEvDiff).map((g) => g.prevEV)),
139
+ currentPV: (group) => sumDelta(group.filter((g) => g.hasPvDiff).map((g) => g.currentPV)),
140
+ currentEV: (group) => sumDelta(group.filter((g) => g.hasEvDiff).map((g) => g.currentEV)),
141
+ modifiedCount: (group) => group.filter((g) => g.diffType === 'modified').length,
142
+ addedCount: (group) => group.filter((g) => g.diffType === 'added').length,
143
+ removedCount: (group) => group.filter((g) => g.diffType === 'removed').length,
144
+ hasDiff: (group) => group.some((g) => ['modified', 'added', 'removed'].includes(g.diffType)),
145
+ finished: (group) => group.every((g) => g.finished),
146
+ // prevBaseDate:(group) => group.map((g) => g.prevBaseDate)?.[0],
147
+ // currentBaseDate:(group) => group.map((g) => g.currentBaseDate)?.[0],
148
+ }));
149
+ return result;
150
+ }
151
+ calculateAssigneeDiffs(taskDiffs) {
152
+ const result = (0, tidy_1.tidy)(taskDiffs.filter((taskDiff) => taskDiff.hasDiff),
153
+ // taskDiffs,
154
+ (0, tidy_1.groupBy)('assignee', [
155
+ (0, tidy_1.summarize)({
156
+ // deltaProgressRate: (group) => this._calcProgressRate(group),
157
+ deltaPV: (group) => sumDelta(group.map((g) => g.deltaPV)),
158
+ deltaEV: (group) => sumDelta(group.map((g) => g.deltaEV)),
159
+ // deltaSPI: (group) => sumDelta(group.map((g) => g.deltaSPI)), // これはおかしい。
160
+ prevPV: (group) => sumDelta(group.filter((g) => g.hasPvDiff).map((g) => g.prevPV)),
161
+ prevEV: (group) => sumDelta(group.filter((g) => g.hasEvDiff).map((g) => g.prevEV)),
162
+ currentPV: (group) => sumDelta(group.filter((g) => g.hasPvDiff).map((g) => g.currentPV)),
163
+ currentEV: (group) => sumDelta(group.filter((g) => g.hasEvDiff).map((g) => g.currentEV)),
164
+ modifiedCount: (group) => group.filter((g) => g.diffType === 'modified').length,
165
+ addedCount: (group) => group.filter((g) => g.diffType === 'added').length,
166
+ removedCount: (group) => group.filter((g) => g.diffType === 'removed').length,
167
+ hasDiff: (group) => group.some((g) => ['modified', 'added', 'removed'].includes(g.diffType)),
168
+ finished: (group) => group.every((g) => g.finished),
169
+ // prevBaseDate:(group) => group.map((g) => g.prevBaseDate)?.[0],
170
+ // currentBaseDate:(group) => group.map((g) => g.currentBaseDate)?.[0],
171
+ }),
172
+ ]));
173
+ return result;
174
+ }
175
+ /**
176
+ * 親を遡って、名前を"/"でjoinする
177
+ * @param task 子のタスク
178
+ * @param taskMap 親のタスクIDも存在する、<id,TaskRow>なMap
179
+ * @returns
180
+ */
181
+ buildFullTaskName(task, taskMap) {
182
+ const names = [];
183
+ let current = task;
184
+ while (current) {
185
+ names.unshift(current.name);
186
+ current = current.parentId ? taskMap.get(current.parentId) : undefined;
187
+ }
188
+ return names.join('/');
189
+ }
190
+ }
191
+ exports.ProjectService = ProjectService;
192
+ /**
193
+ * bのみがundefinedのばあいはa
194
+ * aのみがundefinedの場合は-b
195
+ * 両方undefinedの場合はundefined
196
+ * あとは a-b
197
+ * @param a
198
+ * @param b
199
+ * @returns
200
+ */
201
+ function delta(a, b) {
202
+ const aIsNum = typeof a === 'number';
203
+ const bIsNum = typeof b === 'number';
204
+ if (aIsNum && bIsNum) {
205
+ const diff = a - b;
206
+ // return diff !== 0 ? diff : undefined
207
+ return diff;
208
+ }
209
+ if (aIsNum)
210
+ return a;
211
+ if (bIsNum)
212
+ return -b;
213
+ return undefined;
214
+ }
215
+ const sumDelta = (numbers) => (0, utils_1.sum)(numbers.filter((v) => v !== undefined), 3);
216
+ //# sourceMappingURL=ProjectService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectService.js","sourceRoot":"","sources":["../../src/domain/ProjectService.ts"],"names":[],"mappings":";;;AAAA,uCAAuD;AAGvD,2CAAmF;AAEnF,MAAa,cAAc;IACvB,kBAAkB,CAAC,GAAY,EAAE,IAAa;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACnC,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;QACjC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;QAEjE,MAAM,KAAK,GAAe,EAAE,CAAA;QAE5B,yBAAyB;QACzB,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,oBAAoB;YACpB,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,SAAQ;YAE7B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAA,CAAC,oBAAoB;YAE5C,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;YAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC/C,oDAAoD;YACpD,MAAM,YAAY,GACd,KAAK;gBACL,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAEjF,YAAY;YACZ,MAAM,mBAAmB,GAAG,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,CAAC,CAAA;YACtF,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,CAAA;YACxD,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,CAAA;YAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAE7D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAErD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;YACzD,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAA;YACpC,MAAM,QAAQ,GAAG,eAAe,CAAA;YAEhC,MAAM,aAAa,GAAG,IAAA,gCAAwB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YACzE,MAAM,gBAAgB,GAAG,IAAA,0BAAkB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAEtE,KAAK,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ;gBACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,iBAAiB;gBACjB,OAAO;gBACP,OAAO;gBACP,MAAM,EAAE,QAAQ,EAAE,EAAE;gBACpB,MAAM,EAAE,QAAQ,EAAE,EAAE;gBACpB,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,gBAAgB,EAAE,QAAQ,EAAE,YAAY;gBACxC,mBAAmB,EAAE,OAAO,CAAC,YAAY;gBACzC,OAAO,EAAE,YAAY;gBACrB,mBAAmB;gBACnB,SAAS;gBACT,SAAS;gBACT,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;gBAC9D,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW;gBACX,YAAY;gBACZ,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,gBAAgB;gBAChB,WAAW,EAAE,OAAO;gBACpB,QAAQ;aACX,CAAC,CAAA;YACF,0BAA0B;YAC1B,+BAA+B;QACnC,CAAC;QAED,WAAW;QACX,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,4BAA4B;YAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,SAAQ;YAE9D,MAAM,iBAAiB,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;YAE7C,YAAY;YACZ,MAAM,mBAAmB,GAAG,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,CAAC,CAAA;YACtF,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,CAAA;YACxD,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,CAAA;YAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YAC/D,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEvD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAA;YAClC,MAAM,eAAe,GAAG,SAAS,CAAA;YACjC,MAAM,QAAQ,GAAG,YAAY,CAAA;YAE7B,MAAM,aAAa,GAAG,IAAA,gCAAwB,EAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1E,MAAM,gBAAgB,GAAG,IAAA,0BAAkB,EAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEvE,KAAK,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ;gBACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,iBAAiB;gBACjB,OAAO;gBACP,OAAO;gBACP,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;gBACvC,mBAAmB,EAAE,SAAS;gBAC9B,OAAO,EAAE,IAAI,EAAE,gBAAgB;gBAC/B,mBAAmB;gBACnB,SAAS;gBACT,SAAS;gBACT,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW;gBACX,YAAY;gBACZ,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,gBAAgB;gBAChB,WAAW,EAAE,SAAS;gBACtB,QAAQ;aACX,CAAC,CAAA;QACN,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,iDAAiD;IACjD,uDAAuD;IACvD,uDAAuD;IACvD,8BAA8B;IAC9B,IAAI;IAEJ,qBAAqB,CAAC,SAAqB;QACvC,MAAM,MAAM,GAAkB,IAAA,WAAI,EAC9B,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChD,aAAa;QACb,IAAA,gBAAS,EAAC;YACN,+DAA+D;YAC/D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzD,2EAA2E;YAC3E,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAClF,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAClF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;YAC/E,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;YACzE,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;YAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5E,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnD,iEAAiE;YACjE,uEAAuE;SAC1E,CAAC,CACL,CAAA;QACD,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,sBAAsB,CAAC,SAAqB;QACxC,MAAM,MAAM,GAAG,IAAA,WAAI,EACf,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChD,aAAa;QACb,IAAA,cAAO,EAAC,UAAU,EAAE;YAChB,IAAA,gBAAS,EAAC;gBACN,+DAA+D;gBAC/D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzD,2EAA2E;gBAC3E,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACnE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACnE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACtE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACtE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;gBAC/E,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;gBACzE,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;gBAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC5E,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACnD,iEAAiE;gBACjE,uEAAuE;aAC1E,CAAC;SACL,CAAC,CACL,CAAA;QACD,OAAO,MAAM,CAAA;IACjB,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,IAAa,EAAE,OAA6B;QAClE,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,OAAO,GAAwB,IAAI,CAAA;QAEvC,OAAO,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC3B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC1E,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;CACJ;AA3ND,wCA2NC;AAED;;;;;;;;GAQG;AACH,SAAS,KAAK,CAAC,CAAU,EAAE,CAAU;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAA;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAA;IAEpC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,uCAAuC;QACvC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,MAAM;QAAE,OAAO,CAAC,CAAA;IACpB,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC,CAAA;IAErB,OAAO,SAAS,CAAA;AACpB,CAAC;AAqDD,MAAM,QAAQ,GAAG,CAAC,OAA+B,EAAsB,EAAE,CACrE,IAAA,WAAG,EACC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EACnD,CAAC,CACJ,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { TaskRow } from './TaskRow';
2
+ export declare class TaskNode extends TaskRow implements Iterable<TaskNode> {
3
+ sharp: number;
4
+ id: number;
5
+ level: number;
6
+ name: string;
7
+ assignee?: string | undefined;
8
+ workload?: number | undefined;
9
+ startDate?: Date | undefined;
10
+ endDate?: Date | undefined;
11
+ actualStartDate?: Date | undefined;
12
+ actualEndDate?: Date | undefined;
13
+ progressRate?: number | undefined;
14
+ scheduledWorkDays?: number | undefined;
15
+ pv?: number | undefined;
16
+ ev?: number | undefined;
17
+ spi?: number | undefined;
18
+ expectedProgressDate?: Date | undefined;
19
+ delayDays?: number | undefined;
20
+ remarks?: string | undefined;
21
+ parentId?: number | undefined;
22
+ isLeaf?: boolean | undefined;
23
+ plotMap?: Map<number, boolean> | undefined;
24
+ children: TaskNode[];
25
+ constructor(sharp: number, id: number, level: number, name: string, assignee?: string | undefined, workload?: number | undefined, startDate?: Date | undefined, endDate?: Date | undefined, actualStartDate?: Date | undefined, actualEndDate?: Date | undefined, progressRate?: number | undefined, scheduledWorkDays?: number | undefined, pv?: number | undefined, ev?: number | undefined, spi?: number | undefined, expectedProgressDate?: Date | undefined, delayDays?: number | undefined, remarks?: string | undefined, parentId?: number | undefined, isLeaf?: boolean | undefined, plotMap?: Map<number, boolean> | undefined, children?: TaskNode[]);
26
+ /**
27
+ * Iterableであるための関数。子があれば子を返す。
28
+ */
29
+ [Symbol.iterator](): IterableIterator<TaskNode>;
30
+ /**
31
+ * TaskRowからTaskNodeへ変換する静的ファクトリメソッド
32
+ * @param row 元のTaskRow
33
+ * @param children 子ノードの配列(省略時は空配列)
34
+ */
35
+ static fromRow(row: TaskRow, children?: TaskNode[]): TaskNode;
36
+ }
37
+ //# sourceMappingURL=TaskNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskNode.d.ts","sourceRoot":"","sources":["../../src/domain/TaskNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,qBAAa,QAAS,SAAQ,OAAQ,YAAW,QAAQ,CAAC,QAAQ,CAAC;IAEpD,KAAK,EAAE,MAAM;IACb,EAAE,EAAE,MAAM;IACV,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,QAAQ,CAAC,EAAE,MAAM;IACjB,QAAQ,CAAC,EAAE,MAAM;IACjB,SAAS,CAAC,EAAE,IAAI;IAChB,OAAO,CAAC,EAAE,IAAI;IAEd,eAAe,CAAC,EAAE,IAAI;IACtB,aAAa,CAAC,EAAE,IAAI;IACpB,YAAY,CAAC,EAAE,MAAM;IACrB,iBAAiB,CAAC,EAAE,MAAM;IAC1B,EAAE,CAAC,EAAE,MAAM;IACX,EAAE,CAAC,EAAE,MAAM;IACX,GAAG,CAAC,EAAE,MAAM;IACZ,oBAAoB,CAAC,EAAE,IAAI;IAC3B,SAAS,CAAC,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM;IAChB,QAAQ,CAAC,EAAE,MAAM;IACjB,MAAM,CAAC,EAAE,OAAO;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,QAAQ,EAAE;gBAtBpB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,SAAS,CAAC,EAAE,IAAI,YAAA,EAChB,OAAO,CAAC,EAAE,IAAI,YAAA,EAEd,eAAe,CAAC,EAAE,IAAI,YAAA,EACtB,aAAa,CAAC,EAAE,IAAI,YAAA,EACpB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,iBAAiB,CAAC,EAAE,MAAM,YAAA,EAC1B,EAAE,CAAC,EAAE,MAAM,YAAA,EACX,EAAE,CAAC,EAAE,MAAM,YAAA,EACX,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,oBAAoB,CAAC,EAAE,IAAI,YAAA,EAC3B,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,MAAM,CAAC,EAAE,OAAO,YAAA,EAChB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EAC9B,QAAQ,GAAE,QAAQ,EAAO;IA4BpC;;OAEG;IACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC;IAOhD;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,GAAE,QAAQ,EAAO,GAAG,QAAQ;CAmCpE"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskNode = void 0;
4
+ const TaskRow_1 = require("./TaskRow");
5
+ class TaskNode extends TaskRow_1.TaskRow {
6
+ constructor(sharp, id, level, name, assignee, workload, startDate, endDate,
7
+ // public progress?: number,
8
+ actualStartDate, actualEndDate, progressRate, scheduledWorkDays, pv, ev, spi, expectedProgressDate, delayDays, remarks, parentId, isLeaf, plotMap, children = []) {
9
+ super(sharp, id, level, name, assignee, workload, startDate, endDate,
10
+ // progress,
11
+ actualStartDate, actualEndDate, progressRate, scheduledWorkDays, pv, ev, spi, expectedProgressDate, delayDays, remarks, parentId, isLeaf, plotMap);
12
+ this.sharp = sharp;
13
+ this.id = id;
14
+ this.level = level;
15
+ this.name = name;
16
+ this.assignee = assignee;
17
+ this.workload = workload;
18
+ this.startDate = startDate;
19
+ this.endDate = endDate;
20
+ this.actualStartDate = actualStartDate;
21
+ this.actualEndDate = actualEndDate;
22
+ this.progressRate = progressRate;
23
+ this.scheduledWorkDays = scheduledWorkDays;
24
+ this.pv = pv;
25
+ this.ev = ev;
26
+ this.spi = spi;
27
+ this.expectedProgressDate = expectedProgressDate;
28
+ this.delayDays = delayDays;
29
+ this.remarks = remarks;
30
+ this.parentId = parentId;
31
+ this.isLeaf = isLeaf;
32
+ this.plotMap = plotMap;
33
+ this.children = children;
34
+ }
35
+ /**
36
+ * Iterableであるための関数。子があれば子を返す。
37
+ */
38
+ *[Symbol.iterator]() {
39
+ yield this;
40
+ for (const child of this.children) {
41
+ yield* child;
42
+ }
43
+ }
44
+ /**
45
+ * TaskRowからTaskNodeへ変換する静的ファクトリメソッド
46
+ * @param row 元のTaskRow
47
+ * @param children 子ノードの配列(省略時は空配列)
48
+ */
49
+ static fromRow(row, children = []) {
50
+ return new TaskNode(row.sharp, row.id, row.level, row.name, row.assignee, row.workload, row.startDate, row.endDate, row.actualStartDate, row.actualEndDate, row.progressRate, row.scheduledWorkDays, row.pv, row.ev, row.spi, row.expectedProgressDate, row.delayDays, row.remarks, row.parentId, row.isLeaf, row.plotMap, children);
51
+ }
52
+ }
53
+ exports.TaskNode = TaskNode;
54
+ //# sourceMappingURL=TaskNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskNode.js","sourceRoot":"","sources":["../../src/domain/TaskNode.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAEnC,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,KAAa,EACb,EAAU,EACV,KAAa,EACb,IAAY,EACZ,QAAiB,EACjB,QAAiB,EACjB,SAAgB,EAChB,OAAc;IACrB,4BAA4B;IACrB,eAAsB,EACtB,aAAoB,EACpB,YAAqB,EACrB,iBAA0B,EAC1B,EAAW,EACX,EAAW,EACX,GAAY,EACZ,oBAA2B,EAC3B,SAAkB,EAClB,OAAgB,EAChB,QAAiB,EACjB,MAAgB,EAChB,OAA8B,EAC9B,WAAuB,EAAE;QAEhC,KAAK,CACD,KAAK,EACL,EAAE,EACF,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO;QACP,YAAY;QACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,EAAE,EACF,EAAE,EACF,GAAG,EACH,oBAAoB,EACpB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,CACV,CAAA;QA/CM,UAAK,GAAL,KAAK,CAAQ;QACb,OAAE,GAAF,EAAE,CAAQ;QACV,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAS;QACjB,aAAQ,GAAR,QAAQ,CAAS;QACjB,cAAS,GAAT,SAAS,CAAO;QAChB,YAAO,GAAP,OAAO,CAAO;QAEd,oBAAe,GAAf,eAAe,CAAO;QACtB,kBAAa,GAAb,aAAa,CAAO;QACpB,iBAAY,GAAZ,YAAY,CAAS;QACrB,sBAAiB,GAAjB,iBAAiB,CAAS;QAC1B,OAAE,GAAF,EAAE,CAAS;QACX,OAAE,GAAF,EAAE,CAAS;QACX,QAAG,GAAH,GAAG,CAAS;QACZ,yBAAoB,GAApB,oBAAoB,CAAO;QAC3B,cAAS,GAAT,SAAS,CAAS;QAClB,YAAO,GAAP,OAAO,CAAS;QAChB,aAAQ,GAAR,QAAQ,CAAS;QACjB,WAAM,GAAN,MAAM,CAAU;QAChB,YAAO,GAAP,OAAO,CAAuB;QAC9B,aAAQ,GAAR,QAAQ,CAAiB;IA0BpC,CAAC;IAED;;OAEG;IACH,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACd,MAAM,IAAI,CAAA;QACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,GAAY,EAAE,WAAuB,EAAE;QAClD,OAAO,IAAI,QAAQ,CACf,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,aAAa,EACjB,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,oBAAoB,EACxB,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,OAAO,EACX,QAAQ,CACX,CAAA;IACL,CAAC;CAUJ;AAtGD,4BAsGC"}
@@ -0,0 +1,222 @@
1
+ import { TaskNode } from './TaskNode';
2
+ /**
3
+ * タスクを表す基本エンティティ(リーフまたは中間ノード)
4
+ */
5
+ export declare class TaskRow {
6
+ /**
7
+ * 表示順や構造上の識別に使われる行番号("#"に対応)
8
+ */
9
+ readonly sharp: number;
10
+ /**
11
+ * タスクの一意なID
12
+ */
13
+ readonly id: number;
14
+ /**
15
+ * タスクの階層レベル(1=ルート、2=子など)
16
+ */
17
+ readonly level: number;
18
+ /**
19
+ * タスクの名称
20
+ */
21
+ readonly name: string;
22
+ /**
23
+ * 担当者名(任意)
24
+ */
25
+ readonly assignee?: string | undefined;
26
+ /**
27
+ * 予定工数(日単位など、任意)
28
+ */
29
+ readonly workload?: number | undefined;
30
+ /**
31
+ * 予定の開始日(任意)
32
+ */
33
+ readonly startDate?: Date | undefined;
34
+ /**
35
+ * 予定の終了日(任意)
36
+ */
37
+ readonly endDate?: Date | undefined;
38
+ /**
39
+ * 実際の開始日(任意)
40
+ */
41
+ readonly actualStartDate?: Date | undefined;
42
+ /**
43
+ * 実際の終了日(任意)
44
+ */
45
+ readonly actualEndDate?: Date | undefined;
46
+ /**
47
+ * 実績ベースの進捗率(任意)
48
+ */
49
+ readonly progressRate?: number | undefined;
50
+ /**
51
+ * 予定された稼働日数(任意)
52
+ */
53
+ readonly scheduledWorkDays?: number | undefined;
54
+ /**
55
+ * Planned Value:計画された作業価値(任意)
56
+ */
57
+ readonly pv?: number | undefined;
58
+ /**
59
+ * Earned Value:実施された作業価値(任意)
60
+ */
61
+ readonly ev?: number | undefined;
62
+ /**
63
+ * Schedule Performance Index:スケジュール効率指標(任意)
64
+ */
65
+ readonly spi?: number | undefined;
66
+ /**
67
+ * 現在の進捗率に相当する予定日(任意)
68
+ */
69
+ readonly expectedProgressDate?: Date | undefined;
70
+ /**
71
+ * 遅延日数(任意、マイナスで前倒し)
72
+ */
73
+ readonly delayDays?: number | undefined;
74
+ /**
75
+ * 備考(任意)
76
+ */
77
+ readonly remarks?: string | undefined;
78
+ /**
79
+ * 親タスクのID(任意、ツリー構造用)
80
+ */
81
+ parentId?: number | undefined;
82
+ /**
83
+ * 子を持たないリーフノードであるかどうか(任意)
84
+ * (便宜上任意だけど、セットすること)
85
+ */
86
+ readonly isLeaf?: boolean | undefined;
87
+ readonly plotMap?: Map<number, boolean> | undefined;
88
+ constructor(
89
+ /**
90
+ * 表示順や構造上の識別に使われる行番号("#"に対応)
91
+ */
92
+ sharp: number,
93
+ /**
94
+ * タスクの一意なID
95
+ */
96
+ id: number,
97
+ /**
98
+ * タスクの階層レベル(1=ルート、2=子など)
99
+ */
100
+ level: number,
101
+ /**
102
+ * タスクの名称
103
+ */
104
+ name: string,
105
+ /**
106
+ * 担当者名(任意)
107
+ */
108
+ assignee?: string | undefined,
109
+ /**
110
+ * 予定工数(日単位など、任意)
111
+ */
112
+ workload?: number | undefined,
113
+ /**
114
+ * 予定の開始日(任意)
115
+ */
116
+ startDate?: Date | undefined,
117
+ /**
118
+ * 予定の終了日(任意)
119
+ */
120
+ endDate?: Date | undefined,
121
+ /**
122
+ * 実際の開始日(任意)
123
+ */
124
+ actualStartDate?: Date | undefined,
125
+ /**
126
+ * 実際の終了日(任意)
127
+ */
128
+ actualEndDate?: Date | undefined,
129
+ /**
130
+ * 実績ベースの進捗率(任意)
131
+ */
132
+ progressRate?: number | undefined,
133
+ /**
134
+ * 予定された稼働日数(任意)
135
+ */
136
+ scheduledWorkDays?: number | undefined,
137
+ /**
138
+ * Planned Value:計画された作業価値(任意)
139
+ */
140
+ pv?: number | undefined,
141
+ /**
142
+ * Earned Value:実施された作業価値(任意)
143
+ */
144
+ ev?: number | undefined,
145
+ /**
146
+ * Schedule Performance Index:スケジュール効率指標(任意)
147
+ */
148
+ spi?: number | undefined,
149
+ /**
150
+ * 現在の進捗率に相当する予定日(任意)
151
+ */
152
+ expectedProgressDate?: Date | undefined,
153
+ /**
154
+ * 遅延日数(任意、マイナスで前倒し)
155
+ */
156
+ delayDays?: number | undefined,
157
+ /**
158
+ * 備考(任意)
159
+ */
160
+ remarks?: string | undefined,
161
+ /**
162
+ * 親タスクのID(任意、ツリー構造用)
163
+ */
164
+ parentId?: number | undefined,
165
+ /**
166
+ * 子を持たないリーフノードであるかどうか(任意)
167
+ * (便宜上任意だけど、セットすること)
168
+ */
169
+ isLeaf?: boolean | undefined, plotMap?: Map<number, boolean> | undefined);
170
+ /**
171
+ * 予定工数 / 稼働予定日数 による一日あたりの工数(任意)
172
+ * 計算不能な場合は undefined
173
+ */
174
+ get workloadPerDay(): number | undefined;
175
+ get finished(): boolean;
176
+ /**
177
+ * 指定した基準日で、タスクが期限切れかどうかを判定する。
178
+ * - 終了日 <= 基準日 かつ 未完了 の場合に true を返す
179
+ * (あくまで基準日の業務が終わったときの状況を算出する考えなので、等号を入れた)
180
+ * progressRate はundefinedの場合もある(未完了と見なす)
181
+ */
182
+ isOverdueAt(baseDate: Date): boolean;
183
+ /**
184
+ * 基準日(その日のみの)のPVを計算する。
185
+ * 基本、稼働予定の日数 / 予定工数 の値。
186
+ * その日に タスクがなければ0。
187
+ * なんらかの理由で、稼働予定日数がNaN/undefined/ゼロの場合、undefinedを返す。
188
+ * なんらかの理由で、予定工数がNaN/undefinedの場合、undefinedを返す。
189
+ *
190
+ * @param baseDate 基準日
191
+ * @return
192
+ */
193
+ calculatePV: (baseDate: Date) => number | undefined;
194
+ /**
195
+ * 基準日終了時点の累積PVを返す。タスクが始まっていなかったら0.
196
+ * なんらかの理由で、予定工数がNaN/undefinedの場合、undefinedを返す。
197
+ * なんらかの理由で、稼働予定日数がNaN/undefined/ゼロの場合、undefinedを返す。
198
+ * plotMapからカウントしている。(Excelから読む際は稼働予定日数より□のプロット優先となるってこと)
199
+ * plotMapが取れなかったらゼロ
200
+ * 開始日終了日が取れなかったらゼロ
201
+ *
202
+ * @param baseDate
203
+ * @return
204
+ */
205
+ calculatePVs: (baseDate: Date) => number;
206
+ checkStartEndDateAndPlotMap: () => this is NonNullDateAndPlotMap;
207
+ /**
208
+ * TaskNode から、TaskRowを作る
209
+ * @param node
210
+ * @param level
211
+ * @param parentId
212
+ * @returns
213
+ */
214
+ static fromNode(node: TaskNode, level: number, parentId?: number): TaskRow;
215
+ }
216
+ type NonNullDateAndPlotMap = {
217
+ startDate: Date;
218
+ endDate: Date;
219
+ plotMap: Map<number, boolean>;
220
+ };
221
+ export {};
222
+ //# sourceMappingURL=TaskRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskRow.d.ts","sourceRoot":"","sources":["../../src/domain/TaskRow.ts"],"names":[],"mappings":"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"}