@jjlmoya/utils-nautical 1.18.0 → 1.20.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.
Files changed (64) hide show
  1. package/package.json +2 -2
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +5 -1
  4. package/src/index.ts +9 -7
  5. package/src/tests/diacritics_density.test.ts +1 -1
  6. package/src/tests/inverted_punctuation.test.ts +1 -1
  7. package/src/tests/locale_completeness.test.ts +2 -2
  8. package/src/tests/script_density.test.ts +1 -1
  9. package/src/tests/seo_parity.test.ts +60 -0
  10. package/src/tests/title_quality.test.ts +1 -1
  11. package/src/tests/tool_validation.test.ts +2 -2
  12. package/src/tests/translation_copy.test.ts +124 -0
  13. package/src/tool/anchorScope/anchorScope.css +507 -0
  14. package/src/tool/anchorScope/bibliography.astro +6 -0
  15. package/src/tool/anchorScope/bibliography.ts +14 -0
  16. package/src/tool/anchorScope/component.astro +219 -0
  17. package/src/tool/anchorScope/constants.ts +51 -0
  18. package/src/tool/anchorScope/controller.ts +251 -0
  19. package/src/tool/anchorScope/dom-views.ts +106 -0
  20. package/src/tool/anchorScope/entry.ts +31 -0
  21. package/src/tool/anchorScope/evaluator.ts +61 -0
  22. package/src/tool/anchorScope/i18n/de.ts +228 -0
  23. package/src/tool/anchorScope/i18n/en.ts +223 -0
  24. package/src/tool/anchorScope/i18n/es.ts +223 -0
  25. package/src/tool/anchorScope/i18n/fr.ts +221 -0
  26. package/src/tool/anchorScope/i18n/id.ts +221 -0
  27. package/src/tool/anchorScope/i18n/it.ts +221 -0
  28. package/src/tool/anchorScope/i18n/ja.ts +221 -0
  29. package/src/tool/anchorScope/i18n/ko.ts +221 -0
  30. package/src/tool/anchorScope/i18n/nl.ts +221 -0
  31. package/src/tool/anchorScope/i18n/pl.ts +221 -0
  32. package/src/tool/anchorScope/i18n/pt.ts +221 -0
  33. package/src/tool/anchorScope/i18n/ru.ts +221 -0
  34. package/src/tool/anchorScope/i18n/sv.ts +221 -0
  35. package/src/tool/anchorScope/i18n/tr.ts +221 -0
  36. package/src/tool/anchorScope/i18n/zh.ts +221 -0
  37. package/src/tool/anchorScope/index.ts +10 -0
  38. package/src/tool/anchorScope/logic.test.ts +100 -0
  39. package/src/tool/anchorScope/logic.ts +84 -0
  40. package/src/tool/anchorScope/presets.ts +12 -0
  41. package/src/tool/anchorScope/seo.astro +14 -0
  42. package/src/tool/anchorScope/storage.ts +25 -0
  43. package/src/tool/anchorScope/types.ts +33 -0
  44. package/src/tool/anchorScope/ui.ts +63 -0
  45. package/src/tool/endurance/index.ts +2 -1
  46. package/src/tool/speedConverter/i18n/ru.ts +57 -0
  47. package/src/tool/speedConverter/i18n/tr.ts +20 -0
  48. package/src/tool/tideCalculator/i18n/es.ts +1 -1
  49. package/src/tool/tideCalculator/i18n/fr.ts +8 -0
  50. package/src/tool/underKeel/i18n/de.ts +4 -0
  51. package/src/tool/underKeel/i18n/es.ts +1 -1
  52. package/src/tool/underKeel/i18n/id.ts +4 -0
  53. package/src/tool/underKeel/i18n/it.ts +16 -0
  54. package/src/tool/underKeel/i18n/ja.ts +8 -0
  55. package/src/tool/underKeel/i18n/ko.ts +8 -0
  56. package/src/tool/underKeel/i18n/nl.ts +16 -0
  57. package/src/tool/underKeel/i18n/pl.ts +16 -0
  58. package/src/tool/underKeel/i18n/pt.ts +16 -0
  59. package/src/tool/underKeel/i18n/ru.ts +16 -0
  60. package/src/tool/underKeel/i18n/sv.ts +16 -0
  61. package/src/tool/underKeel/i18n/tr.ts +8 -0
  62. package/src/tool/underKeel/i18n/zh.ts +8 -0
  63. package/src/tools.ts +3 -0
  64. package/src/types.ts +3 -1
@@ -0,0 +1,223 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { AnchorScopeLocaleContent } from '../entry';
4
+ import type { AnchorScopeUI } from '../ui';
5
+
6
+ const slug = 'calculadora-longitud-cadena-fondeo';
7
+ const title = 'Calculadora de Fondeo y Longitud de Cadena';
8
+ const description =
9
+ 'Calcula la longitud optima de cadena y cabo de fondeo, ratio de filado y radio de borneo para fondear con total seguridad segun sonda, francobordo, marea y fondo.';
10
+
11
+ const ui: AnchorScopeUI = {
12
+ parametersTitle: 'Parametros',
13
+ waterDepthLabel: 'Sonda en Carta',
14
+ bowHeightLabel: 'Francobordo Proa',
15
+ tideRangeLabel: 'Subida de Marea',
16
+ boatLengthLabel: 'Eslora Barco (LOA)',
17
+ rodeTypeLabel: 'Linea de Fondeo',
18
+ windConditionLabel: 'Viento y Prevision',
19
+ seabedTypeLabel: 'Tipo de Tenedero',
20
+ presetProtected: 'Cala Protegida',
21
+ presetOpen: 'Costa Abierta',
22
+ presetStorm: 'Aviso Temporal',
23
+ seabedTag: 'Factor Agarre Tenedero',
24
+ catenaryTag: 'Amortiguacion Catenaria',
25
+ unitM: 'm',
26
+ unitFt: 'ft',
27
+ unitMeters: 'Metrico (m)',
28
+ unitFeet: 'Imperial (ft)',
29
+ allChainOption: 'Todo Cadena (Catenaria Pesada)',
30
+ ropeChainOption: 'Mixta Cabo y Cadena',
31
+ allRopeOption: 'Todo Cabo de Fondeo',
32
+ calmWindOption: 'Calma / Brisa Suave (< 15 nds)',
33
+ moderateWindOption: 'Brisa Moderada (15 - 25 nds)',
34
+ strongWindOption: 'Viento Fuerte / Temporal (25 - 35 nds)',
35
+ stormWindOption: 'Temporal Duro (> 35 nds)',
36
+ sandOption: 'Arena (Agarre Optimo)',
37
+ mudOption: 'Fango / Limo (Buen Agarre)',
38
+ clayOption: 'Arcilla Compacta (Muy Bueno)',
39
+ gravelOption: 'Grava / Cascajo (Moderado)',
40
+ rockOption: 'Roca / Enroque (Riesgo Enganche)',
41
+ weedOption: 'Posidonia / Algas (Poco Agarre)',
42
+ resultsTitle: 'Analisis de Fondeo y Dimensiones',
43
+ scopeRatioLabel: 'Ratio de Filado Efectivo',
44
+ totalDepthLabel: 'Altura Vertical Total',
45
+ recommendedRodeLabel: 'Cadena Recomendada a Filar',
46
+ horizontalDistanceLabel: 'Alcance Horizontal',
47
+ swingRadiusLabel: 'Radio de Borneo Estimado',
48
+ minSafeRodeLabel: 'Minimo en Calma',
49
+ heavyWeatherRodeLabel: 'Fondeo para Temporal',
50
+ statusOptimalTitle: 'Fondeo Seguro y Estable',
51
+ statusOptimalDesc: 'La longitud calculada garantiza una curva catenaria amortiguadora y tiro horizontal sobre la cana del ancla.',
52
+ statusCautionTitle: 'Fondeo Aceptable: Monitorizar Borrasca',
53
+ statusCautionDesc: 'La relacion es adecuada para brisa moderada, pero aumente cadena si arrecia el viento o sube la mar de fondo.',
54
+ statusDangerTitle: 'Filado Insuficiente: Riesgo de Garreo',
55
+ statusDangerDesc: 'El ratio es critico. El ancla sufrira tiro vertical hacia arriba y puede desclavarse del tenedero.',
56
+ adviceSand: 'La arena permite un clavado firme de uña. De atras con motor para asentar el ancla.',
57
+ adviceMud: 'El fango blando requiere mayor superficie de pala y filar mas cadena para buscar sustrato duro.',
58
+ adviceClay: 'La arcilla compacta sujeta con fuerza pero exige anclas de punta afilada para penetrar.',
59
+ adviceGravel: 'El cascajo suelto cede ante rachas dinamicas. Incremente la cadena al menos un 25 por ciento.',
60
+ adviceRock: 'Riesgo elevado de trabar el ancla. Utilice siempre orinque con boyarin para desenganchar.',
61
+ adviceWeed: 'El alga tupida impide clavar las palas. Compruebe el agarre a motor antes de fondear.',
62
+ catenaryAllChain: 'El peso de la cadena forma una catenaria que amortigua pantocazos y mantiene el tiro plano.',
63
+ catenaryRopeChain: 'La linea mixta exige al menos 7 a 1 de ratio para compensar la menor masa de cadena.',
64
+ catenaryAllRope: 'El cabo aporta elasticidad pero requiere filar 8 a 1 para evitar que el ancla levante la uña.',
65
+ resetButton: 'Restablecer Valores',
66
+ visualProfileTitle: 'Perfil y Curva de Catenaria',
67
+ waterlineLabel: 'Flotacion',
68
+ seabedLabel: 'Fondo Marino',
69
+ anchorLabel: 'Ancla',
70
+ catenaryCurveLabel: 'Arco de Catenaria',
71
+ swingCircleLabel: 'Circulo de Borneo',
72
+ };
73
+
74
+ const faq: AnchorScopeLocaleContent['faq'] = [
75
+ {
76
+ question: '¿Que es el ratio de filado o scope en fondeo?',
77
+ answer: 'Es la proporcion matematica entre la longitud total de linea de fondeo (cadena o cabo) soltada al agua y la distancia vertical total desde el fondo marino hasta la roldana de proa. Garantiza que la fuerza sobre la caña del ancla sea puramente horizontal.',
78
+ },
79
+ {
80
+ question: '¿Por que se debe sumar el francobordo y la marea a la sonda?',
81
+ answer: 'La sonda de la ecosonda solo mide el agua bajo el casco. Si la roldana de proa esta a 1.5 metros del agua y la pleamar subira 2 metros durante la noche, la profundidad real vertical aumentara 3.5 metros. Ignorar esto provoca garreos peligrosos en pleamar.',
82
+ },
83
+ {
84
+ question: '¿Cual es la diferencia de ratio entre fondear con cadena o con cabo?',
85
+ answer: 'La cadena de acero es pesada y crea una curva catenaria que absorbe tirones, permitiendo ratios de 4 a 1 o 5 a 1. El cabo de nylon flota relativamente y se tensa en linea recta, exigiendo ratios de 7 a 1 o 10 a 1 para no levantar la caña del ancla.',
86
+ },
87
+ {
88
+ question: '¿Como se calcula el radio de borneo en una cala?',
89
+ answer: 'Se calcula aplicando el teorema de Pitagoras para obtener la distancia horizontal de la cadena desde el ancla hasta la proa, sumando la eslora total de la embarcacion y un margen prudencial de seguridad de 3 a 5 metros.',
90
+ },
91
+ {
92
+ question: '¿Como influye el tipo de fondo en la seguridad del fondeo?',
93
+ answer: 'Los fondos de arena y arcilla ofrecen el mejor coeficiente de agarre. El fango exige palas anchas, la grava reduce la friccion y las algas impiden la penetracion. En fondos de agarre mediocre se recomienda incrementar la cadena filada un 30 por ciento.',
94
+ },
95
+ {
96
+ question: '¿Que funcion cumple la boza o cabo amortiguador snubber?',
97
+ answer: 'Evita que la tension de la cadena tire directamente del molinete de proa. Un cabo elastico de nylon encapillado a la cadena absorbe los golpes de mar y reduce el ruido metalico a bordo durante la noche.',
98
+ },
99
+ ];
100
+
101
+ const howTo: AnchorScopeLocaleContent['howTo'] = [
102
+ {
103
+ name: 'Consultar la sonda y medir la altura de proa',
104
+ text: 'Compruebe la profundidad del agua en el fondeadero y sume la altura de la roldana de proa sobre el nivel del mar.',
105
+ },
106
+ {
107
+ name: 'Anadir la carrera de marea prevista',
108
+ text: 'Revise las tablas de marea para sumar la maxima sobreelevacion de agua esperada durante su estancia.',
109
+ },
110
+ {
111
+ name: 'Seleccionar tipo de linea y viento pronosticado',
112
+ text: 'Escoja si fondea con todo cadena o linea mixta y ajuste el multiplicador de seguridad segun la fuerza del viento.',
113
+ },
114
+ {
115
+ name: 'Filar la longitud calculada y hacer cabeza de ancla',
116
+ text: 'Suelte los metros recomendados, de marcha atras suave con el motor para clavar las palas y verifique el radio de borneo.',
117
+ },
118
+ ];
119
+
120
+ const seo: AnchorScopeLocaleContent['seo'] = [
121
+ {
122
+ type: 'title',
123
+ text: 'Calculo de Fondeo Seguro: Longitud de Cadena y Radio de Borneo',
124
+ level: 2,
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'El fondeo es una de las maniobras fundamentales de la navegacion costera y de altura. Una eleccion incorrecta de la longitud de cadena o cabo es la principal causa de garreo nocturno, colisiones en fondeaderos concurridos y varadas en la costa. Para fondear con total seguridad, es imprescindible calcular con precision el <strong>ratio de filado</strong> (scope).',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Componentes de la Altura Vertical Total',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'El error mas extendido en la nautica deportiva es multiplicar el ratio de fondeo unicamente por la lectura de la ecosonda. La distancia vertical real comprende tres cotas que deben sumarse obligatoriamente:',
138
+ },
139
+ {
140
+ type: 'list',
141
+ items: [
142
+ '<strong>Sonda del Fondeadero:</strong> Profundidad del agua bajo la quilla en bajamar o en el momento de largar el ancla.',
143
+ '<strong>Francobordo de Proa:</strong> Distancia vertical desde la superficie del agua hasta la roldana donde apoya la cadena.',
144
+ '<strong>Rango de Marea Previsto:</strong> Incremento de profundidad generado por la pleamar durante el tiempo de estancia.',
145
+ ],
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Tabla de Ratios de Fondeo Recomendados',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'table',
154
+ headers: ['Tipo de Linea', 'Tiempo Calmo (<15 nds)', 'Brisa Fresca (15-25 nds)', 'Temporal Duro (>30 nds)'],
155
+ rows: [
156
+ ['<strong>Todo Cadena</strong>', 'Ratio 4 a 1', 'Ratio 5 a 1', 'Ratio 7 a 1'],
157
+ ['<strong>Mixta Cabo y Cadena</strong>', 'Ratio 5 a 1', 'Ratio 7 a 1', 'Ratio 8 a 10 a 1'],
158
+ ['<strong>Todo Cabo de Nylon</strong>', 'Ratio 7 a 1', 'Ratio 8 a 1', 'Ratio 10 a 12 a 1'],
159
+ ],
160
+ },
161
+ {
162
+ type: 'title',
163
+ text: 'Fisica del Tiro Horizontal y Efecto Catenaria',
164
+ level: 3,
165
+ },
166
+ {
167
+ type: 'paragraph',
168
+ html: 'Las uñas de las anclas modernas de arado o pala cóncava estan disenadas para clavarse profundamente cuando la fuerza de traccion se ejerce de forma paralela al fondo marino. En cuanto el tiro adquiere un angulo ascendente, la cana se levanta y el ancla se desclava instantaneamente. El peso propio de los eslabones de acero forma una curva catenaria que amortigua el oleaje y mantiene los ultimos metros de cadena acostados sobre la arena.',
169
+ },
170
+ {
171
+ type: 'title',
172
+ text: 'Calculo del Radio de Borneo y Espacio en Calas',
173
+ level: 3,
174
+ },
175
+ {
176
+ type: 'paragraph',
177
+ html: 'Al cambiar la direccion del viento o de las corrientes de marea, el barco describe un giro de 360 grados alrededor de la posicion del ancla. El <strong>radio de borneo</strong> es la distancia horizontal de la cadena mas la eslora del barco y el margen de seguridad. Nunca fondee si el radio de borneo se solapa con bajos de piedra o con el circulo de otros veleros fondeados.',
178
+ },
179
+ {
180
+ type: 'tip',
181
+ title: 'Consejo Marinero para Proteger el Molinete',
182
+ html: 'Nunca deje la cadena trabajando directamente sobre el barboten del molinete. Emplee siempre una boza textil con gancho de cadena o nudo de boza firme a la cornamusa de proa.',
183
+ },
184
+ ];
185
+
186
+ const schemas: AnchorScopeLocaleContent['schemas'] = [
187
+ {
188
+ '@context': 'https://schema.org',
189
+ '@type': 'SoftwareApplication',
190
+ name: title,
191
+ description,
192
+ applicationCategory: 'UtilityApplication',
193
+ operatingSystem: 'Web',
194
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
195
+ } as WithContext<SoftwareApplication>,
196
+ {
197
+ '@context': 'https://schema.org',
198
+ '@type': 'FAQPage',
199
+ mainEntity: faq.map((item) => ({
200
+ '@type': 'Question',
201
+ name: item.question,
202
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
203
+ })),
204
+ } as WithContext<FAQPage>,
205
+ {
206
+ '@context': 'https://schema.org',
207
+ '@type': 'HowTo',
208
+ name: `Como utilizar: ${title}`,
209
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
210
+ } as WithContext<HowTo>,
211
+ ];
212
+
213
+ export const content: AnchorScopeLocaleContent = {
214
+ slug,
215
+ title,
216
+ description,
217
+ ui,
218
+ seo,
219
+ faq,
220
+ bibliography,
221
+ howTo,
222
+ schemas,
223
+ };
@@ -0,0 +1,221 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { AnchorScopeLocaleContent } from '../entry';
4
+ import type { AnchorScopeUI } from '../ui';
5
+
6
+ const slug = 'calculateur-longueur-chaine-mouillage';
7
+ const title = 'Calculateur de Ligne de Mouillage et Rayon d Evitage';
8
+ const description =
9
+ 'Calculez la longueur ideale de chaine et de cablot, le ratio de touage et le rayon d evitage pour un mouillage sur en fonction de la sonde, du franc-bord et des fonds.';
10
+
11
+ const ui: AnchorScopeUI = {
12
+ parametersTitle: 'Parametres',
13
+ waterDepthLabel: 'Sonde aux Cartes',
14
+ bowHeightLabel: 'Franc-Bord Avant',
15
+ tideRangeLabel: 'Marnage de Maree',
16
+ boatLengthLabel: 'Longueur Hors-Tout (LOA)',
17
+ rodeTypeLabel: 'Ligne de Mouillage',
18
+ windConditionLabel: 'Vent et Previsions',
19
+ seabedTypeLabel: 'Nature du Fond',
20
+ presetProtected: 'Crique Calme',
21
+ presetOpen: 'Cote Ouverte',
22
+ presetStorm: 'Avis de Coup de Vent',
23
+ seabedTag: 'Facteur de Tenue du Fond',
24
+ catenaryTag: 'Amortissement Catenoide',
25
+ unitM: 'm',
26
+ unitFt: 'ft',
27
+ unitMeters: 'Metrique (m)',
28
+ unitFeet: 'Imperial (ft)',
29
+ allChainOption: 'Tout Chaine (Lourd Catenoide)',
30
+ ropeChainOption: 'Mixte Cablot et Chaine',
31
+ allRopeOption: 'Tout Cablot Textile',
32
+ calmWindOption: 'Calme / Jolie Brise (< 15 nds)',
33
+ moderateWindOption: 'Bonne Brise (15 - 25 nds)',
34
+ strongWindOption: 'Vent Frais / Coup de Vent (25 - 35 nds)',
35
+ stormWindOption: 'Fort Coup de Vent (> 35 nds)',
36
+ sandOption: 'Sable (Tenue Optimale)',
37
+ mudOption: 'Vase / Limon (Bonne Tenue)',
38
+ clayOption: 'Argile Compacte (Excellente)',
39
+ gravelOption: 'Gravier / Galets (Moyenne)',
40
+ rockOption: 'Roche (Risque de Blocage)',
41
+ weedOption: 'Herbiers / Algues (Faible)',
42
+ resultsTitle: 'Analyse du Mouillage et Dimensions',
43
+ scopeRatioLabel: 'Ratio de Touage Effectif',
44
+ totalDepthLabel: 'Hauteur Verticale Totale',
45
+ recommendedRodeLabel: 'Ligne Recommandee a Filer',
46
+ horizontalDistanceLabel: 'Portee Horizontale',
47
+ swingRadiusLabel: 'Rayon d Evitage Estime',
48
+ minSafeRodeLabel: 'Minimum par Temps Calme',
49
+ heavyWeatherRodeLabel: 'Ligne pour Gros Temps',
50
+ statusOptimalTitle: 'Mouillage Sur et Stable',
51
+ statusOptimalDesc: 'La longueur assure une courbure amortissante et une traction horizontale sur la verge de l ancre.',
52
+ statusCautionTitle: 'Mouillage Correct: Surveiller la Meteo',
53
+ statusCautionDesc: 'Ratio satisfaisant par brise moderee, mais filez plus de chaine si le vent ou le clapot forcit.',
54
+ statusDangerTitle: 'Longueur Insuffisante: Risque de Derapage',
55
+ statusDangerDesc: 'Le ratio est critique. L ancre subit une traction vers le haut et risque de decrocher du fond.',
56
+ adviceSand: 'Le sable offre une excellente tenue. Faites culer le bateau au moteur pour enfouir les pattes.',
57
+ adviceMud: 'La vase molle exige une ancre a large pelle et plus de longueur pour trouver un substrat ferme.',
58
+ adviceClay: 'L argile compacte tient fermement mais necessite des pointes d ancre acerees pour penetrer.',
59
+ adviceGravel: 'Les graviers roulent sous la houle. Augmentez la longueur d au moins 25 pour cent.',
60
+ adviceRock: 'Risque de coincer l ancre. Prevoyez un orin avec bouee pour le deblocage.',
61
+ adviceWeed: 'Les herbiers empechent la penetration de l ancre. Verifiez la tenue au moteur avant la nuit.',
62
+ catenaryAllChain: 'Le poids de la chaine forme une catenaire qui amortit la houle et garde le tirage a plat.',
63
+ catenaryRopeChain: 'Une ligne mixte requiert au minimum un ratio de 7 pour 1.',
64
+ catenaryAllRope: 'Le cablot necessite 8 pour 1 afin d eviter de soulever la verge sous tension.',
65
+ resetButton: 'Reinitialiser',
66
+ visualProfileTitle: 'Profil et Courbe Catenoide',
67
+ waterlineLabel: 'Flottaison',
68
+ seabedLabel: 'Fond Marin',
69
+ anchorLabel: 'Ancre',
70
+ catenaryCurveLabel: 'Courbe de Chaine',
71
+ swingCircleLabel: 'Cercle d Evitage',
72
+ };
73
+
74
+ const faq: AnchorScopeLocaleContent['faq'] = [
75
+ {
76
+ question: 'Qu est-ce que le ratio de touage scope au mouillage?',
77
+ answer: 'C est le rapport entre la longueur totale de ligne payee a l eau et la hauteur verticale totale entre le fond marin et le davier de proue. Il garantit une traction a plat.',
78
+ },
79
+ {
80
+ question: 'Pourquoi faut-il additionner le franc-bord et la maree?',
81
+ answer: 'Le sondeur ne mesure que l eau sous la quille. Le franc-bord avant et le marnage nocturne augmentent considerablement la hauteur reelle, causant des derapages.',
82
+ },
83
+ {
84
+ question: 'Quelle est la difference de ratio entre la chaine et le cablot?',
85
+ answer: 'La chaine lourde cree un catenoide et permet des ratios de 4:1 a 5:1. Le cablot textile etant leger exige 7:1 a 10:1 pour ne pas soulever l ancre.',
86
+ },
87
+ {
88
+ question: 'Comment calcule-t-on le rayon d evitage dans une crique?',
89
+ answer: 'On calcule la distance horizontale du mouillage au theoreme de Pythagore, puis on ajoute la longueur du bateau et une marge de 3 a 5 metres.',
90
+ },
91
+ {
92
+ question: 'Quel est l effet du fond sur la tenue de l ancre?',
93
+ answer: 'Le sable et l argile garantissent la meilleure accroche. La vase et les algues exigent de filer plus long ou de changer de crique.',
94
+ },
95
+ {
96
+ question: 'A quoi sert une patte d oie ou main de fer amortisseuse?',
97
+ answer: 'Elle soulage le guindeau electrique des chocs de la houle et supprime les bruits metalliques transmis a la coque pendant la nuit.',
98
+ },
99
+ ];
100
+
101
+ const howTo: AnchorScopeLocaleContent['howTo'] = [
102
+ {
103
+ name: 'Mesurer la profondeur et la hauteur du davier',
104
+ text: 'Notez la profondeur sur la carte et ajoutez la hauteur de votre davier d etrave au-dessus de l eau.',
105
+ },
106
+ {
107
+ name: 'Integrer le marnage de maree',
108
+ text: 'Consultez l annuaire des marees pour ajouter la hausse maximale prevue pendant votre mouillage.',
109
+ },
110
+ {
111
+ name: 'Choisir la ligne et la force du vent',
112
+ text: 'Indiquez si vous utilisez du tout chaine ou mixte et ajustez selon le vent prevu.',
113
+ },
114
+ {
115
+ name: 'Filer la longueur et tester la tenue au moteur',
116
+ text: 'Filez le nombre de metres calcule, puis enclenchez la marche arriere pour enfouir l ancre.',
117
+ },
118
+ ];
119
+
120
+ const seo: AnchorScopeLocaleContent['seo'] = [
121
+ {
122
+ type: 'title',
123
+ text: 'Calcul de Mouillage Sur: Longueur de Chaine et Evitage',
124
+ level: 2,
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Reussir son mouillage est indispensable pour la securite en mer. Un ratio de filage insuffisant provoque le derapage de l ancre et des collisions au mouillage. Calculer le bon <strong>ratio de touage</strong> permet de dormir sur ses deux oreilles.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Calcul de la Hauteur Verticale Reelle',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ items: [
138
+ '<strong>Sonde au Fondeur:</strong> Hauteur d eau lue au sondeur plus le tirant d eau.',
139
+ '<strong>Franc-Bord d Etrave:</strong> Hauteur du davier au-dessus de la ligne de flottaison.',
140
+ '<strong>Marnage de Maree:</strong> Elevation maximale du niveau de la mer a marée haute.',
141
+ ],
142
+ },
143
+ {
144
+ type: 'title',
145
+ text: 'Tableau des Ratios de Mouillage',
146
+ level: 3,
147
+ },
148
+ {
149
+ type: 'table',
150
+ headers: ['Greement de Ligne', 'Temps Calme (<15 nds)', 'Brise Etablie (15-25 nds)', 'Coup de Vent (>30 nds)'],
151
+ rows: [
152
+ ['<strong>Tout Chaine</strong>', 'Ratio 4:1', 'Ratio 5:1', 'Ratio 7:1'],
153
+ ['<strong>Mixte Cablot-Chaine</strong>', 'Ratio 5:1', 'Ratio 7:1', 'Ratio 8:1 a 10:1'],
154
+ ['<strong>Tout Cablot Textile</strong>', 'Ratio 7:1', 'Ratio 8:1', 'Ratio 10:1 a 12:1'],
155
+ ],
156
+ },
157
+ {
158
+ type: 'tip',
159
+ title: 'Proteger votre guindeau',
160
+ html: 'Ne laissez jamais travailler la chaine en direct sur le barbotin. Utilisez toujours une main de fer textile frappee sur un taquet avant.',
161
+ },
162
+ {
163
+ type: 'paragraph',
164
+ html: "Vérifiez la météo et l'état réel de la mer avant le départ.",
165
+ },
166
+ {
167
+ type: 'paragraph',
168
+ html: 'Contrôlez la marge de profondeur et gardez une réserve de sécurité.',
169
+ },
170
+ {
171
+ type: 'paragraph',
172
+ html: 'Notez les valeurs utilisées pour pouvoir refaire le calcul plus tard.',
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Comparez plusieurs scénarios lorsque le vent ou le courant change.',
177
+ },
178
+ {
179
+ type: 'paragraph',
180
+ html: 'Le calcul aide à préparer la route, mais ne remplace pas la veille à bord.',
181
+ },
182
+ ];
183
+
184
+ const schemas: AnchorScopeLocaleContent['schemas'] = [
185
+ {
186
+ '@context': 'https://schema.org',
187
+ '@type': 'SoftwareApplication',
188
+ name: title,
189
+ description,
190
+ applicationCategory: 'UtilityApplication',
191
+ operatingSystem: 'Web',
192
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
193
+ } as WithContext<SoftwareApplication>,
194
+ {
195
+ '@context': 'https://schema.org',
196
+ '@type': 'FAQPage',
197
+ mainEntity: faq.map((item) => ({
198
+ '@type': 'Question',
199
+ name: item.question,
200
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
201
+ })),
202
+ } as WithContext<FAQPage>,
203
+ {
204
+ '@context': 'https://schema.org',
205
+ '@type': 'HowTo',
206
+ name: `Guide: ${title}`,
207
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
208
+ } as WithContext<HowTo>,
209
+ ];
210
+
211
+ export const content: AnchorScopeLocaleContent = {
212
+ slug,
213
+ title,
214
+ description,
215
+ ui,
216
+ seo,
217
+ faq,
218
+ bibliography,
219
+ howTo,
220
+ schemas,
221
+ };
@@ -0,0 +1,221 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { AnchorScopeLocaleContent } from '../entry';
4
+ import type { AnchorScopeUI } from '../ui';
5
+
6
+ const slug = 'kalkulator-panjang-rantai-jangkar';
7
+ const title = 'Kalkulator Panjang Rantai Jangkar dan Radius Putar';
8
+ const description =
9
+ 'Hitung panjang ideal rantai jangkar, rasio scope dan radius putar aman berdasarkan kedalaman laut, tinggi haluan dan kondisi dasar perairan.';
10
+
11
+ const ui: AnchorScopeUI = {
12
+ parametersTitle: 'Parameter',
13
+ waterDepthLabel: 'Kedalaman Peta',
14
+ bowHeightLabel: 'Tinggi Lambung Haluan',
15
+ tideRangeLabel: 'Kenaikan Pasang Surut',
16
+ boatLengthLabel: 'Panjang Kapal (LOA)',
17
+ rodeTypeLabel: 'Tali / Rantai Jangkar',
18
+ windConditionLabel: 'Kekuatan Angin & Prakiraan',
19
+ seabedTypeLabel: 'Jenis Dasar Laut',
20
+ presetProtected: 'Teluk Tenang',
21
+ presetOpen: 'Laut Terbuka',
22
+ presetStorm: 'Peringatan Badai',
23
+ seabedTag: 'Faktor Cengkeram Dasar Laut',
24
+ catenaryTag: 'Redaman Kurva Rantai',
25
+ unitM: 'm',
26
+ unitFt: 'ft',
27
+ unitMeters: 'Metrik (m)',
28
+ unitFeet: 'Imperial (ft)',
29
+ allChainOption: 'Semua Rantai (Kurva Berat)',
30
+ ropeChainOption: 'Kombinasi Tali dan Rantai',
31
+ allRopeOption: 'Semua Tali Sintetis',
32
+ calmWindOption: 'Tenang / Angin Lembut (< 15 knot)',
33
+ moderateWindOption: 'Angin Sedang (15 - 25 knot)',
34
+ strongWindOption: 'Angin Kencang / Badai (25 - 35 knot)',
35
+ stormWindOption: 'Badai Hebat (> 35 knot)',
36
+ sandOption: 'Pasir (Cengkeraman Maksimal)',
37
+ mudOption: 'Lumpur (Cengkeraman Baik)',
38
+ clayOption: 'Lempung Padat (Sangat Baik)',
39
+ gravelOption: 'Kerikil / Batu Kecil (Sedang)',
40
+ rockOption: 'Batu Karang (Risiko Tersangkut)',
41
+ weedOption: 'Lamun / Rumput Laut (Lemah)',
42
+ resultsTitle: 'Analisis Labuh Jangkar dan Dimensi',
43
+ scopeRatioLabel: 'Rasio Scope Efektif',
44
+ totalDepthLabel: 'Total Ketinggian Vertikal',
45
+ recommendedRodeLabel: 'Rekomendasi Panjang Rantai',
46
+ horizontalDistanceLabel: 'Jarak Horizontal',
47
+ swingRadiusLabel: 'Estimasi Radius Putar',
48
+ minSafeRodeLabel: 'Minimum Saat Tenang',
49
+ heavyWeatherRodeLabel: 'Panjang Saat Cuaca Buruk',
50
+ statusOptimalTitle: 'Labuh Jangkar Aman dan Stabil',
51
+ statusOptimalDesc: 'Panjang terhitung menjamin kurva redaman dan tarikan horizontal rata pada batang jangkar.',
52
+ statusCautionTitle: 'Cukup Aman: Pantau Perubahan Angin',
53
+ statusCautionDesc: 'Sesuai untuk angin sedang. Ulur lebih banyak rantai jika gelombang bertambah besar.',
54
+ statusDangerTitle: 'Rantai Kurang: Risiko Jangkar Larut',
55
+ statusDangerDesc: 'Rasio kritis. Batang jangkar akan terangkat ke atas dan dapat terlepas dari dasar laut.',
56
+ adviceSand: 'Pasir memberikan penetrasi kuku jangkar yang kokoh. Mundurkan mesin perlahan agar menancap.',
57
+ adviceMud: 'Lumpur lunak membutuhkan kuku jangkar lebar dan rantai lebih panjang untuk lapisan padat.',
58
+ adviceClay: 'Lempung memegang sangat kuat tetapi membutuhkan ujung jangkar tajam untuk menembus.',
59
+ adviceGravel: 'Kerikil mudah bergeser saat ada hentakan. Tambah rantai minimal 25 persen.',
60
+ adviceRock: 'Risiko tinggi jangkar macet. Selalu gunakan tali pelampung pembebas jangkar.',
61
+ adviceWeed: 'Lamun tebal menghalangi jangkar menembus dasar. Periksa cengkeraman mesin dengan teliti.',
62
+ catenaryAllChain: 'Bobot rantai membentuk lengkungan yang meredam sentakan ombak dan menjaga tarikan mendatar.',
63
+ catenaryRopeChain: 'Kombinasi tali memerlukan rasio minimal 7 banding 1 untuk mengimbangi bobot yang ringan.',
64
+ catenaryAllRope: 'Tali nilon membutuhkan rasio 8 banding 1 atau lebih agar batang jangkar tidak terungkit.',
65
+ resetButton: 'Reset Nilai',
66
+ visualProfileTitle: 'Profil Kurva Rantai',
67
+ waterlineLabel: 'Garis Air',
68
+ seabedLabel: 'Dasar Laut',
69
+ anchorLabel: 'Jangkar',
70
+ catenaryCurveLabel: 'Kurva Rantai',
71
+ swingCircleLabel: 'Lingkaran Putar',
72
+ };
73
+
74
+ const faq: AnchorScopeLocaleContent['faq'] = [
75
+ {
76
+ question: 'Apa itu rasio scope pada labuh jangkar?',
77
+ answer: 'Scope adalah perbandingan antara panjang rantai yang diulur ke air dengan jarak vertikal total dari dasar laut ke rol haluan.',
78
+ },
79
+ {
80
+ question: 'Mengapa tinggi haluan dan pasang surut harus dihitung?',
81
+ answer: 'Echosounder hanya mengukur air di bawah lunas. Tinggi haluan dan pasang air laut menambah kedalaman vertikal riil.',
82
+ },
83
+ {
84
+ question: 'Apa perbedaan rasio antara rantai penuh dan tali?',
85
+ answer: 'Rantai besi yang berat membentuk lengkungan gantung (4:1 hingga 5:1). Tali yang ringan menarik lurus sehingga perlu 7:1 hingga 10:1.',
86
+ },
87
+ {
88
+ question: 'Bagaimana cara menghitung radius putar kapal?',
89
+ answer: 'Dengan rumus Phytagoras diperoleh jarak horizontal, lalu ditambah panjang kapal dan batas aman 3 hingga 5 meter.',
90
+ },
91
+ {
92
+ question: 'Bagaimana pengaruh dasar laut terhadap kekuatan jangkar?',
93
+ answer: 'Pasir dan lempung memberi daya cengkeram terbaik. Lumpur dan bebatuan membutuhkan rantai lebih panjang.',
94
+ },
95
+ {
96
+ question: 'Apa fungsi tali peredam snubber pada rantai jangkar?',
97
+ answer: 'Mengurangi beban kejut pada mesin penarik jangkar (windlass) dan meredam bunyi gesekan logam saat malam hari.',
98
+ },
99
+ ];
100
+
101
+ const howTo: AnchorScopeLocaleContent['howTo'] = [
102
+ {
103
+ name: 'Ukur kedalaman dan tinggi haluan',
104
+ text: 'Catat kedalaman pada peta laut dan tambahkan tinggi rol haluan di atas permukaan air.',
105
+ },
106
+ {
107
+ name: 'Tambahkan kenaikan pasang surut',
108
+ text: 'Periksa tabel pasang surut untuk memperkirakan kenaikan air tertinggi selama kapal berlabuh.',
109
+ },
110
+ {
111
+ name: 'Pilih jenis tali dan kekuatan angin',
112
+ text: 'Tentukan penggunaan rantai atau tali serta sesuaikan faktor pengali dengan prakiraan cuaca.',
113
+ },
114
+ {
115
+ name: 'Ulur rantai dan tancapkan jangkar',
116
+ text: 'Ulur panjang rantai sesuai hitungan dan masukkan gigi mundur perlahan untuk menancapkan jangkar.',
117
+ },
118
+ ];
119
+
120
+ const seo: AnchorScopeLocaleContent['seo'] = [
121
+ {
122
+ type: 'title',
123
+ text: 'Kalkulasi Labuh Jangkar Aman: Panjang Rantai dan Radius Putar',
124
+ level: 2,
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Keahlian labuh jangkar yang benar sangat penting bagi keselamatan kapal dan awaknya. Rantai yang terlalu pendek menjadi penyebab utama jangkar larut dan tabrakan kapal saat malam hari. Dengan <strong>rasio scope yang tepat</strong>, kapal tetap stabil bahkan saat badai.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Komponen Total Ketinggian Vertikal',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ items: [
138
+ '<strong>Kedalaman Perairan:</strong> Kedalaman echosounder ditambah sarat air kapal.',
139
+ '<strong>Tinggi Lambung Haluan:</strong> Jarak dari muka air ke titik tumpu rantai di haluan.',
140
+ '<strong>Kenaikan Pasang Maksimal:</strong> Tambahan tinggi air saat pasang tertinggi.',
141
+ ],
142
+ },
143
+ {
144
+ type: 'title',
145
+ text: 'Tabel Rekomendasi Rasio Labuh Jangkar',
146
+ level: 3,
147
+ },
148
+ {
149
+ type: 'table',
150
+ headers: ['Jenis Rangkaian', 'Cuaca Tenang (<15 knot)', 'Angin Sedang (15-25 knot)', 'Badai Kencang (>30 knot)'],
151
+ rows: [
152
+ ['<strong>Semua Rantai</strong>', 'Rasio 4:1', 'Rasio 5:1', 'Rasio 7:1'],
153
+ ['<strong>Kombinasi Tali-Rantai</strong>', 'Rasio 5:1', 'Rasio 7:1', 'Rasio 8:1 hingga 10:1'],
154
+ ['<strong>Semua Tali Sintetis</strong>', 'Rasio 7:1', 'Rasio 8:1', 'Rasio 10:1 hingga 12:1'],
155
+ ],
156
+ },
157
+ {
158
+ type: 'tip',
159
+ title: 'Melindungi Windlass Jangkar',
160
+ html: 'Jangan biarkan beban tarikan bertumpu langsung pada poros mesin jangkar. Selalu pasang tali snubber yang diikatkan kuat pada bolder haluan.',
161
+ },
162
+ {
163
+ type: 'paragraph',
164
+ html: 'Periksa prakiraan dan kondisi laut yang sebenarnya sebelum berangkat.',
165
+ },
166
+ {
167
+ type: 'paragraph',
168
+ html: 'Pastikan ada cadangan kedalaman yang aman untuk pelayaran.',
169
+ },
170
+ {
171
+ type: 'paragraph',
172
+ html: 'Catat nilai masukan agar perhitungan dapat diulangi nanti.',
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Bandingkan beberapa skenario saat angin atau arus berubah.',
177
+ },
178
+ {
179
+ type: 'paragraph',
180
+ html: 'Perhitungan membantu merencanakan rute, tetapi tidak menggantikan pengamatan di kapal.',
181
+ },
182
+ ];
183
+
184
+ const schemas: AnchorScopeLocaleContent['schemas'] = [
185
+ {
186
+ '@context': 'https://schema.org',
187
+ '@type': 'SoftwareApplication',
188
+ name: title,
189
+ description,
190
+ applicationCategory: 'UtilityApplication',
191
+ operatingSystem: 'Web',
192
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
193
+ } as WithContext<SoftwareApplication>,
194
+ {
195
+ '@context': 'https://schema.org',
196
+ '@type': 'FAQPage',
197
+ mainEntity: faq.map((item) => ({
198
+ '@type': 'Question',
199
+ name: item.question,
200
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
201
+ })),
202
+ } as WithContext<FAQPage>,
203
+ {
204
+ '@context': 'https://schema.org',
205
+ '@type': 'HowTo',
206
+ name: `Panduan: ${title}`,
207
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
208
+ } as WithContext<HowTo>,
209
+ ];
210
+
211
+ export const content: AnchorScopeLocaleContent = {
212
+ slug,
213
+ title,
214
+ description,
215
+ ui,
216
+ seo,
217
+ faq,
218
+ bibliography,
219
+ howTo,
220
+ schemas,
221
+ };