@jjlmoya/utils-nautical 1.2.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 (74) hide show
  1. package/package.json +75 -0
  2. package/src/category/i18n/en.ts +79 -0
  3. package/src/category/i18n/es.ts +79 -0
  4. package/src/category/i18n/fr.ts +79 -0
  5. package/src/category/index.ts +13 -0
  6. package/src/components/PreviewNavSidebar.astro +116 -0
  7. package/src/components/PreviewToolbar.astro +143 -0
  8. package/src/data.ts +12 -0
  9. package/src/env.d.ts +5 -0
  10. package/src/index.ts +22 -0
  11. package/src/layouts/PreviewLayout.astro +117 -0
  12. package/src/pages/[locale]/[slug].astro +146 -0
  13. package/src/pages/[locale].astro +249 -0
  14. package/src/pages/index.astro +4 -0
  15. package/src/tests/faq_count.test.ts +30 -0
  16. package/src/tests/mocks/astro_mock.js +2 -0
  17. package/src/tests/seo_length.test.ts +29 -0
  18. package/src/tests/tool_validation.test.ts +51 -0
  19. package/src/tool/endurance/bibliography.astro +14 -0
  20. package/src/tool/endurance/component.astro +310 -0
  21. package/src/tool/endurance/i18n/en.ts +243 -0
  22. package/src/tool/endurance/i18n/es.ts +249 -0
  23. package/src/tool/endurance/i18n/fr.ts +217 -0
  24. package/src/tool/endurance/index.ts +56 -0
  25. package/src/tool/endurance/logic.ts +36 -0
  26. package/src/tool/endurance/seo.astro +55 -0
  27. package/src/tool/endurance/style.css +333 -0
  28. package/src/tool/nauticalConverter/bibliography.astro +14 -0
  29. package/src/tool/nauticalConverter/component.astro +481 -0
  30. package/src/tool/nauticalConverter/i18n/en.ts +239 -0
  31. package/src/tool/nauticalConverter/i18n/es.ts +239 -0
  32. package/src/tool/nauticalConverter/i18n/fr.ts +239 -0
  33. package/src/tool/nauticalConverter/index.ts +57 -0
  34. package/src/tool/nauticalConverter/logic.ts +52 -0
  35. package/src/tool/nauticalConverter/seo.astro +52 -0
  36. package/src/tool/nauticalConverter/style.css +205 -0
  37. package/src/tool/sailArea/bibliography.astro +14 -0
  38. package/src/tool/sailArea/component.astro +418 -0
  39. package/src/tool/sailArea/i18n/en.ts +275 -0
  40. package/src/tool/sailArea/i18n/es.ts +275 -0
  41. package/src/tool/sailArea/i18n/fr.ts +275 -0
  42. package/src/tool/sailArea/index.ts +53 -0
  43. package/src/tool/sailArea/logic.ts +55 -0
  44. package/src/tool/sailArea/seo.astro +52 -0
  45. package/src/tool/sailArea/style.css +351 -0
  46. package/src/tool/speedConverter/bibliography.astro +14 -0
  47. package/src/tool/speedConverter/component.astro +125 -0
  48. package/src/tool/speedConverter/i18n/en.ts +271 -0
  49. package/src/tool/speedConverter/i18n/es.ts +271 -0
  50. package/src/tool/speedConverter/i18n/fr.ts +271 -0
  51. package/src/tool/speedConverter/index.ts +46 -0
  52. package/src/tool/speedConverter/logic.ts +48 -0
  53. package/src/tool/speedConverter/seo.astro +43 -0
  54. package/src/tool/speedConverter/style.css +239 -0
  55. package/src/tool/tideCalculator/bibliography.astro +14 -0
  56. package/src/tool/tideCalculator/component.astro +314 -0
  57. package/src/tool/tideCalculator/i18n/en.ts +203 -0
  58. package/src/tool/tideCalculator/i18n/es.ts +225 -0
  59. package/src/tool/tideCalculator/i18n/fr.ts +190 -0
  60. package/src/tool/tideCalculator/index.ts +50 -0
  61. package/src/tool/tideCalculator/logic.ts +73 -0
  62. package/src/tool/tideCalculator/seo.astro +61 -0
  63. package/src/tool/tideCalculator/style.css +310 -0
  64. package/src/tool/underKeel/bibliography.astro +14 -0
  65. package/src/tool/underKeel/component.astro +240 -0
  66. package/src/tool/underKeel/i18n/en.ts +193 -0
  67. package/src/tool/underKeel/i18n/es.ts +206 -0
  68. package/src/tool/underKeel/i18n/fr.ts +193 -0
  69. package/src/tool/underKeel/index.ts +49 -0
  70. package/src/tool/underKeel/logic.ts +83 -0
  71. package/src/tool/underKeel/seo.astro +46 -0
  72. package/src/tool/underKeel/style.css +312 -0
  73. package/src/tools.ts +25 -0
  74. package/src/types.ts +69 -0
@@ -0,0 +1,193 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
3
+
4
+ const slug = 'under-keel-clearance-calculator';
5
+ const title = 'Under-Keel Clearance Calculator';
6
+ const description =
7
+ 'Calculate the safe time window to cross bars, channels or draft-restricted points. Enter your boat draft, chart depth and tidal data to get the exact safe passage interval.';
8
+
9
+ const ui: UnderKeelUI = {
10
+ parametersLabel: 'Parameters',
11
+ boatDraftLabel: 'Boat Draft',
12
+ chartDepthLabel: 'Chart Depth',
13
+ safetyMarginLabel: 'Safety Margin',
14
+ highTideLabel: 'High Tide',
15
+ lowTideLabel: 'Low Tide',
16
+ metersLabel: 'metres',
17
+ passWindowLabel: 'Passage Window',
18
+ neededLabel: 'Depth required',
19
+ tideRequiredLabel: 'Minimum tide required',
20
+ statusNeverLabel: 'No clearance in this cycle',
21
+ statusAlwaysLabel: 'Clear throughout the cycle',
22
+ statusFromLabel: 'Passage from:',
23
+ statusUntilLabel: 'Passage until:',
24
+ bottomLabel: 'BOTTOM',
25
+ faqTitle: 'Frequently Asked Questions',
26
+ bibliographyTitle: 'Bibliography',
27
+ };
28
+
29
+ const faq: UnderKeelLocaleContent['faq'] = [
30
+ {
31
+ question: 'What exactly is an under-keel clearance calculation?',
32
+ answer: 'It is the calculation of the moment when there is sufficient depth at a critical point (such as a sandbar or narrow channel) to allow safe transit of a vessel according to its draft.',
33
+ },
34
+ {
35
+ question: 'How much safety margin is recommended?',
36
+ answer: 'For recreational craft, a minimum safety margin of between 0.5 and 1 metre above the boat draft is usually recommended. This margin compensates for possible errors in tidal calculations, atmospheric pressure variations or unexpected swell.',
37
+ },
38
+ {
39
+ question: 'How does swell affect the under-keel clearance?',
40
+ answer: 'Swell generates vertical oscillations in the hull. At the lowest point of the wave the boat is closer to the bottom than at rest. When crossing areas with swell, the safety margin must be increased substantially.',
41
+ },
42
+ {
43
+ question: 'What is the chart sounding?',
44
+ answer: 'It is the minimum depth at a point when the tide is at Chart Datum. It is added to the tide height at that moment to give the total available depth.',
45
+ },
46
+ {
47
+ question: 'What does an underlined sounding on the chart mean?',
48
+ answer: 'It means that point is exposed (dries out) when the tide is at Chart Datum. You will need a greater tide height to be able to pass over it.',
49
+ },
50
+ {
51
+ question: 'What is the Squat effect and how does it alter passage?',
52
+ answer: 'It is a hydrodynamic phenomenon by which a vessel navigating through shallow channels tends to sink lower relative to its waterline. The faster you travel, the more the dynamic draft increases and the less water you have under the keel.',
53
+ },
54
+ ];
55
+
56
+ const howTo: UnderKeelLocaleContent['howTo'] = [
57
+ {
58
+ name: 'Define draft and safety margin',
59
+ text: 'Measure your boat draft at its maximum point and add a prudent safety margin (e.g. 0.5 m).',
60
+ },
61
+ {
62
+ name: 'Look up the chart sounding',
63
+ text: 'Find the Datum sounding value for the critical point you are going to navigate. Note whether it is a sandy or rocky area.',
64
+ },
65
+ {
66
+ name: 'Enter the tidal data',
67
+ text: 'Use the times and heights of high and low water from the nearest official tide almanac.',
68
+ },
69
+ {
70
+ name: 'Check your passage window',
71
+ text: 'The tool will show the exact time interval during which you will have sufficient depth to navigate safely.',
72
+ },
73
+ ];
74
+
75
+ const bibliography: UnderKeelLocaleContent['bibliography'] = [
76
+ {
77
+ name: 'Ministerio de Transportes - Recreational Boating',
78
+ url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
79
+ },
80
+ {
81
+ name: 'Portos de Galicia - Tide Tables',
82
+ url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
83
+ },
84
+ ];
85
+
86
+ const seo: UnderKeelLocaleContent['seo'] = [
87
+ {
88
+ type: 'title',
89
+ text: 'Under-Keel Clearance: Navigating Safely Over Shoals',
90
+ level: 2,
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: 'Planning a passage does not end with drawing a course on the chart. For the coastal navigator, one of the most critical calculations is the <strong>under-keel clearance</strong>: knowing at what time there will be enough depth to cross a critical point without grounding.',
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: 'What is the chart sounding and how does it relate to the tide?',
99
+ level: 3,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: 'On nautical charts, depths (soundings) are referenced to <strong>Chart Datum</strong>. This level is, by convention, the lowest level the tide reaches under normal conditions. The actual depth your boat will find at any given moment is the sum of that sounding plus the tide height at that instant, calculated using the Rule of Twelfths.',
104
+ },
105
+ {
106
+ type: 'title',
107
+ text: 'The elements of the calculation: Draft and Margin',
108
+ level: 3,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'To use the under-keel clearance calculator professionally, you need to know two technical details about your boat and one personal decision:',
113
+ },
114
+ {
115
+ type: 'list',
116
+ items: [
117
+ '<strong>Maximum load draft:</strong> The depth reached by the lowest point of the boat (the keel) when fully loaded.',
118
+ '<strong>Chart sounding:</strong> The number on the nautical chart for the point you wish to cross. If underlined, the point dries at Chart Datum.',
119
+ '<strong>Safety margin:</strong> Additional safety clearance (nautically known as clearance) of at least 0.5 to 1 metre above the draft.',
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'How does the passage window work?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'The calculator determines the exact moment when the water level will rise above your draft plus the chosen safety margin. From that minute, the <strong>passage window</strong> opens. If the tide is ebbing (falling), the tool will indicate until what time transit is permitted before the water level drops below your safety limit.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'This planning is vital for sailing boats with deep keels wishing to enter ports such as those in the Rias Baixas in Galicia or river ports in Andalusia, where tidal variation can make the difference between a comfortable entry or being stranded for six hours waiting for the next cycle.',
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Factors affecting the actual passage',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'table',
142
+ headers: ['Factor', 'Effect', 'Recommendation'],
143
+ rows: [
144
+ ['<strong>Swell</strong>', 'Reduces water under the hull', 'Increase safety margin significantly'],
145
+ ['<strong>Squat effect</strong>', 'Increases draft through suction', 'Reduce speed in critical areas'],
146
+ ['<strong>Sandy bottom</strong>', 'Depth variable with storms', 'Keep active sounder and extra margin'],
147
+ ],
148
+ },
149
+ {
150
+ type: 'tip',
151
+ title: 'Navigation Tip',
152
+ html: 'If your passage window is very narrow or the weather deteriorates, the wisest decision is usually to wait offshore in deep water until the tide rises to the required height.',
153
+ },
154
+ ];
155
+
156
+ const schemas: UnderKeelLocaleContent['schemas'] = [
157
+ {
158
+ '@context': 'https://schema.org',
159
+ '@type': 'SoftwareApplication',
160
+ name: title,
161
+ description,
162
+ applicationCategory: 'UtilityApplication',
163
+ operatingSystem: 'Web',
164
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
165
+ } as WithContext<SoftwareApplication>,
166
+ {
167
+ '@context': 'https://schema.org',
168
+ '@type': 'FAQPage',
169
+ mainEntity: faq.map((item) => ({
170
+ '@type': 'Question',
171
+ name: item.question,
172
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
173
+ })),
174
+ } as WithContext<FAQPage>,
175
+ {
176
+ '@context': 'https://schema.org',
177
+ '@type': 'HowTo',
178
+ name: `How to use: ${title}`,
179
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
180
+ } as WithContext<HowTo>,
181
+ ];
182
+
183
+ export const content: UnderKeelLocaleContent = {
184
+ slug,
185
+ title,
186
+ description,
187
+ ui,
188
+ seo,
189
+ faq,
190
+ bibliography,
191
+ howTo,
192
+ schemas,
193
+ };
@@ -0,0 +1,206 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
3
+
4
+ const slug = 'calculador-paso-de-bajo';
5
+ const title = 'Calculador de Paso de Bajo';
6
+ const description =
7
+ 'Calcula la ventana de tiempo segura para cruzar barras, canales o puntos de calado restringido. Introduce el calado de tu barco, la sonda de la carta y los datos de marea para obtener el intervalo exacto de paso seguro.';
8
+
9
+ const ui: UnderKeelUI = {
10
+ parametersLabel: 'Parametros',
11
+ boatDraftLabel: 'Calado del Barco',
12
+ chartDepthLabel: 'Sonda de la Carta',
13
+ safetyMarginLabel: 'Resguardo de Seguridad',
14
+ highTideLabel: 'Pleamar',
15
+ lowTideLabel: 'Bajamar',
16
+ metersLabel: 'metros',
17
+ passWindowLabel: 'Ventana de Paso',
18
+ neededLabel: 'Profundidad necesaria',
19
+ tideRequiredLabel: 'Marea minima requerida',
20
+ statusNeverLabel: 'Sin calado en todo el ciclo',
21
+ statusAlwaysLabel: 'Paso libre todo el ciclo',
22
+ statusFromLabel: 'Paso desde las:',
23
+ statusUntilLabel: 'Paso hasta las:',
24
+ bottomLabel: 'FONDO',
25
+ faqTitle: 'Preguntas Frecuentes',
26
+ bibliographyTitle: 'Referencias',
27
+ };
28
+
29
+ const faq: UnderKeelLocaleContent['faq'] = [
30
+ {
31
+ question: '¿Que es exactamente el paso de bajo en nautica?',
32
+ answer: 'El paso de bajo es el calculo del momento en el que hay profundidad suficiente en un punto critico (como una barra de arena o un canal estrecho) para permitir el transito seguro de una embarcacion segun su calado.',
33
+ },
34
+ {
35
+ question: '¿Cuantos metros de resguardo de seguridad se recomiendan?',
36
+ answer: 'Para embarcaciones de recreo se suele recomendar un resguardo minimo de entre 0.5 y 1 metro sobre el calado del barco. Este margen compensa posibles errores en el calculo de marea, variaciones de presion atmosferica u oleaje imprevisto.',
37
+ },
38
+ {
39
+ question: '¿Como influye el oleaje en el paso de bajo?',
40
+ answer: 'El oleaje genera oscilaciones verticales en el casco. En el punto mas bajo de la ola el barco se acerca mas al fondo que en reposo. Para cruzar zonas con olas el resguardo debe aumentarse sustancialmente.',
41
+ },
42
+ {
43
+ question: '¿Que es la sonda de la carta nautica?',
44
+ answer: 'Es la profundidad minima que encontraras en un punto cuando la marea esta en el nivel del Cero de la Carta (Datum). Se suma a la altura de la marea en ese instante para obtener la profundidad total disponible.',
45
+ },
46
+ {
47
+ question: '¿Que ocurre si la sonda en la carta esta subrayada?',
48
+ answer: 'Significa que ese punto queda al descubierto (en seco) cuando la marea esta en el Cero de la Carta. Necesitaras una altura de marea mayor para poder pasar por encima.',
49
+ },
50
+ {
51
+ question: '¿Que es el efecto Squat y como altera el paso?',
52
+ answer: 'Es un fenomeno hidrodinamico por el cual un barco que navega por canales poco profundos tiende a hundirse mas respecto a su linea de flotacion. Cuanto mas rapido navegues, mas aumenta el calado dinamico y menos agua tendras bajo la quilla.',
53
+ },
54
+ ];
55
+
56
+ const howTo: UnderKeelLocaleContent['howTo'] = [
57
+ {
58
+ name: 'Define el calado y el resguardo',
59
+ text: 'Mide el calado de tu barco en su punto maximo y añade un margen de seguridad prudente (por ejemplo, 0.5 m).',
60
+ },
61
+ {
62
+ name: 'Consulta la sonda en tu carta nautica',
63
+ text: 'Busca el valor de la sonda Datum para el paso critico que vas a navegar. Anota si es una zona de arena o roca.',
64
+ },
65
+ {
66
+ name: 'Introduce los datos de la marea',
67
+ text: 'Utiliza las horas y alturas de la pleamar y bajamar de la marina mas cercana obtenidas del anuario oficial.',
68
+ },
69
+ {
70
+ name: 'Comprueba tu ventana de paso',
71
+ text: 'La herramienta te indicara el intervalo de tiempo exacto durante el cual tendras profundidad suficiente para navegar con seguridad.',
72
+ },
73
+ ];
74
+
75
+ const bibliography: UnderKeelLocaleContent['bibliography'] = [
76
+ {
77
+ name: 'Ministerio de Transportes - Nautica de Recreo',
78
+ url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
79
+ },
80
+ {
81
+ name: 'Portos de Galicia - Tablas de Mareas',
82
+ url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
83
+ },
84
+ ];
85
+
86
+ const seo: UnderKeelLocaleContent['seo'] = [
87
+ {
88
+ type: 'title',
89
+ text: 'Calculo de Paso de Bajo: Navegando con Seguridad sobre Obstaculos',
90
+ level: 2,
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: 'La planificacion de una travesia no termina con el trazo de un rumbo en la carta. Para el navegante costero, uno de los calculos mas determinantes es el del <strong>paso de bajo</strong>: saber a que hora habra profundidad suficiente para cruzar un punto critico sin encallar.',
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: '¿Que es la sonda de la carta y como se relaciona con la marea?',
99
+ level: 3,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: 'En las cartas nauticas, las profundidades indicadas (sondas) estan referidas al <strong>Cero de la Carta</strong> o Datum. Este nivel es, por convencion, el nivel mas bajo que puede alcanzar la marea en condiciones normales. La profundidad real que encontrara tu barco en un momento dado es la suma de esa sonda mas la altura de la marea en ese instante, calculada con la Regla de los Dozavos.',
104
+ },
105
+ {
106
+ type: 'title',
107
+ text: 'Los elementos del calculo: Calado y Resguardo',
108
+ level: 3,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Para utilizar el calculador de paso de bajo de forma profesional, debes conocer con precision dos datos tecnicos de tu propio barco y uno de decision personal:',
113
+ },
114
+ {
115
+ type: 'list',
116
+ items: [
117
+ '<strong>Calado de maxima carga:</strong> Es la profundidad que alcanza el punto mas bajo del barco (la quilla) cuando esta totalmente cargado.',
118
+ '<strong>Sonda de la carta:</strong> El numero que aparece en la carta nautica para el punto que quieres cruzar. Si esta subrayado, el punto queda en seco en bajamar.',
119
+ '<strong>Resguardo de seguridad:</strong> Es el margen "por si acaso" (nauticamente conocido como resguardo) de al menos 0,5 a 1 metro.',
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: '¿Como funciona la ventana de paso?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: 'El calculador determina el momento exacto en el que el nivel del agua subira por encima de tu calado mas el resguardo elegido. A partir de ese minuto, se abre la <strong>ventana de paso</strong>. Si la marea es vaciante (bajando), la herramienta te indicara hasta que hora tienes permitido el transito antes de que el nivel del agua caiga por debajo de tu limite de seguridad.',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Esta planificacion es vital para barcos de vela con quillas profundas que desean entrar en puertos como los de las Rias Baixas en Galicia o puertos fluviales en Andalucia, donde la variacion de mareas puede marcar la diferencia entre una entrada comoda o quedar varado durante seis horas esperando al siguiente ciclo.',
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Factores que afectan al paso real',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'table',
142
+ headers: ['Factor', 'Efecto', 'Recomendacion'],
143
+ rows: [
144
+ ['<strong>Oleaje</strong>', 'Reduce el agua bajo el casco', 'Aumentar el resguardo significativamente'],
145
+ ['<strong>Efecto Squat</strong>', 'Aumenta el calado por succion', 'Reducir la velocidad en zonas criticas'],
146
+ ['<strong>Fondo de arena</strong>', 'Profundidad variable con temporales', 'Mantener sonda activa y resguardo extra'],
147
+ ],
148
+ },
149
+ {
150
+ type: 'tip',
151
+ title: 'Consejo de Navegacion',
152
+ html: 'Si tu ventana de paso es muy estrecha o el tiempo empeora, la decision mas sabia suele ser esperar fuera en aguas profundas a que la marea gane la altura necesaria.',
153
+ },
154
+ {
155
+ type: 'title',
156
+ text: 'Consejos para una entrada segura a puerto',
157
+ level: 3,
158
+ },
159
+ {
160
+ type: 'paragraph',
161
+ html: '<ol><li class="mb-2"><strong>Reduce la velocidad:</strong> Para minimizar el efecto squat y tener tiempo de corregir el rumbo.</li><li class="mb-2"><strong>Utiliza la sonda de a bordo:</strong> Configura la alarma de baja profundidad en tu equipo electronico.</li><li class="mb-2"><strong>Observa el mar:</strong> Las rompientes de olas suelen indicar la presencia de bajos.</li><li class="mb-2"><strong>Consulta a lugareños:</strong> Por radio (canal 9) o telefoneando al club nautico sobre el estado actual del canal.</li></ol>',
162
+ },
163
+ {
164
+ type: 'paragraph',
165
+ html: 'Esta herramienta es ideal para estudiantes que estan practicando ejercicios de mareas para el examen de Patron de Embarcaciones de Recreo (PER) o Patron de Yate, permitiendo verificar los resultados de calculos manuales de forma instantanea y visual.',
166
+ },
167
+ ];
168
+
169
+ const schemas: UnderKeelLocaleContent['schemas'] = [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: title,
174
+ description,
175
+ applicationCategory: 'UtilityApplication',
176
+ operatingSystem: 'Web',
177
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
178
+ } as WithContext<SoftwareApplication>,
179
+ {
180
+ '@context': 'https://schema.org',
181
+ '@type': 'FAQPage',
182
+ mainEntity: faq.map((item) => ({
183
+ '@type': 'Question',
184
+ name: item.question,
185
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
186
+ })),
187
+ } as WithContext<FAQPage>,
188
+ {
189
+ '@context': 'https://schema.org',
190
+ '@type': 'HowTo',
191
+ name: `Como usar: ${title}`,
192
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
193
+ } as WithContext<HowTo>,
194
+ ];
195
+
196
+ export const content: UnderKeelLocaleContent = {
197
+ slug,
198
+ title,
199
+ description,
200
+ ui,
201
+ seo,
202
+ faq,
203
+ bibliography,
204
+ howTo,
205
+ schemas,
206
+ };
@@ -0,0 +1,193 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { UnderKeelUI, UnderKeelLocaleContent } from '../index';
3
+
4
+ const slug = 'calculateur-passage-haut-fond';
5
+ const title = 'Calculateur de Passage sur Haut-Fond';
6
+ const description =
7
+ "Calculez la feneˆtre de temps sure pour franchir des barres, chenaux ou points a tirant d'eau restreint. Entrez le tirant d'eau de votre bateau, la sonde de la carte et les donnees de maree pour obtenir l'intervalle de passage sur.";
8
+
9
+ const ui: UnderKeelUI = {
10
+ parametersLabel: 'Parametres',
11
+ boatDraftLabel: "Tirant d'eau",
12
+ chartDepthLabel: 'Sonde de la carte',
13
+ safetyMarginLabel: 'Marge de securite',
14
+ highTideLabel: 'Pleine mer',
15
+ lowTideLabel: 'Basse mer',
16
+ metersLabel: 'metres',
17
+ passWindowLabel: 'Feneˆtre de passage',
18
+ neededLabel: 'Profondeur necessaire',
19
+ tideRequiredLabel: 'Maree minimale requise',
20
+ statusNeverLabel: 'Pas de passage dans ce cycle',
21
+ statusAlwaysLabel: 'Passage libre tout le cycle',
22
+ statusFromLabel: 'Passage a partir de :',
23
+ statusUntilLabel: "Passage jusqu'a :",
24
+ bottomLabel: 'FOND',
25
+ faqTitle: 'Questions Frequentes',
26
+ bibliographyTitle: 'Bibliographie',
27
+ };
28
+
29
+ const faq: UnderKeelLocaleContent['faq'] = [
30
+ {
31
+ question: "Qu'est-ce que le calcul de passage sur haut-fond?",
32
+ answer: "C'est le calcul du moment ou la profondeur est suffisante en un point critique (comme une barre de sable ou un chenal etroit) pour permettre le transit sur d'un navire selon son tirant d'eau.",
33
+ },
34
+ {
35
+ question: 'Quelle marge de securite est recommandee?',
36
+ answer: "Pour les bateaux de plaisance, une marge minimale de 0,5 a 1 metre au-dessus du tirant d'eau est generalement recommandee. Cette marge compense les erreurs possibles dans le calcul de la maree, les variations de pression atmospherique ou la houle imprevue.",
37
+ },
38
+ {
39
+ question: 'Comment la houle affecte-t-elle le passage?',
40
+ answer: "La houle genere des oscillations verticales dans la coque. Au point le plus bas de la vague, le bateau est plus pres du fond qu'au repos. Pour traverser des zones avec de la houle, la marge doit etre augmentee sensiblement.",
41
+ },
42
+ {
43
+ question: 'Que signifie la sonde sur la carte nautique?',
44
+ answer: "C'est la profondeur minimale en un point lorsque la maree est au zero hydrographique (Datum). Elle s'ajoute a la hauteur de maree a cet instant pour donner la profondeur totale disponible.",
45
+ },
46
+ {
47
+ question: 'Que signifie une sonde soulignee sur la carte?',
48
+ answer: "Cela signifie que ce point se decouvre lorsque la maree est au zero hydrographique. Vous aurez besoin d'une hauteur de maree plus importante pour pouvoir passer dessus.",
49
+ },
50
+ {
51
+ question: "Qu'est-ce que l'effet Squat et comment modifie-t-il le passage?",
52
+ answer: "C'est un phenomene hydrodynamique par lequel un bateau navigant dans des chenaux peu profonds tend a s'enfoncer davantage par rapport a sa ligne de flottaison. Plus vous allez vite, plus le tirant d'eau dynamique augmente et moins vous avez d'eau sous la quille.",
53
+ },
54
+ ];
55
+
56
+ const howTo: UnderKeelLocaleContent['howTo'] = [
57
+ {
58
+ name: "Definir le tirant d'eau et la marge",
59
+ text: "Mesurez le tirant d'eau de votre bateau a son point maximum et ajoutez une marge de securite prudente (par exemple 0,5 m).",
60
+ },
61
+ {
62
+ name: 'Consulter la sonde sur la carte',
63
+ text: 'Recherchez la valeur de sonde Datum pour le point critique que vous allez naviguer. Notez si c\'est une zone de sable ou de roche.',
64
+ },
65
+ {
66
+ name: 'Saisir les donnees de maree',
67
+ text: "Utilisez les heures et hauteurs de pleine mer et basse mer de l'annuaire officiel le plus proche.",
68
+ },
69
+ {
70
+ name: 'Verifier votre feneˆtre de passage',
71
+ text: "L'outil vous indiquera l'intervalle de temps exact pendant lequel vous aurez une profondeur suffisante pour naviguer en toute securite.",
72
+ },
73
+ ];
74
+
75
+ const bibliography: UnderKeelLocaleContent['bibliography'] = [
76
+ {
77
+ name: 'Ministerio de Transportes - Navigation de Plaisance',
78
+ url: 'https://www.mitma.gob.es/marina-mercante/nautica-de-recreo/',
79
+ },
80
+ {
81
+ name: 'Portos de Galicia - Tables des Marees',
82
+ url: 'https://portosdegalicia.gal/es/taboa-de-mareas',
83
+ },
84
+ ];
85
+
86
+ const seo: UnderKeelLocaleContent['seo'] = [
87
+ {
88
+ type: 'title',
89
+ text: 'Passage sur Haut-Fond : Naviguer en Securite au-dessus des Obstacles',
90
+ level: 2,
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: "La planification d'une traversee ne s'arrete pas au trace d'une route sur la carte. Pour le navigateur cotier, l'un des calculs les plus determinants est celui du <strong>passage sur haut-fond</strong> : savoir a quelle heure la profondeur sera suffisante pour franchir un point critique sans s'echouer.",
95
+ },
96
+ {
97
+ type: 'title',
98
+ text: 'Que signifie la sonde de la carte et comment se rapporte-t-elle a la maree?',
99
+ level: 3,
100
+ },
101
+ {
102
+ type: 'paragraph',
103
+ html: "Sur les cartes nautiques, les profondeurs (sondes) sont referencees au <strong>zero hydrographique</strong> (Datum). Ce niveau est, par convention, le plus bas que puisse atteindre la maree dans des conditions normales. La profondeur reelle qu'un bateau trouvera a un instant donne est la somme de cette sonde plus la hauteur de maree a cet instant, calculee selon la Regle des Douzaines.",
104
+ },
105
+ {
106
+ type: 'title',
107
+ text: "Les elements du calcul : Tirant d'eau et Marge",
108
+ level: 3,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: "Pour utiliser le calculateur de passage sur haut-fond de facon professionnelle, vous devez connaitre deux donnees techniques de votre bateau et une decision personnelle :",
113
+ },
114
+ {
115
+ type: 'list',
116
+ items: [
117
+ "<strong>Tirant d'eau en charge maximale :</strong> Profondeur atteinte par le point le plus bas du bateau (la quille) lorsqu'il est entierement charge.",
118
+ "<strong>Sonde de la carte :</strong> Le chiffre sur la carte nautique pour le point que vous souhaitez franchir. S'il est souligne, le point se decouvre au zero hydrographique.",
119
+ "<strong>Marge de securite :</strong> Marge de securite supplementaire d'au moins 0,5 a 1 metre au-dessus du tirant d'eau.",
120
+ ],
121
+ },
122
+ {
123
+ type: 'title',
124
+ text: 'Comment fonctionne la feneˆtre de passage ?',
125
+ level: 3,
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: "Le calculateur determine le moment exact ou le niveau de l'eau depassera votre tirant d'eau plus la marge choisie. A partir de cette minute, la <strong>feneˆtre de passage</strong> s'ouvre. Si la maree est descendante, l'outil indiquera jusqu'a quelle heure le transit est autorise avant que le niveau tombe en dessous de votre limite de securite.",
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: "Cette planification est vitale pour les voiliers a quille profonde qui souhaitent entrer dans des ports ou la variation des marees peut faire la difference entre une entree confortable ou rester echoue pendant six heures en attendant le prochain cycle.",
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Facteurs affectant le passage reel',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'table',
142
+ headers: ['Facteur', 'Effet', 'Recommandation'],
143
+ rows: [
144
+ ['<strong>Houle</strong>', "Reduit l'eau sous la coque", 'Augmenter la marge sensiblement'],
145
+ ['<strong>Effet Squat</strong>', "Augmente le tirant d'eau par succion", 'Reduire la vitesse dans les zones critiques'],
146
+ ['<strong>Fond de sable</strong>', 'Profondeur variable par mauvais temps', 'Garder le sondeur actif et marge supplementaire'],
147
+ ],
148
+ },
149
+ {
150
+ type: 'tip',
151
+ title: 'Conseil de navigation',
152
+ html: "Si votre feneˆtre de passage est tres etroite ou si le temps se degrade, la decision la plus sage est generalement d'attendre au large dans des eaux profondes que la maree monte jusqu'a la hauteur necessaire.",
153
+ },
154
+ ];
155
+
156
+ const schemas: UnderKeelLocaleContent['schemas'] = [
157
+ {
158
+ '@context': 'https://schema.org',
159
+ '@type': 'SoftwareApplication',
160
+ name: title,
161
+ description,
162
+ applicationCategory: 'UtilityApplication',
163
+ operatingSystem: 'Web',
164
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
165
+ } as WithContext<SoftwareApplication>,
166
+ {
167
+ '@context': 'https://schema.org',
168
+ '@type': 'FAQPage',
169
+ mainEntity: faq.map((item) => ({
170
+ '@type': 'Question',
171
+ name: item.question,
172
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
173
+ })),
174
+ } as WithContext<FAQPage>,
175
+ {
176
+ '@context': 'https://schema.org',
177
+ '@type': 'HowTo',
178
+ name: `Comment utiliser : ${title}`,
179
+ step: howTo.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
180
+ } as WithContext<HowTo>,
181
+ ];
182
+
183
+ export const content: UnderKeelLocaleContent = {
184
+ slug,
185
+ title,
186
+ description,
187
+ ui,
188
+ seo,
189
+ faq,
190
+ bibliography,
191
+ howTo,
192
+ schemas,
193
+ };
@@ -0,0 +1,49 @@
1
+ import type { NauticalToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
+ import UnderKeelComponent from './component.astro';
3
+ import UnderKeelSEO from './seo.astro';
4
+ import UnderKeelBibliography from './bibliography.astro';
5
+
6
+ export interface UnderKeelUI {
7
+ [key: string]: string;
8
+ parametersLabel: string;
9
+ boatDraftLabel: string;
10
+ chartDepthLabel: string;
11
+ safetyMarginLabel: string;
12
+ highTideLabel: string;
13
+ lowTideLabel: string;
14
+ metersLabel: string;
15
+ passWindowLabel: string;
16
+ neededLabel: string;
17
+ tideRequiredLabel: string;
18
+ statusNeverLabel: string;
19
+ statusAlwaysLabel: string;
20
+ statusFromLabel: string;
21
+ statusUntilLabel: string;
22
+ bottomLabel: string;
23
+ faqTitle: string;
24
+ bibliographyTitle: string;
25
+ }
26
+
27
+ export type UnderKeelLocaleContent = ToolLocaleContent<UnderKeelUI>;
28
+
29
+ export const underKeel: NauticalToolEntry<UnderKeelUI> = {
30
+ id: 'under-keel',
31
+ icons: {
32
+ bg: 'mdi:ferry',
33
+ fg: 'mdi:anchor',
34
+ },
35
+ i18n: {
36
+ es: () => import('./i18n/es').then((m) => m.content),
37
+ en: () => import('./i18n/en').then((m) => m.content),
38
+ fr: () => import('./i18n/fr').then((m) => m.content),
39
+ },
40
+ };
41
+
42
+ export { UnderKeelComponent, UnderKeelSEO, UnderKeelBibliography };
43
+
44
+ export const UNDER_KEEL_TOOL: ToolDefinition = {
45
+ entry: underKeel,
46
+ Component: UnderKeelComponent,
47
+ SEOComponent: UnderKeelSEO,
48
+ BibliographyComponent: UnderKeelBibliography,
49
+ };