mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-04 13:29:13 -04:00
Added temperature limits #1144
This commit is contained in:
parent
b430baef40
commit
deb6a9b9a6
1 changed files with 19 additions and 2 deletions
|
@ -22,7 +22,7 @@ type TemperatureScale = 'kelvin' | 'celsius' | 'fahrenheit' | 'rankine' | 'delis
|
||||||
const units = reactive<
|
const units = reactive<
|
||||||
Record<
|
Record<
|
||||||
string | TemperatureScale,
|
string | TemperatureScale,
|
||||||
{ title: string; unit: string; ref: number; toKelvin: (v: number) => number; fromKelvin: (v: number) => number }
|
{ title: string; unit: string; ref: number; toKelvin: (v: number) => number; fromKelvin: (v: number) => number; min?: number; max?: number; maxLimit?: boolean }
|
||||||
>
|
>
|
||||||
>({
|
>({
|
||||||
kelvin: {
|
kelvin: {
|
||||||
|
@ -59,6 +59,7 @@ const units = reactive<
|
||||||
ref: 0,
|
ref: 0,
|
||||||
toKelvin: convertDelisleToKelvin,
|
toKelvin: convertDelisleToKelvin,
|
||||||
fromKelvin: convertKelvinToDelisle,
|
fromKelvin: convertKelvinToDelisle,
|
||||||
|
maxLimit: true,
|
||||||
},
|
},
|
||||||
newton: {
|
newton: {
|
||||||
title: 'Newton',
|
title: 'Newton',
|
||||||
|
@ -86,7 +87,9 @@ const units = reactive<
|
||||||
function update(key: TemperatureScale) {
|
function update(key: TemperatureScale) {
|
||||||
const { ref: value, toKelvin } = units[key];
|
const { ref: value, toKelvin } = units[key];
|
||||||
|
|
||||||
const kelvins = toKelvin(value) ?? 0;
|
let kelvins = toKelvin(value) ?? 0;
|
||||||
|
|
||||||
|
kelvins = kelvins < 0 ? 0 : kelvins;
|
||||||
|
|
||||||
_.chain(units)
|
_.chain(units)
|
||||||
.omit(key)
|
.omit(key)
|
||||||
|
@ -96,6 +99,18 @@ function update(key: TemperatureScale) {
|
||||||
.value();
|
.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setupLimit() {
|
||||||
|
_.forEach(units, (unit) => {
|
||||||
|
if (unit.maxLimit) {
|
||||||
|
unit.max = Math.ceil(unit.fromKelvin(0) * 100) / 100;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
unit.min = Math.floor(unit.fromKelvin(0) * 100) / 100;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
setupLimit();
|
||||||
update('kelvin');
|
update('kelvin');
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -109,6 +124,8 @@ update('kelvin');
|
||||||
<n-input-number
|
<n-input-number
|
||||||
v-model:value="units[key].ref"
|
v-model:value="units[key].ref"
|
||||||
style="flex: 1"
|
style="flex: 1"
|
||||||
|
:min="units[key].min"
|
||||||
|
:max="units[key].max"
|
||||||
@update:value="() => update(key as TemperatureScale)"
|
@update:value="() => update(key as TemperatureScale)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue