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.
- package/.prettierrc +9 -0
- package/.vscode/settings.json +20 -0
- package/LICENSE +201 -0
- package/README.md +71 -0
- package/class.pu +62 -0
- package/dist/common/index.d.ts +4 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +20 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/myStyles.d.ts +10 -0
- package/dist/common/myStyles.d.ts.map +1 -0
- package/dist/common/myStyles.js +52 -0
- package/dist/common/myStyles.js.map +1 -0
- package/dist/common/styles.d.ts +12 -0
- package/dist/common/styles.d.ts.map +1 -0
- package/dist/common/styles.js +30 -0
- package/dist/common/styles.js.map +1 -0
- package/dist/common/utils.d.ts +53 -0
- package/dist/common/utils.d.ts.map +1 -0
- package/dist/common/utils.js +163 -0
- package/dist/common/utils.js.map +1 -0
- package/dist/domain/Project.d.ts +98 -0
- package/dist/domain/Project.d.ts.map +1 -0
- package/dist/domain/Project.js +291 -0
- package/dist/domain/Project.js.map +1 -0
- package/dist/domain/ProjectCreator.d.ts +8 -0
- package/dist/domain/ProjectCreator.d.ts.map +1 -0
- package/dist/domain/ProjectCreator.js +3 -0
- package/dist/domain/ProjectCreator.js.map +1 -0
- package/dist/domain/ProjectProgressCreator.d.ts +5 -0
- package/dist/domain/ProjectProgressCreator.d.ts.map +1 -0
- package/dist/domain/ProjectProgressCreator.js +3 -0
- package/dist/domain/ProjectProgressCreator.js.map +1 -0
- package/dist/domain/ProjectRepository.d.ts +5 -0
- package/dist/domain/ProjectRepository.d.ts.map +1 -0
- package/dist/domain/ProjectRepository.js +3 -0
- package/dist/domain/ProjectRepository.js.map +1 -0
- package/dist/domain/ProjectService.d.ts +59 -0
- package/dist/domain/ProjectService.d.ts.map +1 -0
- package/dist/domain/ProjectService.js +216 -0
- package/dist/domain/ProjectService.js.map +1 -0
- package/dist/domain/TaskNode.d.ts +37 -0
- package/dist/domain/TaskNode.d.ts.map +1 -0
- package/dist/domain/TaskNode.js +54 -0
- package/dist/domain/TaskNode.js.map +1 -0
- package/dist/domain/TaskRow.d.ts +222 -0
- package/dist/domain/TaskRow.d.ts.map +1 -0
- package/dist/domain/TaskRow.js +260 -0
- package/dist/domain/TaskRow.js.map +1 -0
- package/dist/domain/TaskRowCreator.d.ts +11 -0
- package/dist/domain/TaskRowCreator.d.ts.map +1 -0
- package/dist/domain/TaskRowCreator.js +3 -0
- package/dist/domain/TaskRowCreator.js.map +1 -0
- package/dist/domain/TaskService.d.ts +18 -0
- package/dist/domain/TaskService.d.ts.map +1 -0
- package/dist/domain/TaskService.js +56 -0
- package/dist/domain/TaskService.js.map +1 -0
- package/dist/domain/index.d.ts +9 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +25 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/infrastructure/ExcelBufferProjectCreator.d.ts +9 -0
- package/dist/infrastructure/ExcelBufferProjectCreator.d.ts.map +1 -0
- package/dist/infrastructure/ExcelBufferProjectCreator.js +23 -0
- package/dist/infrastructure/ExcelBufferProjectCreator.js.map +1 -0
- package/dist/infrastructure/ExcelProjectCreator.d.ts +8 -0
- package/dist/infrastructure/ExcelProjectCreator.d.ts.map +1 -0
- package/dist/infrastructure/ExcelProjectCreator.js +31 -0
- package/dist/infrastructure/ExcelProjectCreator.js.map +1 -0
- package/dist/infrastructure/ExcelTaskRowCreator.d.ts +8 -0
- package/dist/infrastructure/ExcelTaskRowCreator.d.ts.map +1 -0
- package/dist/infrastructure/ExcelTaskRowCreator.js +24 -0
- package/dist/infrastructure/ExcelTaskRowCreator.js.map +1 -0
- package/dist/infrastructure/MappingProjectCreator.d.ts +9 -0
- package/dist/infrastructure/MappingProjectCreator.d.ts.map +1 -0
- package/dist/infrastructure/MappingProjectCreator.js +36 -0
- package/dist/infrastructure/MappingProjectCreator.js.map +1 -0
- package/dist/infrastructure/ProjectRepositoryImpl.d.ts +6 -0
- package/dist/infrastructure/ProjectRepositoryImpl.d.ts.map +1 -0
- package/dist/infrastructure/ProjectRepositoryImpl.js +124 -0
- package/dist/infrastructure/ProjectRepositoryImpl.js.map +1 -0
- package/dist/infrastructure/TaskRowCreatorImpl.d.ts +11 -0
- package/dist/infrastructure/TaskRowCreatorImpl.d.ts.map +1 -0
- package/dist/infrastructure/TaskRowCreatorImpl.js +135 -0
- package/dist/infrastructure/TaskRowCreatorImpl.js.map +1 -0
- package/dist/infrastructure/TaskRowFactory.d.ts +9 -0
- package/dist/infrastructure/TaskRowFactory.d.ts.map +1 -0
- package/dist/infrastructure/TaskRowFactory.js +47 -0
- package/dist/infrastructure/TaskRowFactory.js.map +1 -0
- package/dist/infrastructure/index.d.ts +9 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +25 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/types.d.ts +29 -0
- package/dist/infrastructure/types.d.ts.map +1 -0
- package/dist/infrastructure/types.js +66 -0
- package/dist/infrastructure/types.js.map +1 -0
- package/dist/logger.d.ts +7 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +42 -0
- package/dist/logger.js.map +1 -0
- package/dist/presentation/cli-pbevm-diff.d.ts +2 -0
- package/dist/presentation/cli-pbevm-diff.d.ts.map +1 -0
- package/dist/presentation/cli-pbevm-diff.js +39 -0
- package/dist/presentation/cli-pbevm-diff.js.map +1 -0
- package/dist/presentation/cli-pbevm-show-project.d.ts +2 -0
- package/dist/presentation/cli-pbevm-show-project.d.ts.map +1 -0
- package/dist/presentation/cli-pbevm-show-project.js +38 -0
- package/dist/presentation/cli-pbevm-show-project.js.map +1 -0
- package/dist/presentation/cli-pbevm-summary.d.ts +3 -0
- package/dist/presentation/cli-pbevm-summary.d.ts.map +1 -0
- package/dist/presentation/cli-pbevm-summary.js +35 -0
- package/dist/presentation/cli-pbevm-summary.js.map +1 -0
- package/dist/presentation/cli-test.d.ts +3 -0
- package/dist/presentation/cli-test.d.ts.map +1 -0
- package/dist/presentation/cli-test.js +123 -0
- package/dist/presentation/cli-test.js.map +1 -0
- package/dist/presentation/project-test2.d.ts +22 -0
- package/dist/presentation/project-test2.d.ts.map +1 -0
- package/dist/presentation/project-test2.js +106 -0
- package/dist/presentation/project-test2.js.map +1 -0
- package/dist/usercase/index.d.ts +4 -0
- package/dist/usercase/index.d.ts.map +1 -0
- package/dist/usercase/index.js +20 -0
- package/dist/usercase/index.js.map +1 -0
- package/dist/usercase/pbevm-diff-usercase.d.ts +10 -0
- package/dist/usercase/pbevm-diff-usercase.d.ts.map +1 -0
- package/dist/usercase/pbevm-diff-usercase.js +67 -0
- package/dist/usercase/pbevm-diff-usercase.js.map +1 -0
- package/dist/usercase/pbevm-show-project-usecase.d.ts +10 -0
- package/dist/usercase/pbevm-show-project-usecase.d.ts.map +1 -0
- package/dist/usercase/pbevm-show-project-usecase.js +19 -0
- package/dist/usercase/pbevm-show-project-usecase.js.map +1 -0
- package/dist/usercase/pbevm-summary-usercase.d.ts +8 -0
- package/dist/usercase/pbevm-summary-usercase.d.ts.map +1 -0
- package/dist/usercase/pbevm-summary-usercase.js +47 -0
- package/dist/usercase/pbevm-summary-usercase.js.map +1 -0
- package/eslint.config.mjs +25 -0
- package/now.xlsm +0 -0
- package/package.json +71 -0
- 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":"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"}
|
|
@@ -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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"}
|