import { TaskCategory, TaskCategoryID } from "./task"; import { Project } from "./project"; export interface TaskCategoriesIndex { [id: string]: TaskCategory } export interface TimeUnit { label: string acronym: string } export interface Params { taskCategories: TaskCategoriesIndex timeUnit: TimeUnit currency: string roundUpEstimations: boolean hideFinancialPreviewOnPrint: boolean } export const defaults = { taskCategories: { "RQ15CD3iX1Ey2f9kat7tfLGZmUx9GGc15nS6A7fYtZv76SnS4": { id: "RQ15CD3iX1Ey2f9kat7tfLGZmUx9GGc15nS6A7fYtZv76SnS4", label: "Développement", costPerTimeUnit: 500, }, "QRdGS5Pr5si9SSjU84WAq19cjxQ3rUL71jKh8oHSMZSY4bBH9": { id: "QRdGS5Pr5si9SSjU84WAq19cjxQ3rUL71jKh8oHSMZSY4bBH9", label: "Conduite de projet", costPerTimeUnit: 500, }, "RPcqFMLdQrgBSomv7Sao7EQSb7on6rtjfDQK5JZNhNSg9DwEo": { id: "RPcqFMLdQrgBSomv7Sao7EQSb7on6rtjfDQK5JZNhNSg9DwEo", label: "Recette", costPerTimeUnit: 500, }, }, timeUnit: { label: "jour/homme", acronym: "j/h", }, roundUpEstimations: true, currency: "€ H.T.", costPerTimeUnit: 500, hideFinancialPreviewOnPrint: false, } export function getTimeUnit(project: Project): TimeUnit { return project.params.timeUnit ? project.params.timeUnit : defaults.timeUnit; } export function getRoundUpEstimations(project: Project): boolean { return project.params.hasOwnProperty("roundUpEstimations") ? project.params.roundUpEstimations : defaults.roundUpEstimations; } export function getCurrency(project: Project): string { return project.params.currency ? project.params.currency : defaults.currency; } export function getTaskCategories(project: Project): TaskCategoriesIndex { return project.params.taskCategories ? project.params.taskCategories : defaults.taskCategories; } export function getTaskCategoryCost(taskCategory: TaskCategory): number { return taskCategory.hasOwnProperty("costPerTimeUnit") ? taskCategory.costPerTimeUnit : defaults.costPerTimeUnit; } export function getHideFinancialPreviewOnPrint(project: Project): boolean { return project.params.hasOwnProperty("hideFinancialPreviewOnPrint") ? project.params.hideFinancialPreviewOnPrint : defaults.hideFinancialPreviewOnPrint; }