evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
140 lines • 4.64 kB
TypeScript
import { TaskNode } from './TaskNode';
import { TaskRow } from './TaskRow';
import { HolidayData } from './HolidayData';
export declare class Project {
private readonly _taskNodes;
private readonly _baseDate;
private readonly _holidayDatas;
private readonly _startDate?;
private readonly _endDate?;
private readonly _name?;
private logger;
private _taskService;
private _cachedTaskRows?;
private _cachedTaskMap?;
constructor(_taskNodes: TaskNode[], _baseDate: Date, _holidayDatas: HolidayData[], _startDate?: Date | undefined, _endDate?: Date | undefined, _name?: string | undefined);
get baseDate(): Date;
get taskNodes(): TaskNode[];
get startDate(): Date | undefined;
get endDate(): Date | undefined;
get name(): string | undefined;
get holidayDatas(): HolidayData[];
get length(): number;
getTask(id: number): TaskRow | undefined;
toTaskRows(): TaskRow[];
/**
* 親を遡って、名前を"/"でjoinする
* @param task 子のタスク
* @param taskMap 親のタスクIDも存在する、<id,TaskRow>なMap
* @returns
*/
getFullTaskName(task?: TaskRow): string;
/**
* 指定された期間、担当者のタスク配列を返す。親タスクは除外しています。
* @param fromDate
* @param toDate
* @param assignee
* @returns
*/
getTaskRows(fromDate: Date, toDate?: Date, assignee?: string): TaskRow[];
printAndGetRawData: (printRowNum?: number) => {
予定開始日: string;
予定終了日: string;
実績開始日: string;
実績終了日: string;
進捗応当日: string;
sharp: number;
id: number;
level: number;
name: string;
assignee?: string | undefined;
workload?: number | undefined;
progressRate?: number | undefined;
scheduledWorkDays?: number | undefined;
pv?: number | undefined;
ev?: number | undefined;
spi?: number | undefined;
delayDays?: number | undefined;
remarks?: string | undefined;
parentId?: number | undefined;
isLeaf?: boolean | undefined;
calculateSPI: (baseDate: Date) => number | undefined;
calculateSV: (baseDate: Date) => number | undefined;
}[];
/**
* Project単位の統計情報を返す
* @param project
* @returns
*/
get statisticsByProject(): ProjectStatistics[];
get statisticsByName(): AssigneeStatistics[];
/**
* LongData形式のPV情報を返す
* @param calcPVS 累積が欲しいときはtrue、デフォルトはfalse
* @returns LongData[]
*/
private _internalPvByProjectLong;
/**
* Projectごともしくはヒトごとのデータについて、ひと単位の横並びデータに並び替える
* Excelに表示するなどはこちらが良い
* @param longDatas
* @returns
*/
private _toWideFormat;
private _internalPvByProject;
get pvByProjectLong(): LongData[];
get pvsByProjectLong(): LongData[];
get pvByProject(): Record<string, unknown>[];
get pvsByProject(): Record<string, unknown>[];
private _internalPvByNameLong;
private _internalPvByName;
get pvByNameLong(): LongData[];
get pvsByNameLong(): LongData[];
get pvByName(): Record<string, unknown>[];
get pvsByName(): Record<string, unknown>[];
isHoliday(date: Date): boolean;
/**
* 計算から除外されたタスクの一覧を取得
*
* @returns 除外されたタスクとその理由の配列
*
* @remarks
* - isLeaf === true のタスクのみを対象とする
* - validStatus.isValid === false のタスクを返す
*/
get excludedTasks(): ExcludedTask[];
}
export type Statistics = {
totalTasksCount?: number;
totalWorkloadExcel?: number;
totalWorkloadCalculated?: number;
averageWorkload?: number;
baseDate: string;
totalPvExcel?: number;
totalPvCalculated?: number;
totalEv?: number;
spi?: number;
};
export type ProjectStatistics = {
projectName?: string;
startDate: string;
endDate: string;
} & Statistics;
export type AssigneeStatistics = {
assignee?: string;
} & Statistics;
export type LongData = {
assignee: string;
baseDate: string;
value?: number;
};
/**
* 計算から除外されたタスクの情報
*/
export type ExcludedTask = {
/** 除外されたタスク */
task: TaskRow;
/** 除外理由(validStatus.invalidReason) */
reason: string;
};
//# sourceMappingURL=Project.d.ts.map