evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
106 lines • 3.71 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectProgressCreatorImpl = exports.ProjectProgressBufferCreatorImpl = exports.ProjectProgress = void 0;
const yargs_1 = __importDefault(require("yargs"));
const helpers_1 = require("yargs/helpers");
// import { getLogger } from '../logger'
const excel_csv_read_write_1 = require("excel-csv-read-write");
const infrastructure_1 = require("../infrastructure");
const common_1 = require("../common");
const common_2 = require("../common");
// const logger = getLogger('main')
class ProjectProgress {
constructor(_date, _pv, _ev) {
this._date = _date;
this._pv = _pv;
this._ev = _ev;
}
get spi() {
const { _pv, _ev } = this;
return (0, common_1.isValidNumber)(_pv) && (0, common_1.isValidNumber)(_ev) && _pv !== 0 ? _ev / _pv : undefined;
}
get date() {
return this._date;
}
get pv() {
return this._pv;
}
get ev() {
return this._ev;
}
}
exports.ProjectProgress = ProjectProgress;
class ProjectProgressBufferCreatorImpl {
constructor(_buffer) {
this._buffer = _buffer;
}
async createProjectProgress() {
const rawDatas = (await (0, excel_csv_read_write_1.excelBuffer2json)(this._buffer, 'EVM記録'));
return toProjectProgress(rawDatas);
}
}
exports.ProjectProgressBufferCreatorImpl = ProjectProgressBufferCreatorImpl;
class ProjectProgressCreatorImpl {
constructor(_excelPath) {
this._excelPath = _excelPath;
}
async createProjectProgress() {
const rawDatas = (await (0, excel_csv_read_write_1.excel2json2)({
filePath: this._excelPath,
sheetName: 'EVM記録',
}));
// console.table(rawDatas)
return toProjectProgress(rawDatas);
}
}
exports.ProjectProgressCreatorImpl = ProjectProgressCreatorImpl;
const toProjectProgress = (rawDatas) => {
return rawDatas
.filter((rawData) => rawData['PV'] !== undefined || rawData['EV'] !== undefined)
.map((rawData) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
return new ProjectProgress((0, excel_csv_read_write_1.dateFromSn)(rawData['日付']), rawData['PV'], rawData['EV']);
});
};
const main = async () => {
const { excelProjectPath, excelProgressPath } = createArgs();
const projectProgressCreator = new ProjectProgressCreatorImpl(excelProgressPath);
const datas = await projectProgressCreator.createProjectProgress();
printTable(datas);
const creator = new infrastructure_1.ExcelProjectCreator(excelProjectPath);
const project = await creator.createProject();
const stats = project.statisticsByProject;
console.table(stats);
};
const createArgs = () => {
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
.option('excelProgressPath', {
type: 'string',
description: 'Excel file Path',
default: './classdata.xlsx',
})
.option('excelProjectPath', {
type: 'string',
description: 'Excel file Path',
default: './classdata.xlsx',
})
.help()
.parseSync(); // 型付きで取得
return argv;
};
main();
function printTable(datas) {
const dispDatas = datas.map((data) => {
return {
date: (0, common_2.dateStr)(data.date),
pv: data.pv,
ev: data.ev,
spi: data.spi,
};
});
console.table(dispDatas);
}
//# sourceMappingURL=project-test2.js.map