B:BD[
22.14778] → [
22.14778:14781]
B:BD[
22.14781] → [
4.22205:22443]
∅:D[
4.22443] → [
22.14785:14927]
B:BD[
22.14785] → [
22.14785:14927]
B:BD[
22.14927] → [
4.22444:22509]
∅:D[
4.22509] → [
22.14995:15073]
B:BD[
22.14995] → [
22.14995:15073]
B:BD[
22.15073] → [
4.22510:22812]
∅:D[
4.22812] → [
23.1350:1421]
B:BD[
22.15073] → [
23.1350:1421]
B:BD[
23.1421] → [
10.4416:4503]
∅:D[
10.4503] → [
23.1450:1471]
B:BD[
23.1450] → [
23.1450:1471]
B:BD[
23.1471] → [
4.22813:22903]
∅:D[
10.4597] → [
23.1553:1591]
∅:D[
4.22903] → [
23.1553:1591]
B:BD[
23.1553] → [
23.1553:1591]
B:BD[
23.1591] → [
10.4598:4649]
B:BD[
10.4649] → [
4.22904:23172]
∅:D[
23.1591] → [
22.15073:15196]
∅:D[
10.4649] → [
22.15073:15196]
∅:D[
4.23172] → [
22.15073:15196]
B:BD[
22.15073] → [
22.15073:15196]
B:BD[
22.15217] → [
22.15217:15236]
B:BD[
22.15236] → [
11.9168:9189]
∅:D[
11.9189] → [
22.15236:15287]
B:BD[
22.15236] → [
22.15236:15287]
B:BD[
22.15287] → [
4.23173:23247]
∅:D[
23.1669] → [
22.15364:15402]
∅:D[
4.23247] → [
22.15364:15402]
B:BD[
22.15364] → [
22.15364:15402]
B:BD[
22.15402] → [
11.9190:9207]
∅:D[
11.9207] → [
22.15402:15421]
B:BD[
22.15402] → [
22.15402:15421]
B:BD[
22.15438] → [
22.15438:15457]
B:BD[
22.15457] → [
11.9208:9321]
B:BD[
11.9321] → [
4.23248:23288]
∅:D[
23.1713] → [
11.9364:9415]
∅:D[
4.23288] → [
11.9364:9415]
B:BD[
11.9364] → [
11.9364:9415]
∅:D[
11.9415] → [
22.15457:15467]
B:BD[
22.15457] → [
22.15457:15467]
B:BD[
22.15467] → [
4.23289:23308]
∅:D[
4.23308] → [
22.15499:15520]
B:BD[
22.15499] → [
22.15499:15520]
B:BD[
22.15520] → [
4.23309:23338]
∅:D[
4.23338] → [
22.15564:15585]
B:BD[
22.15564] → [
22.15564:15585]
B:BD[
22.15585] → [
4.23339:23378]
∅:D[
23.1771] → [
22.15642:15680]
∅:D[
4.23378] → [
22.15642:15680]
B:BD[
22.15642] → [
22.15642:15680]
B:BD[
22.15693] → [
22.15693:15703]
B:BD[
22.15703] → [
4.23379:23407]
∅:D[
4.23407] → [
22.15736:15822]
B:BD[
22.15736] → [
22.15736:15822]
B:BD[
22.15822] → [
4.23408:23462]
∅:D[
23.1840] → [
22.15890:15951]
∅:D[
4.23462] → [
22.15890:15951]
B:BD[
22.15890] → [
22.15890:15951]
B:BD[
22.15951] → [
4.23463:23491]
∅:D[
4.23491] → [
22.15983:16004]
B:BD[
22.15983] → [
22.15983:16004]
B:BD[
22.16004] → [
4.23492:23521]
∅:D[
4.23521] → [
22.16053:16074]
B:BD[
22.16053] → [
22.16053:16074]
B:BD[
22.16074] → [
4.23522:23570]
∅:D[
23.1897] → [
22.16130:16168]
∅:D[
4.23570] → [
22.16130:16168]
B:BD[
22.16130] → [
22.16130:16168]
B:BD[
22.16187] → [
22.16187:16197]
B:BD[
22.16197] → [
4.23571:23600]
∅:D[
4.23600] → [
12.9670:9762]
B:BD[
12.9670] → [
12.9670:9762]
B:BD[
12.9762] → [
4.23601:23677]
∅:D[
23.1977] → [
12.9841:9898]
∅:D[
8.3648] → [
12.9841:9898]
∅:D[
4.23677] → [
12.9841:9898]
B:BD[
12.9841] → [
12.9841:9898]
B:BD[
8.3853] → [
8.3853:3863]
B:BD[
8.3863] → [
4.23678:23703]
∅:D[
4.23703] → [
22.16230:16321]
B:BD[
22.16230] → [
22.16230:16321]
B:BD[
22.16321] → [
4.23704:23757]
∅:D[
23.2095] → [
22.16378:16416]
∅:D[
4.23757] → [
22.16378:16416]
B:BD[
22.16378] → [
22.16378:16416]
B:BD[
22.16416] → [
4.23758:23777]
∅:D[
4.23777] → [
22.16434:16444]
B:BD[
22.16434] → [
22.16434:16444]
B:BD[
22.16444] → [
4.23778:23812]
∅:D[
4.23812] → [
22.16467:16538]
B:BD[
22.16467] → [
22.16467:16538]
B:BD[
22.16538] → [
4.23813:23869]
∅:D[
23.2138] → [
22.16580:16628]
∅:D[
4.23869] → [
22.16580:16628]
B:BD[
22.16580] → [
22.16580:16628]
B:BD[
22.16632] → [
22.16632:16737]
B:BD[
22.16737] → [
4.23870:23913]
∅:D[
23.2185] → [
22.16783:16844]
∅:D[
4.23913] → [
22.16783:16844]
B:BD[
22.16783] → [
22.16783:16844]
B:BD[
22.16848] → [
22.16848:16987]
B:BD[
22.16987] → [
4.23914:23973]
∅:D[
23.2248] → [
22.17049:17137]
∅:D[
4.23973] → [
22.17049:17137]
B:BD[
22.17049] → [
22.17049:17137]
B:BD[
22.17137] → [
4.23974:24004]
∅:D[
4.24004] → [
22.17159:17200]
B:BD[
22.17159] → [
22.17159:17200]
B:BD[
22.17200] → [
4.24005:24027]
∅:D[
4.24027] → [
22.17224:17245]
B:BD[
22.17224] → [
22.17224:17245]
B:BD[
22.17245] → [
4.24028:24098]
∅:D[
23.2297] → [
22.17293:17331]
∅:D[
4.24098] → [
22.17293:17331]
B:BD[
22.17293] → [
22.17293:17331]
B:BD[
22.17331] → [
4.24099:24110]
∅:D[
4.24110] → [
22.17343:17353]
B:BD[
22.17343] → [
22.17343:17353]
B:BD[
22.17353] → [
4.24111:24142]
∅:D[
4.24142] → [
22.17380:17421]
B:BD[
22.17380] → [
22.17380:17421]
B:BD[
22.17421] → [
4.24143:24190]
∅:D[
4.24190] → [
22.17445:17464]
B:BD[
22.17445] → [
22.17445:17464]
B:BD[
22.17464] → [
4.24191:24275]
∅:D[
23.2371] → [
22.17537:17575]
∅:D[
4.24275] → [
22.17537:17575]
B:BD[
22.17537] → [
22.17537:17575]
B:BD[
22.17575] → [
4.24276:24307]
∅:D[
4.24307] → [
22.17586:17596]
B:BD[
22.17586] → [
22.17586:17596]
B:BD[
22.17600] → [
22.17600:17798]
B:BD[
22.17798] → [
4.24308:24387]
∅:D[
23.2454] → [
22.17880:18012]
∅:D[
4.24387] → [
22.17880:18012]
B:BD[
22.17880] → [
22.17880:18012]
B:BD[
22.18012] → [
4.24388:24423]
∅:D[
4.24423] → [
22.18035:18098]
B:BD[
22.18035] → [
22.18035:18098]
B:BD[
22.18098] → [
4.24424:24426]
∅:D[
4.24426] → [
22.18101:18120]
B:BD[
22.18101] → [
22.18101:18120]
B:BD[
22.18120] → [
4.24427:24487]
∅:D[
23.2524] → [
22.18189:18248]
∅:D[
4.24487] → [
22.18189:18248]
B:BD[
22.18189] → [
22.18189:18248]
B:BD[
22.18248] → [
4.24488:24516]
∅:D[
4.24516] → [
22.18276:18360]
B:BD[
22.18276] → [
22.18276:18360]
B:BD[
22.18360] → [
4.24517:24576]
∅:D[
23.2599] → [
22.18434:18472]
∅:D[
4.24576] → [
22.18434:18472]
B:BD[
22.18434] → [
22.18434:18472]
B:BD[
22.18472] → [
4.24577:24587]
∅:D[
4.24587] → [
22.18483:18493]
B:BD[
22.18483] → [
22.18483:18493]
B:BD[
22.18493] → [
4.24588:24619]
∅:D[
4.24619] → [
22.18522:18606]
B:BD[
22.18522] → [
22.18522:18606]
B:BD[
22.18606] → [
4.24620:24691]
∅:D[
23.2675] → [
22.18681:18740]
∅:D[
4.24691] → [
22.18681:18740]
B:BD[
22.18681] → [
22.18681:18740]
B:BD[
22.18740] → [
4.24692:24724]
∅:D[
4.24724] → [
22.18769:18853]
B:BD[
22.18769] → [
22.18769:18853]
B:BD[
22.18853] → [
4.24725:24797]
∅:D[
23.2751] → [
22.18928:18987]
∅:D[
4.24797] → [
22.18928:18987]
B:BD[
22.18928] → [
22.18928:18987]
B:BD[
22.18987] → [
4.24798:24830]
∅:D[
4.24830] → [
22.19025:19066]
B:BD[
22.19025] → [
22.19025:19066]
B:BD[
22.19066] → [
4.24831:24853]
∅:D[
4.24853] → [
22.19096:19117]
B:BD[
22.19096] → [
22.19096:19117]
B:BD[
22.19117] → [
4.24854:24926]
∅:D[
23.2813] → [
22.19178:19216]
∅:D[
4.24926] → [
22.19178:19216]
B:BD[
22.19178] → [
22.19178:19216]
B:BD[
22.19216] → [
4.24927:24938]
∅:D[
4.24938] → [
22.19235:19245]
B:BD[
22.19235] → [
22.19235:19245]
B:BD[
22.19245] → [
4.24939:24973]
∅:D[
4.24973] → [
22.19279:19320]
B:BD[
22.19279] → [
22.19279:19320]
B:BD[
22.19320] → [
4.24974:25004]
∅:D[
4.25004] → [
22.19368:19389]
B:BD[
22.19368] → [
22.19368:19389]
B:BD[
22.19389] → [
4.25005:25063]
∅:D[
23.2924] → [
22.19499:19556]
∅:D[
4.25063] → [
22.19499:19556]
B:BD[
22.19499] → [
22.19499:19556]
B:BD[
22.19572] → [
22.19572:19579]
}
pub fn create_dir_failed(
code_file: &str,
code_line: u32,
msg: &str) -> Error
{
Error(format!(
"[ui_data::{}:{}] Failed to create dir with msg: [{}].",
code_file,
code_line,
msg,
))
}
pub fn data_type_mismatch(
code_file: &str,
code_line: u32,
data_type1: &str,
data_type2: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Datatypes [{}] and [{}] do not match.",
code_file,
code_line,
data_type1,
data_type2,
))
}
pub fn expected_datapoint_found_dot(
code_file: &str,
code_line: u32,
line_num: &str,
line_str: &str) -> Error
{
Error(format!(
"[ui*date:{}:{}] Line [{}] is [{}] but expected datapoint.]",
code_file,
code_line,
line_num,
line_str,
))
}
pub fn expected_graphic_has_one_series(
code_file: &str,
code_line: u32,
country: &str,
data_type: &str,
index: usize) -> Error
{
Error(format!(
"[ui_data:{}:{}] [{} {} {}] Expected source graphic to have exactly one series.",
code_file,
code_line,
country,
data_type,
index,
))
}
pub fn expected_series_data(
code_file: &str,
code_line: u32,
series_id: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Expected series data from series [{}] but was empty.",
code_file,
code_line,
series_id,
))
}
/// Handle error from time-series.
pub fn expected_regular_time_series(
code_file: &str,
code_line: u32,
country: &str,
data_type: &str,
series_id: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Expected regular time-series from [{} {} {}].",
code_file,
code_line,
country,
data_type,
series_id,
))
}
pub fn external(
code_file: &str,
code_line: u32,
msg: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] External: {}",
code_file,
code_line,
msg,
))
}
pub fn file_error(
code_file: &str,
code_line: u32) -> Error
{
Error(format!(
"[ui_data:{}:{}] File error.",
code_file,
code_line,
))
}
pub fn fred_request_failed(
code_file: &str,
code_line: u32,
msg: &str) -> Error
{
Error(format!(
"[ui_data:{}]{}] Fred request failed: [{}].",
code_file,
code_line,
msg,
))
}
pub fn into_keytree_failed(
code_file: &str,
code_line: u32) -> Error
{
Error(format!(
"[ui_data:{}:{}] Into keytree failed.",
code_file,
code_line,
))
}
pub fn series_lookup_failed(
code_file: &str,
code_line: u32,
series_id: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Could not find graphic reference [{}] in series.",
code_file,
code_line,
series_id,
))
}
pub fn read_file_failed(
code_file: &str,
code_line: u32,
filename: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to read file [{}].",
code_file,
code_line,
filename,
))
}
pub fn serialize_to_json_failed(
code_file: &str,
code_line: u32) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to serialize to json.",
code_file,
code_line,
))
}
pub fn fred_error(
code_file: &str,
code_line: u32,
msg: &str) -> Error
{
Error(format!(
"ui_data:{}:{}] Fred error [{}].",
code_file,
code_line,
msg,
))
}
pub fn key_not_in_dataspec(
code_file: &str,
code_line: u32,
data_type: &str,
country: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Key [({}, {})] not in dataspec.",
code_file,
code_line,
data_type,
country,
))
}
///
pub fn parse_datatype_failed(
code_file: &str,
code_line: u32,
s: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to parse datatype from string [{}].",
code_file,
code_line,
s,
))
}
pub fn parse_datepoint_failed(
code_file: &str,
code_line: u32,
line: &str,
obs_str: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to parse datepoint at line [{}] from string [{}].",
code_file,
code_line,
line,
obs_str,
))
}
pub fn parse_fred_value_failed(
code_file: &str,
code_line: u32,
data_type: &str,
country: &str,
series: &str,
line_str: &str,
line: usize) -> Error
{
Error(format!(
"[ui_data:{}:{}] [{} {} {}] Parse Fred value [{}] failed on line {}.",
code_file,
code_line,
data_type,
country,
series,
line_str,
line,
))
}
pub fn parse_graphic_range_failed(
code_file: &str,
code_line: u32,
s: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Parse graphic range [{}] failed.",
code_file,
code_line,
s,
))
}
pub fn parse_parser_failed(
code_file: &str,
code_line: u32,
s: &str) -> Error
{
Error(format!(
"[ui_data::{}:{}] Parse parser type [{}] failed.",
code_file,
code_line,
s
))
}
pub fn parse_timestamp_failed(
code_file: &str,
code_line: u32,
s: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to parse timestamp from string [{}].",
code_file,
code_line,
s,
))
}
pub fn parse_transform1_failed(
code_file: &str,
code_line: u32,
s: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to parse transform1 from string [{}].",
code_file,
code_line,
s,
))
}
pub fn parse_transform2_failed(
code_file: &str,
code_line: u32,
s: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] Failed to parse transform2 from string [{}].",
code_file,
code_line,
s,
))
}
pub fn series_id_not_in_dataspec(
code_file: &str,
code_line: u32,
series_id: &str) -> Error
{
Error(format!(
"[ui_data:{}:{}] SeriesId [{}] not in DataSpec.",
code_file,
code_line,
series_id,
))