@jjlmoya/utils-diy 1.10.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/index.ts +2 -1
- package/src/entries.ts +3 -1
- package/src/index.ts +2 -0
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/locale_completeness.test.ts +7 -9
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/balusterCalculator/baluster-calculator.css +9 -9
- package/src/tool/balusterCalculator/bibliography.astro +2 -10
- package/src/tool/balusterCalculator/bibliography.ts +16 -0
- package/src/tool/balusterCalculator/i18n/de.ts +2 -15
- package/src/tool/balusterCalculator/i18n/en.ts +2 -15
- package/src/tool/balusterCalculator/i18n/es.ts +2 -15
- package/src/tool/balusterCalculator/i18n/fr.ts +2 -15
- package/src/tool/balusterCalculator/i18n/id.ts +2 -15
- package/src/tool/balusterCalculator/i18n/it.ts +2 -15
- package/src/tool/balusterCalculator/i18n/ja.ts +2 -15
- package/src/tool/balusterCalculator/i18n/ko.ts +2 -15
- package/src/tool/balusterCalculator/i18n/nl.ts +2 -15
- package/src/tool/balusterCalculator/i18n/pl.ts +2 -15
- package/src/tool/balusterCalculator/i18n/pt.ts +2 -15
- package/src/tool/balusterCalculator/i18n/ru.ts +2 -15
- package/src/tool/balusterCalculator/i18n/sv.ts +2 -15
- package/src/tool/balusterCalculator/i18n/tr.ts +2 -15
- package/src/tool/balusterCalculator/i18n/zh.ts +2 -15
- package/src/tool/balusterCalculator/seo.astro +1 -1
- package/src/tool/clayCalculator/bibliography.astro +2 -10
- package/src/tool/clayCalculator/bibliography.ts +12 -0
- package/src/tool/clayCalculator/clay-shrinkage-calculator.css +30 -30
- package/src/tool/clayCalculator/i18n/de.ts +2 -11
- package/src/tool/clayCalculator/i18n/en.ts +2 -11
- package/src/tool/clayCalculator/i18n/es.ts +2 -11
- package/src/tool/clayCalculator/i18n/fr.ts +2 -11
- package/src/tool/clayCalculator/i18n/id.ts +2 -11
- package/src/tool/clayCalculator/i18n/it.ts +2 -11
- package/src/tool/clayCalculator/i18n/ja.ts +2 -11
- package/src/tool/clayCalculator/i18n/ko.ts +2 -11
- package/src/tool/clayCalculator/i18n/nl.ts +2 -11
- package/src/tool/clayCalculator/i18n/pl.ts +2 -11
- package/src/tool/clayCalculator/i18n/pt.ts +2 -11
- package/src/tool/clayCalculator/i18n/ru.ts +2 -11
- package/src/tool/clayCalculator/i18n/sv.ts +2 -11
- package/src/tool/clayCalculator/i18n/tr.ts +2 -11
- package/src/tool/clayCalculator/i18n/zh.ts +2 -11
- package/src/tool/clayCalculator/seo.astro +1 -1
- package/src/tool/concreteCalculator/bibliography.astro +2 -9
- package/src/tool/concreteCalculator/bibliography.ts +7 -0
- package/src/tool/concreteCalculator/concrete-mortar-calculator.css +18 -18
- package/src/tool/concreteCalculator/i18n/de.ts +2 -15
- package/src/tool/concreteCalculator/i18n/en.ts +2 -15
- package/src/tool/concreteCalculator/i18n/es.ts +2 -15
- package/src/tool/concreteCalculator/i18n/fr.ts +2 -15
- package/src/tool/concreteCalculator/i18n/id.ts +2 -15
- package/src/tool/concreteCalculator/i18n/it.ts +2 -15
- package/src/tool/concreteCalculator/i18n/ja.ts +2 -15
- package/src/tool/concreteCalculator/i18n/ko.ts +2 -15
- package/src/tool/concreteCalculator/i18n/nl.ts +2 -15
- package/src/tool/concreteCalculator/i18n/pl.ts +2 -15
- package/src/tool/concreteCalculator/i18n/pt.ts +2 -15
- package/src/tool/concreteCalculator/i18n/ru.ts +2 -15
- package/src/tool/concreteCalculator/i18n/sv.ts +2 -15
- package/src/tool/concreteCalculator/i18n/tr.ts +2 -15
- package/src/tool/concreteCalculator/i18n/zh.ts +2 -15
- package/src/tool/concreteCalculator/seo.astro +2 -1
- package/src/tool/cutOptimizer/bibliography.astro +2 -9
- package/src/tool/cutOptimizer/bibliography.ts +12 -0
- package/src/tool/cutOptimizer/cut-optimizer.css +25 -25
- package/src/tool/cutOptimizer/i18n/de.ts +2 -11
- package/src/tool/cutOptimizer/i18n/en.ts +2 -11
- package/src/tool/cutOptimizer/i18n/es.ts +2 -11
- package/src/tool/cutOptimizer/i18n/fr.ts +2 -11
- package/src/tool/cutOptimizer/i18n/id.ts +2 -11
- package/src/tool/cutOptimizer/i18n/it.ts +2 -11
- package/src/tool/cutOptimizer/i18n/ja.ts +2 -11
- package/src/tool/cutOptimizer/i18n/ko.ts +2 -11
- package/src/tool/cutOptimizer/i18n/nl.ts +2 -11
- package/src/tool/cutOptimizer/i18n/pl.ts +2 -11
- package/src/tool/cutOptimizer/i18n/pt.ts +2 -11
- package/src/tool/cutOptimizer/i18n/ru.ts +2 -11
- package/src/tool/cutOptimizer/i18n/sv.ts +2 -11
- package/src/tool/cutOptimizer/i18n/tr.ts +2 -11
- package/src/tool/cutOptimizer/i18n/zh.ts +2 -11
- package/src/tool/cutOptimizer/seo.astro +2 -1
- package/src/tool/drillCalculator/bibliography.astro +2 -9
- package/src/tool/drillCalculator/bibliography.ts +12 -0
- package/src/tool/drillCalculator/drill-rpm-calculator.css +57 -57
- package/src/tool/drillCalculator/i18n/de.ts +2 -5
- package/src/tool/drillCalculator/i18n/en.ts +2 -5
- package/src/tool/drillCalculator/i18n/es.ts +2 -5
- package/src/tool/drillCalculator/i18n/fr.ts +2 -5
- package/src/tool/drillCalculator/i18n/id.ts +2 -5
- package/src/tool/drillCalculator/i18n/it.ts +2 -5
- package/src/tool/drillCalculator/i18n/ja.ts +2 -5
- package/src/tool/drillCalculator/i18n/ko.ts +2 -5
- package/src/tool/drillCalculator/i18n/nl.ts +2 -5
- package/src/tool/drillCalculator/i18n/pl.ts +2 -5
- package/src/tool/drillCalculator/i18n/pt.ts +2 -5
- package/src/tool/drillCalculator/i18n/ru.ts +2 -5
- package/src/tool/drillCalculator/i18n/sv.ts +2 -5
- package/src/tool/drillCalculator/i18n/tr.ts +2 -5
- package/src/tool/drillCalculator/i18n/zh.ts +2 -5
- package/src/tool/drillCalculator/seo.astro +2 -1
- package/src/tool/drillSharpener/bibliography.astro +2 -9
- package/src/tool/drillSharpener/bibliography.ts +16 -0
- package/src/tool/drillSharpener/drill-sharpening-master.css +1 -1
- package/src/tool/drillSharpener/i18n/de.ts +2 -5
- package/src/tool/drillSharpener/i18n/en.ts +2 -6
- package/src/tool/drillSharpener/i18n/es.ts +2 -6
- package/src/tool/drillSharpener/i18n/fr.ts +2 -6
- package/src/tool/drillSharpener/i18n/id.ts +2 -5
- package/src/tool/drillSharpener/i18n/it.ts +2 -5
- package/src/tool/drillSharpener/i18n/ja.ts +2 -5
- package/src/tool/drillSharpener/i18n/ko.ts +2 -5
- package/src/tool/drillSharpener/i18n/nl.ts +2 -5
- package/src/tool/drillSharpener/i18n/pl.ts +2 -5
- package/src/tool/drillSharpener/i18n/pt.ts +2 -5
- package/src/tool/drillSharpener/i18n/ru.ts +2 -5
- package/src/tool/drillSharpener/i18n/sv.ts +2 -5
- package/src/tool/drillSharpener/i18n/tr.ts +2 -5
- package/src/tool/drillSharpener/i18n/zh.ts +2 -5
- package/src/tool/drillSharpener/seo.astro +2 -1
- package/src/tool/epoxyCalculator/bibliography.astro +2 -10
- package/src/tool/epoxyCalculator/bibliography.ts +20 -0
- package/src/tool/epoxyCalculator/epoxy-resin-calculator.css +13 -13
- package/src/tool/epoxyCalculator/i18n/de.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/en.ts +2 -19
- package/src/tool/epoxyCalculator/i18n/es.ts +2 -19
- package/src/tool/epoxyCalculator/i18n/fr.ts +2 -19
- package/src/tool/epoxyCalculator/i18n/id.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/it.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/ja.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/ko.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/nl.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/pl.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/pt.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/ru.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/sv.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/tr.ts +2 -5
- package/src/tool/epoxyCalculator/i18n/zh.ts +2 -5
- package/src/tool/epoxyCalculator/seo.astro +1 -1
- package/src/tool/furnitureFit/bibliography.astro +2 -9
- package/src/tool/furnitureFit/bibliography.ts +12 -0
- package/src/tool/furnitureFit/furniture-fit-calculator.css +7 -7
- package/src/tool/furnitureFit/i18n/de.ts +2 -5
- package/src/tool/furnitureFit/i18n/en.ts +2 -5
- package/src/tool/furnitureFit/i18n/es.ts +2 -5
- package/src/tool/furnitureFit/i18n/fr.ts +2 -5
- package/src/tool/furnitureFit/i18n/id.ts +2 -5
- package/src/tool/furnitureFit/i18n/it.ts +2 -5
- package/src/tool/furnitureFit/i18n/ja.ts +2 -5
- package/src/tool/furnitureFit/i18n/ko.ts +2 -5
- package/src/tool/furnitureFit/i18n/nl.ts +2 -5
- package/src/tool/furnitureFit/i18n/pl.ts +2 -5
- package/src/tool/furnitureFit/i18n/pt.ts +2 -5
- package/src/tool/furnitureFit/i18n/ru.ts +2 -5
- package/src/tool/furnitureFit/i18n/sv.ts +2 -5
- package/src/tool/furnitureFit/i18n/tr.ts +2 -5
- package/src/tool/furnitureFit/i18n/zh.ts +2 -5
- package/src/tool/furnitureFit/seo.astro +2 -1
- package/src/tool/mortarCalculator/bibliography.astro +2 -9
- package/src/tool/mortarCalculator/bibliography.ts +20 -0
- package/src/tool/mortarCalculator/i18n/de.ts +2 -5
- package/src/tool/mortarCalculator/i18n/en.ts +2 -19
- package/src/tool/mortarCalculator/i18n/es.ts +2 -19
- package/src/tool/mortarCalculator/i18n/fr.ts +2 -19
- package/src/tool/mortarCalculator/i18n/id.ts +2 -5
- package/src/tool/mortarCalculator/i18n/it.ts +2 -5
- package/src/tool/mortarCalculator/i18n/ja.ts +2 -5
- package/src/tool/mortarCalculator/i18n/ko.ts +2 -5
- package/src/tool/mortarCalculator/i18n/nl.ts +2 -5
- package/src/tool/mortarCalculator/i18n/pl.ts +2 -5
- package/src/tool/mortarCalculator/i18n/pt.ts +2 -5
- package/src/tool/mortarCalculator/i18n/ru.ts +2 -5
- package/src/tool/mortarCalculator/i18n/sv.ts +2 -5
- package/src/tool/mortarCalculator/i18n/tr.ts +2 -5
- package/src/tool/mortarCalculator/i18n/zh.ts +2 -5
- package/src/tool/mortarCalculator/lime-mortar-calculator.css +30 -30
- package/src/tool/mortarCalculator/seo.astro +2 -1
- package/src/tool/passepartoutCalculator/bibliography.astro +2 -9
- package/src/tool/passepartoutCalculator/bibliography.ts +16 -0
- package/src/tool/passepartoutCalculator/i18n/de.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/en.ts +2 -15
- package/src/tool/passepartoutCalculator/i18n/es.ts +2 -15
- package/src/tool/passepartoutCalculator/i18n/fr.ts +2 -15
- package/src/tool/passepartoutCalculator/i18n/id.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/it.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/ja.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/ko.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/nl.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/pl.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/pt.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/ru.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/sv.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/tr.ts +2 -6
- package/src/tool/passepartoutCalculator/i18n/zh.ts +2 -6
- package/src/tool/passepartoutCalculator/passepartout-calculator.css +26 -26
- package/src/tool/passepartoutCalculator/seo.astro +2 -1
- package/src/tool/stairCalculator/bibliography.astro +2 -9
- package/src/tool/stairCalculator/bibliography.ts +16 -0
- package/src/tool/stairCalculator/i18n/de.ts +2 -5
- package/src/tool/stairCalculator/i18n/en.ts +2 -6
- package/src/tool/stairCalculator/i18n/es.ts +2 -6
- package/src/tool/stairCalculator/i18n/fr.ts +2 -6
- package/src/tool/stairCalculator/i18n/id.ts +2 -5
- package/src/tool/stairCalculator/i18n/it.ts +2 -5
- package/src/tool/stairCalculator/i18n/ja.ts +2 -5
- package/src/tool/stairCalculator/i18n/ko.ts +2 -5
- package/src/tool/stairCalculator/i18n/nl.ts +2 -5
- package/src/tool/stairCalculator/i18n/pl.ts +2 -5
- package/src/tool/stairCalculator/i18n/pt.ts +2 -5
- package/src/tool/stairCalculator/i18n/ru.ts +2 -5
- package/src/tool/stairCalculator/i18n/sv.ts +2 -5
- package/src/tool/stairCalculator/i18n/tr.ts +2 -5
- package/src/tool/stairCalculator/i18n/zh.ts +2 -5
- package/src/tool/stairCalculator/seo.astro +2 -1
- package/src/tool/stairCalculator/stair-calculator.css +10 -10
- package/src/tool/thermalExpansionCalculator/bibliography.astro +2 -9
- package/src/tool/thermalExpansionCalculator/bibliography.ts +16 -0
- package/src/tool/thermalExpansionCalculator/i18n/de.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/en.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/es.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/fr.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/id.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/it.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/ja.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/ko.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/nl.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/pl.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/pt.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/ru.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/sv.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/tr.ts +2 -6
- package/src/tool/thermalExpansionCalculator/i18n/zh.ts +2 -6
- package/src/tool/thermalExpansionCalculator/seo.astro +2 -1
- package/src/tool/thermalExpansionCalculator/thermal-expansion-calculator.css +19 -19
- package/src/tool/voltageDropCalculator/bibliography.astro +2 -9
- package/src/tool/voltageDropCalculator/bibliography.ts +16 -0
- package/src/tool/voltageDropCalculator/i18n/de.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/en.ts +2 -6
- package/src/tool/voltageDropCalculator/i18n/es.ts +2 -6
- package/src/tool/voltageDropCalculator/i18n/fr.ts +2 -6
- package/src/tool/voltageDropCalculator/i18n/id.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/it.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/ja.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/ko.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/nl.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/pl.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/pt.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/ru.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/sv.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/tr.ts +2 -5
- package/src/tool/voltageDropCalculator/i18n/zh.ts +2 -5
- package/src/tool/voltageDropCalculator/seo.astro +2 -1
- package/src/tool/voltageDropCalculator/voltage-drop-calculator.css +24 -24
- package/src/tool/workshopFractionConverter/bibliography.astro +6 -0
- package/src/tool/workshopFractionConverter/bibliography.ts +12 -0
- package/src/tool/workshopFractionConverter/client.ts +183 -0
- package/src/tool/workshopFractionConverter/component.astro +226 -0
- package/src/tool/workshopFractionConverter/converter.ts +110 -0
- package/src/tool/workshopFractionConverter/engine.ts +223 -0
- package/src/tool/workshopFractionConverter/entry.ts +24 -0
- package/src/tool/workshopFractionConverter/i18n/de.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/en.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/es.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/fr.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/id.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/it.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/ja.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/ko.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/nl.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/pl.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/pt.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/ru.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/sv.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/tr.ts +141 -0
- package/src/tool/workshopFractionConverter/i18n/zh.ts +141 -0
- package/src/tool/workshopFractionConverter/index.ts +11 -0
- package/src/tool/workshopFractionConverter/seo.astro +15 -0
- package/src/tool/workshopFractionConverter/types-client.ts +89 -0
- package/src/tool/workshopFractionConverter/ui-updater.ts +94 -0
- package/src/tool/workshopFractionConverter/ui.ts +38 -0
- package/src/tool/workshopFractionConverter/workshop-fraction-converter.css +563 -0
- package/src/tools.ts +2 -1
- package/src/types.ts +1 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export interface Fraction {
|
|
2
|
+
whole: number;
|
|
3
|
+
numerator: number;
|
|
4
|
+
denominator: number;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface ConversionResult {
|
|
8
|
+
fraction: Fraction;
|
|
9
|
+
inches: number;
|
|
10
|
+
millimeters: number;
|
|
11
|
+
closestFastener: Match | null;
|
|
12
|
+
closestSocket: Match | null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface Match {
|
|
16
|
+
name: string;
|
|
17
|
+
size_mm: number;
|
|
18
|
+
size_inch: string;
|
|
19
|
+
difference_mm: number;
|
|
20
|
+
difference_pct: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ReverseSearchResult {
|
|
24
|
+
input_mm: number;
|
|
25
|
+
closest_fraction: Fraction;
|
|
26
|
+
inches: number;
|
|
27
|
+
closestFastener: Match | null;
|
|
28
|
+
closestSocket: Match | null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface HistoryEntry {
|
|
32
|
+
fraction: string;
|
|
33
|
+
mm: string;
|
|
34
|
+
time: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const STANDARD_FASTENERS = [
|
|
38
|
+
{ name: '#0', inch: '1/80', mm: 0.318 },
|
|
39
|
+
{ name: '#1', inch: '1/73', mm: 0.346 },
|
|
40
|
+
{ name: '#2', inch: '3/32', mm: 2.362 },
|
|
41
|
+
{ name: '#3', inch: '7/64', mm: 2.778 },
|
|
42
|
+
{ name: '#4', inch: '7/64', mm: 2.819 },
|
|
43
|
+
{ name: '#5', inch: '1/8', mm: 3.175 },
|
|
44
|
+
{ name: '#6', inch: '9/64', mm: 3.556 },
|
|
45
|
+
{ name: '#8', inch: '5/32', mm: 4.191 },
|
|
46
|
+
{ name: '#10', inch: '3/16', mm: 4.826 },
|
|
47
|
+
{ name: '#12', inch: '7/32', mm: 5.461 },
|
|
48
|
+
{ name: '1/4"', inch: '1/4', mm: 6.35 },
|
|
49
|
+
{ name: '5/16"', inch: '5/16', mm: 7.938 },
|
|
50
|
+
{ name: '3/8"', inch: '3/8', mm: 9.525 },
|
|
51
|
+
{ name: '7/16"', inch: '7/16', mm: 11.113 },
|
|
52
|
+
{ name: '1/2"', inch: '1/2', mm: 12.7 },
|
|
53
|
+
{ name: '9/16"', inch: '9/16', mm: 14.288 },
|
|
54
|
+
{ name: '5/8"', inch: '5/8', mm: 15.875 },
|
|
55
|
+
{ name: '3/4"', inch: '3/4', mm: 19.05 },
|
|
56
|
+
{ name: '7/8"', inch: '7/8', mm: 22.225 },
|
|
57
|
+
{ name: '1"', inch: '1', mm: 25.4 },
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
export const STANDARD_SOCKETS = [
|
|
61
|
+
{ name: '4mm', mm: 4.0, inch: '5/32' },
|
|
62
|
+
{ name: '4.5mm', mm: 4.5, inch: '3/16' },
|
|
63
|
+
{ name: '5mm', mm: 5.0, inch: '13/64' },
|
|
64
|
+
{ name: '5.5mm', mm: 5.5, inch: '7/32' },
|
|
65
|
+
{ name: '6mm', mm: 6.0, inch: '15/64' },
|
|
66
|
+
{ name: '7mm', mm: 7.0, inch: '9/32' },
|
|
67
|
+
{ name: '8mm', mm: 8.0, inch: '5/16' },
|
|
68
|
+
{ name: '9mm', mm: 9.0, inch: '23/64' },
|
|
69
|
+
{ name: '10mm', mm: 10.0, inch: '3/8' },
|
|
70
|
+
{ name: '11mm', mm: 11.0, inch: '7/16' },
|
|
71
|
+
{ name: '12mm', mm: 12.0, inch: '15/32' },
|
|
72
|
+
{ name: '13mm', mm: 13.0, inch: '1/2' },
|
|
73
|
+
{ name: '14mm', mm: 14.0, inch: '9/16' },
|
|
74
|
+
{ name: '15mm', mm: 15.0, inch: '19/32' },
|
|
75
|
+
{ name: '16mm', mm: 16.0, inch: '5/8' },
|
|
76
|
+
{ name: '17mm', mm: 17.0, inch: '11/16' },
|
|
77
|
+
{ name: '18mm', mm: 18.0, inch: '23/32' },
|
|
78
|
+
{ name: '19mm', mm: 19.0, inch: '3/4' },
|
|
79
|
+
{ name: '20mm', mm: 20.0, inch: '13/16' },
|
|
80
|
+
{ name: '1/4" socket', mm: 6.35, inch: '1/4' },
|
|
81
|
+
{ name: '5/16" socket', mm: 7.938, inch: '5/16' },
|
|
82
|
+
{ name: '3/8" socket', mm: 9.525, inch: '3/8' },
|
|
83
|
+
{ name: '7/16" socket', mm: 11.113, inch: '7/16' },
|
|
84
|
+
{ name: '1/2" socket', mm: 12.7, inch: '1/2' },
|
|
85
|
+
{ name: '9/16" socket', mm: 14.288, inch: '9/16' },
|
|
86
|
+
{ name: '5/8" socket', mm: 15.875, inch: '5/8' },
|
|
87
|
+
{ name: '11/16" socket', mm: 17.463, inch: '11/16' },
|
|
88
|
+
{ name: '3/4" socket', mm: 19.05, inch: '3/4' },
|
|
89
|
+
];
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { ConversionResult, Match, ReverseSearchResult } from './types-client';
|
|
2
|
+
import { formatFraction } from './converter';
|
|
3
|
+
|
|
4
|
+
function getDecimals(precision: string) {
|
|
5
|
+
return precision === 'metal' ? 3 : 1;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function updateResultDisplay(fractionStr: string, inchesStr: string, mmStr: string) {
|
|
9
|
+
const fractionEl = document.getElementById('wfc-result-fraction');
|
|
10
|
+
if (fractionEl) fractionEl.textContent = fractionStr;
|
|
11
|
+
const inchesEl = document.getElementById('wfc-result-inches');
|
|
12
|
+
if (inchesEl) inchesEl.textContent = inchesStr;
|
|
13
|
+
const mmEl = document.getElementById('wfc-result-mm');
|
|
14
|
+
if (mmEl) mmEl.textContent = mmStr;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function displayResult(result: ConversionResult, precision = 'carpentry', ui: Record<string, string> = {}) {
|
|
18
|
+
document.getElementById('wfc-no-result')?.classList.add('wfc-hidden');
|
|
19
|
+
document.getElementById('wfc-result-content')?.classList.remove('wfc-hidden');
|
|
20
|
+
const decimals = getDecimals(precision);
|
|
21
|
+
const fractionStr = formatFraction(result.fraction);
|
|
22
|
+
const inchesStr = result.inches.toFixed(decimals) + '"';
|
|
23
|
+
const mmStr = result.millimeters.toFixed(decimals) + ' mm';
|
|
24
|
+
updateResultDisplay(fractionStr, inchesStr, mmStr);
|
|
25
|
+
updateVisualScale(result.millimeters);
|
|
26
|
+
if (result.closestFastener) updateFastenerMatch(result.closestFastener, ui);
|
|
27
|
+
if (result.closestSocket) updateSocketMatch(result.closestSocket, ui);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function displayReverseResult(result: ReverseSearchResult, precision = 'carpentry', ui: Record<string, string> = {}) {
|
|
31
|
+
document.getElementById('wfc-no-result')?.classList.add('wfc-hidden');
|
|
32
|
+
document.getElementById('wfc-result-content')?.classList.remove('wfc-hidden');
|
|
33
|
+
const decimals = getDecimals(precision);
|
|
34
|
+
const fractionStr = formatFraction(result.closest_fraction);
|
|
35
|
+
const inchesStr = result.inches.toFixed(decimals) + '"';
|
|
36
|
+
const mmStr = result.input_mm.toFixed(decimals) + ' mm';
|
|
37
|
+
updateResultDisplay(fractionStr, inchesStr, mmStr);
|
|
38
|
+
updateVisualScale(result.input_mm);
|
|
39
|
+
if (result.closestFastener) updateFastenerMatch(result.closestFastener, ui);
|
|
40
|
+
if (result.closestSocket) updateSocketMatch(result.closestSocket, ui);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function updateVisualScale(mm: number) {
|
|
44
|
+
const inchPx = 96;
|
|
45
|
+
const inches = mm / 25.4;
|
|
46
|
+
const width = inches * inchPx;
|
|
47
|
+
const indicator = document.getElementById('wfc-scale-indicator');
|
|
48
|
+
if (indicator) {
|
|
49
|
+
indicator.style.width = Math.min(width, 240) + 'px';
|
|
50
|
+
}
|
|
51
|
+
const scaleText = document.getElementById('wfc-scale-text');
|
|
52
|
+
if (scaleText) {
|
|
53
|
+
scaleText.textContent = mm.toFixed(2) + ' mm (' + inches.toFixed(2) + '")';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function updateFastenerMatch(match: Match, ui: Record<string, string>) {
|
|
58
|
+
const pct = Math.abs(match.difference_pct).toFixed(1);
|
|
59
|
+
const badge = document.getElementById('wfc-fastener-badge');
|
|
60
|
+
const badgeClass = getBadgeClass(pct);
|
|
61
|
+
if (badge) {
|
|
62
|
+
badge.className = 'wfc-match-badge ' + badgeClass;
|
|
63
|
+
badge.textContent = pct + '%';
|
|
64
|
+
}
|
|
65
|
+
const nameEl = document.getElementById('wfc-fastener-name');
|
|
66
|
+
if (nameEl) nameEl.textContent = match.name;
|
|
67
|
+
const detailsEl = document.getElementById('wfc-fastener-details');
|
|
68
|
+
if (detailsEl) {
|
|
69
|
+
detailsEl.innerHTML = `<strong>${match.size_mm.toFixed(2)} mm</strong> (${match.size_inch})<br/>${ui.matchDifference || 'Difference'}: ${match.difference_mm.toFixed(2)} mm`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function updateSocketMatch(match: Match, ui: Record<string, string>) {
|
|
74
|
+
const pct = Math.abs(match.difference_pct).toFixed(1);
|
|
75
|
+
const badge = document.getElementById('wfc-socket-badge');
|
|
76
|
+
const badgeClass = getBadgeClass(pct);
|
|
77
|
+
if (badge) {
|
|
78
|
+
badge.className = 'wfc-match-badge ' + badgeClass;
|
|
79
|
+
badge.textContent = pct + '%';
|
|
80
|
+
}
|
|
81
|
+
const nameEl = document.getElementById('wfc-socket-name');
|
|
82
|
+
if (nameEl) nameEl.textContent = match.name;
|
|
83
|
+
const detailsEl = document.getElementById('wfc-socket-details');
|
|
84
|
+
if (detailsEl) {
|
|
85
|
+
detailsEl.innerHTML = `<strong>${match.size_mm.toFixed(2)} mm</strong> (${match.size_inch})<br/>${ui.matchDifference || 'Difference'}: ${match.difference_mm.toFixed(2)} mm`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function getBadgeClass(pct: string) {
|
|
90
|
+
const numPct = parseFloat(pct);
|
|
91
|
+
if (numPct < 2) return 'tight';
|
|
92
|
+
if (numPct < 5) return '';
|
|
93
|
+
return 'loose';
|
|
94
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface WorkshopFractionConverterUI extends Record<string, string> {
|
|
2
|
+
labelFraction: string;
|
|
3
|
+
labelWhole: string;
|
|
4
|
+
labelNumerator: string;
|
|
5
|
+
labelDenominator: string;
|
|
6
|
+
labelInches: string;
|
|
7
|
+
labelMillimeters: string;
|
|
8
|
+
resultTitle: string;
|
|
9
|
+
resultFraction: string;
|
|
10
|
+
resultInches: string;
|
|
11
|
+
resultMillimeters: string;
|
|
12
|
+
matchTitle: string;
|
|
13
|
+
matchClosestFastener: string;
|
|
14
|
+
matchClosestSocket: string;
|
|
15
|
+
matchDifference: string;
|
|
16
|
+
matchRecommendation: string;
|
|
17
|
+
reverseSearchTitle: string;
|
|
18
|
+
reverseSearchLabel: string;
|
|
19
|
+
reverseSearchButton: string;
|
|
20
|
+
reverseSearchHint: string;
|
|
21
|
+
unitMm: string;
|
|
22
|
+
unitInch: string;
|
|
23
|
+
modeForward: string;
|
|
24
|
+
modeReverse: string;
|
|
25
|
+
precisionLabel: string;
|
|
26
|
+
precisionCarpentry: string;
|
|
27
|
+
precisionMetal: string;
|
|
28
|
+
buttonConvert: string;
|
|
29
|
+
buttonClear: string;
|
|
30
|
+
buttonCopyResult: string;
|
|
31
|
+
buttonSaveToHistory: string;
|
|
32
|
+
historyTitle: string;
|
|
33
|
+
historyEmpty: string;
|
|
34
|
+
historyRemove: string;
|
|
35
|
+
helpText: string;
|
|
36
|
+
toolOverline: string;
|
|
37
|
+
labelVisualReference: string;
|
|
38
|
+
}
|