/
speed.ts
88 lines (81 loc) · 2.07 KB
/
speed.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { SpeedTranslationEnum } from '../i18n';
import { MeasureDefinition, Unit } from '../type';
import { ImperialSpeedUnit, MetricSpeedUnit, SpeedUnit } from './type';
export enum MetricSpeedEnum {
METRE_PER_SECOND = 'm/s',
KILOMETRE_PER_HOUR = 'km/h',
METRE_PER_HOUR = 'm/h'
}
export enum ImperialSpeedEnum {
MILE_PER_HOUR = 'mph',
KNOT = 'knot',
FOOT_PER_SECOND = 'ft/s'
}
const metric: Record<MetricSpeedUnit, Unit> = {
[MetricSpeedEnum.METRE_PER_SECOND]: {
name: {
singular: SpeedTranslationEnum.SINGULAR_METRE_PER_SECOND,
plural: SpeedTranslationEnum.PLURAL_METRE_PER_SECOND
},
anchor: 3.6
},
[MetricSpeedEnum.KILOMETRE_PER_HOUR]: {
name: {
singular: SpeedTranslationEnum.SINGULAR_KILOMETRE_PER_HOUR,
plural: SpeedTranslationEnum.PLURAL_KILOMETRE_PER_HOUR
},
anchor: 1
},
[MetricSpeedEnum.METRE_PER_HOUR]: {
name: {
singular: SpeedTranslationEnum.SINGULAR_METRE_PER_HOUR,
plural: SpeedTranslationEnum.PLURAL_METRE_PER_HOUR
},
anchor: 1e3
}
};
const imperial: Record<ImperialSpeedUnit, Unit> = {
[ImperialSpeedEnum.MILE_PER_HOUR]: {
name: {
singular: SpeedTranslationEnum.SINGULAR_MILE_PER_HOUR,
plural: SpeedTranslationEnum.PLURAL_MILE_PER_HOUR
},
anchor: 1
},
[ImperialSpeedEnum.KNOT]: {
name: {
singular: SpeedTranslationEnum.SINGULAR_KNOT,
plural: SpeedTranslationEnum.PLURAL_KNOT
},
anchor: 1.150779
},
[ImperialSpeedEnum.FOOT_PER_SECOND]: {
name: {
singular: SpeedTranslationEnum.SINGULAR_FOOT_PER_SECOND,
plural: SpeedTranslationEnum.PLURAL_FOOT_PER_SECOND
},
anchor: 0.681818
}
};
export type SpeedSystems = 'metric' | 'imperial';
const speed: MeasureDefinition<SpeedSystems, SpeedUnit> = {
systems: {
metric,
imperial
},
anchors: {
metric: {
unit: MetricSpeedEnum.KILOMETRE_PER_HOUR,
ratio: {
imperial: 1 / 1.609344
}
},
imperial: {
unit: ImperialSpeedEnum.MILE_PER_HOUR,
ratio: {
metric: 1.609344
}
}
}
};
export default speed;