From 995a9771c8593d4ed8c0aed3bebb3815951af06e Mon Sep 17 00:00:00 2001 From: Pedro Pupo Sa da Costa Date: Tue, 6 Feb 2024 12:03:24 +0000 Subject: [PATCH 1/4] fix: fix remaining type inconsistencies --- .../[questionBank]/docs/[docId].page.tsx | 32 +- .../[questionBank]/docs/index.page.tsx | 18 +- .../src/entities/question-bank.ts | 11 + libs/core/question-bank/src/index.ts | 1 + .../test-question-result.stories.tsx | 1 - .../test-question-result.tsx | 4 +- .../src/docs/doc-search/doc-search.mock.ts | 240 ++-- .../src/docs/doc-search/doc-search.tsx | 11 +- .../flashcard-with-own-control.tsx | 8 +- .../learning-objective-questions.mock.ts | 284 ++--- .../question-meta/question-meta.mock.ts | 36 +- .../question-search/question-search.mock.tsx | 1124 +++++++++++++---- .../src/tests/__mocks__/test-progress.mock.ts | 80 -- .../src/tests/test-exam/test-exam.tsx | 4 +- .../src/tests/test-review/test-review.tsx | 1 - .../src/tests/test-study/test-study.tsx | 6 +- .../src/routers/containers/docs-router.ts | 12 +- .../containers/learning-objectives-router.ts | 8 +- 18 files changed, 1158 insertions(+), 723 deletions(-) diff --git a/apps/next-app/pages/modules/[questionBank]/docs/[docId].page.tsx b/apps/next-app/pages/modules/[questionBank]/docs/[docId].page.tsx index d49b81990..8528f6e13 100644 --- a/apps/next-app/pages/modules/[questionBank]/docs/[docId].page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/docs/[docId].page.tsx @@ -14,12 +14,7 @@ import { useDisclose, useMediaQuery, } from "@chair-flight/react/components"; -import { - DocContent, - LayoutModule, - LearningObjectiveQuestions, - LearningObjectiveTree, -} from "@chair-flight/react/containers"; +import { DocContent, LayoutModule } from "@chair-flight/react/containers"; import { trpc } from "@chair-flight/trpc/client"; import { staticHandler, staticPathsHandler } from "@chair-flight/trpc/server"; import type { QuestionBankName } from "@chair-flight/core/question-bank"; @@ -103,16 +98,6 @@ export const Page: NextPage = ({ docId, questionBank }) => { Learning Objectives - = ({ docId, questionBank }) => { Questions - @@ -144,11 +119,10 @@ export const Page: NextPage = ({ docId, questionBank }) => { export const getStaticProps = staticHandler( async ({ params: rawParams, helper }) => { const data = await helper.containers.docs.getDoc.fetch(rawParams); - const learningObjectiveId = data.doc.learningObjective; - const params = { ...rawParams, learningObjectiveId }; + const learningObjective = data.doc.learningObjective; + const params = { ...rawParams, learningObjective }; await LayoutModule.getData({ helper, params }); await DocContent.getData({ helper, params }); - await LearningObjectiveTree.getData({ helper, params }); return { props: params }; }, fs, diff --git a/apps/next-app/pages/modules/[questionBank]/docs/index.page.tsx b/apps/next-app/pages/modules/[questionBank]/docs/index.page.tsx index 201e0f066..a51aeb88f 100644 --- a/apps/next-app/pages/modules/[questionBank]/docs/index.page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/docs/index.page.tsx @@ -1,10 +1,10 @@ import * as fs from "node:fs/promises"; import { AppHead } from "@chair-flight/react/components"; import { DocSearch, LayoutModule } from "@chair-flight/react/containers"; -import { staticHandler } from "@chair-flight/trpc/server"; +import { staticHandler, staticPathsHandler } from "@chair-flight/trpc/server"; import type { QuestionBankName } from "@chair-flight/core/question-bank"; import type { Breadcrumbs } from "@chair-flight/react/containers"; -import type { GetStaticPaths, NextPage } from "next"; +import type { NextPage } from "next"; type PageProps = { questionBank: QuestionBankName; @@ -37,10 +37,12 @@ export const getStaticProps = staticHandler( fs, ); -export const getStaticPaths: GetStaticPaths = async () => { - const banks: QuestionBankName[] = ["atpl"]; - const paths = banks.map((questionBank) => ({ params: { questionBank } })); - return { fallback: false, paths }; -}; - +export const getStaticPaths = staticPathsHandler( + async ({ helper }) => { + const getPaths = helper.pageGeneration.modules.getIndexGenerationPaths; + const paths = await getPaths.fetch({ resource: "docs" }); + return { fallback: false, paths }; + }, + fs, +); export default Page; diff --git a/libs/core/question-bank/src/entities/question-bank.ts b/libs/core/question-bank/src/entities/question-bank.ts index bb36d5c57..782c4ca0f 100644 --- a/libs/core/question-bank/src/entities/question-bank.ts +++ b/libs/core/question-bank/src/entities/question-bank.ts @@ -1,3 +1,4 @@ +import { z } from "zod"; import type { Annex } from "./question-bank-annex"; import type { Course } from "./question-bank-course"; import type { Doc } from "./question-bank-doc"; @@ -19,6 +20,16 @@ export type QuestionBankNameToType = { export type QuestionBankResource = keyof QuestionBankNameToType; +export const questionBankResourceSchema = z.enum([ + "questions", + "learningObjectives", + "annexes", + "flashcards", + "courses", + "subjects", + "docs", +]); + export type QuestionBankResourceArrays = { [K in QuestionBankResource]: QuestionBankNameToType[K][] | undefined; }; diff --git a/libs/core/question-bank/src/index.ts b/libs/core/question-bank/src/index.ts index 2a09bf4b3..3c1186d73 100644 --- a/libs/core/question-bank/src/index.ts +++ b/libs/core/question-bank/src/index.ts @@ -18,5 +18,6 @@ export * from "./entities/test-types"; export * from "./questions/get-new-variant"; export * from "./questions/get-question-preview"; export * from "./tests/create-test"; +export * from "./tests/get-number-of-available-questions"; export * from "./tests/create-test-question"; export * from "./tests/process-test"; diff --git a/libs/react/components/src/test-question-result/test-question-result.stories.tsx b/libs/react/components/src/test-question-result/test-question-result.stories.tsx index 8feb31b46..69a879a55 100644 --- a/libs/react/components/src/test-question-result/test-question-result.stories.tsx +++ b/libs/react/components/src/test-question-result/test-question-result.stories.tsx @@ -7,7 +7,6 @@ export const Playground: Story = { args: { correct: false, questionTemplateId: "123124", - questionVariantId: "abcbacabc", title: "Question 5", question: "what is the capital of France?", correctOption: "Paris", diff --git a/libs/react/components/src/test-question-result/test-question-result.tsx b/libs/react/components/src/test-question-result/test-question-result.tsx index ae35d29b9..ebd15aca3 100644 --- a/libs/react/components/src/test-question-result/test-question-result.tsx +++ b/libs/react/components/src/test-question-result/test-question-result.tsx @@ -10,7 +10,6 @@ export type TestQuestionResultProps = { correct?: boolean; question?: string; questionTemplateId?: string; - questionVariantId?: string; correctOption?: string; selectedOption?: string; learningObjectives?: string[]; @@ -28,7 +27,6 @@ export const TestQuestionResult = forwardRef< correctOption, selectedOption, questionTemplateId, - questionVariantId, learningObjectives, ...props }, @@ -48,7 +46,7 @@ export const TestQuestionResult = forwardRef< }} > - {`${questionTemplateId} (${questionVariantId})`} + {questionTemplateId} {question ?? ""} diff --git a/libs/react/containers/src/docs/doc-search/doc-search.mock.ts b/libs/react/containers/src/docs/doc-search/doc-search.mock.ts index 69b628946..81ed2fe19 100644 --- a/libs/react/containers/src/docs/doc-search/doc-search.mock.ts +++ b/libs/react/containers/src/docs/doc-search/doc-search.mock.ts @@ -57,10 +57,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01", - learningObjective: { - id: "022.01", - href: "/modules/[object Object]/learning-objectives/022.01", - }, + learningObjectives: [ + { + id: "022.01", + href: "/modules/[object Object]/learning-objectives/022.01", + }, + ], }, { id: "022.01.01", @@ -69,10 +71,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: false, subject: "022", href: "/modules/[object Object]/docs/022.01.01", - learningObjective: { - id: "022.01.01", - href: "/modules/[object Object]/learning-objectives/022.01.01", - }, + learningObjectives: [ + { + id: "022.01.01", + href: "/modules/[object Object]/learning-objectives/022.01.01", + }, + ], }, { id: "022.01.02", @@ -81,10 +85,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01.02", - learningObjective: { - id: "022.01.02", - href: "/modules/[object Object]/learning-objectives/022.01.02", - }, + learningObjectives: [ + { + id: "022.01.02", + href: "/modules/[object Object]/learning-objectives/022.01.02", + }, + ], }, { id: "022.01.03", @@ -93,10 +99,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: false, subject: "022", href: "/modules/[object Object]/docs/022.01.03", - learningObjective: { - id: "022.01.03", - href: "/modules/[object Object]/learning-objectives/022.01.03", - }, + learningObjectives: [ + { + id: "022.01.03", + href: "/modules/[object Object]/learning-objectives/022.01.03", + }, + ], }, { id: "022.01.04", @@ -105,10 +113,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01.04", - learningObjective: { - id: "022.01.04", - href: "/modules/[object Object]/learning-objectives/022.01.04", - }, + learningObjectives: [ + { + id: "022.01.04", + href: "/modules/[object Object]/learning-objectives/022.01.04", + }, + ], }, { id: "022.01.05", @@ -117,10 +127,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01.05", - learningObjective: { - id: "022.01.05", - href: "/modules/[object Object]/learning-objectives/022.01.05", - }, + learningObjectives: [ + { + id: "022.01.05", + href: "/modules/[object Object]/learning-objectives/022.01.05", + }, + ], }, { id: "022.01.06", @@ -129,10 +141,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01.06", - learningObjective: { - id: "022.01.06", - href: "/modules/[object Object]/learning-objectives/022.01.06", - }, + learningObjectives: [ + { + id: "022.01.06", + href: "/modules/[object Object]/learning-objectives/022.01.06", + }, + ], }, { id: "022.01.07", @@ -141,10 +155,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: false, subject: "022", href: "/modules/[object Object]/docs/022.01.07", - learningObjective: { - id: "022.01.07", - href: "/modules/[object Object]/learning-objectives/022.01.07", - }, + learningObjectives: [ + { + id: "022.01.07", + href: "/modules/[object Object]/learning-objectives/022.01.07", + }, + ], }, { id: "022.01.08", @@ -153,10 +169,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: false, subject: "022", href: "/modules/[object Object]/docs/022.01.08", - learningObjective: { - id: "022.01.08", - href: "/modules/[object Object]/learning-objectives/022.01.08", - }, + learningObjectives: [ + { + id: "022.01.08", + href: "/modules/[object Object]/learning-objectives/022.01.08", + }, + ], }, { id: "022.01.09", @@ -165,10 +183,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01.09", - learningObjective: { - id: "022.01.09", - href: "/modules/[object Object]/learning-objectives/022.01.09", - }, + learningObjectives: [ + { + id: "022.01.09", + href: "/modules/[object Object]/learning-objectives/022.01.09", + }, + ], }, { id: "022.01.10", @@ -177,10 +197,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.01.10", - learningObjective: { - id: "022.01.10", - href: "/modules/[object Object]/learning-objectives/022.01.10", - }, + learningObjectives: [ + { + id: "022.01.10", + href: "/modules/[object Object]/learning-objectives/022.01.10", + }, + ], }, { id: "022.02", @@ -189,10 +211,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02", - learningObjective: { - id: "022.02", - href: "/modules/[object Object]/learning-objectives/022.02", - }, + learningObjectives: [ + { + id: "022.02", + href: "/modules/[object Object]/learning-objectives/022.02", + }, + ], }, { id: "022.02.01", @@ -201,10 +225,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.01", - learningObjective: { - id: "022.02.01", - href: "/modules/[object Object]/learning-objectives/022.02.01", - }, + learningObjectives: [ + { + id: "022.02.01", + href: "/modules/[object Object]/learning-objectives/022.02.01", + }, + ], }, { id: "022.02.01.01", @@ -213,10 +239,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.01.01", - learningObjective: { - id: "022.02.01.01", - href: "/modules/[object Object]/learning-objectives/022.02.01.01", - }, + learningObjectives: [ + { + id: "022.02.01.01", + href: "/modules/[object Object]/learning-objectives/022.02.01.01", + }, + ], }, { id: "022.02.01.02", @@ -225,10 +253,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: false, subject: "022", href: "/modules/[object Object]/docs/022.02.01.02", - learningObjective: { - id: "022.02.01.02", - href: "/modules/[object Object]/learning-objectives/022.02.01.02", - }, + learningObjectives: [ + { + id: "022.02.01.02", + href: "/modules/[object Object]/learning-objectives/022.02.01.02", + }, + ], }, { id: "022.02.02", @@ -237,10 +267,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.02", - learningObjective: { - id: "022.02.02", - href: "/modules/[object Object]/learning-objectives/022.02.02", - }, + learningObjectives: [ + { + id: "022.02.02", + href: "/modules/[object Object]/learning-objectives/022.02.02", + }, + ], }, { id: "022.02.02.01", @@ -249,10 +281,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.02.01", - learningObjective: { - id: "022.02.02.01", - href: "/modules/[object Object]/learning-objectives/022.02.02.01", - }, + learningObjectives: [ + { + id: "022.02.02.01", + href: "/modules/[object Object]/learning-objectives/022.02.02.01", + }, + ], }, { id: "022.02.02.02", @@ -261,10 +295,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.02.02", - learningObjective: { - id: "022.02.02.02", - href: "/modules/[object Object]/learning-objectives/022.02.02.02", - }, + learningObjectives: [ + { + id: "022.02.02.02", + href: "/modules/[object Object]/learning-objectives/022.02.02.02", + }, + ], }, { id: "022.02.03", @@ -273,10 +309,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.03", - learningObjective: { - id: "022.02.03", - href: "/modules/[object Object]/learning-objectives/022.02.03", - }, + learningObjectives: [ + { + id: "022.02.03", + href: "/modules/[object Object]/learning-objectives/022.02.03", + }, + ], }, { id: "022.02.03.01", @@ -286,10 +324,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.03.01", - learningObjective: { - id: "022.02.03.01", - href: "/modules/[object Object]/learning-objectives/022.02.03.01", - }, + learningObjectives: [ + { + id: "022.02.03.01", + href: "/modules/[object Object]/learning-objectives/022.02.03.01", + }, + ], }, { id: "022.02.04", @@ -298,10 +338,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.04", - learningObjective: { - id: "022.02.04", - href: "/modules/[object Object]/learning-objectives/022.02.04", - }, + learningObjectives: [ + { + id: "022.02.04", + href: "/modules/[object Object]/learning-objectives/022.02.04", + }, + ], }, { id: "022.02.04.01", @@ -311,10 +353,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.04.01", - learningObjective: { - id: "022.02.04.01", - href: "/modules/[object Object]/learning-objectives/022.02.04.01", - }, + learningObjectives: [ + { + id: "022.02.04.01", + href: "/modules/[object Object]/learning-objectives/022.02.04.01", + }, + ], }, { id: "022.02.05", @@ -323,10 +367,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.05", - learningObjective: { - id: "022.02.05", - href: "/modules/[object Object]/learning-objectives/022.02.05", - }, + learningObjectives: [ + { + id: "022.02.05", + href: "/modules/[object Object]/learning-objectives/022.02.05", + }, + ], }, { id: "022.02.05.01", @@ -335,10 +381,12 @@ export const mockSearchData: AppRouterOutput["common"]["search"]["searchDocs"] = empty: true, subject: "022", href: "/modules/[object Object]/docs/022.02.05.01", - learningObjective: { - id: "022.02.05.01", - href: "/modules/[object Object]/learning-objectives/022.02.05.01", - }, + learningObjectives: [ + { + id: "022.02.05.01", + href: "/modules/[object Object]/learning-objectives/022.02.05.01", + }, + ], }, ], totalResults: 143, diff --git a/libs/react/containers/src/docs/doc-search/doc-search.tsx b/libs/react/containers/src/docs/doc-search/doc-search.tsx index 056a79013..ab8851d1f 100644 --- a/libs/react/containers/src/docs/doc-search/doc-search.tsx +++ b/libs/react/containers/src/docs/doc-search/doc-search.tsx @@ -93,9 +93,11 @@ export const DocSearch = container( {serverData.subjectMap[result.subject]} - - {result.learningObjective.id} - + {result.learningObjectives.map((lo) => ( + + {lo.id} + + ))} {result.title} @@ -124,9 +126,6 @@ export const DocSearch = container( > {result.title} - - {result.learningObjective.id} - {result.empty ? ( diff --git a/libs/react/containers/src/flashcards/components/fashcard-with-own-control/flashcard-with-own-control.tsx b/libs/react/containers/src/flashcards/components/fashcard-with-own-control/flashcard-with-own-control.tsx index bacb3a85c..9dfca9aad 100644 --- a/libs/react/containers/src/flashcards/components/fashcard-with-own-control/flashcard-with-own-control.tsx +++ b/libs/react/containers/src/flashcards/components/fashcard-with-own-control/flashcard-with-own-control.tsx @@ -1,11 +1,11 @@ import { useState } from "react"; import { Flashcard } from "@chair-flight/react/components"; -import type { QuestionBankFlashcardContent } from "@chair-flight/core/question-bank"; +import type { FlashcardContent } from "@chair-flight/core/question-bank"; import type { FunctionComponent } from "react"; -export const FlashcardWithOwnControl: FunctionComponent< - QuestionBankFlashcardContent -> = (props) => { +export const FlashcardWithOwnControl: FunctionComponent = ( + props, +) => { const [isFlipped, setIsFlipped] = useState(false); return ( ridge is an elongated area of relatively high pressure, a trough is a elongated area of relatively low pressure and a col is a region between two highs and two lows.\n- :x: A ridge is an elongated area of relatively high pressure, a col is a elongated area of relatively low pressure and a trough is a region between two highs and two lows.\n- :x: A col is an elongated area of relatively high pressure, a trough is a elongated area of relatively low pressure and a ridge is a region between two highs and two lows.\n- :x: A trough is an elongated area of relatively high pressure, a ridge is a elongated area of relatively low pressure and a col is a region between two highs and two lows.", + externalIds: ["BGS-995620"], + href: "/modules/atpl/questions/UrGzEwAj", learningObjectives: [ - { - name: "010.01.01.01.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.01.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLGS-118704", "ATPLGS-103761"], - href: "/modules/[object Object]/questions/Q2CGFE1OCO?variantId=0OGUgcI5", }, { + id: "kA7q1I98", questionBank: "atpl", - id: "U9SzIdTc", - questionId: "Q39QM81P5Y", - variantId: "U9SzIdTc", - text: "What does the acronym IATA stand for?\n\n- :white_check_mark: International Air Transport Association\n- :x: International Airline Training Association\n- :x: International Airline Trade Agreement\n- :x: International Air Trade Agreement", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: The climb limited take-off mass depends on pressure altitude and outer air temperature.\n- :x: The performance limited take-off mass is the highest of: field length limited take-off mass climb limited take-off mass obstacle limited take-off mass.\n- :x: The climb limited take-off mass will increase if the headwind component increases.\n- :x: The climb limited take-off mass increases when a larger take-off flap setting is used.", + externalIds: [ + "BGS-320656", + "ATPLGS-107415", + "ATPLGS-107575", + "ATPLGS-114227", + "ATPLQ-322985", + "AVEXAM-56017", + "AVEXAM-90038", + "AVEXAM-13194", + "AVEXAM-80302", + "ATPLQ-326469", + "ATPLGS-625115", + "ATPLQ-329553", + "ATPLQ-329630", + "ATPLQ-321955", + "ATPLGS-107438", + "ATPLQ-324938", + "AVEXAM-26125", + ], + href: "/modules/atpl/questions/kA7q1I98", learningObjectives: [ - { - name: "010.01.03.01.01", - href: "/modules/[object Object]/learning-objectives/010.01.03.01.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["BGS-100656", "ATPLQ-103684"], - href: "/modules/[object Object]/questions/Q39QM81P5Y?variantId=U9SzIdTc", }, { + id: "IJKUxABS", questionBank: "atpl", - id: "Zr5RJ8OD", - questionId: "Q3XNN22GER", - variantId: "Zr5RJ8OD", - text: "The convention on offenses and certain acts committed on board aircraft, is called\n\n- :white_check_mark: the Convention of Tokyo.\n- :x: the Convention of Chicago.\n- :x: the Convention of Rome.\n- :x: the Convention of Paris.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: Fog can be supercooled and can also contain ice crystals.\n- :x: Mist and haze consist of water droplets.\n- :x: Fog and haze do not occur in the tropics.\n- :x: Mist and haze only differ by different values of visibility.", + externalIds: ["AVEXAM-69003", "ATPLQ-505558"], + href: "/modules/atpl/questions/IJKUxABS", learningObjectives: [ - { - name: "010.01.01.01.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.01.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLGS-103763"], - href: "/modules/[object Object]/questions/Q3XNN22GER?variantId=Zr5RJ8OD", }, { + id: "fklnIxec", questionBank: "atpl", - id: "0kg8NKOx", - questionId: "Q3XNYTOH0S", - variantId: "0kg8NKOx", - text: "If a state finds that it is impracticable to comply with an International Standard:\n\n- :white_check_mark: it shall give immediate notice to ICAO of the differences between its own practices and the International Standard.\n- :x: it shall give 45 days notice to ICAO of the differences between its own practices and the International Standard.\n- :x: it shall give 90 days notice to ICAO of the differences between its own practices and the International Standard.\n- :x: it shall give 60 days notice to ICAO of the differences between its own practices and the International Standard.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: The lower limit of a TMA shall be established at a height of at least 700 ft AGL.\n- :x: The upper limit of a CTR shall be established at a height of at least 3 000 ft AMSL.\n- :x: The lower limit of a CTA shall be established at a height of at least 1 500 ft AGL.\n- :x: The lower limit of an UIR may coincide with an IFR cruising level.", + externalIds: ["AVEXAM-21315", "ATPLGS-621989"], + href: "/modules/atpl/questions/fklnIxec", learningObjectives: [ - { - name: "010.01.01.03.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.03.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["AVEXAM-50042", "ATPLQ-108654"], - href: "/modules/[object Object]/questions/Q3XNYTOH0S?variantId=0kg8NKOx", }, { + id: "lapzBT5F", questionBank: "atpl", - id: "sbeyrHkr", - questionId: "Q3XNYTOH0S", - variantId: "sbeyrHkr", - text: "If a state finds that it is impracticable to comply with an International Standard:\n\n- :white_check_mark: It shall give immediate notice to ICAO of the differences\nbetween its own practices and the International Standard\n- :x: It shall give 90 days notice to ICAO of the differences\nbetween its own practices and the International\nStandard.\n- :x: It shall give 60 days notice to ICAO of the differences\nbetween its own practices and the International\nStandard.\n- :x: It shall give 45 days notice to ICAO of the differences\nbetween its own practices and the International\nStandard.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: Flap extension causes a reduction in stall speed and the maximum glide distance.\n- :x: Flap extension will increase (CL/CD)max thus causing a reduction in the minimum rate of descent.\n- :x: Flap extension has no influence on the minimum rate of descent, as only TAS has to be taken into account.\n- :x: Spoiler extension causes a reduction in stall speed and the minimum rate of descent, but increases the minimum descent angle.", + externalIds: ["ATPLGS-625875", "BGS-810432"], + href: "/modules/atpl/questions/lapzBT5F", learningObjectives: [ - { - name: "010.01.01.03.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.03.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["BGS-100531", "ATPLQ-108654", "AVEXAM-50042"], - href: "/modules/[object Object]/questions/Q3XNYTOH0S?variantId=sbeyrHkr", }, { + id: "BRYanzNr", questionBank: "atpl", - id: "XfHnUgu8", - questionId: "Q3YFO0WJ1I", - variantId: "XfHnUgu8", - text: "The ICAO Annex dealing with the registration and marking of aircraft is\n\n- :white_check_mark: Annex 7.\n- :x: Annex 11.\n- :x: Annex 14.\n- :x: Annex 6.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: Dynamic stability is possible only when the aeroplane is statically stable about the relevant axis.\n- :x: A dynamically stable aeroplane would be almost impossible to fly manually.\n- :x: Dynamic stability about the lateral axis implies that after being displaced from its original equilibrium condition, the aeroplane will return to that condition without oscillation.\n- :x: Static stability means that the aeroplane is also dynamically stable about the relevant axis.", + externalIds: ["ATPLQ-814951", "BGS-810648"], + href: "/modules/atpl/questions/BRYanzNr", learningObjectives: [ - { - name: "010.01.01.03.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.03.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLGS-103734"], - href: "/modules/[object Object]/questions/Q3YFO0WJ1I?variantId=XfHnUgu8", }, { + id: "1sAtIFk2", questionBank: "atpl", - id: "l5Xt6xav", - questionId: "Q3ZP858O4I", - variantId: "l5Xt6xav", - text: "When letters are used for the registration mark, combinations shall not be used which might be confused with the\n\n- :white_check_mark: five letter combinations used in the international code of signals.\n- :x: three letters combinations used in the international code of signals.\n- :x: letters used for an ICAO identification documents.\n- :x: four letter combinations beginning with Q.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: Problems in the personal relationships between crew members are likely to hamper the communication process.\n- :x: Inconsistent communication improves flight safety.\n- :x: Personal conflict that takes place prior to take-off should wait to be addressed until the end of the flight.\n- :x: There is no relation between inadequate communication and incidents or accidents.", + externalIds: ["ATPLQ-402286", "AVEXAM-66724", "ATPLGS-626752"], + href: "/modules/atpl/questions/1sAtIFk2", learningObjectives: [ - { - name: "010.01.01.02.04", - href: "/modules/[object Object]/learning-objectives/010.01.01.02.04", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLGS-103793"], - href: "/modules/[object Object]/questions/Q3ZP858O4I?variantId=l5Xt6xav", }, { + id: "8oFqQuHL", questionBank: "atpl", - id: "agc5I80m", - questionId: "Q42BT8RS09", - variantId: "agc5I80m", - text: "The Basic Regulation refers to a...\n\n- :white_check_mark: Binding rule adopted by the European Parliament and the Council, establishing the EASA.\n- :x: Binding rule adopted by the EASA, establishing Acceptable Means of Compliance.\n- :x: Non-Binding rule adopted by EASA, establishing implementing Acts and Delegated Acts.\n- :x: Non-Binding rule adopted by the European Commission, establishing aeronautical rules and basic standards.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: The Solar System consists of the Sun, planets and stars.\n- :x: The planets move around the Sun like all stars of the Solar System.\n- :x: The Earth is one of the planets which are all moving in elliptical orbit around the Sun.\n- :x: The Sun moves in an elliptical orbit around the Earth.", + externalIds: ["AVEXAM-10586"], + href: "/modules/atpl/questions/8oFqQuHL", learningObjectives: [ - { - name: "010.01.04.01.04", - href: "/modules/[object Object]/learning-objectives/010.01.04.01.04", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLQ-106124"], - href: "/modules/[object Object]/questions/Q42BT8RS09?variantId=agc5I80m", }, { + id: "BgHXCT7I", questionBank: "atpl", - id: "ffE6cBEY", - questionId: "Q4C6S9NWGH", - variantId: "ffE6cBEY", - text: "What are the three stages for an aircraft considered to be in a state of emergency?\n\n- :white_check_mark: Uncertainty, alert, and distress.\n- :x: Uncertainty, alert, distress and urgency.\n- :x: Uncertainty, urgency, and distress.\n- :x: Uncertainty, distress, and adversity.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: The climb limited take-off mass depends on pressure altitude and outer air temperature.\n- :x: The climb limited take-off mass will increase if the headwind component increases.\n- :x: The performance limited take-off mass is the highest of field length limited take-off mass climb limited take-off mass obstacle limited take-off mass.\n- :x: The climb limited take-off mass increases when a larger take-off flap setting is used.", + externalIds: [ + "ATPLQ-323595", + "ATPLGS-107415", + "ATPLGS-107575", + "ATPLGS-114227", + "BGS-320264", + "BGS-320248", + "BGS-320224", + "BGS-320656", + "AVEXAM-41520", + "AVEXAM-56017", + "AVEXAM-90038", + "AVEXAM-13194", + "AVEXAM-80302", + "ATPLGS-625115", + "ATPLGS-107438", + "AVEXAM-26125", + ], + href: "/modules/atpl/questions/BgHXCT7I", learningObjectives: [ - { - name: "010.01", - href: "/modules/[object Object]/learning-objectives/010.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLGS-119079", "ATPLQ-109350"], - href: "/modules/[object Object]/questions/Q4C6S9NWGH?variantId=ffE6cBEY", }, { + id: "Y5RD4ZDw", questionBank: "atpl", - id: "pKqD25YY", - questionId: "Q4DIWPPO56", - variantId: "pKqD25YY", - text: "When letters are used for registration mark, a combination that can be used and which should not be confused with other signals, would be for example\n\n- :white_check_mark: VOR\n- :x: TTT\n- :x: QNH\n- :x: SOS", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: During a phugoid altitude varies significantly, but during a short period oscillation it remains approximately constant.\n- :x: During both a phugoid and a short period oscillation altitude remains approximately constant.\n- :x: During both a phugoid and a short period oscillation altitude varies significantly.\n- :x: During a phugoid altitude remains approximately constant, but during a short period oscillation it varies significantly.", + externalIds: ["BGS-810669", "AVEXAM-17048"], + href: "/modules/atpl/questions/Y5RD4ZDw", learningObjectives: [ - { - name: "010.01.01.02.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.02.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLGS-103792"], - href: "/modules/[object Object]/questions/Q4DIWPPO56?variantId=pKqD25YY", }, { + id: "ZeQuarz6", questionBank: "atpl", - id: "wtA8d89r", - questionId: "Q55RQ6Y7VN", - variantId: "wtA8d89r", - text: "The regulatory material related to air safety and managed by EASA includes:\n\n- :white_check_mark: Hard and soft law\n- :x: Hard norms and soft implementing rules\n- :x: Hard rules and decrees\n- :x: High requirements and low requirements", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: The climb limited Take-off Mass depends on pressure altitude and outside air temperature.\n- :x: The climb limited Take-off Mass increases when a larger take-off flap setting is used.\n- :x: The performance limited Take-off Mass is the highest of:\ni) field length limited Take-off Mass;\nii) climb limited Take-off Mass;\niii) obstacle limited Take-off Mass.\n- :x: The climb limited Take-off Mass will increase if the headwind component increases.", + externalIds: [ + "AVEXAM-80302", + "ATPLGS-114227", + "BGS-320248", + "ATPLQ-322985", + "ATPLQ-329553", + "ATPLQ-321955", + "ATPLGS-107438", + ], + href: "/modules/atpl/questions/ZeQuarz6", learningObjectives: [ - { - name: "010.01.04.01.03", - href: "/modules/[object Object]/learning-objectives/010.01.04.01.03", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["BGS-101379", "ATPLQ-106857"], - href: "/modules/[object Object]/questions/Q55RQ6Y7VN?variantId=wtA8d89r", }, { + id: "FkDh9o1x", questionBank: "atpl", - id: "5qFz0bUI", - questionId: "Q5BMMU05JE", - variantId: "5qFz0bUI", - text: "A scheduled flight from Singapore to Thailand has the right to fly over Malaysia WITHOUT landing, and to land in Malaysia for non-traffic purposes. These rights are granted by the _____ Freedoms of the Air:\n\n- :white_check_mark: First and Second.\n- :x: Third and Fourth.\n- :x: First and Fifth.\n- :x: Second and Third.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: Obstacle limited takeoff mass\n- :x: Climb limited takeoff mass\n- :x: Tyre speed limited takeoff mass\n- :x: Field length limited takeoff mass", + externalIds: [ + "AVEXAM-13194", + "BGS-320215", + "ATPLQ-329010", + "ATPLGS-107455", + ], + href: "/modules/atpl/questions/FkDh9o1x", learningObjectives: [ - { - name: "010.01.01.02.03", - href: "/modules/[object Object]/learning-objectives/010.01.01.02.03", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "gid9ddHM", href: "/modules/atpl/questions/gid9ddHM" }, ], - externalIds: ["ATPLQ-102418"], - href: "/modules/[object Object]/questions/Q5BMMU05JE?variantId=5qFz0bUI", }, { + id: "gid9ddHM", questionBank: "atpl", - id: "76JDNUGB", - questionId: "Q5I3O2GYHX", - variantId: "76JDNUGB", - text: "State who on board an aircraft is primarily responsible for the operation of the aircraft in accordance with the Rules of the Air\n\n- :white_check_mark: The pilot-in-command.\n- :x: The operator.\n- :x: The senior cabin crew member.\n- :x: The safety manager.", - subjects: ["010"], + subjects: ["010", "032", "040", "050", "061", "081"], + text: "Which statement is correct?\n\n- :white_check_mark: Extension of flaps causes a reduction of the stall speed, the maximum glide distance also reduces.\n- :x: Extension of flaps has no influence on the minimum rate of descent, as only the TAS has to be taken into account.\n- :x: Extension of flaps will increase (CL/CD MAX), causing the minimum rate of descent to decrease.\n- :x: Spoiler extension decreases the stall speed and the minimum rate of descent, but increases the minimum descent angle.", + externalIds: ["AVEXAM-41717"], + href: "/modules/atpl/questions/gid9ddHM", learningObjectives: [ - { - name: "010.01.02.03.01", - href: "/modules/[object Object]/learning-objectives/010.01.02.03.01", - }, + { id: "010.07", href: "/modules/atpl/learning-objectives/010.07" }, + { id: "032.04", href: "/modules/atpl/learning-objectives/032.04" }, + { id: "040.02", href: "/modules/atpl/learning-objectives/040.02" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.07", href: "/modules/atpl/learning-objectives/050.07" }, + { id: "061.01", href: "/modules/atpl/learning-objectives/061.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.04", href: "/modules/atpl/learning-objectives/081.04" }, + ], + relatedQuestions: [ + { id: "K7HuwYXz", href: "/modules/atpl/questions/K7HuwYXz" }, + { id: "ezh4CuEv", href: "/modules/atpl/questions/ezh4CuEv" }, + { id: "Ax7FFF3g", href: "/modules/atpl/questions/Ax7FFF3g" }, + { id: "SxFJ91nN", href: "/modules/atpl/questions/SxFJ91nN" }, + { id: "uV7RVfAr", href: "/modules/atpl/questions/uV7RVfAr" }, + { id: "2qQjMgG1", href: "/modules/atpl/questions/2qQjMgG1" }, + { id: "UrGzEwAj", href: "/modules/atpl/questions/UrGzEwAj" }, + { id: "kA7q1I98", href: "/modules/atpl/questions/kA7q1I98" }, + { id: "IJKUxABS", href: "/modules/atpl/questions/IJKUxABS" }, + { id: "fklnIxec", href: "/modules/atpl/questions/fklnIxec" }, + { id: "lapzBT5F", href: "/modules/atpl/questions/lapzBT5F" }, + { id: "BRYanzNr", href: "/modules/atpl/questions/BRYanzNr" }, + { id: "1sAtIFk2", href: "/modules/atpl/questions/1sAtIFk2" }, + { id: "8oFqQuHL", href: "/modules/atpl/questions/8oFqQuHL" }, + { id: "BgHXCT7I", href: "/modules/atpl/questions/BgHXCT7I" }, + { id: "Y5RD4ZDw", href: "/modules/atpl/questions/Y5RD4ZDw" }, + { id: "ZeQuarz6", href: "/modules/atpl/questions/ZeQuarz6" }, + { id: "FkDh9o1x", href: "/modules/atpl/questions/FkDh9o1x" }, ], - externalIds: ["ATPLGS-103883"], - href: "/modules/[object Object]/questions/Q5I3O2GYHX?variantId=76JDNUGB", }, { + id: "qAHZS9GQ", questionBank: "atpl", - id: "iKVZT0rC", - questionId: "Q5TZDYZHXG", - variantId: "iKVZT0rC", - text: "The International Civil Aviation Organisation (ICAO) establishes:\n\n- :white_check_mark: Standards and recommended international practices for\ncontracting member states.\n- :x: Aeronautical standards adopted by all states.\n- :x: Proposals for aeronautical regulations in the form of 18\nannexes.\n- :x: Standards and recommended practices applied without\nexception by all states, signatory to the Chicago\nconvention.", - subjects: ["010"], + subjects: ["010", "040", "050", "070", "081"], + text: "Which of the following statements is true?\n\n- :white_check_mark: Mist is a reduction of visibility due to the presence of (liquid) water droplets in the air.\n- :x: Standing waves are always accompanied by severe turbulence.\n- :x: Airframe icing cannot occur in clear air.\n- :x: An isotach is a line joining all points of equal windshear.", + externalIds: ["BGS-501393"], + href: "/modules/atpl/questions/qAHZS9GQ", learningObjectives: [ - { - name: "010.01.01.03.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.03.01", - }, + { id: "010.08", href: "/modules/atpl/learning-objectives/010.08" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.01", href: "/modules/atpl/learning-objectives/050.01" }, + { id: "050.02", href: "/modules/atpl/learning-objectives/050.02" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.08", href: "/modules/atpl/learning-objectives/050.08" }, + { id: "050.10", href: "/modules/atpl/learning-objectives/050.10" }, + { id: "071.01", href: "/modules/atpl/learning-objectives/071.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.06", href: "/modules/atpl/learning-objectives/081.06" }, ], - externalIds: [ - "BGS-100006", - "ATPLQ-106130", - "AVEXAM-28471", - "ATPLGS-118694", - "ATPLGS-103719", + relatedQuestions: [ + { id: "0lrHJ0lU", href: "/modules/atpl/questions/0lrHJ0lU" }, + { id: "L4p38s2q", href: "/modules/atpl/questions/L4p38s2q" }, + { id: "HDxA6ffA", href: "/modules/atpl/questions/HDxA6ffA" }, + { id: "Ks1U1MM0", href: "/modules/atpl/questions/Ks1U1MM0" }, + { id: "KHg6zlxZ", href: "/modules/atpl/questions/KHg6zlxZ" }, + { id: "MgOxggSM", href: "/modules/atpl/questions/MgOxggSM" }, + { id: "fNBcOqtM", href: "/modules/atpl/questions/fNBcOqtM" }, + { id: "rMK91GJp", href: "/modules/atpl/questions/rMK91GJp" }, + { id: "KQPeOPbH", href: "/modules/atpl/questions/KQPeOPbH" }, + { id: "ufkqwFph", href: "/modules/atpl/questions/ufkqwFph" }, + { id: "PFzI3zxJ", href: "/modules/atpl/questions/PFzI3zxJ" }, + { id: "jq6VSU7z", href: "/modules/atpl/questions/jq6VSU7z" }, + { id: "dgWvnRpl", href: "/modules/atpl/questions/dgWvnRpl" }, ], - href: "/modules/[object Object]/questions/Q5TZDYZHXG?variantId=iKVZT0rC", }, { + id: "L4p38s2q", questionBank: "atpl", - id: "stZ73I8h", - questionId: "Q64Z2CM3AC", - variantId: "stZ73I8h", - text: "Contracting States shall not require the authorized agent or pilot-in-command to deliver to the public authorities concerned, before departure of the aircraft, more than some copies of General Declaration, Cargo Manifest and stores list\nThe numbers of the copies are\n\n- :white_check_mark: 3 of each.\n- :x: 2 copies of General Declaration and of Cargo Manifest and of a stores list.\n- :x: 2 of each.\n- :x: 2 copies of General Declarations and Cargo Manifest and one copy of a simple stores list.", - subjects: ["010"], + subjects: ["010", "040", "050", "070", "081"], + text: "Which of the following statements is true?\n\n- :white_check_mark: Stressors accumulate thus increasing the likelihood to exhaustion.\n- :x: Stressors are independent from each other.\n- :x: Stress should always be avoided under any circumstances.\n- :x: People are capable of living without stress.", + externalIds: ["AVEXAM-80839"], + href: "/modules/atpl/questions/L4p38s2q", learningObjectives: [ - { - name: "010.01.01.02.04", - href: "/modules/[object Object]/learning-objectives/010.01.01.02.04", - }, + { id: "010.08", href: "/modules/atpl/learning-objectives/010.08" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.01", href: "/modules/atpl/learning-objectives/050.01" }, + { id: "050.02", href: "/modules/atpl/learning-objectives/050.02" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.08", href: "/modules/atpl/learning-objectives/050.08" }, + { id: "050.10", href: "/modules/atpl/learning-objectives/050.10" }, + { id: "071.01", href: "/modules/atpl/learning-objectives/071.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.06", href: "/modules/atpl/learning-objectives/081.06" }, + ], + relatedQuestions: [ + { id: "qAHZS9GQ", href: "/modules/atpl/questions/qAHZS9GQ" }, + { id: "0lrHJ0lU", href: "/modules/atpl/questions/0lrHJ0lU" }, + { id: "HDxA6ffA", href: "/modules/atpl/questions/HDxA6ffA" }, + { id: "Ks1U1MM0", href: "/modules/atpl/questions/Ks1U1MM0" }, + { id: "KHg6zlxZ", href: "/modules/atpl/questions/KHg6zlxZ" }, + { id: "MgOxggSM", href: "/modules/atpl/questions/MgOxggSM" }, + { id: "fNBcOqtM", href: "/modules/atpl/questions/fNBcOqtM" }, + { id: "rMK91GJp", href: "/modules/atpl/questions/rMK91GJp" }, + { id: "KQPeOPbH", href: "/modules/atpl/questions/KQPeOPbH" }, + { id: "ufkqwFph", href: "/modules/atpl/questions/ufkqwFph" }, + { id: "PFzI3zxJ", href: "/modules/atpl/questions/PFzI3zxJ" }, + { id: "jq6VSU7z", href: "/modules/atpl/questions/jq6VSU7z" }, + { id: "dgWvnRpl", href: "/modules/atpl/questions/dgWvnRpl" }, ], - externalIds: ["ATPLGS-104676", "AVEXAM-96674"], - href: "/modules/[object Object]/questions/Q64Z2CM3AC?variantId=stZ73I8h", }, { + id: "HDxA6ffA", questionBank: "atpl", - id: "icKGE46Q", - questionId: "Q6C0N5RDTX", - variantId: "icKGE46Q", - text: "What is the difference between hard and soft law?\n\n- :white_check_mark: Hard laws are legal obligations while soft laws only provide more details about the hard laws.\n- :x: Hard laws can contain documents such as certification specifications and guidance material, while soft laws contain regulations and implementing rules.\n- :x: Soft laws are the latest features fly-by-wire aircraft need to be fitted with, whereas hard laws refer mainly to mechanically driven flight controls.\n- :x: Hard laws are applied by force to the operators whereas it is a choice to comply with soft laws or not.", - subjects: ["010"], + subjects: ["010", "040", "050", "070", "081"], + text: "Which of the following statements is true?\n\n- :white_check_mark: QNH can be equal to QFE.\n- :x: QNH is always equal to QFE.\n- :x: QNH is always higher than QFE.\n- :x: QNH is always lower than QFE.", + externalIds: ["BGS-500978", "AVEXAM-34930"], + href: "/modules/atpl/questions/HDxA6ffA", learningObjectives: [ - { - name: "010.01.04.01.03", - href: "/modules/[object Object]/learning-objectives/010.01.04.01.03", - }, + { id: "010.08", href: "/modules/atpl/learning-objectives/010.08" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.01", href: "/modules/atpl/learning-objectives/050.01" }, + { id: "050.02", href: "/modules/atpl/learning-objectives/050.02" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.08", href: "/modules/atpl/learning-objectives/050.08" }, + { id: "050.10", href: "/modules/atpl/learning-objectives/050.10" }, + { id: "071.01", href: "/modules/atpl/learning-objectives/071.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.06", href: "/modules/atpl/learning-objectives/081.06" }, + ], + relatedQuestions: [ + { id: "qAHZS9GQ", href: "/modules/atpl/questions/qAHZS9GQ" }, + { id: "0lrHJ0lU", href: "/modules/atpl/questions/0lrHJ0lU" }, + { id: "L4p38s2q", href: "/modules/atpl/questions/L4p38s2q" }, + { id: "Ks1U1MM0", href: "/modules/atpl/questions/Ks1U1MM0" }, + { id: "KHg6zlxZ", href: "/modules/atpl/questions/KHg6zlxZ" }, + { id: "MgOxggSM", href: "/modules/atpl/questions/MgOxggSM" }, + { id: "fNBcOqtM", href: "/modules/atpl/questions/fNBcOqtM" }, + { id: "rMK91GJp", href: "/modules/atpl/questions/rMK91GJp" }, + { id: "KQPeOPbH", href: "/modules/atpl/questions/KQPeOPbH" }, + { id: "ufkqwFph", href: "/modules/atpl/questions/ufkqwFph" }, + { id: "PFzI3zxJ", href: "/modules/atpl/questions/PFzI3zxJ" }, + { id: "jq6VSU7z", href: "/modules/atpl/questions/jq6VSU7z" }, + { id: "dgWvnRpl", href: "/modules/atpl/questions/dgWvnRpl" }, ], - externalIds: ["AVEXAM-43929"], - href: "/modules/[object Object]/questions/Q6C0N5RDTX?variantId=icKGE46Q", }, { + id: "Ks1U1MM0", questionBank: "atpl", - id: "LVbtDSyB", - questionId: "Q6UYEVTVQ4", - variantId: "LVbtDSyB", - text: "The minimum specifications for a crew license to have international validity is contained in:\n\n- :white_check_mark: Annex 1.\n- :x: Annex 2.\n- :x: Annex 10.\n- :x: Annex 4.", - subjects: ["010"], + subjects: ["010", "040", "050", "070", "081"], + text: "Which of the following statements is true?\n\n- :white_check_mark: Aircraft Basic Mass tends to increase slightly over\ntime\n- :x: Aircraft mass does not affect aircraft\nperformance\n- :x: Aircraft Basic Mass tends to decrease slightly over\ntime\n- :x: Aircraft Basic Mass is always the same", + externalIds: ["BGS-991461"], + href: "/modules/atpl/questions/Ks1U1MM0", learningObjectives: [ - { - name: "010.01.01.02.01", - href: "/modules/[object Object]/learning-objectives/010.01.01.02.01", - }, + { id: "010.08", href: "/modules/atpl/learning-objectives/010.08" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.01", href: "/modules/atpl/learning-objectives/050.01" }, + { id: "050.02", href: "/modules/atpl/learning-objectives/050.02" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.08", href: "/modules/atpl/learning-objectives/050.08" }, + { id: "050.10", href: "/modules/atpl/learning-objectives/050.10" }, + { id: "071.01", href: "/modules/atpl/learning-objectives/071.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.06", href: "/modules/atpl/learning-objectives/081.06" }, + ], + relatedQuestions: [ + { id: "qAHZS9GQ", href: "/modules/atpl/questions/qAHZS9GQ" }, + { id: "0lrHJ0lU", href: "/modules/atpl/questions/0lrHJ0lU" }, + { id: "L4p38s2q", href: "/modules/atpl/questions/L4p38s2q" }, + { id: "HDxA6ffA", href: "/modules/atpl/questions/HDxA6ffA" }, + { id: "KHg6zlxZ", href: "/modules/atpl/questions/KHg6zlxZ" }, + { id: "MgOxggSM", href: "/modules/atpl/questions/MgOxggSM" }, + { id: "fNBcOqtM", href: "/modules/atpl/questions/fNBcOqtM" }, + { id: "rMK91GJp", href: "/modules/atpl/questions/rMK91GJp" }, + { id: "KQPeOPbH", href: "/modules/atpl/questions/KQPeOPbH" }, + { id: "ufkqwFph", href: "/modules/atpl/questions/ufkqwFph" }, + { id: "PFzI3zxJ", href: "/modules/atpl/questions/PFzI3zxJ" }, + { id: "jq6VSU7z", href: "/modules/atpl/questions/jq6VSU7z" }, + { id: "dgWvnRpl", href: "/modules/atpl/questions/dgWvnRpl" }, ], - externalIds: ["ATPLQ-107139"], - href: "/modules/[object Object]/questions/Q6UYEVTVQ4?variantId=LVbtDSyB", }, { + id: "KHg6zlxZ", questionBank: "atpl", - id: "Z9dBRmGm", - questionId: "Q74ICEQ3V4", - variantId: "Z9dBRmGm", - text: "International Air Services Transit Agreement – The First Freedom of the Air defined in the International Air Services Transit Agreement is the..\n\n- :white_check_mark: right to overfly another State without landing.\n- :x: privilege to operate a commercial flight with passengers on board between two States.\n- :x: right to carry passengers from the State in which the aircraft is registered an other State.\n- :x: right to land for a technical stop in another State.", - subjects: ["010"], + subjects: ["010", "040", "050", "070", "081"], + text: "Which of the following statements is true?\n\n- :white_check_mark: VRA must be less than or equal to VB\n- :x: VRA and VB are the same thing\n- :x: VRA must be greater than VB\n- :x: VRA must be less than VB", + externalIds: ["BGS-991467"], + href: "/modules/atpl/questions/KHg6zlxZ", learningObjectives: [ - { - name: "010.01.01.02.03", - href: "/modules/[object Object]/learning-objectives/010.01.01.02.03", - }, + { id: "010.08", href: "/modules/atpl/learning-objectives/010.08" }, + { id: "040.03", href: "/modules/atpl/learning-objectives/040.03" }, + { id: "050.01", href: "/modules/atpl/learning-objectives/050.01" }, + { id: "050.02", href: "/modules/atpl/learning-objectives/050.02" }, + { id: "050.04", href: "/modules/atpl/learning-objectives/050.04" }, + { id: "050.08", href: "/modules/atpl/learning-objectives/050.08" }, + { id: "050.10", href: "/modules/atpl/learning-objectives/050.10" }, + { id: "071.01", href: "/modules/atpl/learning-objectives/071.01" }, + { id: "081.01", href: "/modules/atpl/learning-objectives/081.01" }, + { id: "081.06", href: "/modules/atpl/learning-objectives/081.06" }, + ], + relatedQuestions: [ + { id: "qAHZS9GQ", href: "/modules/atpl/questions/qAHZS9GQ" }, + { id: "0lrHJ0lU", href: "/modules/atpl/questions/0lrHJ0lU" }, + { id: "L4p38s2q", href: "/modules/atpl/questions/L4p38s2q" }, + { id: "HDxA6ffA", href: "/modules/atpl/questions/HDxA6ffA" }, + { id: "Ks1U1MM0", href: "/modules/atpl/questions/Ks1U1MM0" }, + { id: "MgOxggSM", href: "/modules/atpl/questions/MgOxggSM" }, + { id: "fNBcOqtM", href: "/modules/atpl/questions/fNBcOqtM" }, + { id: "rMK91GJp", href: "/modules/atpl/questions/rMK91GJp" }, + { id: "KQPeOPbH", href: "/modules/atpl/questions/KQPeOPbH" }, + { id: "ufkqwFph", href: "/modules/atpl/questions/ufkqwFph" }, + { id: "PFzI3zxJ", href: "/modules/atpl/questions/PFzI3zxJ" }, + { id: "jq6VSU7z", href: "/modules/atpl/questions/jq6VSU7z" }, + { id: "dgWvnRpl", href: "/modules/atpl/questions/dgWvnRpl" }, ], - externalIds: ["ATPLQ-108858", "ATPLGS-127383", "ATPLGS-118698"], - href: "/modules/[object Object]/questions/Q74ICEQ3V4?variantId=Z9dBRmGm", }, ], - totalResults: 30345, + totalResults: 3693, nextCursor: 24, }; diff --git a/libs/react/containers/src/tests/__mocks__/test-progress.mock.ts b/libs/react/containers/src/tests/__mocks__/test-progress.mock.ts index a5b9e206f..863916ea1 100644 --- a/libs/react/containers/src/tests/__mocks__/test-progress.mock.ts +++ b/libs/react/containers/src/tests/__mocks__/test-progress.mock.ts @@ -17,7 +17,6 @@ export const testProgressMock: { { questionId: "gXkMCwJo", templateId: "48roz", - variantId: "opw5a", seed: "hHjzsdzu", type: "multiple-choice", question: @@ -51,7 +50,6 @@ export const testProgressMock: { { questionId: "0mVouNJs", templateId: "l0sw2", - variantId: "sq2mv", seed: "JG1Qj6xH", type: "multiple-choice", question: @@ -77,7 +75,6 @@ export const testProgressMock: { { questionId: "5Z5ykVSI", templateId: "wlmtb", - variantId: "4zsre", seed: "qH1HoPwh", type: "multiple-choice", question: @@ -111,7 +108,6 @@ export const testProgressMock: { { questionId: "Op5ggLVw", templateId: "de4vt", - variantId: "xpgftf", seed: "xeYfzOE5", type: "multiple-choice", question: @@ -145,7 +141,6 @@ export const testProgressMock: { { questionId: "LMbQdpSd", templateId: "hxiga", - variantId: "yx8apf", seed: "A0RWfeEw", type: "multiple-choice", question: @@ -179,7 +174,6 @@ export const testProgressMock: { { questionId: "EfVO2eVo", templateId: "crlab", - variantId: "8m044", seed: "YlHvqz5K", type: "multiple-choice", question: @@ -205,7 +199,6 @@ export const testProgressMock: { { questionId: "SyFR5KnK", templateId: "02rxd", - variantId: "dd8l", seed: "NgkYwuni", type: "multiple-choice", question: @@ -239,7 +232,6 @@ export const testProgressMock: { { questionId: "n3yK9wrd", templateId: "gzp14", - variantId: "j0212j", seed: "9H9zYRzM", type: "multiple-choice", question: @@ -273,7 +265,6 @@ export const testProgressMock: { { questionId: "yExSK91U", templateId: "65w58", - variantId: "x9bsi", seed: "Bs7aNYD9", type: "multiple-choice", question: @@ -299,7 +290,6 @@ export const testProgressMock: { { questionId: "3ZUqaghv", templateId: "4znt2", - variantId: "nf2wlf", seed: "gwjNYeSq", type: "multiple-choice", question: "How can the Fire Warning Bell be silenced?", @@ -332,7 +322,6 @@ export const testProgressMock: { { questionId: "14eQokIF", templateId: "u97g9", - variantId: "ox6ef", seed: "q6uD9Ead", type: "multiple-choice", question: @@ -366,7 +355,6 @@ export const testProgressMock: { { questionId: "LDOhQKKv", templateId: "d4tte", - variantId: "vb8ls", seed: "ZjbMdcNY", type: "multiple-choice", question: "What will cause the STBY RUDDER ON light to illuminate?", @@ -399,7 +387,6 @@ export const testProgressMock: { { questionId: "EPT0QE7P", templateId: "jipos", - variantId: "fmbkd", seed: "RcpXb2Ai", type: "multiple-choice", question: @@ -433,7 +420,6 @@ export const testProgressMock: { { questionId: "rKpxIC1X", templateId: "l3ecl", - variantId: "o9eeu", seed: "lBdn22w2", type: "multiple-choice", question: @@ -459,7 +445,6 @@ export const testProgressMock: { { questionId: "WwCS7wD0", templateId: "cuipf", - variantId: "9cautg", seed: "Fw8OyDuR", type: "multiple-choice", question: @@ -493,7 +478,6 @@ export const testProgressMock: { { questionId: "pR6hs0Mo", templateId: "u4itx", - variantId: "b0x43h", seed: "RHecQQ7W", type: "multiple-choice", question: @@ -527,7 +511,6 @@ export const testProgressMock: { { questionId: "9zU3VSDy", templateId: "lt4x1", - variantId: "b5tqqk", seed: "T3NIqJQp", type: "multiple-choice", question: @@ -553,7 +536,6 @@ export const testProgressMock: { { questionId: "LLmlDhVJ", templateId: "ios1q", - variantId: "abfnk", seed: "9xT4Ziw2", type: "multiple-choice", question: @@ -587,7 +569,6 @@ export const testProgressMock: { { questionId: "sRjqQ5yK", templateId: "3xk9e", - variantId: "ua5ptk", seed: "Y2NEAsZI", type: "multiple-choice", question: @@ -621,7 +602,6 @@ export const testProgressMock: { { questionId: "spCbCO9k", templateId: "htx1n", - variantId: "9my84", seed: "TO1NlUaT", type: "multiple-choice", question: @@ -655,7 +635,6 @@ export const testProgressMock: { { questionId: "mzvposAY", templateId: "9gdph", - variantId: "m1sd1f", seed: "fJyqYVrm", type: "multiple-choice", question: @@ -682,7 +661,6 @@ export const testProgressMock: { { questionId: "5onSXuek", templateId: "0kr6kl", - variantId: "0n377l", seed: "KslX9eKO", type: "multiple-choice", question: @@ -708,7 +686,6 @@ export const testProgressMock: { { questionId: "QHnqtVQy", templateId: "4p3hh", - variantId: "qzgymj", seed: "RqmzcMU7", type: "multiple-choice", question: @@ -742,7 +719,6 @@ export const testProgressMock: { { questionId: "qmIV7IiN", templateId: "ocogh", - variantId: "um1xt", seed: "gMGtx4g8", type: "multiple-choice", question: @@ -776,7 +752,6 @@ export const testProgressMock: { { questionId: "pZhVy1E7", templateId: "tyqsp", - variantId: "10ig9", seed: "cynGMG5l", type: "multiple-choice", question: @@ -810,7 +785,6 @@ export const testProgressMock: { { questionId: "FlCAH5Dz", templateId: "aatbl", - variantId: "uwbq4", seed: "x9nahhB2", type: "multiple-choice", question: @@ -844,7 +818,6 @@ export const testProgressMock: { { questionId: "sDE782Za", templateId: "aehpc", - variantId: "s6dz6", seed: "d6ieM5mL", type: "multiple-choice", question: @@ -870,7 +843,6 @@ export const testProgressMock: { { questionId: "Y1ENlliH", templateId: "ke234", - variantId: "xfli3", seed: "1YqBxx0y", type: "multiple-choice", question: @@ -896,7 +868,6 @@ export const testProgressMock: { { questionId: "kvWhMVNC", templateId: "cwwdo", - variantId: "9zplq", seed: "jjGhcnTa", type: "multiple-choice", question: @@ -922,7 +893,6 @@ export const testProgressMock: { { questionId: "DSXfaNhe", templateId: "5upew", - variantId: "6ddec", seed: "ZopA8dnv", type: "multiple-choice", question: @@ -956,7 +926,6 @@ export const testProgressMock: { { questionId: "qss5OqfG", templateId: "ugl9l", - variantId: "bi3qf", seed: "Qc9gdFCR", type: "multiple-choice", question: "Why do we check that FLARE mode is armed at 500 feet RA?", @@ -989,7 +958,6 @@ export const testProgressMock: { { questionId: "Ri20uUbk", templateId: "hga0uj", - variantId: "dggv4", seed: "IaSjBZ70", type: "multiple-choice", question: @@ -1023,7 +991,6 @@ export const testProgressMock: { { questionId: "YKgN7QBZ", templateId: "x42t3f", - variantId: "tkjgd", seed: "7fey1Cww", type: "multiple-choice", question: @@ -1057,7 +1024,6 @@ export const testProgressMock: { { questionId: "smBi5Jr1", templateId: "v3mqb", - variantId: "kn7d9", seed: "kp0qlki4", type: "multiple-choice", question: @@ -1091,7 +1057,6 @@ export const testProgressMock: { { questionId: "kGX231nd", templateId: "sm1a1", - variantId: "ckmye", seed: "WYXKgYiI", type: "multiple-choice", question: @@ -1125,7 +1090,6 @@ export const testProgressMock: { { questionId: "MNxJ2ZOX", templateId: "pvpep", - variantId: "egak4", seed: "qh7RDV1w", type: "multiple-choice", question: @@ -1151,7 +1115,6 @@ export const testProgressMock: { { questionId: "JhhLp18d", templateId: "mimbm", - variantId: "pgvwc", seed: "dHlJ6yzm", type: "multiple-choice", question: "What is the result if one pack fails in-flight?", @@ -1184,7 +1147,6 @@ export const testProgressMock: { { questionId: "pZAOnZX7", templateId: "ti9yn", - variantId: "qle8m", seed: "y1GaMiSP", type: "multiple-choice", question: @@ -1218,7 +1180,6 @@ export const testProgressMock: { { questionId: "ne81CUdG", templateId: "4twgn", - variantId: "ddn9z", seed: "FzocHZq8", type: "multiple-choice", question: @@ -1252,7 +1213,6 @@ export const testProgressMock: { { questionId: "wm8XIQYa", templateId: "h65mkj", - variantId: "0l3gkg", seed: "QxWkVkOP", type: "multiple-choice", question: "How is fuel heated prior to reaching the engine?", @@ -1300,7 +1260,6 @@ export const testProgressMock: { { questionId: "4gHBJjoU", templateId: "np98dg", - variantId: "zpn3s", seed: "mFuSZSVz", type: "multiple-choice", question: @@ -1334,7 +1293,6 @@ export const testProgressMock: { { questionId: "a4tAgJIi", templateId: "d7qw6", - variantId: "527ux", seed: "HpBDzGO5", type: "multiple-choice", question: @@ -1368,7 +1326,6 @@ export const testProgressMock: { { questionId: "HZNmiSyI", templateId: "8tjxg", - variantId: "brr2h", seed: "nIeztBVw", type: "multiple-choice", question: @@ -1394,7 +1351,6 @@ export const testProgressMock: { { questionId: "7iOTt2b0", templateId: "qo3yz", - variantId: "obags", seed: "C0tsnjjt", type: "multiple-choice", question: @@ -1428,7 +1384,6 @@ export const testProgressMock: { { questionId: "sTi1PFFl", templateId: "1wc1d", - variantId: "p0n3ij", seed: "okMunBq7", type: "multiple-choice", question: @@ -1467,7 +1422,6 @@ export const testProgressMock: { { questionId: "b3W12DS8", templateId: "8w2u1", - variantId: "1ygmh", seed: "lMRpNugd", type: "multiple-choice", question: @@ -1493,7 +1447,6 @@ export const testProgressMock: { { questionId: "cZ1s3sab", templateId: "kkksb", - variantId: "fg83b", seed: "oysh53fj", type: "multiple-choice", question: @@ -1528,7 +1481,6 @@ export const testProgressMock: { { questionId: "ZzoJqh2P", templateId: "6dzq1k", - variantId: "k7n04i", seed: "vyEtHeMC", type: "multiple-choice", question: @@ -1554,7 +1506,6 @@ export const testProgressMock: { { questionId: "EuXlhHD7", templateId: "5oxu3", - variantId: "yqw1u", seed: "7Z99UQ4k", type: "multiple-choice", question: @@ -1588,7 +1539,6 @@ export const testProgressMock: { { questionId: "UTvDR4Im", templateId: "hporp", - variantId: "6t3y5", seed: "0625DaqT", type: "multiple-choice", question: "The A/T is controlled by FCC A only.", @@ -1613,7 +1563,6 @@ export const testProgressMock: { { questionId: "T0OV4UQr", templateId: "1hjv6", - variantId: "o2oyk", seed: "yQH2im8K", type: "multiple-choice", question: @@ -1647,7 +1596,6 @@ export const testProgressMock: { { questionId: "ktUbiHTk", templateId: "3xk9e", - variantId: "ua5ptk", seed: "FloT4PAt", type: "multiple-choice", question: @@ -1681,7 +1629,6 @@ export const testProgressMock: { { questionId: "aKPmOIyT", templateId: "jp1sw", - variantId: "aa8qc", seed: "nNDvYWsz", type: "multiple-choice", question: "Where is the potable water contents indicator located?", @@ -1714,7 +1661,6 @@ export const testProgressMock: { { questionId: "RxilgEto", templateId: "4d3j1", - variantId: "a36wg", seed: "ozleKN1G", type: "multiple-choice", question: "How many fuel measuring sticks are installed?", @@ -1747,7 +1693,6 @@ export const testProgressMock: { { questionId: "sEzbuJL7", templateId: "i2hf", - variantId: "c0qw7", seed: "9Nga8ePh", type: "multiple-choice", question: @@ -1781,7 +1726,6 @@ export const testProgressMock: { { questionId: "CiV1fdBw", templateId: "d9okg", - variantId: "cmhnj", seed: "SMtMse0N", type: "multiple-choice", question: @@ -1816,7 +1760,6 @@ export const testProgressMock: { { questionId: "YMVFuNEe", templateId: "up3v9", - variantId: "f1n1e", seed: "6IpxUMpK", type: "multiple-choice", question: @@ -1842,7 +1785,6 @@ export const testProgressMock: { { questionId: "BFG1OOF4", templateId: "2hmmt", - variantId: "iz4jv", seed: "Q7eX33jw", type: "multiple-choice", question: "What is the primary function of the recirculation fans?", @@ -1875,7 +1817,6 @@ export const testProgressMock: { { questionId: "J3AnozMo", templateId: "9jghi", - variantId: "as0oz", seed: "B5A0fAsO", type: "multiple-choice", question: "The purpose of the landing gear transfer unit is to:", @@ -1909,7 +1850,6 @@ export const testProgressMock: { { questionId: "e4a6OWID", templateId: "ndk37", - variantId: "h7o24", seed: "arUEVJ43", type: "multiple-choice", question: "What will cause the A/T to disengage?", @@ -1957,7 +1897,6 @@ export const testProgressMock: { { questionId: "WcKocJ0R", templateId: "1yzxe", - variantId: "qk28k", seed: "5M1xhQ4U", type: "multiple-choice", question: "What is the B737-800 wingspan when fitted with Winglets?", @@ -1991,7 +1930,6 @@ export const testProgressMock: { { questionId: "2mLn79lq", templateId: "tyqsp", - variantId: "10ig9", seed: "Fx5stVRq", type: "multiple-choice", question: @@ -2026,7 +1964,6 @@ export const testProgressMock: { { questionId: "BC3pTXWW", templateId: "sikec", - variantId: "40n9qj", seed: "W6vAaG5O", type: "multiple-choice", question: @@ -2053,7 +1990,6 @@ export const testProgressMock: { { questionId: "y9vyVlku", templateId: "zrgljl", - variantId: "f0qdd", seed: "WOv80DHc", type: "multiple-choice", question: @@ -2088,7 +2024,6 @@ export const testProgressMock: { { questionId: "PHJq2fYz", templateId: "u67l4", - variantId: "ywi5j", seed: "rvTKF4f5", type: "multiple-choice", question: @@ -2115,7 +2050,6 @@ export const testProgressMock: { { questionId: "SfJphtOb", templateId: "k6d9k", - variantId: "fpnkb", seed: "ud9kgE3e", type: "multiple-choice", question: @@ -2150,7 +2084,6 @@ export const testProgressMock: { { questionId: "TY6fzsel", templateId: "eh228", - variantId: "86b5oj", seed: "mPOdlbIk", type: "multiple-choice", question: @@ -2185,7 +2118,6 @@ export const testProgressMock: { { questionId: "EPge4XOI", templateId: "q1zqn", - variantId: "q973q", seed: "dmzqn3cb", type: "multiple-choice", question: @@ -2220,7 +2152,6 @@ export const testProgressMock: { { questionId: "YEyxx1Qv", templateId: "sbbox", - variantId: "ocjr6", seed: "LW3XeX1m", type: "multiple-choice", question: @@ -2247,7 +2178,6 @@ export const testProgressMock: { { questionId: "wMU8IXdh", templateId: "z3tbo", - variantId: "zbqez", seed: "L21pzcgh", type: "multiple-choice", question: @@ -2282,7 +2212,6 @@ export const testProgressMock: { { questionId: "jIgpZslc", templateId: "afuw6", - variantId: "t48yd", seed: "UG5vjhIo", type: "multiple-choice", question: "Which bus powers the right igniter plug?", @@ -2316,7 +2245,6 @@ export const testProgressMock: { { questionId: "5IXAWGxd", templateId: "xnuoj", - variantId: "r93g2", seed: "9pbklSxM", type: "multiple-choice", question: @@ -2351,7 +2279,6 @@ export const testProgressMock: { { questionId: "vGVv9yRc", templateId: "5mccy", - variantId: "yrc3x", seed: "J3rV0UPw", type: "multiple-choice", question: "On landing, when do the ground spoilers extend?", @@ -2385,7 +2312,6 @@ export const testProgressMock: { { questionId: "BrgGThAs", templateId: "cur39", - variantId: "vo3r9", seed: "XBb6WymW", type: "multiple-choice", question: @@ -2412,7 +2338,6 @@ export const testProgressMock: { { questionId: "eG72Xly7", templateId: "a35lah", - variantId: "laobo", seed: "8RvpSdQj", type: "multiple-choice", question: @@ -2447,7 +2372,6 @@ export const testProgressMock: { { questionId: "kMEV5ZwR", templateId: "hc0ll", - variantId: "x332s", seed: "cMzDsZx5", type: "multiple-choice", question: @@ -2482,7 +2406,6 @@ export const testProgressMock: { { questionId: "hREBHC5V", templateId: "v3mqb", - variantId: "kn7d9", seed: "SODlEnRq", type: "multiple-choice", question: @@ -2517,7 +2440,6 @@ export const testProgressMock: { { questionId: "GjLiBTaR", templateId: "zmlui", - variantId: "wth6c", seed: "SBgtcb1E", type: "multiple-choice", question: @@ -2552,7 +2474,6 @@ export const testProgressMock: { { questionId: "UJPv3fGg", templateId: "8tjxg", - variantId: "brr2h", seed: "O4M3Wqvt", type: "multiple-choice", question: @@ -2579,7 +2500,6 @@ export const testProgressMock: { { questionId: "DaRCGL0o", templateId: "mnd14", - variantId: "pqe21", seed: "3exLzZHf", type: "multiple-choice", question: "Where in the engine oil system is the oil filter located?", diff --git a/libs/react/containers/src/tests/test-exam/test-exam.tsx b/libs/react/containers/src/tests/test-exam/test-exam.tsx index 78c046dcb..44100424e 100644 --- a/libs/react/containers/src/tests/test-exam/test-exam.tsx +++ b/libs/react/containers/src/tests/test-exam/test-exam.tsx @@ -164,10 +164,10 @@ export const TestExam = container( }) } options={question.options.map((opt) => ({ - optionId: opt.id, + id: opt.id, text: opt.text, }))} - annexHrefs={question.annexes} + annexesHref={question.annexes} onAnnexClicked={(annex) => setCurrentAnnex(annex)} /> ( ( }) } options={question.options.map((opt) => ({ - optionId: opt.id, + id: opt.id, text: opt.text, }))} - annexHrefs={question.annexes} + annexesHref={question.annexes} onAnnexClicked={(annex) => setCurrentAnnex(annex)} /> ( variant="outlined" target="_blank" startDecorator={} - href={`../../questions/${question.templateId}?variant=${question.variantId}`} + href={`../../questions/${question.templateId}`} children="Explore Question" /> Explanation diff --git a/libs/trpc/server/src/routers/containers/docs-router.ts b/libs/trpc/server/src/routers/containers/docs-router.ts index bcd8080eb..90618b25e 100644 --- a/libs/trpc/server/src/routers/containers/docs-router.ts +++ b/libs/trpc/server/src/routers/containers/docs-router.ts @@ -18,26 +18,26 @@ export const docsContainersRouter = router({ const rawDoc = await bank.getOne("docs", input.docId); const children = await bank.getSome("docs", rawDoc.children); const docMdx = await compileMdx(rawDoc.content); - const parent = rawDoc.parentId - ? await bank.getOne("docs", rawDoc.parentId) + const parent = rawDoc.parent + ? await bank.getOne("docs", rawDoc.parent) : undefined; const doc = { docMdx, - title: `[${rawDoc.learningObjectiveId}] ${rawDoc.title}`, + title: `[${rawDoc.id}] ${rawDoc.title}`, description: "....", isEmpty: rawDoc.empty, - learningObjective: rawDoc.learningObjectiveId, + learningObjective: rawDoc.learningObjectives, href: `/modules/${input.questionBank}/docs/${rawDoc.id}`, parent: parent ? { href: `/modules/${input.questionBank}/docs/${parent.id}`, - title: `[${parent.learningObjectiveId}] ${parent.title}`, + title: `[${parent.learningObjectives}] ${parent.title}`, } : null, children: children.map((child) => ({ href: `/modules/${input.questionBank}/docs/${child.id}`, - title: `[${child.learningObjectiveId}] ${child.title}`, + title: `[${child.learningObjectives}] ${child.title}`, isEmpty: child.empty, })), }; diff --git a/libs/trpc/server/src/routers/containers/learning-objectives-router.ts b/libs/trpc/server/src/routers/containers/learning-objectives-router.ts index 6443edcbd..7bc6270f0 100644 --- a/libs/trpc/server/src/routers/containers/learning-objectives-router.ts +++ b/libs/trpc/server/src/routers/containers/learning-objectives-router.ts @@ -34,12 +34,8 @@ export const learningObjectivesContainersRouter = router({ const loId = input.learningObjectiveId; const bank = questionBanks[input.questionBank]; - const resultIds = await bank - .getOne("learningObjectives", loId) - .then((lo) => bank.getSome("questions", lo.nestedQuestions)) - .then((qs) => qs.map((q) => Object.keys(q.variants)[0])); - - return await questionSearch.retrieve(bank, resultIds); + const lo = await bank.getOne("learningObjectives", loId); + return await questionSearch.retrieve(bank, lo.nestedQuestions); }), getLearningObjectiveTree: publicProcedure From f1f8b7547b480917570d92075b586e08ad7e40d1 Mon Sep 17 00:00:00 2001 From: Pedro Pupo Sa da Costa Date: Tue, 6 Feb 2024 12:35:49 +0000 Subject: [PATCH 2/4] fix: add missing file --- .../get-number-of-available-questions.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 libs/core/question-bank/src/tests/get-number-of-available-questions.ts diff --git a/libs/core/question-bank/src/tests/get-number-of-available-questions.ts b/libs/core/question-bank/src/tests/get-number-of-available-questions.ts new file mode 100644 index 000000000..0a1edacf7 --- /dev/null +++ b/libs/core/question-bank/src/tests/get-number-of-available-questions.ts @@ -0,0 +1,26 @@ +import type { LearningObjectiveId } from "@chair-flight/core/question-bank"; + +export const getNumberOfAvailableQuestions = ( + subject: { + learningObjectives: Array<{ + id: LearningObjectiveId; + numberOfQuestions: number; + learningObjectives: Array<{ + id: LearningObjectiveId; + numberOfQuestions: number; + }>; + }>; + }, + selectedLearningObjectives: LearningObjectiveId[], +) => { + return subject.learningObjectives.reduce((sum, lo) => { + if (selectedLearningObjectives.includes(lo.id)) { + return sum + lo.numberOfQuestions; + } + lo.learningObjectives.forEach((lo2) => { + if (!selectedLearningObjectives.includes(lo2.id)) return; + sum += lo2.numberOfQuestions; + }); + return sum; + }, 0); +}; From 008cdd168a7bdc119cef1d6ff3f649c3f7fd5ba5 Mon Sep 17 00:00:00 2001 From: Pedro Pupo Sa da Costa Date: Tue, 6 Feb 2024 14:32:34 +0000 Subject: [PATCH 3/4] feat: fix annex hrefs --- .../providers/question-bank/src/executors/question-bank-read.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/providers/question-bank/src/executors/question-bank-read.ts b/libs/providers/question-bank/src/executors/question-bank-read.ts index f883c2f36..315c6d380 100644 --- a/libs/providers/question-bank/src/executors/question-bank-read.ts +++ b/libs/providers/question-bank/src/executors/question-bank-read.ts @@ -82,7 +82,7 @@ export const readAllAnnexesFromFs = async ( const jsonData = JSON.parse(json || "[]") as Annex[]; const annexData = jsonData.map((a) => ({ ...a, - href: `/content/${projectName}/media/${a.href}.${a.format}`, + href: `/content/${projectName}/media/${a.id}.${a.format}`, doc: "", questions: [], subjects: [], From 761f4cc670323c9672cea98601aa8871da6b3007 Mon Sep 17 00:00:00 2001 From: Pedro Pupo Sa da Costa Date: Tue, 6 Feb 2024 18:01:27 +0000 Subject: [PATCH 4/4] fix: fix lint issue --- .../src/tests/get-number-of-available-questions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/core/question-bank/src/tests/get-number-of-available-questions.ts b/libs/core/question-bank/src/tests/get-number-of-available-questions.ts index 0a1edacf7..be01a0dd3 100644 --- a/libs/core/question-bank/src/tests/get-number-of-available-questions.ts +++ b/libs/core/question-bank/src/tests/get-number-of-available-questions.ts @@ -1,4 +1,4 @@ -import type { LearningObjectiveId } from "@chair-flight/core/question-bank"; +import type { LearningObjectiveId } from "../entities/ids"; export const getNumberOfAvailableQuestions = ( subject: {