commit f8f62e95150a7e2ce9a4d5541c0f6c56ae52570f
parent 2c4ba07038a94b1f16b333c37de4786d78fa17ed
Author: ashermorgan <59518073+ashermorgan@users.noreply.github.com>
Date: Thu, 12 Aug 2021 21:19:51 -0700
Make all unit names plural
Diffstat:
4 files changed, 113 insertions(+), 105 deletions(-)
diff --git a/src/utils/units.js b/src/utils/units.js
@@ -2,9 +2,9 @@
* The time units
*/
const TIME_UNITS = {
- second: 'second',
- minute: 'minute',
- hour: 'hour',
+ seconds: 'seconds',
+ minutes: 'minutes',
+ hours: 'hours',
};
@@ -13,9 +13,9 @@ const TIME_UNITS = {
* The time unit names
*/
const TIME_UNIT_NAMES = {
- second: 'Second',
- minute: 'Minute',
- hour: 'Hour',
+ seconds: 'Seconds',
+ minutes: 'Minutes',
+ hours: 'Hours',
};
@@ -24,9 +24,9 @@ const TIME_UNIT_NAMES = {
* The time unit symbols
*/
const TIME_UNIT_SYMBOLS = {
- second: 's',
- minute: 'min',
- hour: 'hr',
+ seconds: 's',
+ minutes: 'min',
+ hours: 'hr',
};
@@ -35,9 +35,9 @@ const TIME_UNIT_SYMBOLS = {
* The value of each time unit in seconds
*/
const TIME_UNIT_VALUES = {
- second: 1,
- minute: 1 * 60,
- hour: 1 * 60 * 60,
+ seconds: 1,
+ minutes: 1 * 60,
+ hours: 1 * 60 * 60,
};
@@ -46,11 +46,11 @@ const TIME_UNIT_VALUES = {
* The distance units
*/
const DISTANCE_UNITS = {
- meter: 'meter',
- kilometer: 'kilometer',
- yard: 'yard',
- mile: 'mile',
- marathon: 'marathon',
+ meters: 'meters',
+ kilometers: 'kilometers',
+ yards: 'yards',
+ miles: 'miles',
+ marathons: 'marathons',
};
@@ -59,11 +59,11 @@ const DISTANCE_UNITS = {
* The distance unit names
*/
const DISTANCE_UNIT_NAMES = {
- meter: 'Meter',
- kilometer: 'Kilometer',
- yard: 'Yard',
- mile: 'Mile',
- marathon: 'Marathon',
+ meters: 'Meters',
+ kilometers: 'Kilometers',
+ yards: 'Yards',
+ miles: 'Miles',
+ marathons: 'Marathons',
};
@@ -72,11 +72,11 @@ const DISTANCE_UNIT_NAMES = {
* The distance unit symbols
*/
const DISTANCE_UNIT_SYMBOLS = {
- meter: 'm',
- kilometer: 'km',
- yard: 'yd',
- mile: 'mi',
- marathon: 'marathon',
+ meters: 'm',
+ kilometers: 'km',
+ yards: 'yd',
+ miles: 'mi',
+ marathons: 'marathons',
};
@@ -85,11 +85,11 @@ const DISTANCE_UNIT_SYMBOLS = {
* The value of each distance unit in meters
*/
const DISTANCE_UNIT_VALUES = {
- meter: 1,
- kilometer: 1000,
- yard: 0.9144,
- mile: 1609.3499,
- marathon: 42195,
+ meters: 1,
+ kilometers: 1000,
+ yards: 0.9144,
+ miles: 1609.3499,
+ marathons: 42195,
};
@@ -132,8 +132,8 @@ const SPEED_UNIT_SYMBOLS = {
*/
const SPEED_UNIT_VALUES = {
meters_per_second: 1,
- kilometers_per_hour: DISTANCE_UNIT_VALUES.kilometer / TIME_UNIT_VALUES.hour,
- miles_per_hour: DISTANCE_UNIT_VALUES.mile / TIME_UNIT_VALUES.hour,
+ kilometers_per_hour: DISTANCE_UNIT_VALUES.kilometers / TIME_UNIT_VALUES.hours,
+ miles_per_hour: DISTANCE_UNIT_VALUES.miles / TIME_UNIT_VALUES.hours,
};
@@ -154,8 +154,8 @@ const PACE_UNITS = {
*/
const PACE_UNIT_NAMES = {
seconds_per_meter: 'Seconds per Meter',
- minutes_per_kilometer: 'Minutes per kilometer',
- minutes_per_mile: 'Minutes per Mile',
+ seconds_per_kilometer: 'Time per Kilometer',
+ seconds_per_mile: 'Time per Mile',
};
@@ -165,8 +165,8 @@ const PACE_UNIT_NAMES = {
*/
const PACE_UNIT_SYMBOLS = {
seconds_per_meter: 's/m',
- minutes_per_kilometer: 'min/km',
- minutes_per_mile: 'min/mi',
+ seconds_er_kilometer: '/km',
+ seconds_per_mile: '/mi',
};
@@ -176,8 +176,8 @@ const PACE_UNIT_SYMBOLS = {
*/
const PACE_UNIT_VALUES = {
seconds_per_meter: 1,
- seconds_per_kilometer: TIME_UNIT_VALUES.second / DISTANCE_UNIT_VALUES.kilometer,
- seconds_per_mile: TIME_UNIT_VALUES.second / DISTANCE_UNIT_VALUES.mile,
+ seconds_per_kilometer: TIME_UNIT_VALUES.seconds / DISTANCE_UNIT_VALUES.kilometers,
+ seconds_per_mile: TIME_UNIT_VALUES.seconds / DISTANCE_UNIT_VALUES.miles,
};
@@ -292,6 +292,9 @@ function formatDuration(value, padding=6, digits=2) {
// Validate padding
padding = Math.min(padding, 6);
+ // Prevent rounding errors
+ value = parseFloat(value.toFixed(digits));
+
// Calculate parts
let hours = Math.floor(value / 3600);
let minutes = Math.floor((value % 3600) / 60);
diff --git a/src/views/PaceCalculator.vue b/src/views/PaceCalculator.vue
@@ -5,7 +5,7 @@
<decimal-input v-model="inputDistance" :min="0" :digits="2"/>
<select v-model="inputUnit">
<option v-for="(value, key) in distanceUnits" :key="key" :value="key">
- {{ value }}(s)
+ {{ value }}
</option>
</select>
in
@@ -65,7 +65,7 @@ export default {
/**
* The input distance unit
*/
- inputUnit: 'mile',
+ inputUnit: 'miles',
/**
* The input time value
@@ -91,35 +91,35 @@ export default {
* The output targets
*/
targets: [
- { distanceValue: 100, distanceUnit: 'meter' },
- { distanceValue: 200, distanceUnit: 'meter' },
- { distanceValue: 300, distanceUnit: 'meter' },
- { distanceValue: 400, distanceUnit: 'meter' },
- { distanceValue: 600, distanceUnit: 'meter' },
- { distanceValue: 800, distanceUnit: 'meter' },
- { distanceValue: 1000, distanceUnit: 'meter' },
- { distanceValue: 1200, distanceUnit: 'meter' },
- { distanceValue: 1500, distanceUnit: 'meter' },
- { distanceValue: 1600, distanceUnit: 'meter' },
- { distanceValue: 3200, distanceUnit: 'meter' },
-
- { distanceValue: 1, distanceUnit: 'mile' },
- { distanceValue: 2, distanceUnit: 'mile' },
- { distanceValue: 3, distanceUnit: 'mile' },
- { distanceValue: 5, distanceUnit: 'mile' },
- { distanceValue: 10, distanceUnit: 'mile' },
-
- { distanceValue: 2, distanceUnit: 'kilometer' },
- { distanceValue: 3, distanceUnit: 'kilometer' },
- { distanceValue: 4, distanceUnit: 'kilometer' },
- { distanceValue: 5, distanceUnit: 'kilometer' },
- { distanceValue: 6, distanceUnit: 'kilometer' },
- { distanceValue: 8, distanceUnit: 'kilometer' },
- { distanceValue: 10, distanceUnit: 'kilometer' },
- { distanceValue: 15, distanceUnit: 'kilometer' },
-
- { distanceValue: 0.5, distanceUnit: 'marathon' },
- { distanceValue: 1, distanceUnit: 'marathon' },
+ { distanceValue: 100, distanceUnit: 'meters' },
+ { distanceValue: 200, distanceUnit: 'meters' },
+ { distanceValue: 300, distanceUnit: 'meters' },
+ { distanceValue: 400, distanceUnit: 'meters' },
+ { distanceValue: 600, distanceUnit: 'meters' },
+ { distanceValue: 800, distanceUnit: 'meters' },
+ { distanceValue: 1000, distanceUnit: 'meters' },
+ { distanceValue: 1200, distanceUnit: 'meters' },
+ { distanceValue: 1500, distanceUnit: 'meters' },
+ { distanceValue: 1600, distanceUnit: 'meters' },
+ { distanceValue: 3200, distanceUnit: 'meters' },
+
+ { distanceValue: 1, distanceUnit: 'miles' },
+ { distanceValue: 2, distanceUnit: 'miles' },
+ { distanceValue: 3, distanceUnit: 'miles' },
+ { distanceValue: 5, distanceUnit: 'miles' },
+ { distanceValue: 10, distanceUnit: 'miles' },
+
+ { distanceValue: 2, distanceUnit: 'kilometers' },
+ { distanceValue: 3, distanceUnit: 'kilometers' },
+ { distanceValue: 4, distanceUnit: 'kilometers' },
+ { distanceValue: 5, distanceUnit: 'kilometers' },
+ { distanceValue: 6, distanceUnit: 'kilometers' },
+ { distanceValue: 8, distanceUnit: 'kilometers' },
+ { distanceValue: 10, distanceUnit: 'kilometers' },
+ { distanceValue: 15, distanceUnit: 'kilometers' },
+
+ { distanceValue: 0.5, distanceUnit: 'marathons' },
+ { distanceValue: 1, distanceUnit: 'marathons' },
],
};
},
@@ -130,7 +130,7 @@ export default {
*/
pace: function() {
let distance = unitUtils.convertDistance(this.inputDistance,
- this.inputUnit, unitUtils.DISTANCE_UNITS.meter);
+ this.inputUnit, unitUtils.DISTANCE_UNITS.meters);
return paceUtils.getPace(distance, this.inputTime);
},
@@ -143,7 +143,7 @@ export default {
for (let row of this.targets) {
// Convert distance into meters
let distance = unitUtils.convertDistance(row.distanceValue,
- row.distanceUnit, unitUtils.DISTANCE_UNITS.meter);
+ row.distanceUnit, unitUtils.DISTANCE_UNITS.meters);
// Calculate time to travel distance at input pace
let time = paceUtils.getTime(this.pace, distance);
diff --git a/tests/unit/PaceCalculator.spec.js b/tests/unit/PaceCalculator.spec.js
@@ -10,24 +10,24 @@ describe('PaceCalculator.vue', () => {
// Override input values
wrapper.setData({
inputDistance: 1,
- inputUnit: 'kilometer',
+ inputUnit: 'kilometers',
inputTime: 100,
});
// Override targets
await wrapper.setData({ targets: [
- { distanceValue: 10, distanceUnit: 'meter' },
- { distanceValue: 20, distanceUnit: 'meter' },
- { distanceValue: 100, distanceUnit: 'meter' },
- { distanceValue: 1, distanceUnit: 'kilometer' },
+ { distanceValue: 10, distanceUnit: 'meters' },
+ { distanceValue: 20, distanceUnit: 'meters' },
+ { distanceValue: 100, distanceUnit: 'meters' },
+ { distanceValue: 1, distanceUnit: 'kilometers' },
]});
// Assert results are correct
expect(wrapper.vm._computedWatchers.results.value).to.deep.equal([
- { distanceValue: 10, distanceUnit: 'meter', time: 1 },
- { distanceValue: 20, distanceUnit: 'meter', time: 2 },
- { distanceValue: 100, distanceUnit: 'meter', time: 10 },
- { distanceValue: 1, distanceUnit: 'kilometer', time: 100 },
+ { distanceValue: 10, distanceUnit: 'meters', time: 1 },
+ { distanceValue: 20, distanceUnit: 'meters', time: 2 },
+ { distanceValue: 100, distanceUnit: 'meters', time: 10 },
+ { distanceValue: 1, distanceUnit: 'kilometers', time: 100 },
]);
});
@@ -38,24 +38,24 @@ describe('PaceCalculator.vue', () => {
// Override input values
wrapper.setData({
inputDistance: 1,
- inputUnit: 'kilometer',
+ inputUnit: 'kilometers',
inputTime: 100,
});
// Override targets
await wrapper.setData({ targets: [
- { distanceValue: 20, distanceUnit: 'meter' },
- { distanceValue: 100, distanceUnit: 'meter' },
- { distanceValue: 1, distanceUnit: 'kilometer' },
- { distanceValue: 10, distanceUnit: 'meter' },
+ { distanceValue: 20, distanceUnit: 'meters' },
+ { distanceValue: 100, distanceUnit: 'meters' },
+ { distanceValue: 1, distanceUnit: 'kilometers' },
+ { distanceValue: 10, distanceUnit: 'meters' },
]});
// Assert results are correct
expect(wrapper.vm._computedWatchers.results.value).to.deep.equal([
- { distanceValue: 10, distanceUnit: 'meter', time: 1 },
- { distanceValue: 20, distanceUnit: 'meter', time: 2 },
- { distanceValue: 100, distanceUnit: 'meter', time: 10 },
- { distanceValue: 1, distanceUnit: 'kilometer', time: 100 },
+ { distanceValue: 10, distanceUnit: 'meters', time: 1 },
+ { distanceValue: 20, distanceUnit: 'meters', time: 2 },
+ { distanceValue: 100, distanceUnit: 'meters', time: 10 },
+ { distanceValue: 1, distanceUnit: 'kilometers', time: 100 },
]);
});
});
diff --git a/tests/unit/units.spec.js b/tests/unit/units.spec.js
@@ -8,8 +8,8 @@ describe('utils/units.js', () => {
it('90 seconds should equal 1.5 minutes', () => {
let result = units.convertTime(
90,
- units.TIME_UNITS.second,
- units.TIME_UNITS.minute
+ units.TIME_UNITS.seconds,
+ units.TIME_UNITS.minutes,
);
expect(result).to.equal(1.5);
});
@@ -17,8 +17,8 @@ describe('utils/units.js', () => {
it('1.5 minutes should equal 95 seconds', () => {
let result = units.convertTime(
1.5,
- units.TIME_UNITS.minute,
- units.TIME_UNITS.second
+ units.TIME_UNITS.minutes,
+ units.TIME_UNITS.seconds,
);
expect(result).to.equal(90);
});
@@ -29,8 +29,8 @@ describe('utils/units.js', () => {
it('100 meters should equal 0.1 kilometers', () => {
let result = units.convertDistance(
100,
- units.DISTANCE_UNITS.meter,
- units.DISTANCE_UNITS.kilometer
+ units.DISTANCE_UNITS.meters,
+ units.DISTANCE_UNITS.kilometers,
);
expect(result).to.equal(0.1);
});
@@ -38,8 +38,8 @@ describe('utils/units.js', () => {
it('0.1 kilometers should equal 100 meters', () => {
let result = units.convertDistance(
0.1,
- units.DISTANCE_UNITS.kilometer,
- units.DISTANCE_UNITS.meter
+ units.DISTANCE_UNITS.kilometers,
+ units.DISTANCE_UNITS.meters,
);
expect(result).to.equal(100);
});
@@ -51,7 +51,7 @@ describe('utils/units.js', () => {
let result = units.convertSpeed(
1000,
units.SPEED_UNITS.meters_per_second,
- units.SPEED_UNITS.kilometers_per_hour
+ units.SPEED_UNITS.kilometers_per_hour,
);
expect(result).to.equal(3600);
});
@@ -60,7 +60,7 @@ describe('utils/units.js', () => {
let result = units.convertSpeed(
3600,
units.SPEED_UNITS.kilometers_per_hour,
- units.SPEED_UNITS.meters_per_second
+ units.SPEED_UNITS.meters_per_second,
);
expect(result).to.equal(1000);
});
@@ -72,7 +72,7 @@ describe('utils/units.js', () => {
let result = units.convertPace(
1,
units.PACE_UNITS.seconds_per_meter,
- units.PACE_UNITS.seconds_per_kilometer
+ units.PACE_UNITS.seconds_per_kilometer,
);
expect(result).to.equal(1000);
});
@@ -81,7 +81,7 @@ describe('utils/units.js', () => {
let result = units.convertPace(
1000,
units.PACE_UNITS.seconds_per_kilometer,
- units.PACE_UNITS.seconds_per_meter
+ units.PACE_UNITS.seconds_per_meter,
);
expect(result).to.equal(1);
});
@@ -93,7 +93,7 @@ describe('utils/units.js', () => {
let result = units.convertSpeedPace(
3600,
units.SPEED_UNITS.kilometers_per_hour,
- units.PACE_UNITS.seconds_per_kilometer
+ units.PACE_UNITS.seconds_per_kilometer,
);
expect(result).to.equal(1);
});
@@ -102,7 +102,7 @@ describe('utils/units.js', () => {
let result = units.convertSpeedPace(
3600,
units.PACE_UNITS.seconds_per_kilometer,
- units.SPEED_UNITS.kilometers_per_hour
+ units.SPEED_UNITS.kilometers_per_hour,
);
expect(result).to.equal(1);
});
@@ -167,5 +167,10 @@ describe('utils/units.js', () => {
let result = units.formatDuration(-3600 - 120 - 3 - 0.4);
expect(result).to.equal('-01:02:03.40');
});
+
+ it('should correctly format 59.9999', () => {
+ let result = units.formatDuration(59.9999);
+ expect(result).to.equal('00:01:00.00');
+ });
});
});