evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
41 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MappingProjectCreator = void 0;
const excel_csv_read_write_1 = require("excel-csv-read-write");
const Project_1 = require("../domain/Project");
const TaskRowCreatorImpl_1 = require("./TaskRowCreatorImpl");
const TaskService_1 = require("../domain/TaskService");
const common_1 = require("../common");
const HolidayData_1 = require("../domain/HolidayData");
class MappingProjectCreator {
constructor(_mappings, _projectName, _holidayRawDatas) {
this._mappings = _mappings;
this._projectName = _projectName;
this._holidayRawDatas = _holidayRawDatas;
}
async createProject() {
// プロジェクト名
const projectName = this._projectName;
const mappings = this._mappings;
const baseDateRow = mappings.shift(); // データじゃないので、取得して除去
const baseDate = baseDateRow['26']; // ココに基準日が入ってる
// データを渡してTaskRow[]を作ってもらう
const taskRowCreator = new TaskRowCreatorImpl_1.TaskRowCreatorImpl(mappings);
const taskRows = await taskRowCreator.createRowData();
// isLeafなヤツのstartDateで最小値
const from = (0, common_1.minDate)(taskRows.map((taskRow) => (taskRow.isLeaf ? taskRow.startDate : undefined)));
// isLeafなヤツのendtDateで最大値
const to = (0, common_1.maxDate)(taskRows.map((taskRow) => (taskRow.isLeaf ? taskRow.endDate : undefined)));
// TaskNode[]にBuildしてもらう
const taskService = new TaskService_1.TaskService();
const taskNodes = taskService.buildTaskTree(taskRows);
const holidayDatas = this._holidayRawDatas.map((rawData) => {
return new HolidayData_1.HolidayData((0, excel_csv_read_write_1.dateFromSn)(rawData['日付']), rawData['祝日'], rawData['祝日定義ルール'], rawData['振替']);
});
// 基準日をセット
const project = new Project_1.Project(taskNodes, (0, excel_csv_read_write_1.dateFromSn)(baseDate), holidayDatas, from, to, projectName);
return project;
}
}
exports.MappingProjectCreator = MappingProjectCreator;
//# sourceMappingURL=MappingProjectCreator.js.map