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,260 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRow = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const logger_1 = require("../logger");
6
+ const common_1 = require("../common");
7
+ const logger = (0, logger_1.getLogger)('domain/TaskRow');
8
+ /**
9
+ * タスクを表す基本エンティティ(リーフまたは中間ノード)
10
+ */
11
+ class TaskRow {
12
+ constructor(
13
+ /**
14
+ * 表示順や構造上の識別に使われる行番号("#"に対応)
15
+ */
16
+ sharp,
17
+ /**
18
+ * タスクの一意なID
19
+ */
20
+ id,
21
+ /**
22
+ * タスクの階層レベル(1=ルート、2=子など)
23
+ */
24
+ level,
25
+ /**
26
+ * タスクの名称
27
+ */
28
+ name,
29
+ /**
30
+ * 担当者名(任意)
31
+ */
32
+ assignee,
33
+ /**
34
+ * 予定工数(日単位など、任意)
35
+ */
36
+ workload,
37
+ /**
38
+ * 予定の開始日(任意)
39
+ */
40
+ startDate,
41
+ /**
42
+ * 予定の終了日(任意)
43
+ */
44
+ endDate,
45
+ // /**
46
+ // * 現時点での進捗率(任意、%値)
47
+ // */
48
+ // public readonly progress?: number
49
+ // --- 実績系 ---
50
+ /**
51
+ * 実際の開始日(任意)
52
+ */
53
+ actualStartDate,
54
+ /**
55
+ * 実際の終了日(任意)
56
+ */
57
+ actualEndDate,
58
+ /**
59
+ * 実績ベースの進捗率(任意)
60
+ */
61
+ progressRate,
62
+ /**
63
+ * 予定された稼働日数(任意)
64
+ */
65
+ scheduledWorkDays,
66
+ /**
67
+ * Planned Value:計画された作業価値(任意)
68
+ */
69
+ pv,
70
+ /**
71
+ * Earned Value:実施された作業価値(任意)
72
+ */
73
+ ev,
74
+ /**
75
+ * Schedule Performance Index:スケジュール効率指標(任意)
76
+ */
77
+ spi,
78
+ /**
79
+ * 現在の進捗率に相当する予定日(任意)
80
+ */
81
+ expectedProgressDate,
82
+ /**
83
+ * 遅延日数(任意、マイナスで前倒し)
84
+ */
85
+ delayDays,
86
+ /**
87
+ * 備考(任意)
88
+ */
89
+ remarks,
90
+ /**
91
+ * 親タスクのID(任意、ツリー構造用)
92
+ */
93
+ parentId,
94
+ /**
95
+ * 子を持たないリーフノードであるかどうか(任意)
96
+ * (便宜上任意だけど、セットすること)
97
+ */
98
+ isLeaf, plotMap) {
99
+ this.sharp = sharp;
100
+ this.id = id;
101
+ this.level = level;
102
+ this.name = name;
103
+ this.assignee = assignee;
104
+ this.workload = workload;
105
+ this.startDate = startDate;
106
+ this.endDate = endDate;
107
+ this.actualStartDate = actualStartDate;
108
+ this.actualEndDate = actualEndDate;
109
+ this.progressRate = progressRate;
110
+ this.scheduledWorkDays = scheduledWorkDays;
111
+ this.pv = pv;
112
+ this.ev = ev;
113
+ this.spi = spi;
114
+ this.expectedProgressDate = expectedProgressDate;
115
+ this.delayDays = delayDays;
116
+ this.remarks = remarks;
117
+ this.parentId = parentId;
118
+ this.isLeaf = isLeaf;
119
+ this.plotMap = plotMap;
120
+ /**
121
+ * 基準日(その日のみの)のPVを計算する。
122
+ * 基本、稼働予定の日数 / 予定工数 の値。
123
+ * その日に タスクがなければ0。
124
+ * なんらかの理由で、稼働予定日数がNaN/undefined/ゼロの場合、undefinedを返す。
125
+ * なんらかの理由で、予定工数がNaN/undefinedの場合、undefinedを返す。
126
+ *
127
+ * @param baseDate 基準日
128
+ * @return
129
+ */
130
+ this.calculatePV = (baseDate) => {
131
+ if (!this.checkStartEndDateAndPlotMap()) {
132
+ return undefined;
133
+ }
134
+ const {
135
+ // scheduledWorkDays, // 稼働予定の日数を取得 N (calculatePVsにあわせるなら、ココホントはplotMapの数にすべきか)
136
+ // workload, // 予定工数を取得 M
137
+ startDate, endDate, plotMap, } = this;
138
+ const workloadPerDay = this.workloadPerDay;
139
+ if (workloadPerDay === undefined) {
140
+ return undefined;
141
+ }
142
+ // レンジ外なら0
143
+ if (!isInRange(baseDate, startDate, endDate, plotMap)) {
144
+ return 0.0;
145
+ }
146
+ return workloadPerDay;
147
+ };
148
+ /**
149
+ * 基準日終了時点の累積PVを返す。タスクが始まっていなかったら0.
150
+ * なんらかの理由で、予定工数がNaN/undefinedの場合、undefinedを返す。
151
+ * なんらかの理由で、稼働予定日数がNaN/undefined/ゼロの場合、undefinedを返す。
152
+ * plotMapからカウントしている。(Excelから読む際は稼働予定日数より□のプロット優先となるってこと)
153
+ * plotMapが取れなかったらゼロ
154
+ * 開始日終了日が取れなかったらゼロ
155
+ *
156
+ * @param baseDate
157
+ * @return
158
+ */
159
+ this.calculatePVs = (baseDate) => {
160
+ if (!this.checkStartEndDateAndPlotMap()) {
161
+ return 0.0;
162
+ }
163
+ let pvs = 0;
164
+ const baseSerial = (0, excel_csv_read_write_1.date2Sn)(baseDate);
165
+ // plotMapのキー値(ExcelのDateのシリアル値)
166
+ // 指定した基準日「まで(含む)」のpv値は足す。
167
+ // ホントは土日を除去しないと、親タスクの計算はバグってしまう
168
+ // (土日もプロットされているため。かつ、稼働予定日数も間違っている)
169
+ for (const [serial /*value*/] of this.plotMap.entries()) {
170
+ if (serial <= baseSerial) {
171
+ const pv = this.calculatePV((0, excel_csv_read_write_1.dateFromSn)(serial));
172
+ pvs += pv ?? 0.0;
173
+ }
174
+ }
175
+ return pvs;
176
+ };
177
+ this.checkStartEndDateAndPlotMap = () => {
178
+ const { startDate, endDate, plotMap, id, name } = this;
179
+ if (!startDate || !endDate) {
180
+ logger.warn(`タスクID:${id} 日付エラー。開始日:[${(0, common_1.dateStr)(startDate)}],終了日:[${(0, common_1.dateStr)(endDate)}]が取得できず.タスク名: ${name}`);
181
+ return false;
182
+ }
183
+ if (!plotMap) {
184
+ logger.warn(`タスクID:${id} plotMapエラー(undefined)`);
185
+ return false;
186
+ }
187
+ return true;
188
+ };
189
+ }
190
+ /**
191
+ * 予定工数 / 稼働予定日数 による一日あたりの工数(任意)
192
+ * 計算不能な場合は undefined
193
+ */
194
+ get workloadPerDay() {
195
+ const { workload, scheduledWorkDays } = this;
196
+ const { id, name } = this;
197
+ const isValidNumber = (value) => typeof value === 'number' && !Number.isNaN(value);
198
+ if (isValidNumber(workload) &&
199
+ isValidNumber(scheduledWorkDays) &&
200
+ scheduledWorkDays !== 0) {
201
+ return workload / scheduledWorkDays;
202
+ }
203
+ logger.warn(`タスクID:${id} 日数エラー(0/空)。稼動予定日数:[${scheduledWorkDays}],予定工数:[${workload}]. タスク名: ${name}`);
204
+ return undefined;
205
+ }
206
+ get finished() {
207
+ return this.progressRate === 1.0;
208
+ }
209
+ /**
210
+ * 指定した基準日で、タスクが期限切れかどうかを判定する。
211
+ * - 終了日 <= 基準日 かつ 未完了 の場合に true を返す
212
+ * (あくまで基準日の業務が終わったときの状況を算出する考えなので、等号を入れた)
213
+ * progressRate はundefinedの場合もある(未完了と見なす)
214
+ */
215
+ isOverdueAt(baseDate) {
216
+ if (!this.endDate)
217
+ return false;
218
+ const isNotFinished = this.progressRate === undefined || this.progressRate < 1.0;
219
+ return isNotFinished && this.endDate <= baseDate;
220
+ }
221
+ /**
222
+ * TaskNode から、TaskRowを作る
223
+ * @param node
224
+ * @param level
225
+ * @param parentId
226
+ * @returns
227
+ */
228
+ static fromNode(node, level, parentId) {
229
+ return new TaskRow(node.sharp, node.id, level, node.name, node.assignee, node.workload, node.startDate, node.endDate, node.actualStartDate, node.actualEndDate, node.progressRate, node.scheduledWorkDays, node.pv, node.ev, node.spi, node.expectedProgressDate, node.delayDays, node.remarks, parentId, node.isLeaf, node.plotMap);
230
+ }
231
+ }
232
+ exports.TaskRow = TaskRow;
233
+ /**
234
+ * baseDateがレンジにあるかどうか
235
+ * @param baseDate
236
+ * @param startDate
237
+ * @param endDate
238
+ * @returns
239
+ */
240
+ function isInRange(baseDate, startDate, endDate, plotMap) {
241
+ const baseSerial = (0, excel_csv_read_write_1.date2Sn)(baseDate);
242
+ const startSerial = (0, excel_csv_read_write_1.date2Sn)(startDate);
243
+ const endSerial = (0, excel_csv_read_write_1.date2Sn)(endDate);
244
+ return plotMap.get(baseSerial) === true && startSerial <= baseSerial && baseSerial <= endSerial;
245
+ // return startDate <= baseDate && baseDate <= endDate
246
+ }
247
+ // const baseDates = [
248
+ // new Date('2025-06-09T00:00:00+09:00'),
249
+ // new Date('2025-06-10T00:00:00+09:00'),
250
+ // new Date('2025-06-11T00:00:00+09:00'),
251
+ // new Date('2025-06-12T00:00:00+09:00'),
252
+ // new Date('2025-06-13T00:00:00+09:00'),
253
+ // ]
254
+ // const startDate = new Date('2025-06-08T15:00:00.000Z')
255
+ // const endDate = new Date('2025-06-12T15:00:00.000Z')
256
+ // for (const baseDate of baseDates) {
257
+ // const result = getElapsedDays(baseDate, startDate, endDate)
258
+ // console.log(result) // => 11(日数:10日差 + 1)
259
+ // }
260
+ //# sourceMappingURL=TaskRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskRow.js","sourceRoot":"","sources":["../../src/domain/TaskRow.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAC1D,sCAAqC;AACrC,sCAAmC;AAGnC,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,gBAAgB,CAAC,CAAA;AAC1C;;GAEG;AACH,MAAa,OAAO;IAChB;IACI;;OAEG;IACa,KAAa;IAE7B;;OAEG;IACa,EAAU;IAE1B;;OAEG;IACa,KAAa;IAE7B;;OAEG;IACa,IAAY;IAE5B;;OAEG;IACa,QAAiB;IAEjC;;OAEG;IACa,QAAiB;IAEjC;;OAEG;IACa,SAAgB;IAEhC;;OAEG;IACa,OAAc;IAE9B,MAAM;IACN,qBAAqB;IACrB,MAAM;IACN,oCAAoC;IAEpC,cAAc;IAEd;;OAEG;IACa,eAAsB;IAEtC;;OAEG;IACa,aAAoB;IAEpC;;OAEG;IACa,YAAqB;IAErC;;OAEG;IACa,iBAA0B;IAE1C;;OAEG;IACa,EAAW;IAE3B;;OAEG;IACa,EAAW;IAE3B;;OAEG;IACa,GAAY;IAE5B;;OAEG;IACa,oBAA2B;IAE3C;;OAEG;IACa,SAAkB;IAElC;;OAEG;IACa,OAAgB;IAEhC;;OAEG;IACI,QAAiB;IAExB;;;OAGG;IACa,MAAgB,EAEhB,OAA8B;QAzG9B,UAAK,GAAL,KAAK,CAAQ;QAKb,OAAE,GAAF,EAAE,CAAQ;QAKV,UAAK,GAAL,KAAK,CAAQ;QAKb,SAAI,GAAJ,IAAI,CAAQ;QAKZ,aAAQ,GAAR,QAAQ,CAAS;QAKjB,aAAQ,GAAR,QAAQ,CAAS;QAKjB,cAAS,GAAT,SAAS,CAAO;QAKhB,YAAO,GAAP,OAAO,CAAO;QAYd,oBAAe,GAAf,eAAe,CAAO;QAKtB,kBAAa,GAAb,aAAa,CAAO;QAKpB,iBAAY,GAAZ,YAAY,CAAS;QAKrB,sBAAiB,GAAjB,iBAAiB,CAAS;QAK1B,OAAE,GAAF,EAAE,CAAS;QAKX,OAAE,GAAF,EAAE,CAAS;QAKX,QAAG,GAAH,GAAG,CAAS;QAKZ,yBAAoB,GAApB,oBAAoB,CAAO;QAK3B,cAAS,GAAT,SAAS,CAAS;QAKlB,YAAO,GAAP,OAAO,CAAS;QAKzB,aAAQ,GAAR,QAAQ,CAAS;QAMR,WAAM,GAAN,MAAM,CAAU;QAEhB,YAAO,GAAP,OAAO,CAAuB;QA4ClD;;;;;;;;;WASG;QACH,gBAAW,GAAG,CAAC,QAAc,EAAsB,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;gBACtC,OAAO,SAAS,CAAA;YACpB,CAAC;YAED,MAAM;YACF,gFAAgF;YAChF,yBAAyB;YACzB,SAAS,EACT,OAAO,EACP,OAAO,GACV,GAAG,IAAI,CAAA;YAER,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;YAC1C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAA;YACpB,CAAC;YAED,UAAU;YACV,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACpD,OAAO,GAAG,CAAA;YACd,CAAC;YAED,OAAO,cAAc,CAAA;QACzB,CAAC,CAAA;QAED;;;;;;;;;;WAUG;QACH,iBAAY,GAAG,CAAC,QAAc,EAAU,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;gBACtC,OAAO,GAAG,CAAA;YACd,CAAC;YAED,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,MAAM,UAAU,GAAG,IAAA,8BAAO,EAAC,QAAQ,CAAC,CAAA;YACpC,gCAAgC;YAChC,0BAA0B;YAC1B,gCAAgC;YAChC,oCAAoC;YACpC,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;oBACvB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAA,iCAAU,EAAC,MAAM,CAAC,CAAC,CAAA;oBAC/C,GAAG,IAAI,EAAE,IAAI,GAAG,CAAA;gBACpB,CAAC;YACL,CAAC;YACD,OAAO,GAAG,CAAA;QACd,CAAC,CAAA;QAED,gCAA2B,GAAG,GAAkC,EAAE;YAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;YACtD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CACP,SAAS,EAAE,eAAe,IAAA,gBAAO,EAAC,SAAS,CAAC,UAAU,IAAA,gBAAO,EAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAChG,CAAA;gBACD,OAAO,KAAK,CAAA;YAChB,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;gBAChD,OAAO,KAAK,CAAA;YAChB,CAAC;YACD,OAAO,IAAI,CAAA;QACf,CAAC,CAAA;IA5HE,CAAC;IAEJ;;;OAGG;IACH,IAAI,cAAc;QACd,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAA;QAC5C,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QACzB,MAAM,aAAa,GAAG,CAAC,KAAc,EAAmB,EAAE,CACtD,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAErD,IACI,aAAa,CAAC,QAAQ,CAAC;YACvB,aAAa,CAAC,iBAAiB,CAAC;YAChC,iBAAiB,KAAK,CAAC,EACzB,CAAC;YACC,OAAO,QAAQ,GAAG,iBAAiB,CAAA;QACvC,CAAC;QACD,MAAM,CAAC,IAAI,CACP,SAAS,EAAE,uBAAuB,iBAAiB,WAAW,QAAQ,YAAY,IAAI,EAAE,CAC3F,CAAA;QAED,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,YAAY,KAAK,GAAG,CAAA;IACpC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,QAAc;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;QAChF,OAAO,aAAa,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA;IACpD,CAAC;IAqFD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,QAAiB;QAC5D,OAAO,IAAI,OAAO,CACd,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,EAAE,EACP,KAAK,EACL,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CACf,CAAA;IACL,CAAC;CACJ;AA7QD,0BA6QC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CACd,QAAc,EACd,SAAe,EACf,OAAa,EACb,OAA6B;IAE7B,MAAM,UAAU,GAAG,IAAA,8BAAO,EAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,IAAA,8BAAO,EAAC,SAAS,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,IAAA,8BAAO,EAAC,OAAO,CAAC,CAAA;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,SAAS,CAAA;IAC/F,sDAAsD;AAC1D,CAAC;AASD,sBAAsB;AACtB,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,IAAI;AACJ,yDAAyD;AACzD,uDAAuD;AAEvD,sCAAsC;AACtC,kEAAkE;AAClE,gDAAgD;AAChD,IAAI"}
@@ -0,0 +1,11 @@
1
+ import { TaskRow } from './TaskRow';
2
+ /**
3
+ * TaskRowを何らかの方法で生成する
4
+ * Excelから、Mockから、Webから、など。。
5
+ * parentIdや、isLeafなどもセットすること
6
+ *
7
+ */
8
+ export interface TaskRowCreator {
9
+ createRowData(): Promise<TaskRow[]>;
10
+ }
11
+ //# sourceMappingURL=TaskRowCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskRowCreator.d.ts","sourceRoot":"","sources":["../../src/domain/TaskRowCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;CACtC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TaskRowCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskRowCreator.js","sourceRoot":"","sources":["../../src/domain/TaskRowCreator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { TaskNode } from './TaskNode';
2
+ import { TaskRow } from './TaskRow';
3
+ export declare class TaskService {
4
+ /**
5
+ * TaskRowからparentIdに従って、ツリー構造のTaskNodeをビルドする
6
+ * @param rows
7
+ * @returns
8
+ */
9
+ buildTaskTree(rows: TaskRow[]): TaskNode[];
10
+ /**
11
+ * TaskNodeから、オブジェクト構造に従って、フラット化したTaskRowを返す
12
+ * parentId,levelは再計算する
13
+ * @param nodes
14
+ * @returns
15
+ */
16
+ convertToTaskRows: (nodes: TaskNode[]) => TaskRow[];
17
+ }
18
+ //# sourceMappingURL=TaskService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskService.d.ts","sourceRoot":"","sources":["../../src/domain/TaskService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,qBAAa,WAAW;IACpB;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE;IA+B1C;;;;;OAKG;IACH,iBAAiB,GAAI,OAAO,QAAQ,EAAE,KAAG,OAAO,EAAE,CAUjD;CACJ"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskService = void 0;
4
+ const TaskNode_1 = require("./TaskNode");
5
+ const TaskRow_1 = require("./TaskRow");
6
+ class TaskService {
7
+ constructor() {
8
+ // const flattenTaskNodes = (nodes: TaskNode[]): TaskNode[] => {
9
+ // const result: TaskNode[] = []
10
+ // const dfs = (node: TaskNode) => {
11
+ // result.push({ ...node, children: [] }) // children は空でOK(再ツリー化の邪魔になるため)
12
+ // node.children.forEach(dfs)
13
+ // }
14
+ // nodes.forEach(dfs)
15
+ // return result
16
+ // }
17
+ /**
18
+ * TaskNodeから、オブジェクト構造に従って、フラット化したTaskRowを返す
19
+ * parentId,levelは再計算する
20
+ * @param nodes
21
+ * @returns
22
+ */
23
+ this.convertToTaskRows = (nodes) => {
24
+ const result = [];
25
+ const dfs = (node, parentId, level = 1) => {
26
+ result.push(TaskRow_1.TaskRow.fromNode(node, level, parentId));
27
+ node.children.forEach((child) => dfs(child, node.id, level + 1));
28
+ };
29
+ nodes.forEach((root) => dfs(root, undefined, 1)); // ルートノードは親なし、level=1
30
+ return result;
31
+ };
32
+ }
33
+ /**
34
+ * TaskRowからparentIdに従って、ツリー構造のTaskNodeをビルドする
35
+ * @param rows
36
+ * @returns
37
+ */
38
+ buildTaskTree(rows) {
39
+ const nodeMap = new Map();
40
+ const roots = [];
41
+ for (const row of rows) {
42
+ const node = TaskNode_1.TaskNode.fromRow(row);
43
+ nodeMap.set(row.id, node);
44
+ if (row.parentId !== undefined) {
45
+ const parentNode = nodeMap.get(row.parentId);
46
+ parentNode?.children.push(node);
47
+ }
48
+ else {
49
+ roots.push(node);
50
+ }
51
+ }
52
+ return roots;
53
+ }
54
+ }
55
+ exports.TaskService = TaskService;
56
+ //# sourceMappingURL=TaskService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskService.js","sourceRoot":"","sources":["../../src/domain/TaskService.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,uCAAmC;AAEnC,MAAa,WAAW;IAAxB;QAyBI,gEAAgE;QAChE,oCAAoC;QAEpC,wCAAwC;QACxC,kFAAkF;QAClF,qCAAqC;QACrC,QAAQ;QAER,yBAAyB;QACzB,oBAAoB;QACpB,IAAI;QAEJ;;;;;WAKG;QACH,sBAAiB,GAAG,CAAC,KAAiB,EAAa,EAAE;YACjD,MAAM,MAAM,GAAc,EAAE,CAAA;YAE5B,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,QAAiB,EAAE,QAAgB,CAAC,EAAE,EAAE;gBACjE,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;gBACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;YACpE,CAAC,CAAA;YAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,qBAAqB;YACtE,OAAO,MAAM,CAAA;QACjB,CAAC,CAAA;IACL,CAAC;IArDG;;;;OAIG;IACH,aAAa,CAAC,IAAe;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;QAC3C,MAAM,KAAK,GAAe,EAAE,CAAA;QAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,mBAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAEzB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC5C,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpB,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;CA+BJ;AAtDD,kCAsDC"}
@@ -0,0 +1,9 @@
1
+ export * from './Project';
2
+ export * from './ProjectCreator';
3
+ export * from './ProjectRepository';
4
+ export * from './ProjectService';
5
+ export * from './TaskNode';
6
+ export * from './TaskRow';
7
+ export * from './TaskRowCreator';
8
+ export * from './TaskService';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Project"), exports);
18
+ __exportStar(require("./ProjectCreator"), exports);
19
+ __exportStar(require("./ProjectRepository"), exports);
20
+ __exportStar(require("./ProjectService"), exports);
21
+ __exportStar(require("./TaskNode"), exports);
22
+ __exportStar(require("./TaskRow"), exports);
23
+ __exportStar(require("./TaskRowCreator"), exports);
24
+ __exportStar(require("./TaskService"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,mDAAgC;AAChC,sDAAmC;AACnC,mDAAgC;AAChC,6CAA0B;AAC1B,4CAAyB;AACzB,mDAAgC;AAChC,gDAA6B"}
@@ -0,0 +1,9 @@
1
+ import { Project } from '../domain/Project';
2
+ import { ProjectCreator } from '../domain/ProjectCreator';
3
+ export declare class ExcelBufferProjectCreator implements ProjectCreator {
4
+ private _buffer;
5
+ private _projectName;
6
+ constructor(_buffer: ArrayBuffer, _projectName: string);
7
+ createProject(): Promise<Project>;
8
+ }
9
+ //# sourceMappingURL=ExcelBufferProjectCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelBufferProjectCreator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/ExcelBufferProjectCreator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,qBAAa,yBAA0B,YAAW,cAAc;IAExD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;gBADZ,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,MAAM;IAG1B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAW1C"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExcelBufferProjectCreator = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const MappingProjectCreator_1 = require("./MappingProjectCreator");
6
+ class ExcelBufferProjectCreator {
7
+ constructor(_buffer, _projectName) {
8
+ this._buffer = _buffer;
9
+ this._projectName = _projectName;
10
+ }
11
+ async createProject() {
12
+ const mappings = await (0, excel_csv_read_write_1.excelBuffer2json)(this._buffer, 'ガントチャート', undefined, {
13
+ startIndex: 0,
14
+ useHeader: false,
15
+ // columnEndIndex: 26,
16
+ });
17
+ // プロジェクト名
18
+ const projectName = this._projectName;
19
+ return new MappingProjectCreator_1.MappingProjectCreator(mappings, projectName).createProject();
20
+ }
21
+ }
22
+ exports.ExcelBufferProjectCreator = ExcelBufferProjectCreator;
23
+ //# sourceMappingURL=ExcelBufferProjectCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelBufferProjectCreator.js","sourceRoot":"","sources":["../../src/infrastructure/ExcelBufferProjectCreator.ts"],"names":[],"mappings":";;;AAAA,+DAAuD;AAGvD,mEAA+D;AAE/D,MAAa,yBAAyB;IAClC,YACY,OAAoB,EACpB,YAAoB;QADpB,YAAO,GAAP,OAAO,CAAa;QACpB,iBAAY,GAAZ,YAAY,CAAQ;IAC7B,CAAC;IAEJ,KAAK,CAAC,aAAa;QACf,MAAM,QAAQ,GAAG,MAAM,IAAA,uCAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;YACxE,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,KAAK;YAChB,sBAAsB;SACzB,CAAC,CAAA;QAEF,UAAU;QACV,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,OAAO,IAAI,6CAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,aAAa,EAAE,CAAA;IAC3E,CAAC;CACJ;AAjBD,8DAiBC"}
@@ -0,0 +1,8 @@
1
+ import { Project } from '../domain/Project';
2
+ import { ProjectCreator } from '../domain/ProjectCreator';
3
+ export declare class ExcelProjectCreator implements ProjectCreator {
4
+ private _excelPath;
5
+ constructor(_excelPath: string);
6
+ createProject(): Promise<Project>;
7
+ }
8
+ //# sourceMappingURL=ExcelProjectCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelProjectCreator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/ExcelProjectCreator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,qBAAa,mBAAoB,YAAW,cAAc;IAC1C,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEhC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAgB1C"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExcelProjectCreator = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const MappingProjectCreator_1 = require("./MappingProjectCreator");
6
+ class ExcelProjectCreator {
7
+ constructor(_excelPath) {
8
+ this._excelPath = _excelPath;
9
+ }
10
+ async createProject() {
11
+ const mappings = await (0, excel_csv_read_write_1.excel2json2)({
12
+ filePath: this._excelPath,
13
+ sheetName: 'ガントチャート',
14
+ option: {
15
+ startIndex: 0,
16
+ useHeader: false,
17
+ // columnEndIndex: 26,
18
+ },
19
+ });
20
+ // プロジェクト名
21
+ const projectName = getFilenameWithoutExtension(this._excelPath);
22
+ // 基準日をセット
23
+ return new MappingProjectCreator_1.MappingProjectCreator(mappings, projectName).createProject();
24
+ }
25
+ }
26
+ exports.ExcelProjectCreator = ExcelProjectCreator;
27
+ const getFilenameWithoutExtension = (fullPath) => {
28
+ const filename = fullPath.split(/[/\\]/).pop() ?? '';
29
+ return filename.replace(/\.[^/.]+$/, ''); // 最後の .xxx を除去
30
+ };
31
+ //# sourceMappingURL=ExcelProjectCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelProjectCreator.js","sourceRoot":"","sources":["../../src/infrastructure/ExcelProjectCreator.ts"],"names":[],"mappings":";;;AAAA,+DAAkD;AAGlD,mEAA+D;AAE/D,MAAa,mBAAmB;IAC5B,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAE1C,KAAK,CAAC,aAAa;QACf,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAW,EAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE;gBACJ,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,KAAK;gBAChB,sBAAsB;aACzB;SACJ,CAAC,CAAA;QACF,UAAU;QACV,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChE,UAAU;QAEV,OAAO,IAAI,6CAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,aAAa,EAAE,CAAA;IAC3E,CAAC;CACJ;AAnBD,kDAmBC;AAED,MAAM,2BAA2B,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;IACpD,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA,CAAC,eAAe;AAC5D,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { TaskRowCreator } from '../domain/TaskRowCreator';
2
+ import { TaskRow } from '../domain/TaskRow';
3
+ export declare class ExcelTaskRowCreator implements TaskRowCreator {
4
+ private _excelPath;
5
+ constructor(_excelPath: string);
6
+ createRowData(): Promise<TaskRow[]>;
7
+ }
8
+ //# sourceMappingURL=ExcelTaskRowCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelTaskRowCreator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/ExcelTaskRowCreator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,qBAAa,mBAAoB,YAAW,cAAc;IAC1C,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEhC,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAY5C"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExcelTaskRowCreator = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const TaskRowCreatorImpl_1 = require("./TaskRowCreatorImpl");
6
+ class ExcelTaskRowCreator {
7
+ constructor(_excelPath) {
8
+ this._excelPath = _excelPath;
9
+ }
10
+ async createRowData() {
11
+ const mappings = await (0, excel_csv_read_write_1.excel2json2)({
12
+ filePath: this._excelPath,
13
+ sheetName: 'ガントチャート',
14
+ option: {
15
+ startIndex: 1,
16
+ useHeader: false,
17
+ },
18
+ });
19
+ const taskRowCreator = new TaskRowCreatorImpl_1.TaskRowCreatorImpl(mappings);
20
+ return taskRowCreator.createRowData();
21
+ }
22
+ }
23
+ exports.ExcelTaskRowCreator = ExcelTaskRowCreator;
24
+ //# sourceMappingURL=ExcelTaskRowCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelTaskRowCreator.js","sourceRoot":"","sources":["../../src/infrastructure/ExcelTaskRowCreator.ts"],"names":[],"mappings":";;;AAAA,+DAAkD;AAGlD,6DAAyD;AAEzD,MAAa,mBAAmB;IAC5B,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAE1C,KAAK,CAAC,aAAa;QACf,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAW,EAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE;gBACJ,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,KAAK;aACnB;SACJ,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,IAAI,uCAAkB,CAAC,QAAQ,CAAC,CAAA;QACvD,OAAO,cAAc,CAAC,aAAa,EAAE,CAAA;IACzC,CAAC;CACJ;AAfD,kDAeC"}
@@ -0,0 +1,9 @@
1
+ import { Project } from '../domain/Project';
2
+ import { ProjectCreator } from '../domain/ProjectCreator';
3
+ export declare class MappingProjectCreator implements ProjectCreator {
4
+ private _mappings;
5
+ private _projectName;
6
+ constructor(_mappings: unknown[], _projectName: string);
7
+ createProject(): Promise<Project>;
8
+ }
9
+ //# sourceMappingURL=MappingProjectCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MappingProjectCreator.d.ts","sourceRoot":"","sources":["../../src/infrastructure/MappingProjectCreator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAKzD,qBAAa,qBAAsB,YAAW,cAAc;IAEpD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;gBADZ,SAAS,EAAE,OAAO,EAAE,EACpB,YAAY,EAAE,MAAM;IAG1B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CA4B1C"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MappingProjectCreator = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const Project_1 = require("../domain/Project");
6
+ const TaskRowCreatorImpl_1 = require("./TaskRowCreatorImpl");
7
+ const TaskService_1 = require("../domain/TaskService");
8
+ const common_1 = require("../common");
9
+ class MappingProjectCreator {
10
+ constructor(_mappings, _projectName) {
11
+ this._mappings = _mappings;
12
+ this._projectName = _projectName;
13
+ }
14
+ async createProject() {
15
+ // プロジェクト名
16
+ const projectName = this._projectName;
17
+ const mappings = this._mappings;
18
+ const baseDateRow = mappings.shift(); // データじゃないので、取得して除去
19
+ const baseDate = baseDateRow['26']; // ココに基準日が入ってる
20
+ // データを渡してTaskRow[]を作ってもらう
21
+ const taskRowCreator = new TaskRowCreatorImpl_1.TaskRowCreatorImpl(mappings);
22
+ const taskRows = await taskRowCreator.createRowData();
23
+ // isLeafなヤツのstartDateで最小値
24
+ const from = (0, common_1.minDate)(taskRows.map((taskRow) => (taskRow.isLeaf ? taskRow.startDate : undefined)));
25
+ // isLeafなヤツのendtDateで最大値
26
+ const to = (0, common_1.maxDate)(taskRows.map((taskRow) => (taskRow.isLeaf ? taskRow.endDate : undefined)));
27
+ // TaskNode[]にBuildしてもらう
28
+ const taskService = new TaskService_1.TaskService();
29
+ const taskNodes = taskService.buildTaskTree(taskRows);
30
+ // 基準日をセット
31
+ const project = new Project_1.Project(taskNodes, (0, excel_csv_read_write_1.dateFromSn)(baseDate), from, to, projectName);
32
+ return project;
33
+ }
34
+ }
35
+ exports.MappingProjectCreator = MappingProjectCreator;
36
+ //# sourceMappingURL=MappingProjectCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MappingProjectCreator.js","sourceRoot":"","sources":["../../src/infrastructure/MappingProjectCreator.ts"],"names":[],"mappings":";;;AAAA,+DAAiD;AACjD,+CAA2C;AAE3C,6DAAyD;AACzD,uDAAmD;AACnD,sCAA4C;AAE5C,MAAa,qBAAqB;IAC9B,YACY,SAAoB,EACpB,YAAoB;QADpB,cAAS,GAAT,SAAS,CAAW;QACpB,iBAAY,GAAZ,YAAY,CAAQ;IAC7B,CAAC;IAEJ,KAAK,CAAC,aAAa;QACf,UAAU;QACV,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA,CAAC,mBAAmB;QACxD,MAAM,QAAQ,GAAI,WAAsC,CAAC,IAAI,CAAC,CAAA,CAAC,cAAc;QAE7E,0BAA0B;QAC1B,MAAM,cAAc,GAAG,IAAI,uCAAkB,CAAC,QAAQ,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAA;QAErD,0BAA0B;QAC1B,MAAM,IAAI,GAAG,IAAA,gBAAO,EAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAC9E,CAAA;QACD,yBAAyB;QACzB,MAAM,EAAE,GAAG,IAAA,gBAAO,EACd,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAC5E,CAAA;QAED,wBAAwB;QACxB,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;QACrC,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAErD,UAAU;QACV,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,SAAS,EAAE,IAAA,iCAAU,EAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;QACnF,OAAO,OAAO,CAAA;IAClB,CAAC;CACJ;AAlCD,sDAkCC"}
@@ -0,0 +1,6 @@
1
+ import { Project } from '../domain';
2
+ import { ProjectRepository } from '../domain/ProjectRepository';
3
+ export declare class ProjectRepositoryImpl implements ProjectRepository {
4
+ save(project: Project): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=ProjectRepositoryImpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectRepositoryImpl.d.ts","sourceRoot":"","sources":["../../src/infrastructure/ProjectRepositoryImpl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,qBAAa,qBAAsB,YAAW,iBAAiB;IACrD,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA8H9C"}