mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-08-09 19:16:02 +08:00
Adjust frequency change lesson call sign
This commit is contained in:
@@ -941,13 +941,6 @@
|
||||
{{ Math.round(result.sim * 100) }}%
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="result" class="field-checks">
|
||||
<div v-for="field in result.fields" :key="field.key" class="field-check" :class="{ ok: field.pass }">
|
||||
<div class="field-name">{{ field.label }}</div>
|
||||
<div class="field-answer">{{ field.answer || '—' }}</div>
|
||||
<div class="field-expected">Expected: {{ field.expected }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5538,43 +5531,6 @@ onMounted(() => {
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
.field-checks {
|
||||
margin-top: 12px;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
}
|
||||
|
||||
.field-check {
|
||||
border: 1px solid color-mix(in srgb, var(--text) 14%, transparent);
|
||||
padding: 12px;
|
||||
border-radius: 14px;
|
||||
background: color-mix(in srgb, var(--text) 4%, transparent);
|
||||
box-shadow: 0 12px 26px rgba(2, 6, 23, .28);
|
||||
}
|
||||
|
||||
.field-check.ok {
|
||||
border-color: color-mix(in srgb, var(--accent) 40%, transparent);
|
||||
background: color-mix(in srgb, var(--accent) 10%, transparent);
|
||||
}
|
||||
|
||||
.field-name {
|
||||
font-size: 12px;
|
||||
letter-spacing: .08em;
|
||||
color: var(--t3);
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.field-answer {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.field-expected {
|
||||
font-size: 12px;
|
||||
color: var(--t3);
|
||||
}
|
||||
|
||||
.hint.secondary {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
@@ -410,6 +410,7 @@ const fundamentalsLessons = [
|
||||
key: 'freq-contact-frequency',
|
||||
label: 'Frequency',
|
||||
expected: scenario => scenario.handoff.frequency,
|
||||
threshold: 0.99,
|
||||
alternatives: scenario => {
|
||||
const freq = scenario.handoff.frequency
|
||||
const trimmed = freq.replace(/\.?0+$/, '')
|
||||
@@ -439,34 +440,12 @@ const fundamentalsLessons = [
|
||||
},
|
||||
placeholder: '125.35',
|
||||
width: 'md'
|
||||
},
|
||||
{
|
||||
key: 'freq-contact-callsign',
|
||||
label: 'Callsign',
|
||||
expected: scenario => scenario.radioCall,
|
||||
alternatives: scenario => {
|
||||
const variants = new Set<string>()
|
||||
const add = (value?: string) => {
|
||||
if (!value) return
|
||||
variants.add(value)
|
||||
variants.add(value.toLowerCase())
|
||||
}
|
||||
add(scenario.radioCall)
|
||||
add(`${scenario.airlineCall} ${scenario.flightNumber}`)
|
||||
add(`${scenario.airlineCall} ${scenario.flightNumberWords}`)
|
||||
add(scenario.callsign)
|
||||
add(`${scenario.airlineCode} ${scenario.flightNumber}`)
|
||||
add(`${scenario.callsignNato} ${scenario.flightNumberWords}`)
|
||||
return Array.from(variants)
|
||||
},
|
||||
width: 'lg'
|
||||
}
|
||||
],
|
||||
readback: [
|
||||
{ type: 'text', text: scenario => `Contact ${scenario.handoff.facility} on ` },
|
||||
{ type: 'field', key: 'freq-contact-frequency', width: 'md' },
|
||||
{ type: 'text', text: ', ' },
|
||||
{ type: 'field', key: 'freq-contact-callsign', width: 'lg' }
|
||||
{ type: 'text', text: scenario => `, ${scenario.radioCall}` }
|
||||
],
|
||||
defaultFrequency: 'TWR',
|
||||
phrase: scenario => `${scenario.radioCall}, contact ${scenario.handoff.facility} on ${scenario.handoff.frequencyWords}.`,
|
||||
|
||||
Reference in New Issue
Block a user