evmtools-node 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +2 -0
  2. package/dist/common/calcUtils.d.ts +19 -7
  3. package/dist/common/calcUtils.d.ts.map +1 -1
  4. package/dist/common/calcUtils.js +55 -26
  5. package/dist/common/calcUtils.js.map +1 -1
  6. package/dist/domain/Project.d.ts.map +1 -1
  7. package/dist/domain/Project.js +6 -6
  8. package/dist/domain/Project.js.map +1 -1
  9. package/dist/domain/ProjectService.d.ts.map +1 -1
  10. package/dist/domain/ProjectService.js +15 -16
  11. package/dist/domain/ProjectService.js.map +1 -1
  12. package/dist/infrastructure/index.d.ts +0 -1
  13. package/dist/infrastructure/index.d.ts.map +1 -1
  14. package/dist/infrastructure/index.js +1 -1
  15. package/dist/infrastructure/index.js.map +1 -1
  16. package/dist/presentation/cli-pbevm-diff.js +2 -2
  17. package/dist/presentation/cli-pbevm-diff.js.map +1 -1
  18. package/dist/presentation/cli-pbevm-show-project.js +1 -1
  19. package/dist/presentation/cli-pbevm-show-project.js.map +1 -1
  20. package/dist/presentation/cli-pbevm-show-pv.js +3 -3
  21. package/dist/presentation/cli-pbevm-show-pv.js.map +1 -1
  22. package/dist/presentation/cli-pbevm-summary.js +2 -2
  23. package/dist/presentation/cli-pbevm-summary.js.map +1 -1
  24. package/dist/project/index.d.ts +4 -0
  25. package/dist/project/index.d.ts.map +1 -0
  26. package/dist/project/index.js +45 -0
  27. package/dist/project/index.js.map +1 -0
  28. package/dist/resource/domain/ResourcePlansCreator.d.ts +5 -0
  29. package/dist/resource/domain/ResourcePlansCreator.d.ts.map +1 -0
  30. package/dist/resource/domain/ResourcePlansCreator.js +3 -0
  31. package/dist/resource/domain/ResourcePlansCreator.js.map +1 -0
  32. package/dist/resource/domain/index.d.ts +5 -0
  33. package/dist/resource/domain/index.d.ts.map +1 -0
  34. package/dist/resource/domain/index.js +21 -0
  35. package/dist/resource/domain/index.js.map +1 -0
  36. package/dist/resource/domain/resource.d.ts +39 -0
  37. package/dist/resource/domain/resource.d.ts.map +1 -0
  38. package/dist/resource/domain/resource.js +24 -0
  39. package/dist/resource/domain/resource.js.map +1 -0
  40. package/dist/resource/domain/resourceUtils.d.ts +30 -0
  41. package/dist/resource/domain/resourceUtils.d.ts.map +1 -0
  42. package/dist/resource/domain/resourceUtils.js +169 -0
  43. package/dist/resource/domain/resourceUtils.js.map +1 -0
  44. package/dist/resource/domain/styles.d.ts +12 -0
  45. package/dist/resource/domain/styles.d.ts.map +1 -0
  46. package/dist/resource/domain/styles.js +72 -0
  47. package/dist/resource/domain/styles.js.map +1 -0
  48. package/dist/resource/index.d.ts +4 -0
  49. package/dist/resource/index.d.ts.map +1 -0
  50. package/dist/resource/index.js +29 -0
  51. package/dist/resource/index.js.map +1 -0
  52. package/dist/resource/infrastructure/ExcelResourcePlansCreator.d.ts +9 -0
  53. package/dist/resource/infrastructure/ExcelResourcePlansCreator.d.ts.map +1 -0
  54. package/dist/resource/infrastructure/ExcelResourcePlansCreator.js +50 -0
  55. package/dist/resource/infrastructure/ExcelResourcePlansCreator.js.map +1 -0
  56. package/dist/resource/infrastructure/index.d.ts +2 -0
  57. package/dist/resource/infrastructure/index.d.ts.map +1 -0
  58. package/dist/resource/infrastructure/index.js +18 -0
  59. package/dist/resource/infrastructure/index.js.map +1 -0
  60. package/dist/resource/presentation/cli-pbevm-show-resourceplan.d.ts +2 -0
  61. package/dist/resource/presentation/cli-pbevm-show-resourceplan.d.ts.map +1 -0
  62. package/dist/resource/presentation/cli-pbevm-show-resourceplan.js +37 -0
  63. package/dist/resource/presentation/cli-pbevm-show-resourceplan.js.map +1 -0
  64. package/dist/resource/usecase/index.d.ts +2 -0
  65. package/dist/resource/usecase/index.d.ts.map +1 -0
  66. package/dist/resource/usecase/index.js +18 -0
  67. package/dist/resource/usecase/index.js.map +1 -0
  68. package/dist/resource/usecase/pbevm-show-resourceplan-usecase.d.ts +9 -0
  69. package/dist/resource/usecase/pbevm-show-resourceplan-usecase.d.ts.map +1 -0
  70. package/dist/resource/usecase/pbevm-show-resourceplan-usecase.js +122 -0
  71. package/dist/resource/usecase/pbevm-show-resourceplan-usecase.js.map +1 -0
  72. package/dist/usecase/index.d.ts +5 -0
  73. package/dist/usecase/index.d.ts.map +1 -0
  74. package/dist/{usercase → usecase}/index.js +3 -3
  75. package/dist/usecase/index.js.map +1 -0
  76. package/dist/{usercase/pbevm-diff-usercase.d.ts → usecase/pbevm-diff-usecase.d.ts} +2 -2
  77. package/dist/usecase/pbevm-diff-usecase.d.ts.map +1 -0
  78. package/dist/{usercase/pbevm-diff-usercase.js → usecase/pbevm-diff-usecase.js} +4 -4
  79. package/dist/usecase/pbevm-diff-usecase.js.map +1 -0
  80. package/dist/usecase/pbevm-show-project-usecase.d.ts.map +1 -0
  81. package/dist/usecase/pbevm-show-project-usecase.js.map +1 -0
  82. package/dist/{usercase/pbevm-show-pv-usercase.d.ts → usecase/pbevm-show-pv-usecase.d.ts} +1 -1
  83. package/dist/usecase/pbevm-show-pv-usecase.d.ts.map +1 -0
  84. package/dist/{usercase/pbevm-show-pv-usercase.js → usecase/pbevm-show-pv-usecase.js} +1 -1
  85. package/dist/usecase/pbevm-show-pv-usecase.js.map +1 -0
  86. package/dist/{usercase/pbevm-summary-usercase.d.ts → usecase/pbevm-summary-usecase.d.ts} +1 -1
  87. package/dist/usecase/pbevm-summary-usecase.d.ts.map +1 -0
  88. package/dist/{usercase/pbevm-summary-usercase.js → usecase/pbevm-summary-usecase.js} +3 -3
  89. package/dist/usecase/pbevm-summary-usecase.js.map +1 -0
  90. package/package.json +37 -9
  91. package/dist/usercase/index.d.ts +0 -5
  92. package/dist/usercase/index.d.ts.map +0 -1
  93. package/dist/usercase/index.js.map +0 -1
  94. package/dist/usercase/pbevm-diff-usercase.d.ts.map +0 -1
  95. package/dist/usercase/pbevm-diff-usercase.js.map +0 -1
  96. package/dist/usercase/pbevm-show-project-usecase.d.ts.map +0 -1
  97. package/dist/usercase/pbevm-show-project-usecase.js.map +0 -1
  98. package/dist/usercase/pbevm-show-pv-usercase.d.ts.map +0 -1
  99. package/dist/usercase/pbevm-show-pv-usercase.js.map +0 -1
  100. package/dist/usercase/pbevm-summary-usercase.d.ts.map +0 -1
  101. package/dist/usercase/pbevm-summary-usercase.js.map +0 -1
  102. /package/dist/{usercase → usecase}/pbevm-show-project-usecase.d.ts +0 -0
  103. /package/dist/{usercase → usecase}/pbevm-show-project-usecase.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourcePlansCreator.js","sourceRoot":"","sources":["../../../src/resource/domain/ResourcePlansCreator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './ResourcePlansCreator';
2
+ export * from './resource';
3
+ export * from './resourceUtils';
4
+ export * from './styles';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resource/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ResourcePlansCreator"), exports);
18
+ __exportStar(require("./resource"), exports);
19
+ __exportStar(require("./resourceUtils"), exports);
20
+ __exportStar(require("./styles"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resource/domain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,6CAA0B;AAC1B,kDAA+B;AAC/B,2CAAwB"}
@@ -0,0 +1,39 @@
1
+ export declare const attrTypeStrs: readonly ["ユニットコード", "ユニット名", "役職", "名前"];
2
+ export type AttrType = (typeof attrTypeStrs)[number];
3
+ export type AttrTypes = {
4
+ [key in AttrType]: string;
5
+ };
6
+ export type AttrTypesArray = {
7
+ [key in AttrType]: string[];
8
+ };
9
+ export declare const monthTypeStrs: readonly ["11月", "12月", "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月"];
10
+ export type MonthType = (typeof monthTypeStrs)[number];
11
+ export type MonthTypes = {
12
+ [key in MonthType]?: number;
13
+ };
14
+ export type MonthTypesArray = {
15
+ [key in MonthType]: number[];
16
+ };
17
+ export type PriceTypes = {
18
+ 社内単価?: number;
19
+ プロジェクト単価?: number;
20
+ };
21
+ export type PriceTypesArray = {
22
+ 社内単価: number[];
23
+ プロジェクト単価?: number[];
24
+ };
25
+ export type ResourcePlan = AttrTypes & PriceTypes & MonthTypes;
26
+ export type GroupingResourcePlan = AttrTypesArray & PriceTypesArray & MonthTypesArray;
27
+ export declare const isResourcePlan: (arg: unknown) => arg is ResourcePlan;
28
+ export type UnitInfo = {
29
+ ユニットコード: string;
30
+ ユニット名: string;
31
+ 社内平均単価?: number;
32
+ プロジェクト平均単価?: number;
33
+ } & MonthTypes;
34
+ export type MemberInfo = {
35
+ 役職: string;
36
+ 名前: string;
37
+ 社内単価?: number;
38
+ };
39
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/resource/domain/resource.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,2CAA4C,CAAA;AACrE,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACpD,MAAM,MAAM,SAAS,GAAG;KAAG,GAAG,IAAI,QAAQ,GAAG,MAAM;CAAE,CAAA;AACrD,MAAM,MAAM,cAAc,GAAG;KAAG,GAAG,IAAI,QAAQ,GAAG,MAAM,EAAE;CAAE,CAAA;AAE5D,eAAO,MAAM,aAAa,sFAahB,CAAA;AACV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,MAAM,MAAM,UAAU,GAAG;KAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM;CAAE,CAAA;AACxD,MAAM,MAAM,eAAe,GAAG;KAAG,GAAG,IAAI,SAAS,GAAG,MAAM,EAAE;CAAE,CAAA;AAE9D,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;AAC9D,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,CAAA;AAErF,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,YAIpD,CAAA;AAMD,MAAM,MAAM,QAAQ,GAAG;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,UAAU,CAAA;AAEd,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResourcePlan = exports.monthTypeStrs = exports.attrTypeStrs = void 0;
4
+ exports.attrTypeStrs = ['ユニットコード', 'ユニット名', '役職', '名前'];
5
+ exports.monthTypeStrs = [
6
+ '11月',
7
+ '12月',
8
+ '1月',
9
+ '2月',
10
+ '3月',
11
+ '4月',
12
+ '5月',
13
+ '6月',
14
+ '7月',
15
+ '8月',
16
+ '9月',
17
+ '10月',
18
+ ];
19
+ const isResourcePlan = (arg) => {
20
+ const instance = arg;
21
+ return instance.役職 !== undefined;
22
+ };
23
+ exports.isResourcePlan = isResourcePlan;
24
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resource/domain/resource.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAKxD,QAAA,aAAa,GAAG;IACzB,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;CACC,CAAA;AAmBH,MAAM,cAAc,GAAG,CAAC,GAAY,EAAuB,EAAE;IAChE,MAAM,QAAQ,GAAG,GAAmB,CAAA;IAEpC,OAAO,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAA;AACpC,CAAC,CAAA;AAJY,QAAA,cAAc,kBAI1B"}
@@ -0,0 +1,30 @@
1
+ import { AttrType, MemberInfo, ResourcePlan, UnitInfo } from './resource';
2
+ export declare const toGroupBy: (key: AttrType, resourcePlans: ResourcePlan[]) => ResourcePlan[];
3
+ export type Condition = {
4
+ ユニットコード?: string;
5
+ ユニット名?: string;
6
+ 役職?: string;
7
+ 名前?: string;
8
+ 社内単価?: number;
9
+ プロジェクト単価?: number;
10
+ };
11
+ export declare const filter: (condition: Condition, target: ResourcePlan[]) => ResourcePlan[];
12
+ /**
13
+ *
14
+ * ユニットコード、ユニット名を一覧する
15
+ * @param resourcePlans
16
+ * @returns
17
+ */
18
+ export declare const toUnitInfo: (resourcePlans: ResourcePlan[]) => UnitInfo[];
19
+ /**
20
+ *
21
+ * 社員情報を一覧する
22
+ * @param resourcePlans
23
+ * @returns
24
+ */
25
+ export declare const toMemberInfo: (resourcePlans: ResourcePlan[]) => MemberInfo[];
26
+ export declare const toProjectMemberInfo: (resourcePlans: ResourcePlan[]) => ResourcePlan[];
27
+ export declare const 単価単位調整: (instance: ResourcePlan, unit?: number, scale?: number) => ResourcePlan;
28
+ export declare const toCost: (instance: ResourcePlan) => ResourcePlan;
29
+ export declare const toSales: (instance: ResourcePlan) => ResourcePlan;
30
+ //# sourceMappingURL=resourceUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceUtils.d.ts","sourceRoot":"","sources":["../../../src/resource/domain/resourceUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACH,QAAQ,EAER,UAAU,EAGV,YAAY,EACZ,QAAQ,EACX,MAAM,YAAY,CAAA;AAKnB,eAAO,MAAM,SAAS,GAAI,KAAK,QAAQ,EAAE,eAAe,YAAY,EAAE,KAAG,YAAY,EAgCpF,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,WAAW,SAAS,EAAE,QAAQ,YAAY,EAAE,KAAG,YAAY,EAejF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,eAAe,YAAY,EAAE,KAAG,QAAQ,EAelE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,eAAe,YAAY,EAAE,KAAG,UAAU,EAYtE,CAAA;AA4BD,eAAO,MAAM,mBAAmB,GAAI,eAAe,YAAY,EAAE,KAAG,YAAY,EAoB/E,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,UAAU,YAAY,EAAE,aAAW,EAAE,cAAS,KAAG,YAUvE,CAAA;AA4BD,eAAO,MAAM,MAAM,GAAI,UAAU,YAAY,KAAG,YAG9C,CAAA;AAEF,eAAO,MAAM,OAAO,GAAI,UAAU,YAAY,KAAG,YAG/C,CAAA"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSales = exports.toCost = exports.単価単位調整 = exports.toProjectMemberInfo = exports.toMemberInfo = exports.toUnitInfo = exports.filter = exports.toGroupBy = void 0;
4
+ const resource_1 = require("./resource");
5
+ const common_1 = require("../../common");
6
+ const tidy_1 = require("@tidyjs/tidy");
7
+ const toGroupBy = (key, resourcePlans) => {
8
+ const unitAttrs = ['ユニットコード', 'ユニット名'];
9
+ const result = (0, tidy_1.tidy)(resourcePlans, (0, tidy_1.groupBy)(key, [
10
+ (0, tidy_1.summarize)({
11
+ ユニットコード: (instance) => unitAttrs.includes(key) ? instance[0].ユニットコード : '',
12
+ ユニット名: (instance) => (unitAttrs.includes(key) ? instance[0].ユニット名 : ''),
13
+ 役職: (instance) => (['役職', '名前'].includes(key) ? instance[0].役職 : ''),
14
+ 名前: (instance) => (['名前'].includes(key) ? instance[0].名前 : ''),
15
+ // 社内単価: (instance) => instance[0].社内単価,
16
+ 社内単価: (group) => ['役職', '名前'].includes(key)
17
+ ? group[0].社内単価
18
+ : (0, common_1.average)(group.map((instance) => instance.社内単価)),
19
+ プロジェクト単価: (group) => (0, common_1.average)(group.map((instance) => instance.プロジェクト単価)),
20
+ // ユニットコード: unitAttrs.includes(key) ? instance.ユニットコード[0] : '',
21
+ // ユニット名: unitAttrs.includes(key) ? instance.ユニット名[0] : '',
22
+ // 役職: ['役職', '名前'].includes(key) ? instance.役職[0] : '',
23
+ // 名前: ['名前'].includes(key) ? instance.名前[0] : '',
24
+ // 社内単価: ['役職', '名前'].includes(key)
25
+ // ? round(instance.社内単価[0], 0)
26
+ // : (average(instance.社内単価) as number),
27
+ // プロジェクト単価: average(instance.プロジェクト単価),
28
+ ...monthlyAggregators(),
29
+ }),
30
+ ]));
31
+ return result;
32
+ };
33
+ exports.toGroupBy = toGroupBy;
34
+ const filter = (condition, target) => {
35
+ const { ユニットコード, ユニット名, 役職, 名前, 社内単価, プロジェクト単価 } = condition;
36
+ return target.filter((info) =>
37
+ // (役職 != null ? 役職 === info.役職 : true) &&
38
+ // (名前 != null ? 名前 === info.名前 : true) &&
39
+ // (単価 != null ? 単価 === info.単価 : true)
40
+ (ユニットコード == null || ユニットコード === info.ユニットコード) &&
41
+ (ユニット名 == null || ユニット名 === info.ユニット名) &&
42
+ (役職 == null || 役職 === info.役職) &&
43
+ (名前 == null || 名前 === info.名前) &&
44
+ (社内単価 == null || 社内単価 === info.社内単価) &&
45
+ (プロジェクト単価 == null || プロジェクト単価 === info.プロジェクト単価));
46
+ };
47
+ exports.filter = filter;
48
+ /**
49
+ *
50
+ * ユニットコード、ユニット名を一覧する
51
+ * @param resourcePlans
52
+ * @returns
53
+ */
54
+ const toUnitInfo = (resourcePlans) => {
55
+ const result = (0, tidy_1.tidy)(resourcePlans, (0, tidy_1.groupBy)('ユニットコード', [
56
+ (0, tidy_1.summarize)({
57
+ ユニットコード: (instance) => instance[0].ユニットコード,
58
+ ユニット名: (instance) => instance[0].ユニット名,
59
+ 社内平均単価: (group) => (0, common_1.average)(group.map((instance) => instance.社内単価)),
60
+ プロジェクト平均単価: (group) => (0, common_1.average)(group.map((instance) => instance.プロジェクト単価)),
61
+ ...monthlyAggregators(),
62
+ }),
63
+ ]));
64
+ return result;
65
+ };
66
+ exports.toUnitInfo = toUnitInfo;
67
+ /**
68
+ *
69
+ * 社員情報を一覧する
70
+ * @param resourcePlans
71
+ * @returns
72
+ */
73
+ const toMemberInfo = (resourcePlans) => {
74
+ const result = (0, tidy_1.tidy)(resourcePlans, (0, tidy_1.groupBy)('名前', [
75
+ (0, tidy_1.summarize)({
76
+ 役職: (instance) => instance[0].役職,
77
+ 名前: (instance) => instance[0].名前,
78
+ 社内単価: (instance) => instance[0].社内単価,
79
+ }),
80
+ ]));
81
+ return result;
82
+ };
83
+ exports.toMemberInfo = toMemberInfo;
84
+ // const monthlyAggregators = () => {
85
+ // return {
86
+ // '11月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['11月'] ?? 0)),
87
+ // '12月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['12月'] ?? 0)),
88
+ // '1月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['1月'] ?? 0)),
89
+ // '2月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['2月'] ?? 0)),
90
+ // '3月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['3月'] ?? 0)),
91
+ // '4月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['4月'] ?? 0)),
92
+ // '5月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['5月'] ?? 0)),
93
+ // '6月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['6月'] ?? 0)),
94
+ // '7月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['7月'] ?? 0)),
95
+ // '8月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['8月'] ?? 0)),
96
+ // '9月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['9月'] ?? 0)),
97
+ // '10月': (group: ResourcePlan[]) => sum(group.map((instance) => instance['10月'] ?? 0)),
98
+ // }
99
+ // }
100
+ function monthlyAggregators() {
101
+ return Object.fromEntries(resource_1.monthTypeStrs.map((month) => [
102
+ month,
103
+ (group) => (0, common_1.sum)(group.map((instance) => instance[month])),
104
+ ]));
105
+ }
106
+ const toProjectMemberInfo = (resourcePlans) => {
107
+ const result = (0, tidy_1.tidy)(resourcePlans, (0, tidy_1.groupBy)(['ユニットコード', '名前'], [
108
+ (0, tidy_1.summarize)({
109
+ ユニットコード: (instances) => instances[0].ユニットコード,
110
+ ユニット名: (instances) => instances[0].ユニット名,
111
+ 役職: (instances) => instances[0].役職,
112
+ 名前: (instances) => instances[0].名前,
113
+ 社内単価: (instances) => instances[0].社内単価,
114
+ プロジェクト単価: (group) => (0, common_1.average)(group.map((instance) => instance.プロジェクト単価)),
115
+ ...monthlyAggregators(),
116
+ }),
117
+ ]));
118
+ return result;
119
+ };
120
+ exports.toProjectMemberInfo = toProjectMemberInfo;
121
+ const 単価単位調整 = (instance, unit = 1000, scale = 4) => {
122
+ const calc = (resource) => {
123
+ return resource != null ? (0, common_1.round)(resource / unit, scale) : undefined;
124
+ };
125
+ return {
126
+ ...instance,
127
+ 社内単価: calc(instance.社内単価),
128
+ プロジェクト単価: calc(instance.プロジェクト単価),
129
+ };
130
+ };
131
+ exports.単価単位調整 = 単価単位調整;
132
+ /**
133
+ * @param instance
134
+ * @param price
135
+ * @returns
136
+ */
137
+ const 月ごと単価 = (instance, price, scale = 4) => {
138
+ const calc = (resource) => {
139
+ return resource != null && price != null ? (0, common_1.round)(resource * price, scale) : undefined;
140
+ };
141
+ return {
142
+ '11月': calc(instance['11月']),
143
+ '12月': calc(instance['12月']),
144
+ '1月': calc(instance['1月']),
145
+ '2月': calc(instance['2月']),
146
+ '3月': calc(instance['3月']),
147
+ '4月': calc(instance['4月']),
148
+ '5月': calc(instance['5月']),
149
+ '6月': calc(instance['6月']),
150
+ '7月': calc(instance['7月']),
151
+ '8月': calc(instance['8月']),
152
+ '9月': calc(instance['9月']),
153
+ '10月': calc(instance['10月']),
154
+ };
155
+ };
156
+ const toCost = (instance) => ({
157
+ ...instance,
158
+ ...月ごと単価(instance, instance.社内単価),
159
+ });
160
+ exports.toCost = toCost;
161
+ const toSales = (instance) => ({
162
+ ...instance,
163
+ ...月ごと単価(instance, instance.プロジェクト単価),
164
+ });
165
+ exports.toSales = toSales;
166
+ // // このオブジェクトをつくって、マージする処理に変える
167
+ // // checkProjectみたいなメソッドで、エラーがあるかをチェックする。1超えた、足りないヒト、月売上げの集計とかいろいろ
168
+ // // 売上げ計算もしたい
169
+ //# sourceMappingURL=resourceUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceUtils.js","sourceRoot":"","sources":["../../../src/resource/domain/resourceUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import XlsxPopulate from 'xlsx-populate';
2
+ export type StyleFC = (props: {
3
+ instances: unknown[];
4
+ sheet: XlsxPopulate.Sheet;
5
+ rowCount: number;
6
+ columnCount: number;
7
+ columnNames: string[];
8
+ startCell: XlsxPopulate.Cell;
9
+ endCell: XlsxPopulate.Cell;
10
+ }) => void;
11
+ export declare const createStyles: (styles?: StyleFC) => (instances: unknown[], workbook: XlsxPopulate.Workbook, sheetName: string) => void;
12
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/resource/domain/styles.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,eAAe,CAAA;AAGxC,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE;IAC1B,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,EAAE,YAAY,CAAC,IAAI,CAAA;IAC5B,OAAO,EAAE,YAAY,CAAC,IAAI,CAAA;CAC7B,KAAK,IAAI,CAAA;AAEV,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,MAGrC,WAAW,OAAO,EAAE,EACpB,UAAU,YAAY,CAAC,QAAQ,EAC/B,WAAW,MAAM,KAClB,IA8EN,CAAA"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStyles = void 0;
4
+ const createStyles = (styles) => {
5
+ // applyStylesが欲しがっている関数を返す
6
+ return function (instances, workbook, sheetName) {
7
+ const rowCount = instances.length;
8
+ const columnNames = Object.keys(instances[0]);
9
+ const columnCount = columnNames.length;
10
+ const sheet = workbook.sheet(sheetName);
11
+ const startCell = sheet.cell(`A$1`);
12
+ const endCell = startCell.relativeCell(rowCount, columnCount - 1);
13
+ sheet.range(startCell, endCell).style('fontFamily', 'メイリオ');
14
+ // sheet.cell('A1').style('fontFamily', 'メイリオ')
15
+ // ユニットコードの切り替わりを判定して、罫線つける
16
+ const results = instances;
17
+ let prevUnit = {
18
+ ユニットコード: '',
19
+ ユニット名: '',
20
+ };
21
+ // console.log('===')
22
+ // for (const [index, result] of results.entries()) {
23
+ // const record = result
24
+ // const currentUnit = (({ ユニットコード, ユニット名 }) => ({ ユニットコード, ユニット名 }))(record) // そのプロパティだけ取り出す
25
+ // // 各ユニットの先頭の行にしか、ユニット関連情報がないので、ユニットの切り替わりまで、前行の情報を引き継ぐ
26
+ // if (currentUnit.ユニットコード !== prevUnit.ユニットコード) {
27
+ // console.log(index)
28
+ // prevUnit = (({ ユニットコード, ユニット名 }) => ({ ユニットコード, ユニット名 }))(currentUnit) // 前回情報を返却値から取り出して持っておく
29
+ // }
30
+ // }
31
+ // console.log('===')
32
+ const numbers = results.reduce((prev, current, index) => {
33
+ const record = current;
34
+ const currentUnit = (({ ユニットコード, ユニット名 }) => ({
35
+ ユニットコード,
36
+ ユニット名,
37
+ }))(record); // そのプロパティだけ取り出す
38
+ // 各ユニットの先頭の行にしか、ユニット関連情報がないので、ユニットの切り替わりまで、前行の情報を引き継ぐ
39
+ if (currentUnit.ユニットコード !== prevUnit.ユニットコード) {
40
+ prev.push(index);
41
+ prevUnit = (({ ユニットコード, ユニット名 }) => ({ ユニットコード, ユニット名 }))(currentUnit); // 前回情報を返却値から取り出して持っておく
42
+ }
43
+ return prev;
44
+ }, []);
45
+ // console.log(numbers)
46
+ for (const count of numbers) {
47
+ // データがあるところには罫線を引く(細いヤツ)
48
+ const startCell = sheet.cell(`A${count + 1}`);
49
+ const endCell = startCell.relativeCell(0, columnCount - 1);
50
+ sheet.range(startCell, endCell).style('border', {
51
+ top: { style: 'hair' },
52
+ left: { style: 'hair' },
53
+ bottom: { style: 'thin' },
54
+ right: { style: 'hair' },
55
+ });
56
+ }
57
+ const headerStartCell = sheet.cell(`A1`);
58
+ const headerEndCell = headerStartCell.relativeCell(0, columnCount - 1);
59
+ sheet
60
+ .range(headerStartCell, headerEndCell)
61
+ .style('fill', { type: 'solid', color: { theme: 8, tint: '0.8' } });
62
+ if (styles) {
63
+ styles({ instances, sheet, rowCount, columnCount, columnNames, startCell, endCell });
64
+ }
65
+ // よくある整形パタン。
66
+ // sheet.range(`C2:C${rowCount + 1}`).style('numberFormat', '@') // 書式: 文字(コレをやらないと、見かけ上文字だが、F2で抜けると数字になっちゃう)
67
+ // sheet.range(`E2:F${rowCount + 1}`).style('numberFormat', 'yyyy/mm/dd') // 書式: 日付
68
+ // sheet.range(`H2:H${rowCount + 1}`).style('numberFormat', 'yyyy/mm/dd hh:mm') // 書式: 日付+時刻
69
+ };
70
+ };
71
+ exports.createStyles = createStyles;
72
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/resource/domain/styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './domain/index';
2
+ export * from './infrastructure/index';
3
+ export * from './usecase/index';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resource/index.ts"],"names":[],"mappings":"AAYA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // // domain
3
+ // export * from './domain/ResourcePlansCreator'
4
+ // export * from './domain/resource'
5
+ // export * from './domain/resourceUtils'
6
+ // export * from './domain/styles'
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ // infrastructure
23
+ // export * from './infrastructure/ExcelResourcePlansCreator'
24
+ // usecase
25
+ // export * from './usecase/pbevm-show-resourceplan-usecase'
26
+ __exportStar(require("./domain/index"), exports);
27
+ __exportStar(require("./infrastructure/index"), exports);
28
+ __exportStar(require("./usecase/index"), exports);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resource/index.ts"],"names":[],"mappings":";AAAA,YAAY;AACZ,gDAAgD;AAChD,oCAAoC;AACpC,yCAAyC;AACzC,kCAAkC;;;;;;;;;;;;;;;;AAElC,iBAAiB;AACjB,6DAA6D;AAE7D,UAAU;AACV,4DAA4D;AAE5D,iDAA8B;AAC9B,yDAAsC;AACtC,kDAA+B"}
@@ -0,0 +1,9 @@
1
+ import { ResourcePlan } from '../domain/resource';
2
+ import { ResourcePlansCreator } from '../domain/ResourcePlansCreator';
3
+ export declare class ExcelResourcePlansCreator implements ResourcePlansCreator {
4
+ private _path;
5
+ private _sheetName?;
6
+ constructor(_path: string, _sheetName?: string | undefined);
7
+ createResourcePlans(): Promise<ResourcePlan[]>;
8
+ }
9
+ //# sourceMappingURL=ExcelResourcePlansCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelResourcePlansCreator.d.ts","sourceRoot":"","sources":["../../../src/resource/infrastructure/ExcelResourcePlansCreator.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAErE,qBAAa,yBAA0B,YAAW,oBAAoB;IAE9D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU,CAAC;gBADX,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,YAAA;IAEzB,mBAAmB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAGvD"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExcelResourcePlansCreator = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const resource_1 = require("../domain/resource");
6
+ class ExcelResourcePlansCreator {
7
+ constructor(_path, _sheetName) {
8
+ this._path = _path;
9
+ this._sheetName = _sheetName;
10
+ }
11
+ async createResourcePlans() {
12
+ return toUnitInfoArray(this._path, this._sheetName);
13
+ }
14
+ }
15
+ exports.ExcelResourcePlansCreator = ExcelResourcePlansCreator;
16
+ /**
17
+ * Excelファイルを読み込んで、UnitInfoデータの配列を作る
18
+ * @param path
19
+ * @returns
20
+ */
21
+ const toUnitInfoArray = async (path, sheetName = '要員(工数)') => {
22
+ const results = await (0, excel_csv_read_write_1.excel2json)(path, sheetName);
23
+ const createUnit = ({ ユニットコード, ユニット名, }) => ({
24
+ ユニットコード,
25
+ ユニット名,
26
+ }); // そのプロパティだけ取り出す
27
+ return results
28
+ .filter((result) => (0, resource_1.isResourcePlan)(result))
29
+ .reduce((acc, record) => {
30
+ const currentUnit = createUnit(record); // そのプロパティだけ取り出す
31
+ const prevUnit = acc.length > 0
32
+ ? createUnit(acc[acc.length - 1]) // 前回情報を返却値から取り出して持っておく
33
+ : { ユニットコード: '', ユニット名: '' };
34
+ // 各ユニットの先頭の行にしか、ユニット関連情報がないので、ユニットの切り替わりまで、前行の情報を引き継ぐ
35
+ const currentRecord = currentUnit.ユニットコード === undefined ? { ...record, ...prevUnit } : record; // ユニットコードが未定義だったら、前回ので上書き、そうでなかったらそのまま
36
+ return [...acc, currentRecord];
37
+ }, []);
38
+ // .map((record) => {
39
+ // const currentUnit = (({ ユニットコード, ユニット名 }) => ({
40
+ // ユニットコード,
41
+ // ユニット名,
42
+ // }))(record) // そのプロパティだけ取り出す
43
+ // // 各ユニットの先頭の行にしか、ユニット関連情報がないので、ユニットの切り替わりまで、前行の情報を引き継ぐ
44
+ // const ret =
45
+ // currentUnit.ユニットコード === undefined ? { ...record, ...prevUnit } : record // ユニットコードが未定義だったら、前回ので上書き、そうでなかったらそのまま
46
+ // prevUnit = (({ ユニットコード, ユニット名 }) => ({ ユニットコード, ユニット名 }))(ret) // 前回情報を返却値から取り出して持っておく
47
+ // return ret
48
+ // })
49
+ };
50
+ //# sourceMappingURL=ExcelResourcePlansCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelResourcePlansCreator.js","sourceRoot":"","sources":["../../../src/resource/infrastructure/ExcelResourcePlansCreator.ts"],"names":[],"mappings":";;;AAAA,+DAAiD;AACjD,iDAAiE;AAGjE,MAAa,yBAAyB;IAClC,YACY,KAAa,EACb,UAAmB;QADnB,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAS;IAC5B,CAAC;IACJ,KAAK,CAAC,mBAAmB;QACrB,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACvD,CAAC;CACJ;AARD,8DAQC;AAED;;;;GAIG;AACH,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,SAAS,GAAG,QAAQ,EAA2B,EAAE;IAC1F,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAU,EAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAEjD,MAAM,UAAU,GAAG,CAAC,EAChB,OAAO,EACP,KAAK,GAIR,EAAE,EAAE,CAAC,CAAC;QACH,OAAO;QACP,KAAK;KACR,CAAC,CAAA,CAAC,gBAAgB;IACnB,OAAO,OAAO;SACT,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAC;SAC1C,MAAM,CAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA,CAAC,gBAAgB;QACvD,MAAM,QAAQ,GACV,GAAG,CAAC,MAAM,GAAG,CAAC;YACV,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QAEpC,sDAAsD;QACtD,MAAM,aAAa,GACf,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA,CAAC,uCAAuC;QACnH,OAAO,CAAC,GAAG,GAAG,EAAE,aAAa,CAAC,CAAA;IAClC,CAAC,EAAE,EAAE,CAAC,CAAA;IACV,qBAAqB;IACrB,sDAAsD;IACtD,mBAAmB;IACnB,iBAAiB;IACjB,mCAAmC;IAEnC,6DAA6D;IAC7D,kBAAkB;IAClB,0HAA0H;IAC1H,6FAA6F;IAC7F,iBAAiB;IACjB,KAAK;AACT,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './ExcelResourcePlansCreator';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resource/infrastructure/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ExcelResourcePlansCreator"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resource/infrastructure/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli-pbevm-show-resourceplan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-pbevm-show-resourceplan.d.ts","sourceRoot":"","sources":["../../../src/resource/presentation/cli-pbevm-show-resourceplan.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const yargs_1 = __importDefault(require("yargs"));
7
+ const helpers_1 = require("yargs/helpers");
8
+ const pbevm_show_resourceplan_usecase_1 = require("../usecase/pbevm-show-resourceplan-usecase");
9
+ const ExcelResourcePlansCreator_1 = require("../infrastructure/ExcelResourcePlansCreator");
10
+ // const logger = getLogger('main')
11
+ const main = () => {
12
+ const { path, output } = createArgs();
13
+ const creator = new ExcelResourcePlansCreator_1.ExcelResourcePlansCreator(path);
14
+ new pbevm_show_resourceplan_usecase_1.PbevmShowResourcePlanUsecase(creator, output)
15
+ .execute()
16
+ .catch((error) => console.error(error));
17
+ };
18
+ const createArgs = () => {
19
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
20
+ .usage('Usage: npx pbevm-show-resourceplan [options]')
21
+ .example('npx pbevm-show-resourceplan --path ./要員計画202009.xlsx --output ./output', '')
22
+ .option('path', {
23
+ type: 'string',
24
+ description: 'Excel file Path',
25
+ default: './要員計画202009.xlsx',
26
+ })
27
+ .option('output', {
28
+ type: 'string',
29
+ description: 'Output directory',
30
+ default: './output',
31
+ })
32
+ .help()
33
+ .parseSync(); // 型付きで取得
34
+ return argv;
35
+ };
36
+ main();
37
+ //# sourceMappingURL=cli-pbevm-show-resourceplan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-pbevm-show-resourceplan.js","sourceRoot":"","sources":["../../../src/resource/presentation/cli-pbevm-show-resourceplan.ts"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2CAAuC;AACvC,gGAAyF;AACzF,2FAAuF;AAEvF,mCAAmC;AAEnC,MAAM,IAAI,GAAG,GAAG,EAAE;IACd,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;IAErC,MAAM,OAAO,GAAG,IAAI,qDAAyB,CAAC,IAAI,CAAC,CAAA;IACnD,IAAI,8DAA4B,CAAC,OAAO,EAAE,MAAM,CAAC;SAC5C,OAAO,EAAE;SACT,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,GAAG,EAAE;IACpB,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpC,KAAK,CAAC,8CAA8C,CAAC;SACrD,OAAO,CAAC,wEAAwE,EAAE,EAAE,CAAC;SACrF,MAAM,CAAC,MAAM,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,mBAAmB;KAC/B,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,UAAU;KACtB,CAAC;SACD,IAAI,EAAE;SACN,SAAS,EAAE,CAAA,CAAC,SAAS;IAC1B,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,IAAI,EAAE,CAAA"}