From 4607837f9a398440e0098f2ba862e8d7422ce94f Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 13 Jan 2023 18:26:28 +0100 Subject: [PATCH] feat(new-tool): temperature converter --- src/tools/index.ts | 13 +- src/tools/temperature-converter/index.ts | 24 ++++ .../temperature-converter.models.ts | 20 +++ .../temperature-converter.vue | 127 ++++++++++++++++++ 4 files changed, 178 insertions(+), 6 deletions(-) create mode 100644 src/tools/temperature-converter/index.ts create mode 100644 src/tools/temperature-converter/temperature-converter.models.ts create mode 100644 src/tools/temperature-converter/temperature-converter.vue diff --git a/src/tools/index.ts b/src/tools/index.ts index 69b81e3b..a5130e68 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,13 +1,10 @@ -import { tool as jwtParser } from './jwt-parser'; -import { tool as chmodCalculator } from './chmod-calculator'; -import { tool as mimeTypes } from './mime-types'; -import { tool as otpCodeGeneratorAndValidator } from './otp-code-generator-and-validator'; import { tool as base64FileConverter } from './base64-file-converter'; import { tool as base64StringConverter } from './base64-string-converter'; import { tool as basicAuthGenerator } from './basic-auth-generator'; import { tool as bcrypt } from './bcrypt'; import { tool as bip39 } from './bip39-generator'; import { tool as caseConverter } from './case-converter'; +import { tool as chmodCalculator } from './chmod-calculator'; import { tool as chronometer } from './chronometer'; import { tool as colorConverter } from './color-converter'; import { tool as crontabGenerator } from './crontab-generator'; @@ -21,20 +18,24 @@ import { tool as hmacGenerator } from './hmac-generator'; import { tool as htmlEntities } from './html-entities'; import { tool as baseConverter } from './integer-base-converter'; import { tool as jsonViewer } from './json-viewer'; +import { tool as jwtParser } from './jwt-parser'; import { tool as loremIpsumGenerator } from './lorem-ipsum-generator'; import { tool as mathEvaluator } from './math-evaluator'; import { tool as metaTagGenerator } from './meta-tag-generator'; +import { tool as mimeTypes } from './mime-types'; +import { tool as otpCodeGeneratorAndValidator } from './otp-code-generator-and-validator'; import { tool as qrCodeGenerator } from './qr-code-generator'; import { tool as randomPortGenerator } from './random-port-generator'; import { tool as romanNumeralConverter } from './roman-numeral-converter'; import { tool as sqlPrettify } from './sql-prettify'; import { tool as svgPlaceholderGenerator } from './svg-placeholder-generator'; +import { tool as temperatureConverter } from './temperature-converter'; import { tool as textStatistics } from './text-statistics'; import { tool as tokenGenerator } from './token-generator'; +import type { ToolCategory } from './tools.types'; import { tool as urlEncoder } from './url-encoder'; import { tool as urlParser } from './url-parser'; import { tool as uuidGenerator } from './uuid-generator'; -import type { ToolCategory } from './tools.types'; export const toolsByCategory: ToolCategory[] = [ { @@ -81,7 +82,7 @@ export const toolsByCategory: ToolCategory[] = [ }, { name: 'Measurement', - components: [chronometer], + components: [chronometer, temperatureConverter], }, { name: 'Text', diff --git a/src/tools/temperature-converter/index.ts b/src/tools/temperature-converter/index.ts new file mode 100644 index 00000000..60192b41 --- /dev/null +++ b/src/tools/temperature-converter/index.ts @@ -0,0 +1,24 @@ +import { Temperature } from '@vicons/tabler'; +import { defineTool } from '../tool'; + +export const tool = defineTool({ + name: 'Temperature converter', + path: '/temperature-converter', + description: + 'Temperature degrees conversions for Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Réaumur and Rømer.', + keywords: [ + 'temperature', + 'converter', + 'degree', + 'Kelvin', + 'Celsius', + 'Fahrenheit', + 'Rankine', + 'Delisle', + 'Newton', + 'Réaumur', + 'Rømer', + ], + component: () => import('./temperature-converter.vue'), + icon: Temperature, +}); diff --git a/src/tools/temperature-converter/temperature-converter.models.ts b/src/tools/temperature-converter/temperature-converter.models.ts new file mode 100644 index 00000000..a1468b93 --- /dev/null +++ b/src/tools/temperature-converter/temperature-converter.models.ts @@ -0,0 +1,20 @@ +export const convertCelsiusToKelvin = (temperature: number) => temperature + 273.15; +export const convertKelvinToCelsius = (temperature: number) => temperature - 273.15; + +export const convertFahrenheitToKelvin = (temperature: number) => (temperature + 459.67) * (5 / 9); +export const convertKelvinToFahrenheit = (temperature: number) => temperature * (9 / 5) - 459.67; + +export const convertRankineToKelvin = (temperature: number) => temperature * (5 / 9); +export const convertKelvinToRankine = (temperature: number) => temperature * (9 / 5); + +export const convertDelisleToKelvin = (temperature: number) => 373.15 - (2 / 3) * temperature; +export const convertKelvinToDelisle = (temperature: number) => (3 / 2) * (373.15 - temperature); + +export const convertNewtonToKelvin = (temperature: number) => temperature * (100 / 33) + 273.15; +export const convertKelvinToNewton = (temperature: number) => (temperature - 273.15) * (33 / 100); + +export const convertReaumurToKelvin = (temperature: number) => temperature * (5 / 4) + 273.15; +export const convertKelvinToReaumur = (temperature: number) => (temperature - 273.15) * (4 / 5); + +export const convertRomerToKelvin = (temperature: number) => (temperature - 7.5) * (40 / 21) + 273.15; +export const convertKelvinToRomer = (temperature: number) => (temperature - 273.15) * (21 / 40) + 7.5; diff --git a/src/tools/temperature-converter/temperature-converter.vue b/src/tools/temperature-converter/temperature-converter.vue new file mode 100644 index 00000000..3ba3ea14 --- /dev/null +++ b/src/tools/temperature-converter/temperature-converter.vue @@ -0,0 +1,127 @@ + + + + +