@powercalc/power-router 1.0.69 → 1.0.71
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.
- package/dist/config/types.json +8 -0
- package/dist/controllers/LoadAndParse.js +1 -1
- package/dist/controllers/LoadAndParse.js.map +1 -1
- package/dist/services/EnergyCharts.d.ts +5 -2
- package/dist/services/EnergyCharts.js +37 -22
- package/dist/services/EnergyCharts.js.map +1 -1
- package/dist/services/LoadService.d.ts +1 -1
- package/dist/services/LoadService.js +2 -2
- package/dist/services/LoadService.js.map +1 -1
- package/package.json +1 -1
- package/src/router/config/types.json +8 -0
- package/src/router/controllers/LoadAndParse.ts +1 -1
- package/src/router/services/EnergyCharts.ts +36 -15
- package/src/router/services/LoadService.ts +63 -57
package/dist/config/types.json
CHANGED
|
@@ -44,7 +44,7 @@ class LoadAndParse {
|
|
|
44
44
|
}
|
|
45
45
|
if (chartType === 'power') {
|
|
46
46
|
if (this.config.source === 'energycharts') {
|
|
47
|
-
return await this.loadService.getPowerEnergyCharts(countryCode, year, month);
|
|
47
|
+
return await this.loadService.getPowerEnergyCharts(countryCode, year, month, queryOptions);
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
50
|
return await this.loadService.getPower(countryCode, year, month, queryOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadAndParse.js","sourceRoot":"","sources":["../../src/router/controllers/LoadAndParse.ts"],"names":[],"mappings":";;;AAEA,+BAA4B;AAC5B,2BAAkC;AAClC,yDAAsD;AAEtD,6DAA0E;AAE1E,MAAa,YAAY;IAMvB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QALlC,YAAO,GAAG,EAAE,CAAC;QAMX,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC,CAAC,mCAAmC;QACtG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,iCAAiC;QACnG,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,SAAiB;;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;YAC5B,qDAAqD;YACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QACD,MAAM,YAAY,GAAiB,EAAE,CAAA;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,qBAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,qBAAM,CAAC,GAAG,EAAE;YACtE,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;SACxC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAU,MAAO,CAAC,MAAM,CAAC,qBAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACrG,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;SAClD;QACD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;YAC5C,MAAM,GAAG,IAAI,CAAC;YACd,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;SAC5B;QAED,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,0CAAE,IAAI,CAAC;QAC7E,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAA;SAC9C;QACD,IAAI,SAAS,KAAK,WAAW,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SACvE;QACD,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,IAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAG,cAAc,EAAC;gBACrC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"LoadAndParse.js","sourceRoot":"","sources":["../../src/router/controllers/LoadAndParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { QueryOptions } from '../interfaces/queryoptions';
|
|
1
2
|
export declare class EnergyCharts {
|
|
2
3
|
pumpUp: string;
|
|
3
4
|
trans: ({
|
|
@@ -9,8 +10,10 @@ export declare class EnergyCharts {
|
|
|
9
10
|
})[];
|
|
10
11
|
countries: any;
|
|
11
12
|
constructor();
|
|
12
|
-
load(country: string, startIso: string, endIso: string): Promise<any>;
|
|
13
|
-
|
|
13
|
+
load(country: string, startIso: string, endIso: string, queryOptions: QueryOptions): Promise<any>;
|
|
14
|
+
getPower(url: string): Promise<any>;
|
|
15
|
+
makeUrls(country: string, startIso: string, endIso: string): string[];
|
|
16
|
+
getPrices(url: string): Promise<any>;
|
|
14
17
|
translate(json: any): any;
|
|
15
18
|
rebase(data: any, newTime: number[]): any;
|
|
16
19
|
private findTime;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EnergyCharts = void 0;
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const path_1 = require("path");
|
|
6
|
+
const queryoptions_1 = require("../interfaces/queryoptions");
|
|
6
7
|
class EnergyCharts {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.pumpUp = 'Hydro pumped storage consumption';
|
|
@@ -13,7 +14,7 @@ class EnergyCharts {
|
|
|
13
14
|
},
|
|
14
15
|
{
|
|
15
16
|
energyCharts: 'Cross border electricity trading',
|
|
16
|
-
powerRouter: '
|
|
17
|
+
powerRouter: 'crossBorder',
|
|
17
18
|
},
|
|
18
19
|
{
|
|
19
20
|
energyCharts: 'Nuclear',
|
|
@@ -84,38 +85,52 @@ class EnergyCharts {
|
|
|
84
85
|
const countriesString = (0, fs_1.readFileSync)(countryPath, 'utf-8');
|
|
85
86
|
this.countries = JSON.parse(countriesString);
|
|
86
87
|
}
|
|
87
|
-
async load(country, startIso, endIso) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const
|
|
88
|
+
async load(country, startIso, endIso, queryOptions) {
|
|
89
|
+
const urls = this.makeUrls(country, startIso, endIso);
|
|
90
|
+
if ((queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.format) === queryoptions_1.Format.SOURCES) {
|
|
91
|
+
return urls;
|
|
92
|
+
}
|
|
93
|
+
const data = await this.getPower(urls[0]);
|
|
94
|
+
const priceTime = await this.getPrices(urls[1]);
|
|
95
|
+
if (priceTime) {
|
|
96
|
+
const rebasedPrice = this.rebase(priceTime, data.time);
|
|
97
|
+
data.price = rebasedPrice.price;
|
|
98
|
+
}
|
|
99
|
+
return data;
|
|
100
|
+
}
|
|
101
|
+
async getPower(url) {
|
|
93
102
|
try {
|
|
94
|
-
const url = `https://api.energy-charts.info/public_power?country=${countryShort}&start=${start}&end=${end}`;
|
|
95
103
|
const response = await fetch(url);
|
|
96
104
|
const text = await response.text();
|
|
97
105
|
if (!text)
|
|
98
106
|
return;
|
|
99
107
|
const json = JSON.parse(text);
|
|
100
108
|
const t = this.translate(json);
|
|
109
|
+
/*
|
|
101
110
|
try {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
console.error(e);
|
|
111
|
+
const priceTime = await this.getPrices(countryShort, startIso, endIso);
|
|
112
|
+
if (priceTime) {
|
|
113
|
+
const rebasedPrice = this.rebase(priceTime, t.time);
|
|
114
|
+
t.price = rebasedPrice.price;
|
|
115
|
+
}
|
|
116
|
+
} catch (e) {
|
|
117
|
+
console.error(e);
|
|
110
118
|
}
|
|
119
|
+
*/
|
|
111
120
|
return t;
|
|
112
121
|
}
|
|
113
122
|
catch (e) {
|
|
114
123
|
console.error(e);
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
|
-
|
|
118
|
-
|
|
126
|
+
makeUrls(country, startIso, endIso) {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
const countryShort = (_b = (_a = this.countries
|
|
129
|
+
.find((item) => item.code === country)) === null || _a === void 0 ? void 0 : _a.short) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
130
|
+
const start = encodeURIComponent(startIso);
|
|
131
|
+
const end = encodeURIComponent(endIso);
|
|
132
|
+
const powerUrl = `https://api.energy-charts.info/public_power?country=${countryShort}&start=${start}&end=${end}`;
|
|
133
|
+
let zone = countryShort.toUpperCase();
|
|
119
134
|
if (zone === 'DE') {
|
|
120
135
|
zone = 'DE-LU';
|
|
121
136
|
}
|
|
@@ -131,13 +146,13 @@ class EnergyCharts {
|
|
|
131
146
|
if (zone === 'SE') {
|
|
132
147
|
zone = 'SE1';
|
|
133
148
|
}
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
149
|
+
const priceUrl = `https://api.energy-charts.info/price?bzn=${zone}&start=${start}&end=${end}`;
|
|
150
|
+
return [powerUrl, priceUrl];
|
|
151
|
+
}
|
|
152
|
+
async getPrices(url) {
|
|
137
153
|
console.log(url);
|
|
138
154
|
const response = await fetch(url);
|
|
139
155
|
const text = await response.text();
|
|
140
|
-
//console.log(text);
|
|
141
156
|
if (!text)
|
|
142
157
|
return;
|
|
143
158
|
const json = JSON.parse(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnergyCharts.js","sourceRoot":"","sources":["../../src/router/services/EnergyCharts.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,+BAA4B;
|
|
1
|
+
{"version":3,"file":"EnergyCharts.js","sourceRoot":"","sources":["../../src/router/services/EnergyCharts.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export declare class LoadService {
|
|
|
9
9
|
parser: EdifactParser;
|
|
10
10
|
parseInstalled: ParseInstalled;
|
|
11
11
|
constructor(loaderConfig: LoaderConfig);
|
|
12
|
-
getPowerEnergyCharts(countryCode: string, year: number, month: number): Promise<any>;
|
|
12
|
+
getPowerEnergyCharts(countryCode: string, year: number, month: number, queryOptions: QueryOptions): Promise<any>;
|
|
13
13
|
getPower(countryCode: string, year: number, month: number, queryOptions?: QueryOptions): Promise<any>;
|
|
14
14
|
getInstalled(countryCode: string, queryOptions: QueryOptions): Promise<any>;
|
|
15
15
|
getHydrofill(countryCode: string, queryOptions: QueryOptions): Promise<any[] | {
|
|
@@ -21,11 +21,11 @@ class LoadService {
|
|
|
21
21
|
this.parser = new ParseEdifact_1.EdifactParser(types);
|
|
22
22
|
this.parseInstalled = new ParseInstalled_1.ParseInstalled(types);
|
|
23
23
|
}
|
|
24
|
-
async getPowerEnergyCharts(countryCode, year, month) {
|
|
24
|
+
async getPowerEnergyCharts(countryCode, year, month, queryOptions) {
|
|
25
25
|
const startMonth = new Date(Date.UTC(year, month - 1)).toISOString();
|
|
26
26
|
const endMonth = new Date(Date.UTC(year, month)).toISOString();
|
|
27
27
|
const energyCharts = new EnergyCharts_1.EnergyCharts();
|
|
28
|
-
const power = await energyCharts.load(countryCode, startMonth, endMonth);
|
|
28
|
+
const power = await energyCharts.load(countryCode, startMonth, endMonth, queryOptions);
|
|
29
29
|
return power;
|
|
30
30
|
}
|
|
31
31
|
async getPower(countryCode, year, month, queryOptions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadService.js","sourceRoot":"","sources":["../../src/router/services/LoadService.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"LoadService.js","sourceRoot":"","sources":["../../src/router/services/LoadService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -49,7 +49,7 @@ export class LoadAndParse {
|
|
|
49
49
|
}
|
|
50
50
|
if (chartType === 'power') {
|
|
51
51
|
if(this.config.source==='energycharts'){
|
|
52
|
-
return await this.loadService.getPowerEnergyCharts(countryCode, year, month );
|
|
52
|
+
return await this.loadService.getPowerEnergyCharts(countryCode, year, month, queryOptions );
|
|
53
53
|
}else{
|
|
54
54
|
return await this.loadService.getPower(countryCode, year, month, queryOptions);
|
|
55
55
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
+
import { Format, QueryOptions } from '../interfaces/queryoptions';
|
|
3
4
|
|
|
4
5
|
export class EnergyCharts {
|
|
5
6
|
pumpUp = 'Hydro pumped storage consumption';
|
|
@@ -10,7 +11,7 @@ export class EnergyCharts {
|
|
|
10
11
|
},
|
|
11
12
|
{
|
|
12
13
|
energyCharts: 'Cross border electricity trading',
|
|
13
|
-
powerRouter: '
|
|
14
|
+
powerRouter: 'crossBorder',
|
|
14
15
|
},
|
|
15
16
|
{
|
|
16
17
|
energyCharts: 'Nuclear',
|
|
@@ -84,20 +85,32 @@ export class EnergyCharts {
|
|
|
84
85
|
const countriesString = readFileSync(countryPath, 'utf-8');
|
|
85
86
|
this.countries = JSON.parse(countriesString);
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
88
|
+
async load(
|
|
89
|
+
country: string,
|
|
90
|
+
startIso: string,
|
|
91
|
+
endIso: string,
|
|
92
|
+
queryOptions: QueryOptions
|
|
93
|
+
) {
|
|
94
|
+
const urls = this.makeUrls(country, startIso, endIso);
|
|
95
|
+
if (queryOptions?.format === Format.SOURCES) {
|
|
96
|
+
return urls;
|
|
97
|
+
}
|
|
98
|
+
const data = await this.getPower(urls[0]);
|
|
99
|
+
const priceTime = await this.getPrices(urls[1]);
|
|
100
|
+
if (priceTime) {
|
|
101
|
+
const rebasedPrice = this.rebase(priceTime, data.time);
|
|
102
|
+
data.price = rebasedPrice.price;
|
|
103
|
+
}
|
|
104
|
+
return data;
|
|
105
|
+
}
|
|
106
|
+
async getPower(url: string) {
|
|
94
107
|
try {
|
|
95
|
-
const url = `https://api.energy-charts.info/public_power?country=${countryShort}&start=${start}&end=${end}`;
|
|
96
108
|
const response = await fetch(url);
|
|
97
109
|
const text = await response.text();
|
|
98
110
|
if (!text) return;
|
|
99
111
|
const json = JSON.parse(text);
|
|
100
112
|
const t = this.translate(json);
|
|
113
|
+
/*
|
|
101
114
|
try {
|
|
102
115
|
const priceTime = await this.getPrices(countryShort, startIso, endIso);
|
|
103
116
|
if (priceTime) {
|
|
@@ -107,14 +120,21 @@ export class EnergyCharts {
|
|
|
107
120
|
} catch (e) {
|
|
108
121
|
console.error(e);
|
|
109
122
|
}
|
|
123
|
+
*/
|
|
110
124
|
return t;
|
|
111
125
|
} catch (e) {
|
|
112
126
|
console.error(e);
|
|
113
127
|
}
|
|
114
128
|
}
|
|
129
|
+
makeUrls(country: string, startIso: string, endIso: string) {
|
|
130
|
+
const countryShort = this.countries
|
|
131
|
+
.find((item: any) => item.code === country)
|
|
132
|
+
?.short?.toLowerCase();
|
|
133
|
+
const start = encodeURIComponent(startIso);
|
|
134
|
+
const end = encodeURIComponent(endIso);
|
|
135
|
+
const powerUrl = `https://api.energy-charts.info/public_power?country=${countryShort}&start=${start}&end=${end}`;
|
|
115
136
|
|
|
116
|
-
|
|
117
|
-
let zone = country.toUpperCase();
|
|
137
|
+
let zone = countryShort.toUpperCase();
|
|
118
138
|
if (zone === 'DE') {
|
|
119
139
|
zone = 'DE-LU';
|
|
120
140
|
}
|
|
@@ -131,13 +151,14 @@ export class EnergyCharts {
|
|
|
131
151
|
zone = 'SE1';
|
|
132
152
|
}
|
|
133
153
|
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
154
|
+
const priceUrl = `https://api.energy-charts.info/price?bzn=${zone}&start=${start}&end=${end}`;
|
|
155
|
+
return [powerUrl, priceUrl];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async getPrices(url: string) {
|
|
137
159
|
console.log(url);
|
|
138
160
|
const response = await fetch(url);
|
|
139
161
|
const text = await response.text();
|
|
140
|
-
//console.log(text);
|
|
141
162
|
if (!text) return;
|
|
142
163
|
const json = JSON.parse(text);
|
|
143
164
|
if (json?.unix_seconds && json?.price) {
|
|
@@ -1,40 +1,46 @@
|
|
|
1
|
-
import { readFileSync } from 'fs'
|
|
2
|
-
import { join } from 'path'
|
|
3
|
-
import { EntsoeLoader, LoaderConfig } from './Loader'
|
|
4
|
-
import { DataPoint, EdifactParser } from './ParseEdifact'
|
|
5
|
-
import { ParseInstalled } from './ParseInstalled'
|
|
6
|
-
import { CommonTimestamps } from './CommonTimestamps'
|
|
7
|
-
import { EurostatAPI } from './Eurostat'
|
|
8
|
-
import { Types } from '../interfaces/types'
|
|
9
|
-
import { Format, QueryOptions } from '../interfaces/queryoptions'
|
|
10
|
-
import { NaturalGasPrices } from './NaturalGasPrice'
|
|
11
|
-
import { Entsoe } from '../interfaces/entsoe'
|
|
12
|
-
import { EnergyCharts } from './EnergyCharts'
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { EntsoeLoader, LoaderConfig } from './Loader';
|
|
4
|
+
import { DataPoint, EdifactParser } from './ParseEdifact';
|
|
5
|
+
import { ParseInstalled } from './ParseInstalled';
|
|
6
|
+
import { CommonTimestamps } from './CommonTimestamps';
|
|
7
|
+
import { EurostatAPI } from './Eurostat';
|
|
8
|
+
import { Types } from '../interfaces/types';
|
|
9
|
+
import { Format, QueryOptions } from '../interfaces/queryoptions';
|
|
10
|
+
import { NaturalGasPrices } from './NaturalGasPrice';
|
|
11
|
+
import { Entsoe } from '../interfaces/entsoe';
|
|
12
|
+
import { EnergyCharts } from './EnergyCharts';
|
|
13
13
|
|
|
14
14
|
export class LoadService {
|
|
15
|
-
country = ''
|
|
16
|
-
loader: EntsoeLoader
|
|
17
|
-
parser: EdifactParser
|
|
18
|
-
parseInstalled: ParseInstalled
|
|
15
|
+
country = '';
|
|
16
|
+
loader: EntsoeLoader;
|
|
17
|
+
parser: EdifactParser;
|
|
18
|
+
parseInstalled: ParseInstalled;
|
|
19
19
|
|
|
20
20
|
constructor(private loaderConfig: LoaderConfig) {
|
|
21
|
-
const typesPath = join(__dirname, '../config/types.json') // Set the path to your config file
|
|
22
|
-
const types = JSON.parse(readFileSync(typesPath, 'utf8')) as Types // Read the config file from disk
|
|
21
|
+
const typesPath = join(__dirname, '../config/types.json'); // Set the path to your config file
|
|
22
|
+
const types = JSON.parse(readFileSync(typesPath, 'utf8')) as Types; // Read the config file from disk
|
|
23
23
|
|
|
24
|
-
this.loader = new EntsoeLoader(loaderConfig)
|
|
25
|
-
this.parser = new EdifactParser(types)
|
|
26
|
-
this.parseInstalled = new ParseInstalled(types)
|
|
24
|
+
this.loader = new EntsoeLoader(loaderConfig);
|
|
25
|
+
this.parser = new EdifactParser(types);
|
|
26
|
+
this.parseInstalled = new ParseInstalled(types);
|
|
27
27
|
}
|
|
28
28
|
async getPowerEnergyCharts(
|
|
29
29
|
countryCode: string,
|
|
30
30
|
year: number,
|
|
31
31
|
month: number,
|
|
32
|
+
queryOptions: QueryOptions
|
|
32
33
|
): Promise<any> {
|
|
33
|
-
const startMonth = new Date(Date.UTC(year, month - 1)).toISOString()
|
|
34
|
-
const endMonth = new Date(Date.UTC(year, month)).toISOString()
|
|
35
|
-
const energyCharts = new EnergyCharts()
|
|
36
|
-
const power = await energyCharts.load(
|
|
37
|
-
|
|
34
|
+
const startMonth = new Date(Date.UTC(year, month - 1)).toISOString();
|
|
35
|
+
const endMonth = new Date(Date.UTC(year, month)).toISOString();
|
|
36
|
+
const energyCharts = new EnergyCharts();
|
|
37
|
+
const power = await energyCharts.load(
|
|
38
|
+
countryCode,
|
|
39
|
+
startMonth,
|
|
40
|
+
endMonth,
|
|
41
|
+
queryOptions
|
|
42
|
+
);
|
|
43
|
+
return power;
|
|
38
44
|
}
|
|
39
45
|
async getPower(
|
|
40
46
|
countryCode: string,
|
|
@@ -42,11 +48,11 @@ export class LoadService {
|
|
|
42
48
|
month: number,
|
|
43
49
|
queryOptions?: QueryOptions
|
|
44
50
|
): Promise<any> {
|
|
45
|
-
const startMonth = new Date(Date.UTC(year, month - 1)).toISOString()
|
|
46
|
-
const endMonth = new Date(Date.UTC(year, month)).toISOString()
|
|
47
|
-
const wanted = ['generation', 'price', 'consumption']
|
|
51
|
+
const startMonth = new Date(Date.UTC(year, month - 1)).toISOString();
|
|
52
|
+
const endMonth = new Date(Date.UTC(year, month)).toISOString();
|
|
53
|
+
const wanted = ['generation', 'price', 'consumption'];
|
|
48
54
|
if (queryOptions?.format === Format.SOURCES) {
|
|
49
|
-
return this.loader.makeUrls(wanted, countryCode, year, month)
|
|
55
|
+
return this.loader.makeUrls(wanted, countryCode, year, month);
|
|
50
56
|
}
|
|
51
57
|
const edifactAsJson = await this.loader.load(
|
|
52
58
|
wanted,
|
|
@@ -54,22 +60,22 @@ export class LoadService {
|
|
|
54
60
|
year,
|
|
55
61
|
month,
|
|
56
62
|
queryOptions
|
|
57
|
-
)
|
|
63
|
+
);
|
|
58
64
|
if (queryOptions?.format === Format.EDIJSON) {
|
|
59
|
-
return edifactAsJson
|
|
65
|
+
return edifactAsJson;
|
|
60
66
|
}
|
|
61
|
-
const parsed = await this.parser.parseAll(edifactAsJson)
|
|
67
|
+
const parsed = await this.parser.parseAll(edifactAsJson);
|
|
62
68
|
if (queryOptions?.format === Format.KEYVALUE) {
|
|
63
|
-
return parsed
|
|
69
|
+
return parsed;
|
|
64
70
|
}
|
|
65
|
-
const ready: any = CommonTimestamps.transform(parsed, startMonth, endMonth)
|
|
71
|
+
const ready: any = CommonTimestamps.transform(parsed, startMonth, endMonth);
|
|
66
72
|
//console.log('e.price',e.price)
|
|
67
73
|
/*
|
|
68
74
|
if (!e.price) {
|
|
69
75
|
e.price = ready.price
|
|
70
76
|
}
|
|
71
77
|
*/
|
|
72
|
-
return ready
|
|
78
|
+
return ready;
|
|
73
79
|
}
|
|
74
80
|
|
|
75
81
|
async getInstalled(countryCode: string, queryOptions: QueryOptions) {
|
|
@@ -81,55 +87,55 @@ export class LoadService {
|
|
|
81
87
|
const edifactAsJson = await this.loader.loadInstalled(
|
|
82
88
|
countryCode,
|
|
83
89
|
queryOptions
|
|
84
|
-
)
|
|
90
|
+
);
|
|
85
91
|
if (queryOptions.format === Format.SOURCES) {
|
|
86
|
-
return edifactAsJson
|
|
92
|
+
return edifactAsJson;
|
|
87
93
|
}
|
|
88
|
-
const ready = await this.parseInstalled.parse(edifactAsJson as Entsoe[])
|
|
89
|
-
return ready
|
|
94
|
+
const ready = await this.parseInstalled.parse(edifactAsJson as Entsoe[]);
|
|
95
|
+
return ready;
|
|
90
96
|
}
|
|
91
97
|
|
|
92
98
|
async getHydrofill(countryCode: string, queryOptions: QueryOptions) {
|
|
93
|
-
const wanted = ['hydroFill']
|
|
94
|
-
const endYear = new Date().getFullYear() + 1
|
|
95
|
-
let all: DataPoint[] = []
|
|
99
|
+
const wanted = ['hydroFill'];
|
|
100
|
+
const endYear = new Date().getFullYear() + 1;
|
|
101
|
+
let all: DataPoint[] = [];
|
|
96
102
|
for (let year = 2015; year < endYear; year++) {
|
|
97
|
-
const month = 1
|
|
103
|
+
const month = 1;
|
|
98
104
|
const edifactAsJson = await this.loader.load(
|
|
99
105
|
wanted,
|
|
100
106
|
countryCode,
|
|
101
107
|
year,
|
|
102
108
|
month,
|
|
103
109
|
queryOptions
|
|
104
|
-
)
|
|
110
|
+
);
|
|
105
111
|
if (queryOptions.format === Format.SOURCES) {
|
|
106
|
-
return [edifactAsJson.hydroFill]
|
|
112
|
+
return [edifactAsJson.hydroFill];
|
|
107
113
|
}
|
|
108
|
-
const parsed = await this.parser.parseAll(edifactAsJson)
|
|
114
|
+
const parsed = await this.parser.parseAll(edifactAsJson);
|
|
109
115
|
if (parsed?.hydroFill) {
|
|
110
|
-
const yearArr = Object.values(parsed?.hydroFill)?.[0]
|
|
116
|
+
const yearArr = Object.values(parsed?.hydroFill)?.[0];
|
|
111
117
|
if (yearArr) {
|
|
112
|
-
all = all.concat(yearArr)
|
|
118
|
+
all = all.concat(yearArr);
|
|
113
119
|
}
|
|
114
120
|
}
|
|
115
121
|
}
|
|
116
122
|
const keyValue = all.filter((obj, index, self) => {
|
|
117
|
-
return index === self.findIndex((o) => o.time === obj.time)
|
|
118
|
-
})
|
|
123
|
+
return index === self.findIndex((o) => o.time === obj.time);
|
|
124
|
+
});
|
|
119
125
|
return {
|
|
120
126
|
time: keyValue.map((item) => item.time),
|
|
121
127
|
hydroFill: keyValue.map((item) => item.value),
|
|
122
|
-
}
|
|
128
|
+
};
|
|
123
129
|
}
|
|
124
130
|
|
|
125
131
|
async getFossil(country: string, queryOptions: QueryOptions) {
|
|
126
|
-
const eurostat = new EurostatAPI()
|
|
127
|
-
return await eurostat.load(country, queryOptions)
|
|
132
|
+
const eurostat = new EurostatAPI();
|
|
133
|
+
return await eurostat.load(country, queryOptions);
|
|
128
134
|
}
|
|
129
135
|
|
|
130
136
|
async getNaturalGasPrices(country: string, queryOptions: QueryOptions) {
|
|
131
|
-
const eurostat = new NaturalGasPrices()
|
|
132
|
-
return await eurostat.load(country, queryOptions)
|
|
137
|
+
const eurostat = new NaturalGasPrices();
|
|
138
|
+
return await eurostat.load(country, queryOptions);
|
|
133
139
|
}
|
|
134
140
|
|
|
135
141
|
async getCountrydata(country: string, queryOptions: QueryOptions) {
|
|
@@ -138,6 +144,6 @@ export class LoadService {
|
|
|
138
144
|
price: await this.getNaturalGasPrices(country, queryOptions),
|
|
139
145
|
installed: await this.getInstalled(country, queryOptions),
|
|
140
146
|
hydrofill: await this.getHydrofill(country, queryOptions),
|
|
141
|
-
}
|
|
147
|
+
};
|
|
142
148
|
}
|
|
143
149
|
}
|