evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
50 lines • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExcelResourcePlansCreator = void 0;
const excel_csv_read_write_1 = require("excel-csv-read-write");
const resource_1 = require("../domain/resource");
class ExcelResourcePlansCreator {
constructor(_path, _sheetName) {
this._path = _path;
this._sheetName = _sheetName;
}
async createResourcePlans() {
return toUnitInfoArray(this._path, this._sheetName);
}
}
exports.ExcelResourcePlansCreator = ExcelResourcePlansCreator;
/**
* Excelファイルを読み込んで、UnitInfoデータの配列を作る
* @param path
* @returns
*/
const toUnitInfoArray = async (path, sheetName = '要員(工数)') => {
const results = await (0, excel_csv_read_write_1.excel2json)(path, sheetName);
const createUnit = ({ ユニットコード, ユニット名, }) => ({
ユニットコード,
ユニット名,
}); // そのプロパティだけ取り出す
return results
.filter((result) => (0, resource_1.isResourcePlan)(result))
.reduce((acc, record) => {
const currentUnit = createUnit(record); // そのプロパティだけ取り出す
const prevUnit = acc.length > 0
? createUnit(acc[acc.length - 1]) // 前回情報を返却値から取り出して持っておく
: { ユニットコード: '', ユニット名: '' };
// 各ユニットの先頭の行にしか、ユニット関連情報がないので、ユニットの切り替わりまで、前行の情報を引き継ぐ
const currentRecord = currentUnit.ユニットコード === undefined ? { ...record, ...prevUnit } : record; // ユニットコードが未定義だったら、前回ので上書き、そうでなかったらそのまま
return [...acc, currentRecord];
}, []);
// .map((record) => {
// const currentUnit = (({ ユニットコード, ユニット名 }) => ({
// ユニットコード,
// ユニット名,
// }))(record) // そのプロパティだけ取り出す
// // 各ユニットの先頭の行にしか、ユニット関連情報がないので、ユニットの切り替わりまで、前行の情報を引き継ぐ
// const ret =
// currentUnit.ユニットコード === undefined ? { ...record, ...prevUnit } : record // ユニットコードが未定義だったら、前回ので上書き、そうでなかったらそのまま
// prevUnit = (({ ユニットコード, ユニット名 }) => ({ ユニットコード, ユニット名 }))(ret) // 前回情報を返却値から取り出して持っておく
// return ret
// })
};
//# sourceMappingURL=ExcelResourcePlansCreator.js.map