From bb08d097e20c287afb8e50a140b7560b01c22817 Mon Sep 17 00:00:00 2001 From: PupoSDC Date: Thu, 18 Jan 2024 18:02:47 +0000 Subject: [PATCH] feat: improve question search (#74) - Allows filtering by subject and los. - Improves search algorithm. - Defaults to list view of all questions. - Implements UI similar to LO search which is prettier. - merges 737 and a320 banks into type bank closes https://github.com/PupoSDC/chair-flight/issues/68 --- README.md | 3 +- .../blog/003-new-737-question-bank.page.mdx | 34 +- .../blog/005-new-a320-question-bank.page.mdx | 2 +- .../modules/[questionBank]/index.page.tsx | 2 +- .../[questionBank]/questions/index.page.tsx | 6 +- .../[questionBank]/settings/index.page.tsx | 2 +- .../[questionBank]/tests/create.page.tsx | 2 +- .../[questionBank]/tests/index.page.tsx | 2 +- libs/base/types/src/lib/question-bank.ts | 2 +- .../question-bank-atpl/media/media.json | 2 +- .../questions/010/010.01.json | 4 +- .../question-bank-atpl/subjects/subjects.json | 99 --- .../question-bank-b737/flashcards/.gitkeep | 0 .../question-bank-b737/media/media.json | 1 - libs/content/question-bank-b737/project.json | 11 - .../question-bank-b737/subjects/subjects.json | 71 -- .../flashcards/.gitkeep | 0 .../media/media.json | 0 .../project.json | 2 +- .../questions/A320}/A320.01.json | 0 .../questions/A320}/A320.02.json | 0 .../questions/A320}/A320.03.json | 0 .../questions/A320}/A320.04.json | 0 .../questions/A320}/A320.05.json | 0 .../questions/A320}/A320.06.json | 0 .../questions/A320}/A320.07.json | 0 .../questions/A320}/A320.08.json | 0 .../questions/A320}/A320.09.json | 0 .../questions/A320}/A320.10.json | 0 .../questions/A320}/A320.11.json | 0 .../questions/A320}/A320.12.json | 0 .../questions/A320}/A320.13.json | 0 .../questions/A320}/A320.14.json | 0 .../questions/A320}/A320.15.json | 0 .../questions/A320}/A320.16.json | 0 .../questions/A320}/A320.17.json | 0 .../questions/A320}/A320.18.json | 0 .../questions/A320}/A320.19.json | 0 .../questions/B737}/737.01.json | 52 +- .../questions/B737}/737.02.json | 38 +- .../questions/B737}/737.03.json | 14 +- .../questions/B737}/737.04.json | 62 +- .../questions/B737}/737.05.json | 18 +- .../questions/B737}/737.06.json | 72 +- .../questions/B737}/737.07.json | 82 +- .../questions/B737}/737.08.json | 24 +- .../questions/B737}/737.09.json | 26 +- .../questions/B737}/737.10.json | 16 +- .../questions/B737}/737.11.json | 56 +- .../questions/B737}/737.12.json | 50 +- .../questions/B737}/737.13.json | 42 +- .../questions/B737}/737.14.json | 0 .../questions/B737}/737.15.json | 72 +- .../questions/B737}/737.json | 746 +++++++++--------- .../subjects/subjects.json | 73 +- libs/core/question-bank/project.json | 3 +- libs/core/question-bank/src/index.ts | 3 +- .../question-bank/src/question-bank.test.ts | 29 +- libs/core/schemas/src/question-bank-schema.ts | 2 +- .../components/src/cta-search/cta-search.tsx | 90 +-- .../components/src/hooks/use-disclose.ts | 11 + libs/react/components/src/index.ts | 1 + .../markdown-client-compressed.tsx | 5 + .../src/theme/theme-override-color-scheme.tsx | 4 +- .../learning-objectives-search.tsx | 6 - .../overview-modules/overview-modules.tsx | 45 +- .../overview-welcome/welcome.stories.tsx | 2 +- .../overviews/overview-welcome/welcome.tsx | 75 +- .../question-search.stories.tsx | 33 +- .../question-search/question-search.tsx | 411 +++++++--- .../src/tests/test-maker/test-maker.tsx | 6 +- .../src/__mocks__/question-search.mock.ts | 700 ++++++++-------- libs/trpc/server/src/config/app-router.ts | 2 + .../routers/question-bank-question-search.ts | 165 ++++ libs/trpc/server/src/routers/question-bank.ts | 107 +-- vercel.json | 10 +- 76 files changed, 1719 insertions(+), 1679 deletions(-) delete mode 100644 libs/content/question-bank-b737/flashcards/.gitkeep delete mode 100644 libs/content/question-bank-b737/media/media.json delete mode 100644 libs/content/question-bank-b737/project.json delete mode 100644 libs/content/question-bank-b737/subjects/subjects.json rename libs/content/{question-bank-a320 => question-bank-type}/flashcards/.gitkeep (100%) rename libs/content/{question-bank-a320 => question-bank-type}/media/media.json (100%) rename libs/content/{question-bank-a320 => question-bank-type}/project.json (84%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.01.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.02.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.03.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.04.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.05.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.06.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.07.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.08.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.09.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.10.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.11.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.12.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.13.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.14.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.15.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.16.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.17.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.18.json (100%) rename libs/content/{question-bank-a320/questions => question-bank-type/questions/A320}/A320.19.json (100%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.01.json (95%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.02.json (95%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.03.json (95%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.04.json (95%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.05.json (95%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.06.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.07.json (95%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.08.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.09.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.10.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.11.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.12.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.13.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.14.json (100%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.15.json (96%) rename libs/content/{question-bank-b737/questions => question-bank-type/questions/B737}/737.json (96%) rename libs/content/{question-bank-a320 => question-bank-type}/subjects/subjects.json (50%) create mode 100644 libs/react/components/src/hooks/use-disclose.ts create mode 100644 libs/trpc/server/src/routers/question-bank-question-search.ts diff --git a/README.md b/README.md index 777444567..64cd01575 100644 --- a/README.md +++ b/README.md @@ -65,8 +65,7 @@ can and will be introduced in patch releases. | base-errors | Errors that can be handled in the front or in the backend | | base-types | Base Business types used across the app | | content-question-bank-prep | Content bank for the interview prep module | -| content-question-bank-b737 | Content bank for the 737 TR module | -| content-question-bank-a320 | Content bank for the A320 TR module | +| content-question-bank-type | Content bank for the Type Rating module | | content-question-bank-atpl | Content bank for the ATPL theory module | | core-analytics | Analytics provider (currently a custom solution) | | core-app | Business logic blocks sharable between React SPA/SSR and RN | diff --git a/apps/next-app/pages/articles/blog/003-new-737-question-bank.page.mdx b/apps/next-app/pages/articles/blog/003-new-737-question-bank.page.mdx index 0cd5dca3a..582acf01a 100644 --- a/apps/next-app/pages/articles/blog/003-new-737-question-bank.page.mdx +++ b/apps/next-app/pages/articles/blog/003-new-737-question-bank.page.mdx @@ -31,28 +31,28 @@ With over 300 thoughtfully curated questions, this question bank is designed to challenge and enhance your understanding of the 737's systems, procedures, and aircraft limitations. -You can create a [new test here](/modules/b737/tests/create). +You can create a [new test here](/modules/type/tests/create). export const InLocoTestMakeer = () => { const router = useRouter(); const fallback = -return ( - - - - - { - router.push(`/modules/b737/tests/${test.id}/${test.mode}`); - }} - /> - - - -); } + return ( + + + + { + router.push(`/modules/type/tests/${test.id}/${test.mode}`); + }} + /> + + + + ); +} diff --git a/apps/next-app/pages/articles/blog/005-new-a320-question-bank.page.mdx b/apps/next-app/pages/articles/blog/005-new-a320-question-bank.page.mdx index 150fa54be..49a9f94b2 100644 --- a/apps/next-app/pages/articles/blog/005-new-a320-question-bank.page.mdx +++ b/apps/next-app/pages/articles/blog/005-new-a320-question-bank.page.mdx @@ -36,7 +36,7 @@ available for free to all our users.
-You can get started here: [A320 Question Bank](/modules/a320) +You can get started here: [A320 Question Bank](/modules/type)
diff --git a/apps/next-app/pages/modules/[questionBank]/index.page.tsx b/apps/next-app/pages/modules/[questionBank]/index.page.tsx index 276b56f2b..cb7f8b82d 100644 --- a/apps/next-app/pages/modules/[questionBank]/index.page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/index.page.tsx @@ -40,7 +40,7 @@ export const getStaticProps = staticHandler( ); export const getStaticPaths: GetStaticPaths = async () => { - const banks: QuestionBankName[] = ["b737", "a320", "atpl", "prep"]; + const banks: QuestionBankName[] = ["type", "atpl", "prep"]; const paths = banks.map((questionBank) => ({ params: { questionBank } })); return { fallback: false, paths }; }; diff --git a/apps/next-app/pages/modules/[questionBank]/questions/index.page.tsx b/apps/next-app/pages/modules/[questionBank]/questions/index.page.tsx index 10e9374a2..5617c33ce 100644 --- a/apps/next-app/pages/modules/[questionBank]/questions/index.page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/questions/index.page.tsx @@ -21,9 +21,9 @@ const Page: NextPage = ({ questionBank }) => { ] as Breadcrumbs; return ( - + - + ); }; @@ -38,7 +38,7 @@ export const getStaticProps = staticHandler( ); export const getStaticPaths: GetStaticPaths = async () => { - const banks: QuestionBankName[] = ["b737", "a320", "atpl"]; + const banks: QuestionBankName[] = ["type", "atpl"]; const paths = banks.map((questionBank) => ({ params: { questionBank } })); return { fallback: false, paths }; }; diff --git a/apps/next-app/pages/modules/[questionBank]/settings/index.page.tsx b/apps/next-app/pages/modules/[questionBank]/settings/index.page.tsx index b0c7483eb..8c41da6ed 100644 --- a/apps/next-app/pages/modules/[questionBank]/settings/index.page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/settings/index.page.tsx @@ -41,7 +41,7 @@ export const getStaticProps = staticHandler( ); export const getStaticPaths: GetStaticPaths = async () => { - const banks: QuestionBankName[] = ["b737", "a320", "atpl", "prep"]; + const banks: QuestionBankName[] = ["type", "atpl", "prep"]; const paths = banks.map((questionBank) => ({ params: { questionBank } })); return { fallback: false, paths }; }; diff --git a/apps/next-app/pages/modules/[questionBank]/tests/create.page.tsx b/apps/next-app/pages/modules/[questionBank]/tests/create.page.tsx index 89906c395..87c3ae2e9 100644 --- a/apps/next-app/pages/modules/[questionBank]/tests/create.page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/tests/create.page.tsx @@ -48,7 +48,7 @@ export const getStaticProps = staticHandler( ); export const getStaticPaths: GetStaticPaths = async () => { - const banks: QuestionBankName[] = ["b737", "a320", "atpl"]; + const banks: QuestionBankName[] = ["type", "atpl"]; const paths = banks.map((questionBank) => ({ params: { questionBank } })); return { fallback: false, paths }; }; diff --git a/apps/next-app/pages/modules/[questionBank]/tests/index.page.tsx b/apps/next-app/pages/modules/[questionBank]/tests/index.page.tsx index 045bd22dc..beeffdfd4 100644 --- a/apps/next-app/pages/modules/[questionBank]/tests/index.page.tsx +++ b/apps/next-app/pages/modules/[questionBank]/tests/index.page.tsx @@ -41,7 +41,7 @@ export const getStaticProps = staticHandler( ); export const getStaticPaths: GetStaticPaths = async () => { - const banks: QuestionBankName[] = ["b737", "a320", "atpl", "prep"]; + const banks: QuestionBankName[] = ["type", "atpl", "prep"]; const paths = banks.map((questionBank) => ({ params: { questionBank } })); return { fallback: false, paths }; }; diff --git a/libs/base/types/src/lib/question-bank.ts b/libs/base/types/src/lib/question-bank.ts index f2742224c..7c584c58d 100644 --- a/libs/base/types/src/lib/question-bank.ts +++ b/libs/base/types/src/lib/question-bank.ts @@ -1 +1 @@ -export type QuestionBankName = "b737" | "atpl" | "a320" | "prep"; +export type QuestionBankName = "type" | "atpl" | "prep"; diff --git a/libs/content/question-bank-atpl/media/media.json b/libs/content/question-bank-atpl/media/media.json index 936fa6391..d20506a20 100644 --- a/libs/content/question-bank-atpl/media/media.json +++ b/libs/content/question-bank-atpl/media/media.json @@ -2700,7 +2700,7 @@ "description": "" }, { - "id": "737064a8c0d90e759d704784ae89d742", + "id": "B737064a8c0d90e759d704784ae89d742", "description": "" }, { diff --git a/libs/content/question-bank-atpl/questions/010/010.01.json b/libs/content/question-bank-atpl/questions/010/010.01.json index 64c04b874..6022abe67 100644 --- a/libs/content/question-bank-atpl/questions/010/010.01.json +++ b/libs/content/question-bank-atpl/questions/010/010.01.json @@ -7796,12 +7796,12 @@ { "id": "Q67P1OPODY", "explanation": "", - "learningObjectives": ["010.01.04.01.01"], + "learningObjectives": ["010.06.09.03.01"], "variants": { "pQ3hr7YN": { "id": "pQ3hr7YN", "type": "simple", - "question": "EASA AIR OPS Annex V refers to:\nECQB 2020 Example Question - Learning Objective 010.06.09.03.01", + "question": "EASA AIR OPS Annex V refers to:", "options": [ { "id": "AC87E7UDQI", diff --git a/libs/content/question-bank-atpl/subjects/subjects.json b/libs/content/question-bank-atpl/subjects/subjects.json index 99a431bea..cc2fc899d 100644 --- a/libs/content/question-bank-atpl/subjects/subjects.json +++ b/libs/content/question-bank-atpl/subjects/subjects.json @@ -89,104 +89,5 @@ "shortName": "Coms", "numberOfExamQuestions": 34, "numberOfExamMinutes": 45 - }, - { - "id": "737", - "longName": "Type Rating review questions", - "shortName": "Type Rating review questions", - "numberOfExamQuestions": 40, - "numberOfExamMinutes": 40, - "children": [ - { - "id": "737.01", - "text": "Aircraft General", - "numberOfQuestions": 27, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.02", - "text": "Air Systems", - "numberOfQuestions": 19, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.03", - "text": "Ice and Rain Protection", - "numberOfQuestions": 7, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.04", - "text": "Automatic Flight", - "numberOfQuestions": 31, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.05", - "text": "Communications", - "numberOfQuestions": 9, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.06", - "text": "Electrical", - "numberOfQuestions": 36, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.07", - "text": "Engines, APU", - "numberOfQuestions": 41, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.08", - "text": "Fire Protection", - "numberOfQuestions": 12, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.09", - "text": "Flight Controls", - "numberOfQuestions": 13, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.10", - "text": "Flight Instruments", - "numberOfQuestions": 8, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.11", - "text": "Flight Management & Navigation Systems", - "numberOfQuestions": 30, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.12", - "text": "Fuel", - "numberOfQuestions": 25, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.13", - "text": "Hydraulics", - "numberOfQuestions": 21, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.14", - "text": "Landing Gear", - "numberOfQuestions": 10, - "numberOfLearningObjectives": 1 - }, - { - "id": "737.15", - "text": "Warning Systems", - "numberOfQuestions": 36, - "numberOfLearningObjectives": 1 - } - ] } ] diff --git a/libs/content/question-bank-b737/flashcards/.gitkeep b/libs/content/question-bank-b737/flashcards/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/libs/content/question-bank-b737/media/media.json b/libs/content/question-bank-b737/media/media.json deleted file mode 100644 index fe51488c7..000000000 --- a/libs/content/question-bank-b737/media/media.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/libs/content/question-bank-b737/project.json b/libs/content/question-bank-b737/project.json deleted file mode 100644 index d90dccf63..000000000 --- a/libs/content/question-bank-b737/project.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "content-question-bank-b737", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "targets": { - "compile": { - "executor": "@chair-flight/core/question-bank:compile" - } - }, - "tags": [] -} diff --git a/libs/content/question-bank-b737/subjects/subjects.json b/libs/content/question-bank-b737/subjects/subjects.json deleted file mode 100644 index c8d639f3c..000000000 --- a/libs/content/question-bank-b737/subjects/subjects.json +++ /dev/null @@ -1,71 +0,0 @@ -[ - { - "id": "737", - "longName": "Type Rating review questions", - "shortName": "Type Rating review questions", - "numberOfExamQuestions": 40, - "numberOfExamMinutes": 40, - "children": [ - { - "id": "737.01", - "text": "Aircraft General" - }, - { - "id": "737.02", - "text": "Air Systems" - }, - { - "id": "737.03", - "text": "Ice and Rain Protection" - }, - { - "id": "737.04", - "text": "Automatic Flight" - }, - { - "id": "737.05", - "text": "Communications" - }, - { - "id": "737.06", - "text": "Electrical" - }, - { - "id": "737.07", - "text": "Engines, APU" - }, - { - "id": "737.08", - "text": "Fire Protection" - }, - { - "id": "737.09", - "text": "Flight Controls" - }, - { - "id": "737.10", - "text": "Flight Instruments" - }, - { - "id": "737.11", - "text": "Flight Management & Navigation Systems" - }, - { - "id": "737.12", - "text": "Fuel" - }, - { - "id": "737.13", - "text": "Hydraulics" - }, - { - "id": "737.14", - "text": "Landing Gear" - }, - { - "id": "737.15", - "text": "Warning Systems" - } - ] - } -] diff --git a/libs/content/question-bank-a320/flashcards/.gitkeep b/libs/content/question-bank-type/flashcards/.gitkeep similarity index 100% rename from libs/content/question-bank-a320/flashcards/.gitkeep rename to libs/content/question-bank-type/flashcards/.gitkeep diff --git a/libs/content/question-bank-a320/media/media.json b/libs/content/question-bank-type/media/media.json similarity index 100% rename from libs/content/question-bank-a320/media/media.json rename to libs/content/question-bank-type/media/media.json diff --git a/libs/content/question-bank-a320/project.json b/libs/content/question-bank-type/project.json similarity index 84% rename from libs/content/question-bank-a320/project.json rename to libs/content/question-bank-type/project.json index e1fc54e8e..406cd7072 100644 --- a/libs/content/question-bank-a320/project.json +++ b/libs/content/question-bank-type/project.json @@ -1,5 +1,5 @@ { - "name": "content-question-bank-a320", + "name": "content-question-bank-type", "$schema": "../../../node_modules/nx/schemas/project-schema.json", "projectType": "library", "targets": { diff --git a/libs/content/question-bank-a320/questions/A320.01.json b/libs/content/question-bank-type/questions/A320/A320.01.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.01.json rename to libs/content/question-bank-type/questions/A320/A320.01.json diff --git a/libs/content/question-bank-a320/questions/A320.02.json b/libs/content/question-bank-type/questions/A320/A320.02.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.02.json rename to libs/content/question-bank-type/questions/A320/A320.02.json diff --git a/libs/content/question-bank-a320/questions/A320.03.json b/libs/content/question-bank-type/questions/A320/A320.03.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.03.json rename to libs/content/question-bank-type/questions/A320/A320.03.json diff --git a/libs/content/question-bank-a320/questions/A320.04.json b/libs/content/question-bank-type/questions/A320/A320.04.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.04.json rename to libs/content/question-bank-type/questions/A320/A320.04.json diff --git a/libs/content/question-bank-a320/questions/A320.05.json b/libs/content/question-bank-type/questions/A320/A320.05.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.05.json rename to libs/content/question-bank-type/questions/A320/A320.05.json diff --git a/libs/content/question-bank-a320/questions/A320.06.json b/libs/content/question-bank-type/questions/A320/A320.06.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.06.json rename to libs/content/question-bank-type/questions/A320/A320.06.json diff --git a/libs/content/question-bank-a320/questions/A320.07.json b/libs/content/question-bank-type/questions/A320/A320.07.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.07.json rename to libs/content/question-bank-type/questions/A320/A320.07.json diff --git a/libs/content/question-bank-a320/questions/A320.08.json b/libs/content/question-bank-type/questions/A320/A320.08.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.08.json rename to libs/content/question-bank-type/questions/A320/A320.08.json diff --git a/libs/content/question-bank-a320/questions/A320.09.json b/libs/content/question-bank-type/questions/A320/A320.09.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.09.json rename to libs/content/question-bank-type/questions/A320/A320.09.json diff --git a/libs/content/question-bank-a320/questions/A320.10.json b/libs/content/question-bank-type/questions/A320/A320.10.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.10.json rename to libs/content/question-bank-type/questions/A320/A320.10.json diff --git a/libs/content/question-bank-a320/questions/A320.11.json b/libs/content/question-bank-type/questions/A320/A320.11.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.11.json rename to libs/content/question-bank-type/questions/A320/A320.11.json diff --git a/libs/content/question-bank-a320/questions/A320.12.json b/libs/content/question-bank-type/questions/A320/A320.12.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.12.json rename to libs/content/question-bank-type/questions/A320/A320.12.json diff --git a/libs/content/question-bank-a320/questions/A320.13.json b/libs/content/question-bank-type/questions/A320/A320.13.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.13.json rename to libs/content/question-bank-type/questions/A320/A320.13.json diff --git a/libs/content/question-bank-a320/questions/A320.14.json b/libs/content/question-bank-type/questions/A320/A320.14.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.14.json rename to libs/content/question-bank-type/questions/A320/A320.14.json diff --git a/libs/content/question-bank-a320/questions/A320.15.json b/libs/content/question-bank-type/questions/A320/A320.15.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.15.json rename to libs/content/question-bank-type/questions/A320/A320.15.json diff --git a/libs/content/question-bank-a320/questions/A320.16.json b/libs/content/question-bank-type/questions/A320/A320.16.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.16.json rename to libs/content/question-bank-type/questions/A320/A320.16.json diff --git a/libs/content/question-bank-a320/questions/A320.17.json b/libs/content/question-bank-type/questions/A320/A320.17.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.17.json rename to libs/content/question-bank-type/questions/A320/A320.17.json diff --git a/libs/content/question-bank-a320/questions/A320.18.json b/libs/content/question-bank-type/questions/A320/A320.18.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.18.json rename to libs/content/question-bank-type/questions/A320/A320.18.json diff --git a/libs/content/question-bank-a320/questions/A320.19.json b/libs/content/question-bank-type/questions/A320/A320.19.json similarity index 100% rename from libs/content/question-bank-a320/questions/A320.19.json rename to libs/content/question-bank-type/questions/A320/A320.19.json diff --git a/libs/content/question-bank-b737/questions/737.01.json b/libs/content/question-bank-type/questions/B737/737.01.json similarity index 95% rename from libs/content/question-bank-b737/questions/737.01.json rename to libs/content/question-bank-type/questions/B737/737.01.json index 847c7fe12..d07f99ea2 100644 --- a/libs/content/question-bank-b737/questions/737.01.json +++ b/libs/content/question-bank-type/questions/B737/737.01.json @@ -2,7 +2,7 @@ { "id": "59o75g", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "u76vqh": { "id": "u76vqh", @@ -43,7 +43,7 @@ { "id": "aehpc", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "s6dz6": { "id": "s6dz6", @@ -59,7 +59,7 @@ { "id": "d5b75", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "28x45f": { "id": "28x45f", @@ -75,7 +75,7 @@ { "id": "ocogh", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "um1xt": { "id": "um1xt", @@ -116,7 +116,7 @@ { "id": "uehhr", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "w5hoxh": { "id": "w5hoxh", @@ -132,7 +132,7 @@ { "id": "b8ag8l", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "o0f5s": { "id": "o0f5s", @@ -173,7 +173,7 @@ { "id": "5buck", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "sxdk1": { "id": "sxdk1", @@ -214,7 +214,7 @@ { "id": "90oxuj", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "aa753g": { "id": "aa753g", @@ -255,7 +255,7 @@ { "id": "ndodu", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "qkgh5g": { "id": "qkgh5g", @@ -296,7 +296,7 @@ { "id": "9nua2g", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "tqbl": { "id": "tqbl", @@ -337,7 +337,7 @@ { "id": "ao5li", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "ta6l2": { "id": "ta6l2", @@ -378,7 +378,7 @@ { "id": "771irg", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "bmsh1": { "id": "bmsh1", @@ -419,7 +419,7 @@ { "id": "l4d6t", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "tu1e5f": { "id": "tu1e5f", @@ -435,7 +435,7 @@ { "id": "17nbol", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "qo4c1i": { "id": "qo4c1i", @@ -451,7 +451,7 @@ { "id": "qi31d", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "m7aew": { "id": "m7aew", @@ -467,7 +467,7 @@ { "id": "1yzxe", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "qk28k": { "id": "qk28k", @@ -508,7 +508,7 @@ { "id": "vwfjx", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "i875q": { "id": "i875q", @@ -524,7 +524,7 @@ { "id": "jp1sw", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "aa8qc": { "id": "aa8qc", @@ -565,7 +565,7 @@ { "id": "rpflt", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "mtj91": { "id": "mtj91", @@ -606,7 +606,7 @@ { "id": "s487s", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "lycme": { "id": "lycme", @@ -647,7 +647,7 @@ { "id": "92y7y", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "4cm9mj": { "id": "4cm9mj", @@ -688,7 +688,7 @@ { "id": "5upew", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "6ddec": { "id": "6ddec", @@ -729,7 +729,7 @@ { "id": "np98dg", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "zpn3s": { "id": "zpn3s", @@ -770,7 +770,7 @@ { "id": "g7n5d", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "eg5iy": { "id": "eg5iy", @@ -786,7 +786,7 @@ { "id": "aatbl", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "uwbq4": { "id": "uwbq4", @@ -827,7 +827,7 @@ { "id": "swfvg", "explanation": "", - "learningObjectives": ["737.01"], + "learningObjectives": ["B737.01"], "variants": { "b0p4jj": { "id": "b0p4jj", diff --git a/libs/content/question-bank-b737/questions/737.02.json b/libs/content/question-bank-type/questions/B737/737.02.json similarity index 95% rename from libs/content/question-bank-b737/questions/737.02.json rename to libs/content/question-bank-type/questions/B737/737.02.json index c523d948e..733227919 100644 --- a/libs/content/question-bank-b737/questions/737.02.json +++ b/libs/content/question-bank-type/questions/B737/737.02.json @@ -2,7 +2,7 @@ { "id": "wpjl3", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "a6o3wg": { "id": "a6o3wg", @@ -43,7 +43,7 @@ { "id": "olepn", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "j7k2b": { "id": "j7k2b", @@ -84,7 +84,7 @@ { "id": "h3ia", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "hmkql": { "id": "hmkql", @@ -100,7 +100,7 @@ { "id": "j83iu", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "i7omg": { "id": "i7omg", @@ -141,7 +141,7 @@ { "id": "64wdx", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "ho68d": { "id": "ho68d", @@ -157,7 +157,7 @@ { "id": "qo3yz", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "obags": { "id": "obags", @@ -198,7 +198,7 @@ { "id": "sg6gkf", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "u24a1": { "id": "u24a1", @@ -214,7 +214,7 @@ { "id": "2hmmt", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "iz4jv": { "id": "iz4jv", @@ -255,7 +255,7 @@ { "id": "uis99f", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "y1wpo": { "id": "y1wpo", @@ -271,7 +271,7 @@ { "id": "px6i4k", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "wd9mb": { "id": "wd9mb", @@ -287,7 +287,7 @@ { "id": "k6d9k", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "fpnkb": { "id": "fpnkb", @@ -328,7 +328,7 @@ { "id": "8ha8l", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "79c2q": { "id": "79c2q", @@ -369,7 +369,7 @@ { "id": "fxakmg", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "m4h2n": { "id": "m4h2n", @@ -410,7 +410,7 @@ { "id": "h4vpef", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "eghyy": { "id": "eghyy", @@ -451,7 +451,7 @@ { "id": "np5w1", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "f4zwnj": { "id": "f4zwnj", @@ -467,7 +467,7 @@ { "id": "mimbm", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "pgvwc": { "id": "pgvwc", @@ -508,7 +508,7 @@ { "id": "ht3f7", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "m8q0l": { "id": "m8q0l", @@ -549,7 +549,7 @@ { "id": "412mv", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "i8bbqh": { "id": "i8bbqh", @@ -590,7 +590,7 @@ { "id": "fym5q", "explanation": "", - "learningObjectives": ["737.02"], + "learningObjectives": ["B737.02"], "variants": { "dmky7": { "id": "dmky7", diff --git a/libs/content/question-bank-b737/questions/737.03.json b/libs/content/question-bank-type/questions/B737/737.03.json similarity index 95% rename from libs/content/question-bank-b737/questions/737.03.json rename to libs/content/question-bank-type/questions/B737/737.03.json index e83f38caf..fb2d45b7d 100644 --- a/libs/content/question-bank-b737/questions/737.03.json +++ b/libs/content/question-bank-type/questions/B737/737.03.json @@ -2,7 +2,7 @@ { "id": "gs76l", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "cdr6pi": { "id": "cdr6pi", @@ -18,7 +18,7 @@ { "id": "wqt9u", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "isx62": { "id": "isx62", @@ -34,7 +34,7 @@ { "id": "c7e12h", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "j3hj8k": { "id": "j3hj8k", @@ -75,7 +75,7 @@ { "id": "cvifz", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "uomna": { "id": "uomna", @@ -91,7 +91,7 @@ { "id": "ngxvg", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "7un63": { "id": "7un63", @@ -107,7 +107,7 @@ { "id": "7k0cu", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "4xs1r": { "id": "4xs1r", @@ -148,7 +148,7 @@ { "id": "ctj9fg", "explanation": "", - "learningObjectives": ["737.03"], + "learningObjectives": ["B737.03"], "variants": { "69dd4": { "id": "69dd4", diff --git a/libs/content/question-bank-b737/questions/737.04.json b/libs/content/question-bank-type/questions/B737/737.04.json similarity index 95% rename from libs/content/question-bank-b737/questions/737.04.json rename to libs/content/question-bank-type/questions/B737/737.04.json index 357e831a8..58d8c6fa3 100644 --- a/libs/content/question-bank-b737/questions/737.04.json +++ b/libs/content/question-bank-type/questions/B737/737.04.json @@ -2,7 +2,7 @@ { "id": "55qlo", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "pj2y6": { "id": "pj2y6", @@ -43,7 +43,7 @@ { "id": "cwwdo", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "9zplq": { "id": "9zplq", @@ -59,7 +59,7 @@ { "id": "1wc1d", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "p0n3ij": { "id": "p0n3ij", @@ -88,7 +88,7 @@ { "id": "gj25m", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "1xqfd": { "id": "1xqfd", @@ -129,7 +129,7 @@ { "id": "enr93", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "d4ajt": { "id": "d4ajt", @@ -170,7 +170,7 @@ { "id": "hjje1", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "ej35u": { "id": "ej35u", @@ -211,7 +211,7 @@ { "id": "sm1a1", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "ckmye": { "id": "ckmye", @@ -252,7 +252,7 @@ { "id": "ti9yn", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "qle8m": { "id": "qle8m", @@ -293,7 +293,7 @@ { "id": "6dzq1k", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "k7n04i": { "id": "k7n04i", @@ -309,7 +309,7 @@ { "id": "4zp4tf", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "inr4c": { "id": "inr4c", @@ -350,7 +350,7 @@ { "id": "99982", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "92zjsg": { "id": "92zjsg", @@ -391,7 +391,7 @@ { "id": "qom4z", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "bg4q": { "id": "bg4q", @@ -432,7 +432,7 @@ { "id": "b9xlm", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "q7mz7": { "id": "q7mz7", @@ -473,7 +473,7 @@ { "id": "up3v9", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "f1n1e": { "id": "f1n1e", @@ -489,7 +489,7 @@ { "id": "3wv7y", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "q09vx": { "id": "q09vx", @@ -530,7 +530,7 @@ { "id": "ordo1", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "lfnln": { "id": "lfnln", @@ -571,7 +571,7 @@ { "id": "5oxu3", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "yqw1u": { "id": "yqw1u", @@ -612,7 +612,7 @@ { "id": "1vby8", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "z9m0v": { "id": "z9m0v", @@ -653,7 +653,7 @@ { "id": "kfi77", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "cvckr": { "id": "cvckr", @@ -694,7 +694,7 @@ { "id": "ugl9l", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "bi3qf": { "id": "bi3qf", @@ -735,7 +735,7 @@ { "id": "x2duh", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "vkkce": { "id": "vkkce", @@ -776,7 +776,7 @@ { "id": "juwcn", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "q19qn": { "id": "q19qn", @@ -817,7 +817,7 @@ { "id": "reba4", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "keer8": { "id": "keer8", @@ -833,7 +833,7 @@ { "id": "j8ph2f", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "4aslyl": { "id": "4aslyl", @@ -849,7 +849,7 @@ { "id": "tyirw", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "295jk": { "id": "295jk", @@ -890,7 +890,7 @@ { "id": "ndk37", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "h7o24": { "id": "h7o24", @@ -931,7 +931,7 @@ { "id": "hrnmt", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "1aypn": { "id": "1aypn", @@ -972,7 +972,7 @@ { "id": "hporp", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "6t3y5": { "id": "6t3y5", @@ -988,7 +988,7 @@ { "id": "gyc3c", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "ohr35": { "id": "ohr35", @@ -1004,7 +1004,7 @@ { "id": "kxbqy", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "pr3g1": { "id": "pr3g1", @@ -1020,7 +1020,7 @@ { "id": "4h54k", "explanation": "", - "learningObjectives": ["737.04"], + "learningObjectives": ["B737.04"], "variants": { "eqv1t": { "id": "eqv1t", diff --git a/libs/content/question-bank-b737/questions/737.05.json b/libs/content/question-bank-type/questions/B737/737.05.json similarity index 95% rename from libs/content/question-bank-b737/questions/737.05.json rename to libs/content/question-bank-type/questions/B737/737.05.json index 206b43812..c94073bb8 100644 --- a/libs/content/question-bank-b737/questions/737.05.json +++ b/libs/content/question-bank-type/questions/B737/737.05.json @@ -2,7 +2,7 @@ { "id": "je2g1", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "ebtjx": { "id": "ebtjx", @@ -43,7 +43,7 @@ { "id": "xt0hph", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "eelhbk": { "id": "eelhbk", @@ -84,7 +84,7 @@ { "id": "41045", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "68ouh": { "id": "68ouh", @@ -125,7 +125,7 @@ { "id": "k0xen", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "zpq62": { "id": "zpq62", @@ -141,7 +141,7 @@ { "id": "y8zfm", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "oo4mg": { "id": "oo4mg", @@ -157,7 +157,7 @@ { "id": "bqd60k", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "npsipg": { "id": "npsipg", @@ -198,7 +198,7 @@ { "id": "okcefg", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "5u0ms": { "id": "5u0ms", @@ -214,7 +214,7 @@ { "id": "4gvmp", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "03loi": { "id": "03loi", @@ -230,7 +230,7 @@ { "id": "ljyck", "explanation": "", - "learningObjectives": ["737.05"], + "learningObjectives": ["B737.05"], "variants": { "bffmi": { "id": "bffmi", diff --git a/libs/content/question-bank-b737/questions/737.06.json b/libs/content/question-bank-type/questions/B737/737.06.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.06.json rename to libs/content/question-bank-type/questions/B737/737.06.json index 50a1f62f2..b0a7353ca 100644 --- a/libs/content/question-bank-b737/questions/737.06.json +++ b/libs/content/question-bank-type/questions/B737/737.06.json @@ -2,7 +2,7 @@ { "id": "1fjdg", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "gd3qu": { "id": "gd3qu", @@ -43,7 +43,7 @@ { "id": "ffzr6", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "gwvlwi": { "id": "gwvlwi", @@ -84,7 +84,7 @@ { "id": "8w2u1", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "1ygmh": { "id": "1ygmh", @@ -100,7 +100,7 @@ { "id": "bjndo", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "2gxx0f": { "id": "2gxx0f", @@ -141,7 +141,7 @@ { "id": "chfqwh", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "08dha": { "id": "08dha", @@ -182,7 +182,7 @@ { "id": "a4ld5", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "ro8ed": { "id": "ro8ed", @@ -223,7 +223,7 @@ { "id": "7ez7bl", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "mt8id": { "id": "mt8id", @@ -264,7 +264,7 @@ { "id": "173nq", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "4quvl": { "id": "4quvl", @@ -305,7 +305,7 @@ { "id": "kkksb", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "f183a": { "id": "f183a", @@ -346,7 +346,7 @@ { "id": "rmxbii", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "dby88i": { "id": "dby88i", @@ -362,7 +362,7 @@ { "id": "42ve9", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "ps4ri": { "id": "ps4ri", @@ -403,7 +403,7 @@ { "id": "fb4oii", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "t7259": { "id": "t7259", @@ -419,7 +419,7 @@ { "id": "60ar8", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "dt666": { "id": "dt666", @@ -460,7 +460,7 @@ { "id": "polkr", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "wjnfs": { "id": "wjnfs", @@ -501,7 +501,7 @@ { "id": "ekvv7", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "q4yof": { "id": "q4yof", @@ -542,7 +542,7 @@ { "id": "sqq1jk", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "fixsl": { "id": "fixsl", @@ -583,7 +583,7 @@ { "id": "fund4", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "2zeylg": { "id": "2zeylg", @@ -624,7 +624,7 @@ { "id": "ib9ng", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "y6i6oi": { "id": "y6i6oi", @@ -665,7 +665,7 @@ { "id": "r5bk2k", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "w4qjwl": { "id": "w4qjwl", @@ -706,7 +706,7 @@ { "id": "0r56jf", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "r6cjj": { "id": "r6cjj", @@ -747,7 +747,7 @@ { "id": "ifs1zk", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "6x6cs": { "id": "6x6cs", @@ -788,7 +788,7 @@ { "id": "zmlui", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "wth6c": { "id": "wth6c", @@ -829,7 +829,7 @@ { "id": "l3ndb", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "wxchgg": { "id": "wxchgg", @@ -870,7 +870,7 @@ { "id": "wnsx1j", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "rnhne": { "id": "rnhne", @@ -886,7 +886,7 @@ { "id": "8zxwe", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "s5dsqj": { "id": "s5dsqj", @@ -927,7 +927,7 @@ { "id": "4z5ybh", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "73af4": { "id": "73af4", @@ -943,7 +943,7 @@ { "id": "lpergg", "explanation": "TR UNIT Light Illuminated (amber)\n- on the ground:\n - any TR has failed.\n- in flight:\n - TR1 failed; or\n - TR2 and TR3 failed.", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "q0lgx": { "id": "q0lgx", @@ -1018,7 +1018,7 @@ { "id": "zibgu", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "bn794": { "id": "bn794", @@ -1059,7 +1059,7 @@ { "id": "cvswb", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "ebawk": { "id": "ebawk", @@ -1100,7 +1100,7 @@ { "id": "auwsd", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "lqv4o": { "id": "lqv4o", @@ -1141,7 +1141,7 @@ { "id": "riij9", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "vv3jy": { "id": "vv3jy", @@ -1182,7 +1182,7 @@ { "id": "9uce7", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "683vz": { "id": "683vz", @@ -1223,7 +1223,7 @@ { "id": "8gejn", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "vmnon": { "id": "vmnon", @@ -1264,7 +1264,7 @@ { "id": "zdeq4", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "5b8nx": { "id": "5b8nx", @@ -1305,7 +1305,7 @@ { "id": "365nd", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "7khe5": { "id": "7khe5", @@ -1321,7 +1321,7 @@ { "id": "q1zqn", "explanation": "", - "learningObjectives": ["737.06"], + "learningObjectives": ["B737.06"], "variants": { "q973q": { "id": "q973q", diff --git a/libs/content/question-bank-b737/questions/737.07.json b/libs/content/question-bank-type/questions/B737/737.07.json similarity index 95% rename from libs/content/question-bank-b737/questions/737.07.json rename to libs/content/question-bank-type/questions/B737/737.07.json index 222e910e2..6d77e2b9b 100644 --- a/libs/content/question-bank-b737/questions/737.07.json +++ b/libs/content/question-bank-type/questions/B737/737.07.json @@ -2,7 +2,7 @@ { "id": "bsy38", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "qru0d": { "id": "qru0d", @@ -43,7 +43,7 @@ { "id": "3kc96", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "xwina": { "id": "xwina", @@ -84,7 +84,7 @@ { "id": "aawc", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "kwhf7": { "id": "kwhf7", @@ -100,7 +100,7 @@ { "id": "hc0ll", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "x332s": { "id": "x332s", @@ -141,7 +141,7 @@ { "id": "pcx98", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "ih8i2": { "id": "ih8i2", @@ -157,7 +157,7 @@ { "id": "or1drk", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "j991t": { "id": "j991t", @@ -198,7 +198,7 @@ { "id": "51arw", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "3zbs3": { "id": "3zbs3", @@ -239,7 +239,7 @@ { "id": "z3tbo", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "zbqez": { "id": "zbqez", @@ -280,7 +280,7 @@ { "id": "ze9d9", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "7bf3v": { "id": "7bf3v", @@ -321,7 +321,7 @@ { "id": "htx1n", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "9my84": { "id": "9my84", @@ -362,7 +362,7 @@ { "id": "mnd14", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "pqe21": { "id": "pqe21", @@ -403,7 +403,7 @@ { "id": "ei5sy", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "91pe4f": { "id": "91pe4f", @@ -444,7 +444,7 @@ { "id": "7qhph", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "t0y81i": { "id": "t0y81i", @@ -460,7 +460,7 @@ { "id": "ek0ja", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "yxtm9": { "id": "yxtm9", @@ -501,7 +501,7 @@ { "id": "5jmj5", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "g7ay9": { "id": "g7ay9", @@ -542,7 +542,7 @@ { "id": "at0pq", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "ajm7mh": { "id": "ajm7mh", @@ -558,7 +558,7 @@ { "id": "cur39", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "vo3r9": { "id": "vo3r9", @@ -574,7 +574,7 @@ { "id": "xnuoj", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "r93g2": { "id": "r93g2", @@ -615,7 +615,7 @@ { "id": "wpop9", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "rg6n7": { "id": "rg6n7", @@ -631,7 +631,7 @@ { "id": "5405t", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "tqfde": { "id": "tqfde", @@ -672,7 +672,7 @@ { "id": "jh1y6", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "dpxyo": { "id": "dpxyo", @@ -713,7 +713,7 @@ { "id": "uf9f1", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "qtma7": { "id": "qtma7", @@ -754,7 +754,7 @@ { "id": "afuw6", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "t48yd": { "id": "t48yd", @@ -795,7 +795,7 @@ { "id": "ihird", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "vgrnw": { "id": "vgrnw", @@ -836,7 +836,7 @@ { "id": "o0bt6", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "wz9k3": { "id": "wz9k3", @@ -877,7 +877,7 @@ { "id": "v03vl", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "ojti7": { "id": "ojti7", @@ -918,7 +918,7 @@ { "id": "m2hx", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "hqfjz": { "id": "hqfjz", @@ -934,7 +934,7 @@ { "id": "1bs9e", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "52dvz": { "id": "52dvz", @@ -975,7 +975,7 @@ { "id": "8tjxg", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "brr2h": { "id": "brr2h", @@ -991,7 +991,7 @@ { "id": "ge3n8", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "oh0gf": { "id": "oh0gf", @@ -1032,7 +1032,7 @@ { "id": "vndwk", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "07goph": { "id": "07goph", @@ -1073,7 +1073,7 @@ { "id": "cqjob", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "4loh3": { "id": "4loh3", @@ -1114,7 +1114,7 @@ { "id": "solvz", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "0w50wg": { "id": "0w50wg", @@ -1155,7 +1155,7 @@ { "id": "6bqmj", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "z1c2a": { "id": "z1c2a", @@ -1196,7 +1196,7 @@ { "id": "rosccl", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "rzdew": { "id": "rzdew", @@ -1237,7 +1237,7 @@ { "id": "5kaxfi", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "xmqu": { "id": "xmqu", @@ -1253,7 +1253,7 @@ { "id": "a5tjk", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "54big": { "id": "54big", @@ -1294,7 +1294,7 @@ { "id": "rffyj", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "hfepy": { "id": "hfepy", @@ -1335,7 +1335,7 @@ { "id": "e2eh", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "iwifj": { "id": "iwifj", @@ -1351,7 +1351,7 @@ { "id": "h65mkj", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "0l3gkg": { "id": "0l3gkg", @@ -1392,7 +1392,7 @@ { "id": "gzp14", "explanation": "", - "learningObjectives": ["737.07"], + "learningObjectives": ["B737.07"], "variants": { "j0212j": { "id": "j0212j", diff --git a/libs/content/question-bank-b737/questions/737.08.json b/libs/content/question-bank-type/questions/B737/737.08.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.08.json rename to libs/content/question-bank-type/questions/B737/737.08.json index de25f141c..21c5f24f2 100644 --- a/libs/content/question-bank-b737/questions/737.08.json +++ b/libs/content/question-bank-type/questions/B737/737.08.json @@ -2,7 +2,7 @@ { "id": "8lqpo", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "odli4": { "id": "odli4", @@ -18,7 +18,7 @@ { "id": "wlmtb", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "4zsre": { "id": "4zsre", @@ -59,7 +59,7 @@ { "id": "1hsb3", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "muj2l": { "id": "muj2l", @@ -100,7 +100,7 @@ { "id": "4znt2", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "nf2wlf": { "id": "nf2wlf", @@ -141,7 +141,7 @@ { "id": "yoxm9", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "25grv": { "id": "25grv", @@ -182,7 +182,7 @@ { "id": "dbml2", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "3k2xai": { "id": "3k2xai", @@ -198,7 +198,7 @@ { "id": "vi3upg", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "tmsmk": { "id": "tmsmk", @@ -239,7 +239,7 @@ { "id": "l8cka", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "pf6de": { "id": "pf6de", @@ -255,7 +255,7 @@ { "id": "8vf87", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "tm5sw": { "id": "tm5sw", @@ -296,7 +296,7 @@ { "id": "l0sw2", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "sq2mv": { "id": "sq2mv", @@ -312,7 +312,7 @@ { "id": "v3mqb", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "kn7d9": { "id": "kn7d9", @@ -353,7 +353,7 @@ { "id": "65w58", "explanation": "", - "learningObjectives": ["737.08"], + "learningObjectives": ["B737.08"], "variants": { "x9bsi": { "id": "x9bsi", diff --git a/libs/content/question-bank-b737/questions/737.09.json b/libs/content/question-bank-type/questions/B737/737.09.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.09.json rename to libs/content/question-bank-type/questions/B737/737.09.json index b466f9681..a087e346f 100644 --- a/libs/content/question-bank-b737/questions/737.09.json +++ b/libs/content/question-bank-type/questions/B737/737.09.json @@ -2,7 +2,7 @@ { "id": "ke234", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "xfli3": { "id": "xfli3", @@ -18,7 +18,7 @@ { "id": "hga0uj", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "dggv4": { "id": "dggv4", @@ -59,7 +59,7 @@ { "id": "jipos", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "fmbkd": { "id": "fmbkd", @@ -100,7 +100,7 @@ { "id": "r2u2w", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "bl2s8f": { "id": "bl2s8f", @@ -141,7 +141,7 @@ { "id": "5oyf5", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "irjng": { "id": "irjng", @@ -182,7 +182,7 @@ { "id": "jsssw", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "tx8pr": { "id": "tx8pr", @@ -223,7 +223,7 @@ { "id": "l3ecl", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "o9eeu": { "id": "o9eeu", @@ -239,7 +239,7 @@ { "id": "crlab", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "8m044": { "id": "8m044", @@ -255,7 +255,7 @@ { "id": "cuipf", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "9cautg": { "id": "9cautg", @@ -296,7 +296,7 @@ { "id": "khzx7", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "ljjin": { "id": "ljjin", @@ -337,7 +337,7 @@ { "id": "retpu", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "ca3wl": { "id": "ca3wl", @@ -378,7 +378,7 @@ { "id": "d4tte", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "vb8ls": { "id": "vb8ls", @@ -419,7 +419,7 @@ { "id": "5mccy", "explanation": "", - "learningObjectives": ["737.09"], + "learningObjectives": ["B737.09"], "variants": { "yrc3x": { "id": "yrc3x", diff --git a/libs/content/question-bank-b737/questions/737.10.json b/libs/content/question-bank-type/questions/B737/737.10.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.10.json rename to libs/content/question-bank-type/questions/B737/737.10.json index 3b87209c8..eb14192f9 100644 --- a/libs/content/question-bank-b737/questions/737.10.json +++ b/libs/content/question-bank-type/questions/B737/737.10.json @@ -2,7 +2,7 @@ { "id": "s3sm", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "b0p6b": { "id": "b0p6b", @@ -43,7 +43,7 @@ { "id": "oqelt", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "fedklj": { "id": "fedklj", @@ -84,7 +84,7 @@ { "id": "y2udc", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "a2k43": { "id": "a2k43", @@ -125,7 +125,7 @@ { "id": "ppg0v", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "pmjw5": { "id": "pmjw5", @@ -166,7 +166,7 @@ { "id": "ios1q", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "abfnk": { "id": "abfnk", @@ -207,7 +207,7 @@ { "id": "de4vt", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "xpgftf": { "id": "xpgftf", @@ -248,7 +248,7 @@ { "id": "tyqsp", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "10ig9": { "id": "10ig9", @@ -289,7 +289,7 @@ { "id": "8zosr", "explanation": "", - "learningObjectives": ["737.10"], + "learningObjectives": ["B737.10"], "variants": { "1j9fb": { "id": "1j9fb", diff --git a/libs/content/question-bank-b737/questions/737.11.json b/libs/content/question-bank-type/questions/B737/737.11.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.11.json rename to libs/content/question-bank-type/questions/B737/737.11.json index cfb0ef485..efc62e8c0 100644 --- a/libs/content/question-bank-b737/questions/737.11.json +++ b/libs/content/question-bank-type/questions/B737/737.11.json @@ -2,7 +2,7 @@ { "id": "0kr6kl", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "0n377l": { "id": "0n377l", @@ -18,7 +18,7 @@ { "id": "u97g9", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "ox6ef": { "id": "ox6ef", @@ -59,7 +59,7 @@ { "id": "hxiga", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "yx8apf": { "id": "yx8apf", @@ -100,7 +100,7 @@ { "id": "02rxd", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "dd8l": { "id": "dd8l", @@ -141,7 +141,7 @@ { "id": "dfe5e", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "55qim": { "id": "55qim", @@ -182,7 +182,7 @@ { "id": "lt4x1", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "b5tqqk": { "id": "b5tqqk", @@ -198,7 +198,7 @@ { "id": "khogq", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "f8dcu": { "id": "f8dcu", @@ -239,7 +239,7 @@ { "id": "nq72r", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "rl9el": { "id": "rl9el", @@ -280,7 +280,7 @@ { "id": "lqsa5", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "3o12l": { "id": "3o12l", @@ -321,7 +321,7 @@ { "id": "srvd", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "fxeqsf": { "id": "fxeqsf", @@ -362,7 +362,7 @@ { "id": "zrgljl", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "f0qdd": { "id": "f0qdd", @@ -403,7 +403,7 @@ { "id": "r5b0o", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "vrg9o": { "id": "vrg9o", @@ -444,7 +444,7 @@ { "id": "sbbox", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "ocjr6": { "id": "ocjr6", @@ -460,7 +460,7 @@ { "id": "5i636h", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "hb2zx": { "id": "hb2zx", @@ -501,7 +501,7 @@ { "id": "2pkzj", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "lbt9j": { "id": "lbt9j", @@ -542,7 +542,7 @@ { "id": "4ipkcl", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "v6cp1": { "id": "v6cp1", @@ -558,7 +558,7 @@ { "id": "a35lah", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "laobo": { "id": "laobo", @@ -599,7 +599,7 @@ { "id": "86wohg", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "3qyw1": { "id": "3qyw1", @@ -640,7 +640,7 @@ { "id": "wngfuk", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "x82wsg": { "id": "x82wsg", @@ -681,7 +681,7 @@ { "id": "lc65dl", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "82t4i": { "id": "82t4i", @@ -722,7 +722,7 @@ { "id": "mkreq", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "98ckxh": { "id": "98ckxh", @@ -763,7 +763,7 @@ { "id": "qiqut", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "i6gt7h": { "id": "i6gt7h", @@ -804,7 +804,7 @@ { "id": "c0d2q", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "sipvy": { "id": "sipvy", @@ -820,7 +820,7 @@ { "id": "33b32", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "r7hxwj": { "id": "r7hxwj", @@ -861,7 +861,7 @@ { "id": "nm9cf", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "kgogqh": { "id": "kgogqh", @@ -877,7 +877,7 @@ { "id": "eh228", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "86b5oj": { "id": "86b5oj", @@ -918,7 +918,7 @@ { "id": "5dztj", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "0dz3r": { "id": "0dz3r", @@ -965,7 +965,7 @@ { "id": "mikhp", "explanation": "", - "learningObjectives": ["737.11"], + "learningObjectives": ["B737.11"], "variants": { "irzy3": { "id": "irzy3", diff --git a/libs/content/question-bank-b737/questions/737.12.json b/libs/content/question-bank-type/questions/B737/737.12.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.12.json rename to libs/content/question-bank-type/questions/B737/737.12.json index 85fad98ad..2d7938488 100644 --- a/libs/content/question-bank-b737/questions/737.12.json +++ b/libs/content/question-bank-type/questions/B737/737.12.json @@ -2,7 +2,7 @@ { "id": "8hyyw", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "sngxv": { "id": "sngxv", @@ -18,7 +18,7 @@ { "id": "kiina", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "dmbgx": { "id": "dmbgx", @@ -59,7 +59,7 @@ { "id": "u4itx", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "b0x43h": { "id": "b0x43h", @@ -100,7 +100,7 @@ { "id": "1q4k4", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "rk57d": { "id": "rk57d", @@ -141,7 +141,7 @@ { "id": "dnli", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "8jjax": { "id": "8jjax", @@ -182,7 +182,7 @@ { "id": "u67l4", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "ywi5j": { "id": "ywi5j", @@ -198,7 +198,7 @@ { "id": "eos0b", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "bevph": { "id": "bevph", @@ -239,7 +239,7 @@ { "id": "0epehk", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "fh375": { "id": "fh375", @@ -280,7 +280,7 @@ { "id": "sr0hn", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "o5tbdl": { "id": "o5tbdl", @@ -321,7 +321,7 @@ { "id": "vgbpr", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "kf90w": { "id": "kf90w", @@ -362,7 +362,7 @@ { "id": "97dst", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "2mv9mk": { "id": "2mv9mk", @@ -403,7 +403,7 @@ { "id": "mfpu7", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "tygrs": { "id": "tygrs", @@ -444,7 +444,7 @@ { "id": "5kkk", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "iowqz": { "id": "iowqz", @@ -460,7 +460,7 @@ { "id": "gtzug", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "lq8pp": { "id": "lq8pp", @@ -501,7 +501,7 @@ { "id": "ovz4o", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "l3xfa": { "id": "l3xfa", @@ -517,7 +517,7 @@ { "id": "1e3ex", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "zd7yq": { "id": "zd7yq", @@ -558,7 +558,7 @@ { "id": "qk6pif", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "wk8ff": { "id": "wk8ff", @@ -599,7 +599,7 @@ { "id": "48roz", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "opw5a": { "id": "opw5a", @@ -640,7 +640,7 @@ { "id": "4twgn", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "ddn9z": { "id": "ddn9z", @@ -681,7 +681,7 @@ { "id": "wq0fx", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "x5lmn": { "id": "x5lmn", @@ -722,7 +722,7 @@ { "id": "4d3j1", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "a36wg": { "id": "a36wg", @@ -763,7 +763,7 @@ { "id": "j1d3w", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "whgm6": { "id": "whgm6", @@ -804,7 +804,7 @@ { "id": "wh43l", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "ur51c": { "id": "ur51c", @@ -845,7 +845,7 @@ { "id": "l8zup", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "krs72": { "id": "krs72", @@ -886,7 +886,7 @@ { "id": "tbkvmi", "explanation": "", - "learningObjectives": ["737.12"], + "learningObjectives": ["B737.12"], "variants": { "cxkho": { "id": "cxkho", diff --git a/libs/content/question-bank-b737/questions/737.13.json b/libs/content/question-bank-type/questions/B737/737.13.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.13.json rename to libs/content/question-bank-type/questions/B737/737.13.json index d3d3538e4..da1a74541 100644 --- a/libs/content/question-bank-b737/questions/737.13.json +++ b/libs/content/question-bank-type/questions/B737/737.13.json @@ -2,7 +2,7 @@ { "id": "9ju3u", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "sn5kwl": { "id": "sn5kwl", @@ -43,7 +43,7 @@ { "id": "1s33g", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "yortd": { "id": "yortd", @@ -84,7 +84,7 @@ { "id": "l46pa", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "c4kwf": { "id": "c4kwf", @@ -125,7 +125,7 @@ { "id": "ifq5c", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "ocgmh": { "id": "ocgmh", @@ -166,7 +166,7 @@ { "id": "0i54w", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "rp2fm": { "id": "rp2fm", @@ -182,7 +182,7 @@ { "id": "4p3hh", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "qzgymj": { "id": "qzgymj", @@ -223,7 +223,7 @@ { "id": "w0k48g", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "zuxam": { "id": "zuxam", @@ -264,7 +264,7 @@ { "id": "gle7f", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "b2cxh": { "id": "b2cxh", @@ -280,7 +280,7 @@ { "id": "4r4h0j", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "iv7x9": { "id": "iv7x9", @@ -321,7 +321,7 @@ { "id": "gfkkqk", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "8f0haj": { "id": "8f0haj", @@ -337,7 +337,7 @@ { "id": "uh52w", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "sz22b": { "id": "sz22b", @@ -378,7 +378,7 @@ { "id": "i2s94", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "ja7n6": { "id": "ja7n6", @@ -419,7 +419,7 @@ { "id": "hrap", "explanation": "**STBY RUD** - activates standby hydraulic system pump and opens standby rudder\nshutoff valve to pressurize standby rudder power control unit.\n\n- **OFF** - closes flight control shutoff valve isolating ailerons, elevators and rudder\nfrom associated hydraulic system pressure.\n- **ON** (guarded position) - normal operating position.", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "in83r": { "id": "in83r", @@ -444,7 +444,7 @@ { "id": "x42t3f", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "tkjgd": { "id": "tkjgd", @@ -485,7 +485,7 @@ { "id": "i2hf", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "c0qw7": { "id": "c0qw7", @@ -526,7 +526,7 @@ { "id": "d7qw6", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "527ux": { "id": "527ux", @@ -567,7 +567,7 @@ { "id": "pvpep", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "egak4": { "id": "egak4", @@ -583,7 +583,7 @@ { "id": "9jghi", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "oubsui": { "id": "oubsui", @@ -624,7 +624,7 @@ { "id": "4wgdv", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "7os8g": { "id": "7os8g", @@ -665,7 +665,7 @@ { "id": "l6hmoj", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "s8j1ff": { "id": "s8j1ff", @@ -706,7 +706,7 @@ { "id": "9gdph", "explanation": "", - "learningObjectives": ["737.13"], + "learningObjectives": ["B737.13"], "variants": { "m1sd1f": { "id": "m1sd1f", diff --git a/libs/content/question-bank-b737/questions/737.14.json b/libs/content/question-bank-type/questions/B737/737.14.json similarity index 100% rename from libs/content/question-bank-b737/questions/737.14.json rename to libs/content/question-bank-type/questions/B737/737.14.json diff --git a/libs/content/question-bank-b737/questions/737.15.json b/libs/content/question-bank-type/questions/B737/737.15.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.15.json rename to libs/content/question-bank-type/questions/B737/737.15.json index 572caa3b4..85ed81501 100644 --- a/libs/content/question-bank-b737/questions/737.15.json +++ b/libs/content/question-bank-type/questions/B737/737.15.json @@ -2,7 +2,7 @@ { "id": "d9okg", "explanation": "Altitude alerting occurs when approaching or departing the MCP–selected altitude. Altitude alerting is inhibited when trailing edge flaps are extended to 25 or greater, or while G/S is captured.", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "cmhnj": { "id": "cmhnj", @@ -43,7 +43,7 @@ { "id": "b5ltgj", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "5ryjsg": { "id": "5ryjsg", @@ -59,7 +59,7 @@ { "id": "z7c3r", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "73fpp": { "id": "73fpp", @@ -100,7 +100,7 @@ { "id": "tqkh9", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "grerw": { "id": "grerw", @@ -141,7 +141,7 @@ { "id": "4v316", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "ow17c": { "id": "ow17c", @@ -182,7 +182,7 @@ { "id": "nd52a", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "ilq8p": { "id": "ilq8p", @@ -223,7 +223,7 @@ { "id": "47s8s", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "f81bj": { "id": "f81bj", @@ -239,7 +239,7 @@ { "id": "sikec", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "40n9qj": { "id": "40n9qj", @@ -255,7 +255,7 @@ { "id": "q3ez2", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "g60ol": { "id": "g60ol", @@ -296,7 +296,7 @@ { "id": "1hjv6", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "o2oyk": { "id": "o2oyk", @@ -337,7 +337,7 @@ { "id": "8zxmu", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "nuecy": { "id": "nuecy", @@ -378,7 +378,7 @@ { "id": "y21oy", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "679ul": { "id": "679ul", @@ -419,7 +419,7 @@ { "id": "ny7zy", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "4v6rw": { "id": "4v6rw", @@ -435,7 +435,7 @@ { "id": "d9vdk", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "gipom": { "id": "gipom", @@ -476,7 +476,7 @@ { "id": "zwp3j", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "c5li5f": { "id": "c5li5f", @@ -517,7 +517,7 @@ { "id": "e2tln", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "432ma": { "id": "432ma", @@ -558,7 +558,7 @@ { "id": "oy8fm", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "v370t": { "id": "v370t", @@ -599,7 +599,7 @@ { "id": "6e9ie", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "qaxug": { "id": "qaxug", @@ -640,7 +640,7 @@ { "id": "hp23x", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "9mdr3": { "id": "9mdr3", @@ -681,7 +681,7 @@ { "id": "3xk9e", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "ua5ptk": { "id": "ua5ptk", @@ -722,7 +722,7 @@ { "id": "9pzo4", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "nc0lxi": { "id": "nc0lxi", @@ -738,7 +738,7 @@ { "id": "j729s", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "28sgh": { "id": "28sgh", @@ -754,7 +754,7 @@ { "id": "glmjw", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "joxch": { "id": "joxch", @@ -795,7 +795,7 @@ { "id": "nu2mk", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "k8u5p": { "id": "k8u5p", @@ -836,7 +836,7 @@ { "id": "c6y6r", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "1w3bx": { "id": "1w3bx", @@ -852,7 +852,7 @@ { "id": "7gen1", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "hmogs": { "id": "hmogs", @@ -893,7 +893,7 @@ { "id": "d3jsr", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "j100b": { "id": "j100b", @@ -934,7 +934,7 @@ { "id": "ynh38", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "41q4v": { "id": "41q4v", @@ -975,7 +975,7 @@ { "id": "tb09r", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "fndqp": { "id": "fndqp", @@ -991,7 +991,7 @@ { "id": "y4jld", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "u63m7j": { "id": "u63m7j", @@ -1032,7 +1032,7 @@ { "id": "bu2g", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "hbrxi": { "id": "hbrxi", @@ -1073,7 +1073,7 @@ { "id": "0jmcal", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "yw3pf": { "id": "yw3pf", @@ -1089,7 +1089,7 @@ { "id": "n354j", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "cfxig": { "id": "cfxig", @@ -1130,7 +1130,7 @@ { "id": "nwsxj", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "8hbqj": { "id": "8hbqj", @@ -1171,7 +1171,7 @@ { "id": "hdsz6", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "kkoq3": { "id": "kkoq3", @@ -1187,7 +1187,7 @@ { "id": "wmmb", "explanation": "", - "learningObjectives": ["737.15"], + "learningObjectives": ["B737.15"], "variants": { "ecylbf": { "id": "ecylbf", diff --git a/libs/content/question-bank-b737/questions/737.json b/libs/content/question-bank-type/questions/B737/737.json similarity index 96% rename from libs/content/question-bank-b737/questions/737.json rename to libs/content/question-bank-type/questions/B737/737.json index 2280ed4bf..ed341996d 100644 --- a/libs/content/question-bank-b737/questions/737.json +++ b/libs/content/question-bank-type/questions/B737/737.json @@ -2,7 +2,7 @@ { "id": "fhf74", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lzs7mm": { "id": "lzs7mm", @@ -43,7 +43,7 @@ { "id": "t0vpo", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "mwgekc": { "id": "mwgekc", @@ -84,7 +84,7 @@ { "id": "ttr9bg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "imcch": { "id": "imcch", @@ -125,7 +125,7 @@ { "id": "5rja5i", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "otgavj": { "id": "otgavj", @@ -166,7 +166,7 @@ { "id": "di8ev8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "nz0exr": { "id": "nz0exr", @@ -207,7 +207,7 @@ { "id": "9tim7q", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "x7oep4": { "id": "x7oep4", @@ -248,7 +248,7 @@ { "id": "rrcnr5", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "u5goy9": { "id": "u5goy9", @@ -289,7 +289,7 @@ { "id": "vxgzgn", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7bgjdod": { "id": "7bgjdod", @@ -330,7 +330,7 @@ { "id": "8y2dw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "qbw0ej": { "id": "qbw0ej", @@ -371,7 +371,7 @@ { "id": "gua2dv", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "62xj9": { "id": "62xj9", @@ -412,7 +412,7 @@ { "id": "jit34", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "335tal": { "id": "335tal", @@ -453,7 +453,7 @@ { "id": "4b9yom", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jgeb23r": { "id": "jgeb23r", @@ -494,7 +494,7 @@ { "id": "er445o", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ztkdqh": { "id": "ztkdqh", @@ -535,7 +535,7 @@ { "id": "81xz99", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "xtowp": { "id": "xtowp", @@ -576,7 +576,7 @@ { "id": "4lj42d", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "nxvp87": { "id": "nxvp87", @@ -617,7 +617,7 @@ { "id": "ucteq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9rbruq": { "id": "9rbruq", @@ -658,7 +658,7 @@ { "id": "xgowvr", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ho3ufj": { "id": "ho3ufj", @@ -699,7 +699,7 @@ { "id": "mbh93f", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "zoxhtj": { "id": "zoxhtj", @@ -740,7 +740,7 @@ { "id": "woklmf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "08yvjg": { "id": "08yvjg", @@ -781,7 +781,7 @@ { "id": "6lozab", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9l9r3": { "id": "9l9r3", @@ -822,7 +822,7 @@ { "id": "id5z3b", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "kusf6i": { "id": "kusf6i", @@ -863,7 +863,7 @@ { "id": "1mv79q", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "grny5h": { "id": "grny5h", @@ -904,7 +904,7 @@ { "id": "2glkv", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sd831r": { "id": "sd831r", @@ -945,7 +945,7 @@ { "id": "7xod8k", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "orlzs": { "id": "orlzs", @@ -986,7 +986,7 @@ { "id": "8sskcf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "s96c78": { "id": "s96c78", @@ -1027,7 +1027,7 @@ { "id": "afuhuq7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "w0ism": { "id": "w0ism", @@ -1068,7 +1068,7 @@ { "id": "ookpbm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "skkksn": { "id": "skkksn", @@ -1109,7 +1109,7 @@ { "id": "12tslq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "qs5peg": { "id": "qs5peg", @@ -1150,7 +1150,7 @@ { "id": "sr9hi", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "6scz97m": { "id": "6scz97m", @@ -1191,7 +1191,7 @@ { "id": "w768eb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "gt9lxf": { "id": "gt9lxf", @@ -1232,7 +1232,7 @@ { "id": "trix4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rweid": { "id": "rweid", @@ -1273,7 +1273,7 @@ { "id": "7mi9u", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "is29zq": { "id": "is29zq", @@ -1314,7 +1314,7 @@ { "id": "1gjlih", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ypo1yf": { "id": "ypo1yf", @@ -1355,7 +1355,7 @@ { "id": "i6pjil", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "gwld1i": { "id": "gwld1i", @@ -1396,7 +1396,7 @@ { "id": "f4xdjo", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "c2y7ri": { "id": "c2y7ri", @@ -1437,7 +1437,7 @@ { "id": "msubj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1ij8v8": { "id": "1ij8v8", @@ -1478,7 +1478,7 @@ { "id": "pep96j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cg9k9m": { "id": "cg9k9m", @@ -1519,7 +1519,7 @@ { "id": "iik4y", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "e9m6yg": { "id": "e9m6yg", @@ -1560,7 +1560,7 @@ { "id": "nw6j19", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sencdf": { "id": "sencdf", @@ -1601,7 +1601,7 @@ { "id": "ay23tp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ktvjnf": { "id": "ktvjnf", @@ -1642,7 +1642,7 @@ { "id": "8qwka9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "e02jd": { "id": "e02jd", @@ -1683,7 +1683,7 @@ { "id": "nveqxb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8eeu": { "id": "8eeu", @@ -1724,7 +1724,7 @@ { "id": "mj0b7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ejr6ms": { "id": "ejr6ms", @@ -1765,7 +1765,7 @@ { "id": "3cwdsi", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "j2hrar": { "id": "j2hrar", @@ -1806,7 +1806,7 @@ { "id": "ai3a2", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "l7zvo": { "id": "l7zvo", @@ -1847,7 +1847,7 @@ { "id": "r2ewjl", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sj9rj9": { "id": "sj9rj9", @@ -1888,7 +1888,7 @@ { "id": "isegzs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "egzjq": { "id": "egzjq", @@ -1929,7 +1929,7 @@ { "id": "2ghh5g", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "p7osl4": { "id": "p7osl4", @@ -1970,7 +1970,7 @@ { "id": "2zmfp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7h7qn": { "id": "7h7qn", @@ -2011,7 +2011,7 @@ { "id": "e4vg4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cxv97": { "id": "cxv97", @@ -2052,7 +2052,7 @@ { "id": "uuqydl", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "a94jsg": { "id": "a94jsg", @@ -2093,7 +2093,7 @@ { "id": "0yuuc3", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "h4mtfl": { "id": "h4mtfl", @@ -2134,7 +2134,7 @@ { "id": "9vi8lm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wxr3dy5v": { "id": "wxr3dy5v", @@ -2175,7 +2175,7 @@ { "id": "i0olpp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7xlh3k": { "id": "7xlh3k", @@ -2216,7 +2216,7 @@ { "id": "ruf9a", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7ldxzi": { "id": "7ldxzi", @@ -2257,7 +2257,7 @@ { "id": "57cg49", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "t8jvma": { "id": "t8jvma", @@ -2298,7 +2298,7 @@ { "id": "43qt1", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "groc9": { "id": "groc9", @@ -2339,7 +2339,7 @@ { "id": "mcangc", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "fc5029": { "id": "fc5029", @@ -2380,7 +2380,7 @@ { "id": "ov3z2o", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4xhbvh": { "id": "4xhbvh", @@ -2421,7 +2421,7 @@ { "id": "2i20ey", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "v4jwjli": { "id": "v4jwjli", @@ -2462,7 +2462,7 @@ { "id": "f3ly4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "78b4yl": { "id": "78b4yl", @@ -2503,7 +2503,7 @@ { "id": "031kir", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ini48k": { "id": "ini48k", @@ -2544,7 +2544,7 @@ { "id": "hd5h7n", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8utg2k": { "id": "8utg2k", @@ -2585,7 +2585,7 @@ { "id": "wecukt", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "pota48": { "id": "pota48", @@ -2626,7 +2626,7 @@ { "id": "oxrsk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ccw0lj": { "id": "ccw0lj", @@ -2667,7 +2667,7 @@ { "id": "9g6z9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "yrviwc": { "id": "yrviwc", @@ -2708,7 +2708,7 @@ { "id": "z7jlp8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "djkorv": { "id": "djkorv", @@ -2749,7 +2749,7 @@ { "id": "zze9ia", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4llpqv": { "id": "4llpqv", @@ -2790,7 +2790,7 @@ { "id": "5tjne", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "actsf": { "id": "actsf", @@ -2831,7 +2831,7 @@ { "id": "cy6ur", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jqgzpo": { "id": "jqgzpo", @@ -2872,7 +2872,7 @@ { "id": "5g1m45", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "93rvms": { "id": "93rvms", @@ -2913,7 +2913,7 @@ { "id": "lkyj9c", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "kek2aq": { "id": "kek2aq", @@ -2954,7 +2954,7 @@ { "id": "8iea1h", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "x5w8fy": { "id": "x5w8fy", @@ -2995,7 +2995,7 @@ { "id": "ooxbn3", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "kne2t": { "id": "kne2t", @@ -3036,7 +3036,7 @@ { "id": "jdaot", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "l2cmi": { "id": "l2cmi", @@ -3077,7 +3077,7 @@ { "id": "6ujjxc", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9le19i": { "id": "9le19i", @@ -3118,7 +3118,7 @@ { "id": "qimmu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2uvuk": { "id": "2uvuk", @@ -3159,7 +3159,7 @@ { "id": "mlzwh1r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dc0naj": { "id": "dc0naj", @@ -3200,7 +3200,7 @@ { "id": "ub71or", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "n5nt82d": { "id": "n5nt82d", @@ -3241,7 +3241,7 @@ { "id": "j795pv", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "xsc29k": { "id": "xsc29k", @@ -3282,7 +3282,7 @@ { "id": "nnet54", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ocuxhc": { "id": "ocuxhc", @@ -3323,7 +3323,7 @@ { "id": "x5rt9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ua1yqf": { "id": "ua1yqf", @@ -3364,7 +3364,7 @@ { "id": "ndsp0j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lysjf": { "id": "lysjf", @@ -3405,7 +3405,7 @@ { "id": "q8xd1s", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rlsr6c": { "id": "rlsr6c", @@ -3446,7 +3446,7 @@ { "id": "84677", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lqm9sg": { "id": "lqm9sg", @@ -3487,7 +3487,7 @@ { "id": "2sknw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "i0f54r": { "id": "i0f54r", @@ -3528,7 +3528,7 @@ { "id": "levaua", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1yz67s": { "id": "1yz67s", @@ -3569,7 +3569,7 @@ { "id": "yo5tt", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4pee8": { "id": "4pee8", @@ -3610,7 +3610,7 @@ { "id": "ckdxe8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dp3r2": { "id": "dp3r2", @@ -3651,7 +3651,7 @@ { "id": "15tua", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "zefvxi": { "id": "zefvxi", @@ -3692,7 +3692,7 @@ { "id": "vtd3x8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3r67ab": { "id": "3r67ab", @@ -3733,7 +3733,7 @@ { "id": "toi88k", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dwfnid": { "id": "dwfnid", @@ -3774,7 +3774,7 @@ { "id": "7ldap", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "tq41wg": { "id": "tq41wg", @@ -3815,7 +3815,7 @@ { "id": "0rcnd3", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dr2h2": { "id": "dr2h2", @@ -3856,7 +3856,7 @@ { "id": "f1q4rn", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "u3eg3": { "id": "u3eg3", @@ -3897,7 +3897,7 @@ { "id": "e6zlf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "0986bp": { "id": "0986bp", @@ -3938,7 +3938,7 @@ { "id": "t48hfg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lx1xmu": { "id": "lx1xmu", @@ -3979,7 +3979,7 @@ { "id": "ksqkz", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "s0beox": { "id": "s0beox", @@ -4020,7 +4020,7 @@ { "id": "1xpr39", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "71o7l": { "id": "71o7l", @@ -4061,7 +4061,7 @@ { "id": "kiemmq", "explanation": "> ## DUAL BLEED Light\n>\n> The DUAL BLEED light illuminates whenever the APU bleed air valve is open\n> and the position of the engine bleed air switches and isolation valve would permit\n> possible backpressure of the APU. Therefore, thrust must be limited to idle with\n> the DUAL BLEED light illuminated.", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "qf6tid": { "id": "qf6tid", @@ -4176,7 +4176,7 @@ { "id": "rbso1e", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4icc1e": { "id": "4icc1e", @@ -4217,7 +4217,7 @@ { "id": "deep87", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "fe7d7i": { "id": "fe7d7i", @@ -4258,7 +4258,7 @@ { "id": "8oib8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "99khic": { "id": "99khic", @@ -4299,7 +4299,7 @@ { "id": "mntgnv", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9u8o84": { "id": "9u8o84", @@ -4340,7 +4340,7 @@ { "id": "jie98", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "enjavk": { "id": "enjavk", @@ -4381,7 +4381,7 @@ { "id": "576u2", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "uwt1b": { "id": "uwt1b", @@ -4422,7 +4422,7 @@ { "id": "6gkug", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "11836e": { "id": "11836e", @@ -4463,7 +4463,7 @@ { "id": "owrdbc", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "fwbc28": { "id": "fwbc28", @@ -4504,7 +4504,7 @@ { "id": "ojgkim", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2ewwc": { "id": "2ewwc", @@ -4545,7 +4545,7 @@ { "id": "g80yr2", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1vn6cd": { "id": "1vn6cd", @@ -4586,7 +4586,7 @@ { "id": "n4mqp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cdzo9s": { "id": "cdzo9s", @@ -4627,7 +4627,7 @@ { "id": "xgu02bk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "b8qki": { "id": "b8qki", @@ -4668,7 +4668,7 @@ { "id": "skeat", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "6d9nq5": { "id": "6d9nq5", @@ -4709,7 +4709,7 @@ { "id": "vtgc1", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "upjsvo": { "id": "upjsvo", @@ -4750,7 +4750,7 @@ { "id": "jnmei", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "e9sff5": { "id": "e9sff5", @@ -4791,7 +4791,7 @@ { "id": "6oa6gq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "mttk0j": { "id": "mttk0j", @@ -4832,7 +4832,7 @@ { "id": "ycxf7p", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "m0kuds": { "id": "m0kuds", @@ -4873,7 +4873,7 @@ { "id": "wa0bgs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ni9nsg": { "id": "ni9nsg", @@ -4914,7 +4914,7 @@ { "id": "5aohw4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "al98i": { "id": "al98i", @@ -4955,7 +4955,7 @@ { "id": "m0a9zk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ksrlt": { "id": "ksrlt", @@ -4996,7 +4996,7 @@ { "id": "185d4j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "n7htp": { "id": "n7htp", @@ -5037,7 +5037,7 @@ { "id": "xdcrk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bzz9fm": { "id": "bzz9fm", @@ -5078,7 +5078,7 @@ { "id": "du8e9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "77l6xi": { "id": "77l6xi", @@ -5119,7 +5119,7 @@ { "id": "8n20ur", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "w1spq": { "id": "w1spq", @@ -5160,7 +5160,7 @@ { "id": "s7i4fs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5odmor": { "id": "5odmor", @@ -5201,7 +5201,7 @@ { "id": "rwxdxn", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bkchn": { "id": "bkchn", @@ -5242,7 +5242,7 @@ { "id": "34y86c", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "z6ohg6": { "id": "z6ohg6", @@ -5283,7 +5283,7 @@ { "id": "a1wuzg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "opb5c": { "id": "opb5c", @@ -5324,7 +5324,7 @@ { "id": "8jdql", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sb2evf": { "id": "sb2evf", @@ -5365,7 +5365,7 @@ { "id": "luo5vm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1o3zja": { "id": "1o3zja", @@ -5406,7 +5406,7 @@ { "id": "c8p109", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rhi26r": { "id": "rhi26r", @@ -5447,7 +5447,7 @@ { "id": "ygjeie", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ph962": { "id": "ph962", @@ -5488,7 +5488,7 @@ { "id": "8eur4d", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "z65yq": { "id": "z65yq", @@ -5529,7 +5529,7 @@ { "id": "wbedp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "hildij": { "id": "hildij", @@ -5570,7 +5570,7 @@ { "id": "5bm2v7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "no8jpt": { "id": "no8jpt", @@ -5611,7 +5611,7 @@ { "id": "5ne6h", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ft0ha5": { "id": "ft0ha5", @@ -5652,7 +5652,7 @@ { "id": "uq72i4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9ohjmr": { "id": "9ohjmr", @@ -5693,7 +5693,7 @@ { "id": "5z929a", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "pwvk6": { "id": "pwvk6", @@ -5734,7 +5734,7 @@ { "id": "trbenc", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "0zve0ca": { "id": "0zve0ca", @@ -5775,7 +5775,7 @@ { "id": "q7ngd", "explanation": "> ## Cargo Compartment Fire Protection\n> \n> Cargo fire protection consists of these systems:\n> - cargo compartment smoke detection powered by DC bus 1 and DC bus 2\n> - cargo compartment fire suppression powered by the hot battery bus.", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "achgrd": { "id": "achgrd", @@ -5850,7 +5850,7 @@ { "id": "3yt6sc", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dxwwi8": { "id": "dxwwi8", @@ -5891,7 +5891,7 @@ { "id": "4cm2qs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "279ksi": { "id": "279ksi", @@ -5932,7 +5932,7 @@ { "id": "1utapm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "yu1w3u": { "id": "yu1w3u", @@ -5973,7 +5973,7 @@ { "id": "379mc7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4tioa": { "id": "4tioa", @@ -6014,7 +6014,7 @@ { "id": "szoi7n", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8tv1j": { "id": "8tv1j", @@ -6055,7 +6055,7 @@ { "id": "tylrks", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3ysef9": { "id": "3ysef9", @@ -6096,7 +6096,7 @@ { "id": "m92cwl", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "y6q4th": { "id": "y6q4th", @@ -6138,7 +6138,7 @@ { "id": "qrglu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9vrfr4": { "id": "9vrfr4", @@ -6179,7 +6179,7 @@ { "id": "175ltu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3nixdn": { "id": "3nixdn", @@ -6220,7 +6220,7 @@ { "id": "7ichkq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "z44i1": { "id": "z44i1", @@ -6261,7 +6261,7 @@ { "id": "54nqpy", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8hqskj": { "id": "8hqskj", @@ -6302,7 +6302,7 @@ { "id": "xtecr", "explanation": "> ## Automatic Slat Failure (AUTO SLAT FAIL) Light\n> \n> Illuminated (amber)\n> - indicates failure of the auto slat system\n> - indicates failure of a single Stall Management/Yaw Damper (SMYD) computer when illuminated during MASTER CAUTION recall and extinguishes when master caution system is reset.", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dm3a6q": { "id": "dm3a6q", @@ -6343,7 +6343,7 @@ { "id": "1sxzjm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "fgjqoc": { "id": "fgjqoc", @@ -6384,7 +6384,7 @@ { "id": "kyj3c", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ri0hej": { "id": "ri0hej", @@ -6425,7 +6425,7 @@ { "id": "w2ib", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "0kiaso": { "id": "0kiaso", @@ -6466,7 +6466,7 @@ { "id": "fcy1f7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5j8xl": { "id": "5j8xl", @@ -6507,7 +6507,7 @@ { "id": "5l47pb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "70cq07": { "id": "70cq07", @@ -6548,7 +6548,7 @@ { "id": "6r9a0d", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lxoga8": { "id": "lxoga8", @@ -6589,7 +6589,7 @@ { "id": "t5oytp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bh4zm": { "id": "bh4zm", @@ -6630,7 +6630,7 @@ { "id": "119ob", "explanation": "> ## Overboard Exhaust Valve\n> \n> On the ground and in flight with low differential pressure, the overboard exhaust\n> valve is open and warm air from the E & E bay is discharged overboard. In flight,\n> at higher cabin differential pressures, the overboard exhaust valve is normally\n> closed and exhaust air is diffused to the lining of the forward cargo compartment.\n> \n> **However, the overboard exhaust valve is driven open if either pack switch is in high and the recirculation fan is off.** \n> This allows for increased ventilation in the smoke removal configuration.\n", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3p4ebp": { "id": "3p4ebp", @@ -6671,7 +6671,7 @@ { "id": "e6e0xd", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "h2n1cj": { "id": "h2n1cj", @@ -6712,7 +6712,7 @@ { "id": "qjhnr", "explanation": "> ## APU\n> \n> - APU bleed + electrical load: max alt 10,000 ft.\n> - APU bleed: max alt 17,000 ft.\n> - APU electrical load: max alt 41,000 ft.", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sbmbmT": { "id": "sbmbmT", @@ -6821,7 +6821,7 @@ { "id": "6h4q0f", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cn71t8": { "id": "cn71t8", @@ -6862,7 +6862,7 @@ { "id": "j316so", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "etdirs": { "id": "etdirs", @@ -6903,7 +6903,7 @@ { "id": "5c53g", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4i85gr": { "id": "4i85gr", @@ -6944,7 +6944,7 @@ { "id": "gu6zpo", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9socjg": { "id": "9socjg", @@ -6985,7 +6985,7 @@ { "id": "wwa55n", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ajnvyp": { "id": "ajnvyp", @@ -7026,7 +7026,7 @@ { "id": "9e53ww", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ho5ff": { "id": "ho5ff", @@ -7067,7 +7067,7 @@ { "id": "g69bz", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "vnuiup": { "id": "vnuiup", @@ -7108,7 +7108,7 @@ { "id": "43w0c", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "6mwl9l": { "id": "6mwl9l", @@ -7149,7 +7149,7 @@ { "id": "3734rs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "aoyueo": { "id": "aoyueo", @@ -7190,7 +7190,7 @@ { "id": "6krk8v", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "d8qqqh": { "id": "d8qqqh", @@ -7231,7 +7231,7 @@ { "id": "5plks9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "l36y1": { "id": "l36y1", @@ -7272,7 +7272,7 @@ { "id": "rnv40o", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "n6zsx": { "id": "n6zsx", @@ -7313,7 +7313,7 @@ { "id": "u6jxdi", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "auksro": { "id": "auksro", @@ -7354,7 +7354,7 @@ { "id": "nsv55n", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "p4va2g": { "id": "p4va2g", @@ -7395,7 +7395,7 @@ { "id": "8nu3nk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wgoloi": { "id": "wgoloi", @@ -7436,7 +7436,7 @@ { "id": "zelnc8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "43b85r": { "id": "43b85r", @@ -7477,7 +7477,7 @@ { "id": "9cmr1r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jd2mg1": { "id": "jd2mg1", @@ -7518,7 +7518,7 @@ { "id": "qcjsh", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "oxqxss": { "id": "oxqxss", @@ -7559,7 +7559,7 @@ { "id": "14mrhd", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "56tu5r": { "id": "56tu5r", @@ -7600,7 +7600,7 @@ { "id": "s9bcaj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "xwuacf": { "id": "xwuacf", @@ -7641,7 +7641,7 @@ { "id": "c8crx", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wl906w": { "id": "wl906w", @@ -7682,7 +7682,7 @@ { "id": "28cvw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ggqiud": { "id": "ggqiud", @@ -7723,7 +7723,7 @@ { "id": "6ybck8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5dhj6c": { "id": "5dhj6c", @@ -7764,7 +7764,7 @@ { "id": "f3kque", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "f0w8uf": { "id": "f0w8uf", @@ -7805,7 +7805,7 @@ { "id": "99sxde", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ztwbo6": { "id": "ztwbo6", @@ -7846,7 +7846,7 @@ { "id": "zlqf6i", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8ht34t": { "id": "8ht34t", @@ -7887,7 +7887,7 @@ { "id": "ehy9i8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "66buc": { "id": "66buc", @@ -7928,7 +7928,7 @@ { "id": "p4fx18", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rypcc": { "id": "rypcc", @@ -7969,7 +7969,7 @@ { "id": "a4vgv", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ipqo6r": { "id": "ipqo6r", @@ -8010,7 +8010,7 @@ { "id": "bnc8an", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dvf69i": { "id": "dvf69i", @@ -8051,7 +8051,7 @@ { "id": "tirtmk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cuqoa": { "id": "cuqoa", @@ -8092,7 +8092,7 @@ { "id": "n5bt14", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cblgj6": { "id": "cblgj6", @@ -8133,7 +8133,7 @@ { "id": "c73jym", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "kwghmc": { "id": "kwghmc", @@ -8174,7 +8174,7 @@ { "id": "zyj12u", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bdpl8": { "id": "bdpl8", @@ -8215,7 +8215,7 @@ { "id": "8kop4f", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9sgu7ql": { "id": "9sgu7ql", @@ -8256,7 +8256,7 @@ { "id": "9klk3b", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wyaeqt": { "id": "wyaeqt", @@ -8297,7 +8297,7 @@ { "id": "tzfn0ja", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "b0pyru": { "id": "b0pyru", @@ -8338,7 +8338,7 @@ { "id": "ahp1p", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "t23v9s": { "id": "t23v9s", @@ -8379,7 +8379,7 @@ { "id": "xng8x", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "oi9snp": { "id": "oi9snp", @@ -8420,7 +8420,7 @@ { "id": "9fgxxj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "oix0cm": { "id": "oix0cm", @@ -8462,7 +8462,7 @@ { "id": "tqhmou", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "pzwozo": { "id": "pzwozo", @@ -8503,7 +8503,7 @@ { "id": "s1a7dn", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "6ejl3a": { "id": "6ejl3a", @@ -8544,7 +8544,7 @@ { "id": "jzxs7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8b5q4m": { "id": "8b5q4m", @@ -8585,7 +8585,7 @@ { "id": "87sgij", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wvyky": { "id": "wvyky", @@ -8626,7 +8626,7 @@ { "id": "m6n55c", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rnn6dn": { "id": "rnn6dn", @@ -8667,7 +8667,7 @@ { "id": "p5wn1", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "un1eqe": { "id": "un1eqe", @@ -8708,7 +8708,7 @@ { "id": "oc5zy4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "gswkvu": { "id": "gswkvu", @@ -8749,7 +8749,7 @@ { "id": "1ip58s", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "z19bg": { "id": "z19bg", @@ -8790,7 +8790,7 @@ { "id": "coba0n", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "b8ybci": { "id": "b8ybci", @@ -8831,7 +8831,7 @@ { "id": "og2lg5", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1vbe": { "id": "1vbe", @@ -8872,7 +8872,7 @@ { "id": "xq49ij", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1ompe": { "id": "1ompe", @@ -8913,7 +8913,7 @@ { "id": "4symtw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "pcfx": { "id": "pcfx", @@ -8954,7 +8954,7 @@ { "id": "hh1369", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rdkc76": { "id": "rdkc76", @@ -8995,7 +8995,7 @@ { "id": "kqb9ke", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "kdxtbs": { "id": "kdxtbs", @@ -9036,7 +9036,7 @@ { "id": "sg9qap", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "qkkxta": { "id": "qkkxta", @@ -9077,7 +9077,7 @@ { "id": "9su8xf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9jvapd": { "id": "9jvapd", @@ -9118,7 +9118,7 @@ { "id": "72dmar", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bj3d4h": { "id": "bj3d4h", @@ -9159,7 +9159,7 @@ { "id": "c8y7yq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dfruux": { "id": "dfruux", @@ -9200,7 +9200,7 @@ { "id": "s26dt", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cyhcgs": { "id": "cyhcgs", @@ -9241,7 +9241,7 @@ { "id": "rtf0h8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "zoxlx7": { "id": "zoxlx7", @@ -9282,7 +9282,7 @@ { "id": "1ajwu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "hjg0a": { "id": "hjg0a", @@ -9323,7 +9323,7 @@ { "id": "jjjb95", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "as0oz": { "id": "as0oz", @@ -9364,7 +9364,7 @@ { "id": "80pwx8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "941fc": { "id": "941fc", @@ -9405,7 +9405,7 @@ { "id": "3h4xu5", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "fscu4g": { "id": "fscu4g", @@ -9446,7 +9446,7 @@ { "id": "myffms", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "udts8": { "id": "udts8", @@ -9487,7 +9487,7 @@ { "id": "5jwsg9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4rc22": { "id": "4rc22", @@ -9528,7 +9528,7 @@ { "id": "vazaw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "q51thjj": { "id": "q51thjj", @@ -9569,7 +9569,7 @@ { "id": "848dcg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "uqyjxb": { "id": "uqyjxb", @@ -9610,7 +9610,7 @@ { "id": "wvy7f3", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "vm64nj": { "id": "vm64nj", @@ -9651,7 +9651,7 @@ { "id": "oh8ocd", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "74rf3": { "id": "74rf3", @@ -9692,7 +9692,7 @@ { "id": "87ttth", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5x2ydm": { "id": "5x2ydm", @@ -9733,7 +9733,7 @@ { "id": "n8ny1e", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "qz3xch": { "id": "qz3xch", @@ -9774,7 +9774,7 @@ { "id": "96rduc", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wkcd1b": { "id": "wkcd1b", @@ -9815,7 +9815,7 @@ { "id": "8j4ok4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "etzchc": { "id": "etzchc", @@ -9856,7 +9856,7 @@ { "id": "d1hefq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "0ohrta": { "id": "0ohrta", @@ -9897,7 +9897,7 @@ { "id": "4qk43p", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7mprp7": { "id": "7mprp7", @@ -9938,7 +9938,7 @@ { "id": "b207p8", "explanation": "> ## REFILL Indication (RF) (white)\n> \n> Illuminated (white) – hydraulic quantity below 76%.\n> Note: Valid only when airplane is on ground with both engines shutdown or after\n> landing with flaps up during taxi–in.", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sd0jf7": { "id": "sd0jf7", @@ -9979,7 +9979,7 @@ { "id": "qn9vj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2g9qee": { "id": "2g9qee", @@ -10020,7 +10020,7 @@ { "id": "xt7o1", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "87c8vk": { "id": "87c8vk", @@ -10061,7 +10061,7 @@ { "id": "m3arkf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "21ke6l": { "id": "21ke6l", @@ -10102,7 +10102,7 @@ { "id": "3a03ls", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "hcn3r7": { "id": "hcn3r7", @@ -10143,7 +10143,7 @@ { "id": "mv6z1p", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "gxrdm": { "id": "gxrdm", @@ -10184,7 +10184,7 @@ { "id": "8xs0x", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "aoqbd": { "id": "aoqbd", @@ -10225,7 +10225,7 @@ { "id": "iyp1wi", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "fmhqan": { "id": "fmhqan", @@ -10266,7 +10266,7 @@ { "id": "j98ces", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "uud7s": { "id": "uud7s", @@ -10307,7 +10307,7 @@ { "id": "z03t", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "q3f6gr": { "id": "q3f6gr", @@ -10348,7 +10348,7 @@ { "id": "8qllu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8tyqo": { "id": "8tyqo", @@ -10389,7 +10389,7 @@ { "id": "jhgpg9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "nl9g18": { "id": "nl9g18", @@ -10430,7 +10430,7 @@ { "id": "a2uegn", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "smfh3l": { "id": "smfh3l", @@ -10471,7 +10471,7 @@ { "id": "30hged", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "coxc1b": { "id": "coxc1b", @@ -10512,7 +10512,7 @@ { "id": "odctyp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ymhkfi": { "id": "ymhkfi", @@ -10553,7 +10553,7 @@ { "id": "s9ecms", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "nge2j": { "id": "nge2j", @@ -10594,7 +10594,7 @@ { "id": "0bpyj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "v56b9b": { "id": "v56b9b", @@ -10635,7 +10635,7 @@ { "id": "rvos1d", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7b1wt": { "id": "7b1wt", @@ -10676,7 +10676,7 @@ { "id": "mqo8g07", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "d2s5juj": { "id": "d2s5juj", @@ -10717,7 +10717,7 @@ { "id": "plxc1a", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ft1ms": { "id": "ft1ms", @@ -10758,7 +10758,7 @@ { "id": "fzzyp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "6h3ice": { "id": "6h3ice", @@ -10799,7 +10799,7 @@ { "id": "xns3a", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "88db0s": { "id": "88db0s", @@ -10840,7 +10840,7 @@ { "id": "d8d72s", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "sduabd": { "id": "sduabd", @@ -10881,7 +10881,7 @@ { "id": "6yea1", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bx6tw": { "id": "bx6tw", @@ -10922,7 +10922,7 @@ { "id": "8b4f1w", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "0uk4bu": { "id": "0uk4bu", @@ -10963,7 +10963,7 @@ { "id": "0o088e", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "mxnwd": { "id": "mxnwd", @@ -11004,7 +11004,7 @@ { "id": "1a7xwl", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2b1sl": { "id": "2b1sl", @@ -11045,7 +11045,7 @@ { "id": "xcvbo", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "636j68": { "id": "636j68", @@ -11086,7 +11086,7 @@ { "id": "fly2gg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "8jjna": { "id": "8jjna", @@ -11127,7 +11127,7 @@ { "id": "kr10kq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3vm0a": { "id": "3vm0a", @@ -11168,7 +11168,7 @@ { "id": "xfm96", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "oa87v9": { "id": "oa87v9", @@ -11209,7 +11209,7 @@ { "id": "rv70a", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "mlk5zj": { "id": "mlk5zj", @@ -11250,7 +11250,7 @@ { "id": "ck568a", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lgy2m9": { "id": "lgy2m9", @@ -11291,7 +11291,7 @@ { "id": "dqa7bb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "cojvmt": { "id": "cojvmt", @@ -11332,7 +11332,7 @@ { "id": "8c25ph", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dnjbei": { "id": "dnjbei", @@ -11373,7 +11373,7 @@ { "id": "e543x8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2ic227": { "id": "2ic227", @@ -11414,7 +11414,7 @@ { "id": "xkvv6r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "59jnj": { "id": "59jnj", @@ -11455,7 +11455,7 @@ { "id": "jcgw19", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "52f9n": { "id": "52f9n", @@ -11496,7 +11496,7 @@ { "id": "x7lj71", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "61984n": { "id": "61984n", @@ -11537,7 +11537,7 @@ { "id": "m3co", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "db8ns": { "id": "db8ns", @@ -11578,7 +11578,7 @@ { "id": "n3dea", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "i0jlg": { "id": "i0jlg", @@ -11619,7 +11619,7 @@ { "id": "jhoh4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jv9hdm": { "id": "jv9hdm", @@ -11660,7 +11660,7 @@ { "id": "34cp3k", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "vumopc": { "id": "vumopc", @@ -11701,7 +11701,7 @@ { "id": "8rcch", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1hpu5b": { "id": "1hpu5b", @@ -11742,7 +11742,7 @@ { "id": "n1t7a8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3tks2o": { "id": "3tks2o", @@ -11783,7 +11783,7 @@ { "id": "us38vp", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "y5s4k": { "id": "y5s4k", @@ -11824,7 +11824,7 @@ { "id": "qczsen", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "bmql8f": { "id": "bmql8f", @@ -11865,7 +11865,7 @@ { "id": "doul6h", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2988md": { "id": "2988md", @@ -11906,7 +11906,7 @@ { "id": "qirlsf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "y6jjtl": { "id": "y6jjtl", @@ -11947,7 +11947,7 @@ { "id": "tn1ls", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "x7d81f": { "id": "x7d81f", @@ -11988,7 +11988,7 @@ { "id": "4gszq", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "m066ku": { "id": "m066ku", @@ -12029,7 +12029,7 @@ { "id": "btm1e9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "uselwd": { "id": "uselwd", @@ -12070,7 +12070,7 @@ { "id": "fpvajl", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "2f510d": { "id": "2f510d", @@ -12111,7 +12111,7 @@ { "id": "ncg9r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "96292h": { "id": "96292h", @@ -12152,7 +12152,7 @@ { "id": "02lvmv", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3y2kz5": { "id": "3y2kz5", @@ -12193,7 +12193,7 @@ { "id": "h4oev8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1bc7nd": { "id": "1bc7nd", @@ -12234,7 +12234,7 @@ { "id": "bpl3p", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "uzosti": { "id": "uzosti", @@ -12275,7 +12275,7 @@ { "id": "a5aq1g", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "yuh33": { "id": "yuh33", @@ -12316,7 +12316,7 @@ { "id": "7jh0jye", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "34lmgi": { "id": "34lmgi", @@ -12357,7 +12357,7 @@ { "id": "erml3j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "tmag3q": { "id": "tmag3q", @@ -12398,7 +12398,7 @@ { "id": "o47rir", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "h4pbu7": { "id": "h4pbu7", @@ -12439,7 +12439,7 @@ { "id": "xgvgvw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "qtlu0n": { "id": "qtlu0n", @@ -12480,7 +12480,7 @@ { "id": "shz3hi", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "560hul": { "id": "560hul", @@ -12521,7 +12521,7 @@ { "id": "jjaibm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5dz498": { "id": "5dz498", @@ -12562,7 +12562,7 @@ { "id": "lhxdod", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7jsdcn": { "id": "7jsdcn", @@ -12603,7 +12603,7 @@ { "id": "ex994", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "b3re6o": { "id": "b3re6o", @@ -12644,7 +12644,7 @@ { "id": "5t4lf", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "vccfm": { "id": "vccfm", @@ -12685,7 +12685,7 @@ { "id": "exy8y", "explanation": "## 737 Essential dimesnions\n\n- Width: 35.79m\n- Length 39.5m\n- Wingtip radius 22.90m", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "gdb9m": { "id": "gdb9m", @@ -12830,7 +12830,7 @@ { "id": "8w5ot", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "yc2ji": { "id": "yc2ji", @@ -12871,7 +12871,7 @@ { "id": "rlhhb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "0rl58p": { "id": "0rl58p", @@ -12912,7 +12912,7 @@ { "id": "v7foze", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "slk7wi": { "id": "slk7wi", @@ -12953,7 +12953,7 @@ { "id": "69z1hh", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "m0w6u": { "id": "m0w6u", @@ -12994,7 +12994,7 @@ { "id": "g39bqn", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1l004q": { "id": "1l004q", @@ -13035,7 +13035,7 @@ { "id": "mbqxzm", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "mt5rp": { "id": "mt5rp", @@ -13076,7 +13076,7 @@ { "id": "utwz3", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "oj1tug": { "id": "oj1tug", @@ -13117,7 +13117,7 @@ { "id": "rar49o", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "53mjk8": { "id": "53mjk8", @@ -13158,7 +13158,7 @@ { "id": "ohair", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "7wh6u": { "id": "7wh6u", @@ -13199,7 +13199,7 @@ { "id": "k3u7t", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "69wb9": { "id": "69wb9", @@ -13240,7 +13240,7 @@ { "id": "fhluwr", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "70a8ox": { "id": "70a8ox", @@ -13281,7 +13281,7 @@ { "id": "vmc7xj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "eqs07f": { "id": "eqs07f", @@ -13322,7 +13322,7 @@ { "id": "r2mn1r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "xbj55": { "id": "xbj55", @@ -13363,7 +13363,7 @@ { "id": "jsnwjj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9x80b": { "id": "9x80b", @@ -13404,7 +13404,7 @@ { "id": "zjrn25", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "unwj4b": { "id": "unwj4b", @@ -13445,7 +13445,7 @@ { "id": "rqd8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "pjykr": { "id": "pjykr", @@ -13486,7 +13486,7 @@ { "id": "iaxlgs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "h3zpk": { "id": "h3zpk", @@ -13527,7 +13527,7 @@ { "id": "w0lxs8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1yjae": { "id": "1yjae", @@ -13568,7 +13568,7 @@ { "id": "jjbyct", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "is4se9": { "id": "is4se9", @@ -13609,7 +13609,7 @@ { "id": "9b1mzs", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "i2vf3i": { "id": "i2vf3i", @@ -13650,7 +13650,7 @@ { "id": "114pd", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "9tni": { "id": "9tni", @@ -13691,7 +13691,7 @@ { "id": "lh03ut", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "zg2c6o": { "id": "zg2c6o", @@ -13732,7 +13732,7 @@ { "id": "25gef", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "donvul": { "id": "donvul", @@ -13773,7 +13773,7 @@ { "id": "nqj12", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "r5de6t": { "id": "r5de6t", @@ -13814,7 +13814,7 @@ { "id": "jm0zbk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "35xbhm": { "id": "35xbhm", @@ -13855,7 +13855,7 @@ { "id": "yfdbwb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "wngr5": { "id": "wngr5", @@ -13896,7 +13896,7 @@ { "id": "iyj99", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "dd9hxy": { "id": "dd9hxy", @@ -13937,7 +13937,7 @@ { "id": "17p9g", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1of99q": { "id": "1of99q", @@ -13978,7 +13978,7 @@ { "id": "veado4", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "w9xfdym": { "id": "w9xfdym", @@ -14019,7 +14019,7 @@ { "id": "f1y8pk", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "umz6xh": { "id": "umz6xh", @@ -14060,7 +14060,7 @@ { "id": "ox9pxo", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "o3chr": { "id": "o3chr", @@ -14101,7 +14101,7 @@ { "id": "b3eo5r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ho2m1": { "id": "ho2m1", @@ -14142,7 +14142,7 @@ { "id": "9e00kw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1ivvob": { "id": "1ivvob", @@ -14183,7 +14183,7 @@ { "id": "swcq6", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "nmahst": { "id": "nmahst", @@ -14224,7 +14224,7 @@ { "id": "k7z05r", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5y8sm": { "id": "5y8sm", @@ -14265,7 +14265,7 @@ { "id": "e0ep1", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "vgt7fn": { "id": "vgt7fn", @@ -14306,7 +14306,7 @@ { "id": "wvcud9", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rnfji": { "id": "rnfji", @@ -14347,7 +14347,7 @@ { "id": "5n2f4l", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "e3gu5t": { "id": "e3gu5t", @@ -14388,7 +14388,7 @@ { "id": "rwc9d7", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "ok76z9": { "id": "ok76z9", @@ -14429,7 +14429,7 @@ { "id": "2db16", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4ipl09": { "id": "4ipl09", @@ -14470,7 +14470,7 @@ { "id": "fzmbl", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "zg6phb": { "id": "zg6phb", @@ -14511,7 +14511,7 @@ { "id": "hp5hmu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "i2c3": { "id": "i2c3", @@ -14552,7 +14552,7 @@ { "id": "m5wyvb", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "e1oilh": { "id": "e1oilh", @@ -14593,7 +14593,7 @@ { "id": "ixpure", "explanation": "> ## PACK Light\n> \n> Illuminated (amber)\n> - indicates pack trip off or failure of both primary and standby pack controls\n> - during Master Caution recall, indicates failure of either primary or standby pack control. Extinguishes when Master Caution is reset.", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jg857a": { "id": "jg857a", @@ -14634,7 +14634,7 @@ { "id": "4hhadt", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jvsfl": { "id": "jvsfl", @@ -14675,7 +14675,7 @@ { "id": "iqj2k8", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "mfnj3e": { "id": "mfnj3e", @@ -14716,7 +14716,7 @@ { "id": "ikbt7m", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "vrh52p": { "id": "vrh52p", @@ -14757,7 +14757,7 @@ { "id": "muo8ww", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "x20rcb": { "id": "x20rcb", @@ -14798,7 +14798,7 @@ { "id": "i6ira", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "x8bad6": { "id": "x8bad6", @@ -14839,7 +14839,7 @@ { "id": "zndmsci", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "edjpta": { "id": "edjpta", @@ -14880,7 +14880,7 @@ { "id": "4pr29j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "j4v13d": { "id": "j4v13d", @@ -14921,7 +14921,7 @@ { "id": "2ra35n", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "zwct8c": { "id": "zwct8c", @@ -14962,7 +14962,7 @@ { "id": "1x0om", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "lt0b9w": { "id": "lt0b9w", @@ -15003,7 +15003,7 @@ { "id": "7va32w", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "rynfgr": { "id": "rynfgr", @@ -15044,7 +15044,7 @@ { "id": "hpn56g", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "u3vbs": { "id": "u3vbs", @@ -15085,7 +15085,7 @@ { "id": "kpknvg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "oahnxv": { "id": "oahnxv", @@ -15126,7 +15126,7 @@ { "id": "jnr0p", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "jtca7r": { "id": "jtca7r", @@ -15167,7 +15167,7 @@ { "id": "2x7mwj", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "moim7h": { "id": "moim7h", @@ -15208,7 +15208,7 @@ { "id": "b63by", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "hhigt": { "id": "hhigt", @@ -15249,7 +15249,7 @@ { "id": "syhle", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "g87ga5": { "id": "g87ga5", @@ -15290,7 +15290,7 @@ { "id": "qsfj0j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "1505vs": { "id": "1505vs", @@ -15331,7 +15331,7 @@ { "id": "2rgmhu", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "paxsk7": { "id": "paxsk7", @@ -15372,7 +15372,7 @@ { "id": "2befa", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "688ego": { "id": "688ego", @@ -15413,7 +15413,7 @@ { "id": "a32ieg", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "q81ji5h": { "id": "q81ji5h", @@ -15454,7 +15454,7 @@ { "id": "jufbw", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "4ulrfr": { "id": "4ulrfr", @@ -15495,7 +15495,7 @@ { "id": "bq7y4x", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "3jhs4k": { "id": "3jhs4k", @@ -15536,7 +15536,7 @@ { "id": "3xx7j", "explanation": "", - "learningObjectives": ["737"], + "learningObjectives": ["B737"], "variants": { "5qpgck": { "id": "5qpgck", diff --git a/libs/content/question-bank-a320/subjects/subjects.json b/libs/content/question-bank-type/subjects/subjects.json similarity index 50% rename from libs/content/question-bank-a320/subjects/subjects.json rename to libs/content/question-bank-type/subjects/subjects.json index 638061988..83dcce549 100644 --- a/libs/content/question-bank-a320/subjects/subjects.json +++ b/libs/content/question-bank-type/subjects/subjects.json @@ -1,8 +1,8 @@ [ { "id": "A320", - "longName": "Type Rating review questions", - "shortName": "Type Rating review questions", + "longName": "A320 Type Rating review questions", + "shortName": "A320 TR", "numberOfExamQuestions": 40, "numberOfExamMinutes": 40, "children": [ @@ -83,5 +83,74 @@ "text": "Power Plant" } ] + }, + { + "id": "B737", + "longName": "B737 Type Rating review questions", + "shortName": "B737 TR", + "numberOfExamQuestions": 40, + "numberOfExamMinutes": 40, + "children": [ + { + "id": "B737.01", + "text": "Aircraft General" + }, + { + "id": "B737.02", + "text": "Air Systems" + }, + { + "id": "B737.03", + "text": "Ice and Rain Protection" + }, + { + "id": "B737.04", + "text": "Automatic Flight" + }, + { + "id": "B737.05", + "text": "Communications" + }, + { + "id": "B737.06", + "text": "Electrical" + }, + { + "id": "B737.07", + "text": "Engines, APU" + }, + { + "id": "B737.08", + "text": "Fire Protection" + }, + { + "id": "B737.09", + "text": "Flight Controls" + }, + { + "id": "B737.10", + "text": "Flight Instruments" + }, + { + "id": "B737.11", + "text": "Flight Management & Navigation Systems" + }, + { + "id": "B737.12", + "text": "Fuel" + }, + { + "id": "B737.13", + "text": "Hydraulics" + }, + { + "id": "B737.14", + "text": "Landing Gear" + }, + { + "id": "B737.15", + "text": "Warning Systems" + } + ] } ] diff --git a/libs/core/question-bank/project.json b/libs/core/question-bank/project.json index 26ba41339..052a312cd 100644 --- a/libs/core/question-bank/project.json +++ b/libs/core/question-bank/project.json @@ -20,8 +20,7 @@ }, "tags": [], "implicitDependencies": [ - "content-question-bank-b737", - "content-question-bank-a320", + "content-question-bank-type", "content-question-bank-atpl", "content-question-bank-prep" ] diff --git a/libs/core/question-bank/src/index.ts b/libs/core/question-bank/src/index.ts index 1214c1fe7..417291385 100644 --- a/libs/core/question-bank/src/index.ts +++ b/libs/core/question-bank/src/index.ts @@ -2,8 +2,7 @@ import { QuestionBank } from "./question-bank"; import type { QuestionBankName } from "@chair-flight/base/types"; export const questionBanks: Record = { - b737: new QuestionBank("b737"), - a320: new QuestionBank("a320"), + type: new QuestionBank("type"), atpl: new QuestionBank("atpl"), prep: new QuestionBank("prep"), }; diff --git a/libs/core/question-bank/src/question-bank.test.ts b/libs/core/question-bank/src/question-bank.test.ts index 1af852038..d0c5ba5f4 100644 --- a/libs/core/question-bank/src/question-bank.test.ts +++ b/libs/core/question-bank/src/question-bank.test.ts @@ -1,15 +1,20 @@ import * as fs from "node:fs/promises"; import { questionBankQuestionSchema } from "@chair-flight/core/schemas"; import { questionBanks } from "./index"; +import type { QuestionBankName } from "@chair-flight/base/types"; describe("QuestionBank", async () => { await Promise.all( - (["b737", "a320", "atpl", "prep"] as const).map((qb) => + (["type", "atpl", "prep"] as const).map((qb) => questionBanks[qb].preloadForStaticRender(fs), ), ); - const modulesWithQuestions = ["b737", "a320", "atpl"] as const; + const modulesWithQuestions = [ + "type", + "prep", + "atpl", + ] satisfies QuestionBankName[]; const allQuestions = await Promise.all( modulesWithQuestions .map((b) => questionBanks[b]) @@ -19,20 +24,12 @@ describe("QuestionBank", async () => { const questionIds = allQuestions.map(([id]) => id); const variantIds = allQuestions.flatMap(([, q]) => Object.keys(q.variants)); - test("QuestionBankB737 has correct config", async () => { - expect(questionBanks["b737"].getName()).toBe("b737"); - expect(await questionBanks["b737"].has("questions")).toBe(true); - expect(await questionBanks["b737"].has("learningObjectives")).toBe(false); - expect(await questionBanks["b737"].has("media")).toBe(false); - expect(await questionBanks["b737"].has("flashcards")).toBe(false); - }); - - test("QuestionBankA320 has correct config", async () => { - expect(questionBanks["a320"].getName()).toBe("a320"); - expect(await questionBanks["a320"].has("questions")).toBe(true); - expect(await questionBanks["a320"].has("learningObjectives")).toBe(false); - expect(await questionBanks["a320"].has("media")).toBe(false); - expect(await questionBanks["a320"].has("flashcards")).toBe(false); + test("QuestionBankType has correct config", async () => { + expect(questionBanks["type"].getName()).toBe("type"); + expect(await questionBanks["type"].has("questions")).toBe(true); + expect(await questionBanks["type"].has("learningObjectives")).toBe(false); + expect(await questionBanks["type"].has("media")).toBe(false); + expect(await questionBanks["type"].has("flashcards")).toBe(false); }); test("QuestionBankAtpl has correct config", async () => { diff --git a/libs/core/schemas/src/question-bank-schema.ts b/libs/core/schemas/src/question-bank-schema.ts index 88a881ea9..8b23ef8b7 100644 --- a/libs/core/schemas/src/question-bank-schema.ts +++ b/libs/core/schemas/src/question-bank-schema.ts @@ -1,3 +1,3 @@ import { z } from "zod"; -export const questionBankNameSchema = z.enum(["b737", "a320", "atpl", "prep"]); +export const questionBankNameSchema = z.enum(["type", "atpl", "prep"]); diff --git a/libs/react/components/src/cta-search/cta-search.tsx b/libs/react/components/src/cta-search/cta-search.tsx index 14d82d1f2..5c60924f9 100644 --- a/libs/react/components/src/cta-search/cta-search.tsx +++ b/libs/react/components/src/cta-search/cta-search.tsx @@ -1,30 +1,14 @@ -import { forwardRef, useEffect, useRef, useState } from "react"; -import { mergeRefs } from "react-merge-refs"; +import { forwardRef, useEffect, useState } from "react"; import { default as SearchIcon } from "@mui/icons-material/Search"; -import { - CircularProgress, - FormControl, - FormLabel, - Input, - Typography, -} from "@mui/joy"; +import { CircularProgress, Input } from "@mui/joy"; import type { InputProps } from "@mui/joy"; export type CtaSearchProps = { value: string; onChange: (value: string) => void; loading?: boolean; - numberOfResults?: number; disableLabel?: boolean; -} & Omit< - InputProps, - | "value" - | "onChange" - | "startDecorator" - | "endDecorator" - | "size" - | "fullWidth" ->; +} & Omit; /** * A search box to interact with our search API. @@ -34,19 +18,22 @@ export type CtaSearchProps = { */ export const CtaSearch = forwardRef( ( - { value, onChange, loading, sx, numberOfResults, disableLabel, ...props }, + { + value, + onChange, + loading, + sx, + disableLabel, + type = "search", + role = "search", + size = "lg", + ...props + }, ref, ) => { - const inputRef = useRef(null); - const mergedRef = mergeRefs([ref, inputRef]); const [search, setSearch] = useState(value); const [isDebouncing, setIsDebouncing] = useState(false); - useEffect(function focusInputAfterMount() { - if (!inputRef.current) return; - inputRef.current.getElementsByTagName("input")[0].focus(); - }, []); - useEffect( function callbackWitDebounce() { if (search === value) return; @@ -72,41 +59,22 @@ export const CtaSearch = forwardRef( const isLoading = isDebouncing || loading; return ( - { + setIsDebouncing(true); + setSearch(e.target.value); }} - > - { - setIsDebouncing(true); - setSearch(e.target.value); - }} - startDecorator={ - isLoading ? : - } - /> - {!disableLabel && ( - - {!isLoading ? ( - - Number of Results: {numberOfResults} - - ) : ( - Loading results... - )} - - )} - + startDecorator={ + isLoading ? : + } + /> ); }, ); diff --git a/libs/react/components/src/hooks/use-disclose.ts b/libs/react/components/src/hooks/use-disclose.ts new file mode 100644 index 000000000..efc678fde --- /dev/null +++ b/libs/react/components/src/hooks/use-disclose.ts @@ -0,0 +1,11 @@ +import { useCallback, useState } from "react"; + +export const useDisclose = (initialValue = false) => { + const [isOpen, setIsOpen] = useState(initialValue); + return { + isOpen, + open: useCallback(() => setIsOpen(true), []), + close: useCallback(() => setIsOpen(false), []), + toggle: useCallback(() => setIsOpen((o) => !o), []), + }; +}; diff --git a/libs/react/components/src/index.ts b/libs/react/components/src/index.ts index 25be41859..ed4f72ab4 100644 --- a/libs/react/components/src/index.ts +++ b/libs/react/components/src/index.ts @@ -15,6 +15,7 @@ export * from "./flashcard-tinder"; export * from "./hook-form"; export * from "./hooks/use-media-query"; export * from "./hooks/use-window-resize"; +export * from "./hooks/use-disclose"; export * from "./module-selection-button"; export * from "./image-viewer/image-viewer"; export * from "./input-slider"; diff --git a/libs/react/components/src/markdown-client/markdown-client-compressed.tsx b/libs/react/components/src/markdown-client/markdown-client-compressed.tsx index 3aefe6914..a1640f8bc 100644 --- a/libs/react/components/src/markdown-client/markdown-client-compressed.tsx +++ b/libs/react/components/src/markdown-client/markdown-client-compressed.tsx @@ -13,6 +13,11 @@ export const MarkdownClientCompressed = styled(MarkdownClient)` p { margin: 0; } + + ul { + margin: 0; + padding-left: 16px; + } `; export type MarkdownClientCompressedProps = MarkdownClientProps; diff --git a/libs/react/components/src/theme/theme-override-color-scheme.tsx b/libs/react/components/src/theme/theme-override-color-scheme.tsx index f2927859f..08cd047c8 100644 --- a/libs/react/components/src/theme/theme-override-color-scheme.tsx +++ b/libs/react/components/src/theme/theme-override-color-scheme.tsx @@ -32,9 +32,7 @@ export const ThemeOverrideColorScheme: FC = ({ styles={(t) => { const palette = t.colorSchemes.light.palette; switch (questionBank) { - case "b737": - return getGlobalColorScheme(palette.primaryRose); - case "a320": + case "type": return getGlobalColorScheme(palette.primaryRose); case "prep": return getGlobalColorScheme(palette.primaryTeal); diff --git a/libs/react/containers/src/learning-objectives/learning-objectives-search/learning-objectives-search.tsx b/libs/react/containers/src/learning-objectives/learning-objectives-search/learning-objectives-search.tsx index 86dc35c22..e415f598c 100644 --- a/libs/react/containers/src/learning-objectives/learning-objectives-search/learning-objectives-search.tsx +++ b/libs/react/containers/src/learning-objectives/learning-objectives-search/learning-objectives-search.tsx @@ -54,8 +54,6 @@ const TdWithMarkdown = styled("td")` export const LearningObjectivesSearch = container( ({ component = "section", questionBank, sx }) => { - const params = { questionBank }; - const initialData = LearningObjectivesSearch.useData(params); const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down("md")); const [search, setSearch] = useState(""); @@ -76,9 +74,6 @@ export const LearningObjectivesSearch = container( .flatMap((p) => p.items) .map((d) => d.result); - const numberOfResults = - data?.pages[0].totalResults ?? initialData.numberOfLearningObjectives; - const onScroll = (e: React.UIEvent) => { const target = e.target as HTMLDivElement; const { scrollHeight, scrollTop, clientHeight } = target; @@ -92,7 +87,6 @@ export const LearningObjectivesSearch = container( value={search} loading={isLoading} onChange={(value) => setSearch(value)} - numberOfResults={numberOfResults} sx={{ my: 1, mx: "auto" }} placeholder="search Learning Objectives..." /> diff --git a/libs/react/containers/src/overviews/overview-modules/overview-modules.tsx b/libs/react/containers/src/overviews/overview-modules/overview-modules.tsx index 8747bfe10..9b98e31ea 100644 --- a/libs/react/containers/src/overviews/overview-modules/overview-modules.tsx +++ b/libs/react/containers/src/overviews/overview-modules/overview-modules.tsx @@ -5,7 +5,6 @@ import { default as CheckIcon } from "@mui/icons-material/CheckOutlined"; import { Box, Card, CardContent, CardCover, Grid, Typography } from "@mui/joy"; import { trpc } from "@chair-flight/trpc/client"; import { container } from "../../wraper/container"; -import { default as previewA320 } from "./images/a320.png"; import { default as previewAtpl } from "./images/atpl.png"; import { default as previewB737 } from "./images/b737.png"; import { default as previewPrep } from "./images/prep.png"; @@ -27,44 +26,32 @@ type Params = { type Data = { numberOfFlashcards: number; numberOfAtplQuestions: number; - numberOfB737Questions: number; - numberOfA320Questions: number; + numberOfTypeQuestions: number; }; export const OverviewModules = container( ({ questionBank, sx, component = "section" }) => { const params = { questionBank }; - const { - numberOfFlashcards, - numberOfAtplQuestions, - numberOfB737Questions, - numberOfA320Questions, - } = OverviewModules.useData(params); + const { numberOfFlashcards, numberOfAtplQuestions, numberOfTypeQuestions } = + OverviewModules.useData(params); const modules = [ { - id: "atpl" as QuestionBankName, + id: "atpl" satisfies QuestionBankName, name: "EASA ATPL Theory", imgSrc: previewAtpl, imgAlt: "A cessna looking cute in the skies", tagLine: `${numberOfAtplQuestions} Questions`, }, { - id: "a320" as QuestionBankName, - name: "A320 Type Rating Questions", - imgSrc: previewA320, - imgAlt: "A320 Looking super cool doing Airbus stuff", - tagLine: `${numberOfA320Questions} Questions`, - }, - { - id: "b737" as QuestionBankName, + id: "type" satisfies QuestionBankName, name: "737 Type Rating Questions", imgSrc: previewB737, imgAlt: "737 dragging itself through the skies like an old lady", - tagLine: `${numberOfB737Questions} Questions`, + tagLine: `${numberOfTypeQuestions} Questions`, }, { - id: "prep" as QuestionBankName, + id: "prep" satisfies QuestionBankName, name: "Interview Preparation", imgSrc: previewPrep, imgAlt: "F16, almost no one using this website will ever fly.", @@ -165,20 +152,17 @@ OverviewModules.getData = async ({ helper }) => { const [ { count: numberOfFlashcards }, { count: numberOfAtplQuestions }, - { count: numberOfB737Questions }, - { count: numberOfA320Questions }, + { count: numberOfTypeQuestions }, ] = await Promise.all([ helper.questionBank.getNumberOfFlashcards.fetch({ questionBank: "prep" }), helper.questionBank.getNumberOfQuestions.fetch({ questionBank: "atpl" }), - helper.questionBank.getNumberOfQuestions.fetch({ questionBank: "b737" }), - helper.questionBank.getNumberOfQuestions.fetch({ questionBank: "a320" }), + helper.questionBank.getNumberOfQuestions.fetch({ questionBank: "type" }), ]); return { numberOfFlashcards, numberOfAtplQuestions, - numberOfB737Questions, - numberOfA320Questions, + numberOfTypeQuestions, }; }; @@ -187,18 +171,15 @@ OverviewModules.useData = () => { const [ [{ count: numberOfFlashcards }], [{ count: numberOfAtplQuestions }], - [{ count: numberOfB737Questions }], - [{ count: numberOfA320Questions }], + [{ count: numberOfTypeQuestions }], ] = [ qb.getNumberOfFlashcards.useSuspenseQuery({ questionBank: "prep" }), qb.getNumberOfQuestions.useSuspenseQuery({ questionBank: "atpl" }), - qb.getNumberOfQuestions.useSuspenseQuery({ questionBank: "b737" }), - qb.getNumberOfQuestions.useSuspenseQuery({ questionBank: "a320" }), + qb.getNumberOfQuestions.useSuspenseQuery({ questionBank: "type" }), ]; return { numberOfFlashcards, numberOfAtplQuestions, - numberOfB737Questions, - numberOfA320Questions, + numberOfTypeQuestions, }; }; diff --git a/libs/react/containers/src/overviews/overview-welcome/welcome.stories.tsx b/libs/react/containers/src/overviews/overview-welcome/welcome.stories.tsx index ba6684077..ad8f42f58 100644 --- a/libs/react/containers/src/overviews/overview-welcome/welcome.stories.tsx +++ b/libs/react/containers/src/overviews/overview-welcome/welcome.stories.tsx @@ -19,7 +19,7 @@ const meta: Meta = { argTypes: { questionBank: { control: "select", - options: ["atpl", "a320", "b737", "prep"] as QuestionBankName[], + options: ["atpl", "type", "prep"] satisfies QuestionBankName[], }, }, parameters: { diff --git a/libs/react/containers/src/overviews/overview-welcome/welcome.tsx b/libs/react/containers/src/overviews/overview-welcome/welcome.tsx index 3823fc526..59cfea328 100644 --- a/libs/react/containers/src/overviews/overview-welcome/welcome.tsx +++ b/libs/react/containers/src/overviews/overview-welcome/welcome.tsx @@ -15,8 +15,6 @@ import { container } from "../../wraper/container"; import { RightContainer } from "./welcome-right-container"; import type { QuestionBankName } from "@chair-flight/base/types"; -type Theme = "b737" | "atpl" | "prep"; - type Props = { headerHeight?: number; questionBank?: QuestionBankName; @@ -26,8 +24,7 @@ type Props = { type Data = { numberOfFlashcards: number; numberOfAtplQuestions: number; - numberOfB737Questions: number; - numberOfA320Questions: number; + numberOfTypeQuestions: number; }; type Params = Record; @@ -41,16 +38,12 @@ export const OverviewWelcome = container( component = "section", }) => { const rightSideContainer = useRef(null); - const { - numberOfFlashcards, - numberOfAtplQuestions, - numberOfB737Questions, - numberOfA320Questions, - } = OverviewWelcome.useData({}); + const { numberOfFlashcards, numberOfAtplQuestions, numberOfTypeQuestions } = + OverviewWelcome.useData({}); const mediaLongScreen = "@media (min-height: 560px) and (min-width: 440px)"; - const goToTheme = (theme: Theme) => { + const goToTheme = (theme: QuestionBankName) => { onQuestionBankChanged(theme); const top = rightSideContainer.current?.offsetTop ?? 0; setTimeout( @@ -190,15 +183,15 @@ export const OverviewWelcome = container( sx={{ mb: { xs: 1, md: 2 } }} color={"rose"} title={"Type Rating"} - active={["737", "a320"].includes(questionBank ?? "")} + active={["type"].includes(questionBank ?? "")} description={[ `Prepare or review your theory knowledge for a type rating `, - `on the Boeing 737 with ${numberOfB737Questions} questions, `, - `or the Airbus A320 with ${numberOfA320Questions} questions.`, + `on the Boeing 737 or the Airbus A320 with `, + `${numberOfTypeQuestions} questions.`, ].join("")} icon={} - onClick={() => goToTheme("b737")} - showMoreHref="/modules/737" + onClick={() => goToTheme("type")} + showMoreHref="/modules/type" /> ( /> )} - {questionBank === "b737" && ( + {questionBank === "type" && ( ( and Boeing 737 - - + + + + ); + }, +); QuestionSearch.displayName = "QuestionSearch"; QuestionSearch.getData = async ({ helper, params }) => { const questionBank = getRequiredParam(params, "questionBank"); - const data = await helper.questionBank.getNumberOfQuestions.fetch({ - questionBank, - }); + const [data] = await Promise.all([ + helper.questionBank.getAllSubjects.fetch({ questionBank }), + ]); - return { numberOfQuestions: data.count }; + return { + subjects: data.subjects, + }; }; QuestionSearch.useData = (params) => { const questionBank = getRequiredParam(params, "questionBank"); - const [data] = trpc.questionBank.getNumberOfQuestions.useSuspenseQuery({ + const [data] = trpc.questionBank.getAllSubjects.useSuspenseQuery({ questionBank, }); - return { numberOfQuestions: data.count }; + return { + subjects: data.subjects, + }; }; diff --git a/libs/react/containers/src/tests/test-maker/test-maker.tsx b/libs/react/containers/src/tests/test-maker/test-maker.tsx index 09a4acc70..ec2685113 100644 --- a/libs/react/containers/src/tests/test-maker/test-maker.tsx +++ b/libs/react/containers/src/tests/test-maker/test-maker.tsx @@ -36,10 +36,8 @@ const resolver = zodResolver(newTestConfigurationSchema); const testMakerPersistence = { "cf-test-maker-atpl": createUsePersistenceHook("cf-test-maker-atpl"), - "cf-test-maker-b737": - createUsePersistenceHook("cf-test-maker-b737"), - "cf-test-maker-a320": - createUsePersistenceHook("cf-test-maker-a320"), + "cf-test-maker-type": + createUsePersistenceHook("cf-test-maker-type"), "cf-test-maker-prep": createUsePersistenceHook("cf-test-maker-prep"), }; diff --git a/libs/trpc/mock/src/__mocks__/question-search.mock.ts b/libs/trpc/mock/src/__mocks__/question-search.mock.ts index f4d8d7650..0a5251257 100644 --- a/libs/trpc/mock/src/__mocks__/question-search.mock.ts +++ b/libs/trpc/mock/src/__mocks__/question-search.mock.ts @@ -1,412 +1,388 @@ +import type { QuestionBankName } from "@chair-flight/base/types"; + export const mockQuestionSearchItems = [ { - result: { - questionId: "Q1ZL4E6FH6", - variantId: "MlH6O1aO", - text: "Which of the following speed schedules, applicable to the same aeroplane, represents the highest cost index?\n\n- :white_check_mark: Climb: 340 KT / M 0.80, Cruise: M 0.80, Descent : M 0.80/340 KT\n- :x: Climb: 255 KT / M 0.76, Cruise: M 0.76, Descent : M 0.76/245 KT\n- :x: Climb: 280 KT / M 0.76, Cruise: M 0.76, Descent : M 0.76/294 KT\n- :x: Climb: 296 KT / M 0.80, Cruise: M 0.80, Descent : M 0.80/288 KT", - numberOfVariants: 1, - learningObjectives: ["032.04.03.07.03"], - externalIds: ["BGS-321026", "ATPLQ-323391"], - href: "/modules/atpl/questions/Q1ZL4E6FH6?variantId=MlH6O1aO", - }, - score: 8.323115292997793, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "gdjhd", + questionId: "26mpt", + variantId: "gdjhd", + text: "With bleed air supplied from the APU (APU bleed value open or same pack operation) the pack flow is automatically selected to:\n\n- :white_check_mark: High\n- :x: Normal\n- :x: Low\n- :x: ECON", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/26mpt?variantId=gdjhd", }, { - result: { - questionId: "QJW9VQ5II4", - variantId: "EtEwumEZ", - text: "A precision Category I lighting system shall consist of a row of lights on the extended runway centre line over a distance...\n\n- :white_check_mark: 900 m with a row of lights forming a crossbar 30 m in length at a distance of 300 m from the runway threshold.\n- :x: 300 m with a row of lights forming a crossbar 30 m in length at a distance of 150 m from the runway threshold.\n- :x: 1 200 m with a row of lights forming a crossbar 30 m in length at a distance of 420 m from the runway threshold.\n- :x: 600 m with a row of lights forming a crossbar 30 m in length at a distance of 300 m from the runway threshold.", - numberOfVariants: 1, - learningObjectives: ["010.09.04.03.06"], - externalIds: [ - "BGS-101445", - "ATPLQ-108448", - "ATPLQ-104905", - "ATPLGS-119243", - "AVEXAM-76004", - ], - href: "/modules/atpl/questions/QJW9VQ5II4?variantId=EtEwumEZ", - }, - score: 8.222031621426387, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "tsz4e", + questionId: "tlxkb", + variantId: "tsz4e", + text: "The zone controller or the air conditioning system controllers (ACSC) optimize temperature by acting on the?\n\n- :white_check_mark: Trim air valves\n- :x: Skin air valves\n- :x: Isolation valves\n- :x: Pack valves", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/tlxkb?variantId=tsz4e", }, { - result: { - questionId: "QBG6DOHUH6", - variantId: "M0PQtS3p", - text: "What is the definition of CAVOK?\n\n- :white_check_mark: Visibility is 10 000 m or more, no significant cloud below 1500 m, no significant weather.\n- :x: Visibility is 5000 m or more, no significant cloud below 1500 m, no significant weather.\n- :x: Visibility is 10 000 m or more, no significant cloud below 5000 m, no significant weather.\n- :x: Visibility is 5000 m or more, no significant cloud below 10,000 m, no significant weather.", - numberOfVariants: 1, - learningObjectives: ["090.01", "090.03"], - externalIds: ["ATPLQ-916033"], - href: "/modules/atpl/questions/QBG6DOHUH6?variantId=M0PQtS3p", - }, - score: 8.19959729405989, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "bjx1i", + questionId: "8ai7y", + variantId: "bjx1i", + text: "What would cause an amber PACK FAULT light on the PACK pb-sw to illuminate?\n\n- :x: Pack outlet overheat\n- :x: Compressor outlet overheat\n- :x: Switch position disagreement in comparison to the pack flow control valve\n- :white_check_mark: All answers are correct", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/8ai7y?variantId=bjx1i", }, { - result: { - questionId: "QM45XGFC2K", - variantId: "oRat9qaF", - text: "There are two groups of crossbars, within the first 300 m from the threshold, of an approach light system CAT I and CAT II. What are the corresponding distances from the threshold?\n\n- :white_check_mark: 150 m and 300 m\n- :x: 100 m and 200 m\n- :x: 200 m and 300 m\n- :x: 100 m and 300 m", - numberOfVariants: 1, - learningObjectives: ["010.09.08.03.04"], - externalIds: ["ATPLQ-104913", "AVEXAM-69005"], - href: "/modules/atpl/questions/QM45XGFC2K?variantId=oRat9qaF", - }, - score: 8.170559816622072, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "g7gea", + questionId: "yaqc4", + variantId: "g7gea", + text: "The two cabin pressure controllers receive signals from:\n\n- :x: ADIRS only\n- :x: ADIRS and FMGC only\n- :white_check_mark: ADIRS, FMGC, LGCIU and EIU\n- :x: ADIRS, FMGC and EIU only", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/yaqc4?variantId=g7gea", }, { - result: { - questionId: "Q1P16V5IBO", - variantId: "HOgw3qdr", - text: "The maximum load per running metre of an aeroplane is 350 kg/m. The width of the floor area is 2 metres. The floor strength limitation is 300 kg per square metre. Which one of the following crates can be loaded directly on the floor?\n\n- :white_check_mark: A load of 400 kg in a crate with dimensions 1.2 m × 1.2 m × 1.2 m.\n- :x: A load of 500 kg in a crate with dimensions 1.5 m × 1 m × 1 m.\n- :x: A load of 400 kg in a crate with dimensions 1.4 m × 0.8 m × 0.8 m.\n- :x: A load of 700 kg in a crate with dimensions 1.8 m × 1.4 m × 0.8 m.", - numberOfVariants: 1, - learningObjectives: ["031.02.02.03.01"], - externalIds: [ - "AVEXAM-79394", - "BGS-310312", - "ATPLQ-315771", - "ATPLGS-107195", - ], - href: "/modules/atpl/questions/Q1P16V5IBO?variantId=HOgw3qdr", - }, - score: 8.169757076810285, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "7d7lv", + questionId: "ns2wdk", + variantId: "7d7lv", + text: "Under what conditions should the pack flow controller on an A319 be set to HI?\n\n- :x: In cold conditions to achieve a higher cabin temperature range\n- :x: If the number of Passengers is below 115\n- :white_check_mark: For abnormal hot and humid conditions\n- :x: If the number of occupants is above 138", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/ns2wdk?variantId=7d7lv", }, { - result: { - questionId: "QPX44OURHX", - variantId: "EFDG3Y1P", - text: 'According to the "Aerodrome Reference Code", the "Code Letter E" shall identify an aircraft wingspan of:\n\n- :white_check_mark: 52 m up to but not including 65 m.\n- :x: 24 m up to but not including 36 m.\n- :x: 15 m up to but not including 24 m.\n- :x: 36 m up to but not including 52 m.', - numberOfVariants: 1, - learningObjectives: ["010.05.03.01.10"], - externalIds: ["AVEXAM-45191", "ATPLGS-104493"], - href: "/modules/atpl/questions/QPX44OURHX?variantId=EFDG3Y1P", - }, - score: 8.118227873062486, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "bfwrh", + questionId: "ukrp6", + variantId: "bfwrh", + text: "With both the BLOWER and EXTRACT pushbutton switches in OVRD, what happens to the ventilation system?\n\n- :x: The system goes into open configuration and the blower fan stops\n- :white_check_mark: The system goes into smoke configuration and the blower fan stops\n- :x: The system goes into open configuration and the extract fan stops\n- :x: The system goes into intermediate configuration and the extract fan stops", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/ukrp6?variantId=bfwrh", }, { - result: { - questionId: "Q0JBJAILGF", - variantId: "CHNtv3TZ", - text: "Determine the ASDA for runway 09, given:TORA: 2300 m \n Stopway: 280 m \n Clearway: 480 m\n\n- :white_check_mark: 2 580 m\n- :x: 3 060 m\n- :x: 2 780 m\n- :x: 2 300 m", - numberOfVariants: 1, - learningObjectives: ["032.01.02.02.07"], - externalIds: ["ATPLQ-321133"], - href: "/modules/atpl/questions/Q0JBJAILGF?variantId=CHNtv3TZ", - }, - score: 8.106607756496848, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "g2udk", + questionId: "k4cum", + variantId: "g2udk", + text: "The pack flow control valve closes automatically in case of:\n\n- :white_check_mark: Pack overheat, engine fire push button operation, engine start, ditching push button pressed\n- :x: Bleed valve failure, pack outlet pressure increase\n- :x: All Answers are correct\n- :x: Takeoff when takeoff power is set and the main landing gear struts are compressed", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/k4cum?variantId=g2udk", }, { - result: { - questionId: "Q0HBLBFBHT", - variantId: "UMbLwa37", - text: "The maximum permissible running load of the cargo compartment of your aircraft is 630 kg/m. Which of the following container can be loaded?\n• Container W, 700 kg, length: 1.1 m, width 1.1 m\n• Container X, 760 kg, length: 1.1 m, width 1.1 m\n• Container Y, 700 kg, length: 1.2 m, width 1.2 m\n• Container Z, 760 kg, length: 1.2 m, width 1.2 m\n\n- :white_check_mark: Container Y\n- :x: Container Z\n- :x: Container W\n- :x: Container X", - numberOfVariants: 1, - learningObjectives: ["031.02.02.03.02"], - externalIds: ["AVEXAM-1129"], - href: "/modules/atpl/questions/Q0HBLBFBHT?variantId=UMbLwa37", - }, - score: 8.098769099703206, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "hec5l", + questionId: "6rpyu", + variantId: "hec5l", + text: "The cabin pressure during lift-off and at touchdown is ________ ambient pressure\n\n- :white_check_mark: Higher than\n- :x: Lower than\n- :x: Equal to\n- :x: Irrespective to", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/6rpyu?variantId=hec5l", }, { - result: { - questionId: "QE94FVU229", - variantId: "N9tNC8WU", - text: "Consider the following data for runway 09. What is the ASDA?\nTORA: 2 100 m\nStopway: 200 m\nClearway: 450 m\n\n- :white_check_mark: 2 300 m\n- :x: 2 100 m\n- :x: 2 750 m\n- :x: 2 550 m", - numberOfVariants: 1, - learningObjectives: ["032.01.02.02.07"], - externalIds: ["AVEXAM-19668", "BGS-320874", "AVEXAM-36552"], - href: "/modules/atpl/questions/QE94FVU229?variantId=N9tNC8WU", - }, - score: 8.088357996717624, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "037r8", + questionId: "qi743", + variantId: "037r8", + text: "Having manually set the LDG ELEV the cabin altitude is…\n\n- :x: Only controllable manually through the MAN V/S CTL\n- :white_check_mark: Still controlled automatically through the outflow valve\n- :x: Still controlled normally through the safety valve\n- :x: Only controllable manually through the LDG ELEV selector", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/qi743?variantId=037r8", }, { - result: { - questionId: "QO24BRSW5F", - variantId: "OMRmz0m7", - text: "Which of the listed containers is acceptable for loading in a cargo compartment with a maximum permissible running load of 630 kg/m?\n\nContainer W (base dimensions 1.1 m x 1.1 m) loaded with 700 kg.Container X (base dimensions 1.1 m x 1.1 m) loaded with 760 kg.Container Y (base dimensions 1.2 m x 1.2 m) loaded with 700 kg.Container Z (base dimensions 1.2 m x 1.2 m) loaded with 760 kg.\n\n- :white_check_mark: Container Y\n- :x: Container X\n- :x: Container W\n- :x: Container Z", - numberOfVariants: 1, - learningObjectives: ["031.06.02.01.02"], - externalIds: ["ATPLQ-319501", "BGS-310613", "ATPLGS-625796"], - href: "/modules/atpl/questions/QO24BRSW5F?variantId=OMRmz0m7", - }, - score: 8.084600366400013, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "em1ms", + questionId: "11tl3", + variantId: "em1ms", + text: "The PACK FLOW selector on an A320 is in LO position. Which statement is correct?\n\n- :x: The pack valve flow selection is 80%\n- :x: The pack flow can be automatically selected up to 100% when the cooling demand cannot be satisfied\n- :x: With APU bleed supply or single Pack operation, HI pack valve flow is automatically selected\n- :white_check_mark: All answers are correct", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/11tl3?variantId=em1ms", }, { - result: { - questionId: "Q9KHJ50HGC", - variantId: "L1tKkq2h", - text: "In a precision approach (ILS), the glide path interception generally occurs at heights above runway elevation between..\n\n- :white_check_mark: 300 m (1000 ft) and 900 m (3000 ft).\n- :x: 300 m (1000 ft) and 600 m (2000 ft).\n- :x: 150 m (500 ft) and 300 m (1000 ft).\n- :x: 150 m (500 ft) and 900 m (3000 ft).", - numberOfVariants: 1, - learningObjectives: ["010.06.07.01.07"], - externalIds: [ - "ATPLQ-104923", - "ATPLGS-118955", - "BGS-100183", - "ATPLGS-621738", - ], - href: "/modules/atpl/questions/Q9KHJ50HGC?variantId=L1tKkq2h", - }, - score: 8.054574674459626, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "t67q9", + questionId: "9a944", + variantId: "t67q9", + text: "The RAM AIR INLET is powered via…\n\n- :x: AC BUS 1\n- :x: AC BUS 2\n- :white_check_mark: DC ESS BUS\n- :x: DC BUS 1", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/9a944?variantId=t67q9", }, { - result: { - questionId: "QBB9DJIFAN", - variantId: "t1djau9m", - text: "The floor loading of a cargo compartment is 732 kg/m2\n Of the options listed, which is the smallest pallet size that is acceptable for loading a box of 806 kg?\n\n- :white_check_mark: 1.2 m x 1.2 m\n- :x: 0.8 m x 0.8 m\n- :x: 1.0 m x 1.0 m\n- :x: 1.4 m x 1.4 m", - numberOfVariants: 1, - learningObjectives: ["031.06.02.01.01"], - externalIds: ["ATPLGS-126803", "BGS-310674", "ATPLQ-317174"], - href: "/modules/atpl/questions/QBB9DJIFAN?variantId=t1djau9m", - }, - score: 8.038856779841385, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "6dgpsi", + questionId: "gqqbm", + variantId: "6dgpsi", + text: "The PACK FLOW controller is set to NORM and yet the ECAM display shows PACK FLOW to be high. How is this possible?\n\n- :x: As the engines are not running the PACK FLOW indicators are at the position they were selected to at the last shut down\n- :x: As no bleed air is available the PACK FLOW valves are spring loaded to the fully open position\n- :white_check_mark: HI flow is automatically selected regardless of PACK FLOW selector position because air is only being supplied by the APU\n- :x: With cold outside air conditions the PACK FLOW is automatically increased to help increase the cabin temperature", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/gqqbm?variantId=6dgpsi", }, { - result: { - questionId: "Q1YYGK54U6", - variantId: "jRHizc6Q", - text: "Refer to figure 010-27.\nFor a CAT I precision approach, which of the following lengths applies to B1 and B2 in the attached diagram ?\n\n- :white_check_mark: 30 m / 150 m\n- :x: 15 m / 75 m\n- :x: 60 m / 300 m\n- :x: 15 m / 50 m", - numberOfVariants: 1, - learningObjectives: ["010.09.08.03.04"], - externalIds: ["AVEXAM-66387"], - href: "/modules/atpl/questions/Q1YYGK54U6?variantId=jRHizc6Q", - }, - score: 8.023215898322926, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "kfw5s", + questionId: "fdodfi", + variantId: "kfw5s", + text: "Emergency evacuation checklist. Why do you have to check Δp = 0 if MAN CAB PR has been used?\n\n- :white_check_mark: Because the outflow valve does not open automatically at touchdown\n- :x: To facilitate the opening of the cargo doors by fire brigad\n- :x: Because the safety valves are closed\n- :x: Because of an possible non indicated failure of the Residual Pressure Control Unit (RPCU)", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/fdodfi?variantId=kfw5s", }, { - result: { - questionId: "Q79OKMRTME", - variantId: "OdWLYVHv", - text: "A VFR flight, when flying inside an ATS airspace classified as C, has to maintain the following minima of flight visibility and distance from clouds\n\n- :white_check_mark: 8 km at or above 3 050 m (10 000 ft) AMSL, 1 500 m horizontal and 300 m vertical from clouds.\n- :x: 5 km at or above 3 050 m (10 000 ft) AMSL, 1 500 m horizontal and 300 m vertical from clouds.\n- :x: 5 NM at or above 3 050 m (10 000 ft) AMSL, 1 500 m horizontal and 300 m vertical from clouds.\n- :x: 8 km at or above 3 050 m (10 000 ft) AMSL, and clear of clouds.", - numberOfVariants: 1, - learningObjectives: ["010.05.03.01.18"], - externalIds: [ - "ATPLGS-103982", - "AVEXAM-27973", - "BGS-100134", - "ATPLGS-103981", - "ATPLGS-621858", - "ATPLGS-103968", - "ATPLGS-103965", - "ATPLGS-621951", - "ATPLQ-107436", - ], - href: "/modules/atpl/questions/Q79OKMRTME?variantId=OdWLYVHv", - }, - score: 8.007869704567174, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "65xza", + questionId: "e4fr1", + variantId: "65xza", + text: "When the BLOWER pb is on OVRD:\n\n- :x: The system goes to open circuit configuration\n- :white_check_mark: The system goes to closed circuit configuration\n- :x: The blower fan will continue to run\n- :x: The blower fan is de-energized for the remainder of the flight", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/e4fr1?variantId=65xza", }, { - result: { - questionId: "Q2IR81MZLY", - variantId: "4YaX9UoD", - text: "The maximum floor loading of the cargo compartment is specified to be 732 kg/m^2^. Which is the smallest given pallet size acceptable to load a box of 826 kg?\n\n- :white_check_mark: 1.2 m × 1.2 m\n- :x: 1.25 m × 1.25 m\n- :x: 1.3 m × 1.3 m\n- :x: 1.05 m × 1.05 m", - numberOfVariants: 1, - learningObjectives: ["031.06.02.01.02"], - externalIds: ["AVEXAM-53880"], - href: "/modules/atpl/questions/Q2IR81MZLY?variantId=4YaX9UoD", - }, - score: 8.007651465274915, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "k216y", + questionId: "kggt3", + variantId: "k216y", + text: "The avionics ventilation system is fully automatic. The normal operation configurations are:\n\n- :x: Open-circuit configuration, close-circuit configuration, smoke configuration\n- :x: Open-circuit configuration, close-circuit configuration\n- :white_check_mark: Open-circuit configuration, intermediate configuration, close-circuit configuration\n- :x: Open-circuit configuration, partially-open configuration, bypass-circuit configuration", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/kggt3?variantId=k216y", }, { - result: { - questionId: "QYRN2526HZ", - variantId: "PrTDgfyF", - text: "Convert 800 ft/min to m/s...\n\n- :white_check_mark: 4.06 m/s\n- :x: 12 m/s\n- :x: 43.2 m/s\n- :x: 28.6 m/s", - numberOfVariants: 1, - learningObjectives: ["022.01.03.01.03"], - externalIds: ["AVEXAM-58605"], - href: "/modules/atpl/questions/QYRN2526HZ?variantId=PrTDgfyF", - }, - score: 7.9699583851064615, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "459qv", + questionId: "htb5m", + variantId: "459qv", + text: "The temperature of each aircraft zone is optimized by means of …?\n\n- :x: A hot air valve\n- :x: A zone control valve\n- :x: A pack valve\n- :white_check_mark: A trim air valve", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/htb5m?variantId=459qv", }, { - result: { - questionId: "QDPV9AD0O1", - variantId: "Lp556Nnf", - text: "Refer to figure 081-05.\nWhat are the low and high buffet onset speeds given the following conditions?\n\n\n- FL350\n- Mass: 110 000 kg\n- Bank angle: 50°\n\n- :white_check_mark: M 0.73 and M 0.83.\n- :x: M 0.69 and > M 0.84.\n- :x: M 0.62 and M 0.83.\n- :x: M 0.72 and > M 0.84.", - numberOfVariants: 1, - learningObjectives: ["081.08.01.05.11"], - externalIds: ["AVEXAM-97012"], - href: "/modules/atpl/questions/QDPV9AD0O1?variantId=Lp556Nnf", - }, - score: 7.961411292850376, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "76a26", + questionId: "ggz8", + variantId: "76a26", + text: "The cabin pressurization system consists, among others, of:\n\n- :x: One outflow valve, one cabin pressure controller and two safety valves\n- :x: One outflow valve, two cabin pressure controllers and one safety valve\n- :white_check_mark: One outflow valve, two cabin pressure controllers and two safety valves\n- :x: Two outflow valves, one cabin pressure controller and two safety valves", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/ggz8?variantId=76a26", }, { - result: { - questionId: "QSWKWY1HD7", - variantId: "UJ0UXmNh", - text: " \n To avoid low speed buffet in a turn at 30 degrees of bank and at a mass of 100 tons the following conditions must be fulfilled (approximately):\n\n- :white_check_mark: FL <= 410 at M >= 0.69 or FL <= 380 at M >= 0.64.\n- :x: FL <= 410 at M >= 0.69 or FL <= 380 at M < 0.64\n- :x: FL > 410 at M >= 0.69 or FL > 380 at M > 0.64\n- :x: FL <= 410 at M >= 0.64 or FL <= 380 at M >= 0.69.", - numberOfVariants: 1, - learningObjectives: ["081.08.01.05.11"], - externalIds: ["ATPLQ-813351"], - href: "/modules/atpl/questions/QSWKWY1HD7?variantId=UJ0UXmNh", - }, - score: 7.9461471165135436, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "fql2i", + questionId: "ou9i2", + variantId: "fql2i", + text: "Which answer about the two zone controller or ACSC (Air Conditioning System Controller) of the air conditioning system is correct?\n\n- :white_check_mark: Controller 1 regulates the cockpit temperature, controller 2 the temperature in the two cabin zones\n- :x: Controller 1 regulates the temperature in the two cabin zones, controller 2 the cockpit temperature\n- :x: Controller 1 regulates the cockpit temperature, controller 2 the temperature in the three cabin zones\n- :x: Controller 1 regulates the temperature in the the three cabin zones, controller 2 the cockpit temperature", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/ou9i2?variantId=fql2i", }, { - result: { - questionId: "QFN0QB9KKF", - variantId: "SKpN0UXO", - text: "Altitude-hypoxia, when breathing ambient air, should not occur (indifferent phase):\n\n- :white_check_mark: below 3 000 m.\n- :x: between 5 000 m and 7 000 m.\n- :x: up to 5 000 m.\n- :x: between 3 000 m and 5 000 m.", - numberOfVariants: 1, - learningObjectives: ["040.02.01.02.27"], - externalIds: ["AVEXAM-37740"], - href: "/modules/atpl/questions/QFN0QB9KKF?variantId=SKpN0UXO", - }, - score: 7.945790425208446, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "buw18k", + questionId: "4m7d0j", + variantId: "buw18k", + text: "The MODE SEL pb sw in MAN mode allows you to use the MAN V/S CTL in order to…\n\n- :x: Manually alter the air inlet valve setting\n- :x: Manually adjust the pack flow valve\n- :white_check_mark: Manually adjust the outflow valve\n- :x: Manually alter the pack outflow valve setting", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/4m7d0j?variantId=buw18k", }, { - result: { - questionId: "QJ0KNYUQVQ", - variantId: "zxqKUH34", - text: "If a heavy duststorm with the sky obscured is reported, the visibility will be\n\n- :white_check_mark: below 200 m\n- :x: above 1200 m\n- :x: between 601 m and 1200 m\n- :x: between 200 m and 600 m", - numberOfVariants: 1, - learningObjectives: ["050.10.01.01.04"], - externalIds: ["BGS-501903", "ATPLQ-509920"], - href: "/modules/atpl/questions/QJ0KNYUQVQ?variantId=zxqKUH34", - }, - score: 7.945790425208446, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "ozwn3", + questionId: "dloyb", + variantId: "ozwn3", + text: "What is the limiting factor for opening the RAM AIR valve?\n\n- :x: Aircraft at or below 10’000ft\n- :white_check_mark: Cabin differential pressure below 1 PSI\n- :x: Aircraft must be on ground\n- :x: Aircraft must be fully depressurized", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/dloyb?variantId=ozwn3", }, { - result: { - questionId: "QYPV1VWFGG", - variantId: "JO1Pm5pa", - text: "Convert 430 ft/min to m/s...\n\n- :white_check_mark: 2.18 m/s\n- :x: 0.74 m/s\n- :x: 21.8 m/s\n- :x: 7.41 m/s", - numberOfVariants: 1, - learningObjectives: ["022.01.03.01.03"], - externalIds: ["AVEXAM-12414"], - href: "/modules/atpl/questions/QYPV1VWFGG?variantId=JO1Pm5pa", - }, - score: 7.945505101282237, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "290a1", + questionId: "ygjsu", + variantId: "290a1", + text: "The ram air inlet flap of the air conditioning pack:\n\n- :x: Closes during takeoffwhen takeoff power is set and the main landing gear struts are compressed\n- :x: Opens during landing they closes as soon as the main landing gear struts are compressed, as long as speed is at or above 70 knots\n- :x: It opens 20 seconds after the speed drops below 70 knot\n- :white_check_mark: All answers are correct", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/ygjsu?variantId=290a1", }, { - result: { - questionId: "Q5JX5WK4W3", - variantId: "cpFbYAVh", - text: "Which formula or equation describes the relationship between force (F), acceleration (and mass (m)?\n\n- :white_check_mark: F = m * a\n- :x: m = F * a\n- :x: F = m / a\n- :x: a = F * m", - numberOfVariants: 1, - learningObjectives: ["081.01.01.01.02"], - externalIds: ["ATPLGS-117702", "AVEXAM-16186"], - href: "/modules/atpl/questions/Q5JX5WK4W3?variantId=cpFbYAVh", - }, - score: 7.921240450295406, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "rrgbd", + questionId: "t5t1cj", + variantId: "rrgbd", + text: "The input of the QNH in the FMGS for the approach influences, among others….\n\n- :x: The GS mini\n- :white_check_mark: The pressurization schedule of the CPC Cabin Pressure Controllers\n- :x: The pressurization schedule and the GS mini\n- :x: The BARO minimum for NON-PROC. Appr", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/t5t1cj?variantId=rrgbd", }, { - result: { - questionId: "Q5UNXQR2XD", - variantId: "0wlVqdJ1", - text: "Which one of the following shipments can be loaded in a cargo compartment with a floor loading of 70 kg/m2? Shipment W: 500 kg on a pallet sized 2 m x 2 m. Shipment X: 500 kg on a pallet sized 1 m x 1 m. Shipment Y: 600 kg on a pallet sized 2 m x 2 m. Shipment Z: 600 kg on a pallet sized 3 m x 3 m (All pallets are in direct contact with the cargo floor).\n\n- :white_check_mark: Shipment Z\n- :x: Shipment X\n- :x: Shipment W\n- :x: Shipment Y", - numberOfVariants: 1, - learningObjectives: ["031.06.02.01.02"], - externalIds: ["ATPLQ-318961", "BGS-310670", "ATPLGS-126795"], - href: "/modules/atpl/questions/Q5UNXQR2XD?variantId=0wlVqdJ1", - }, - score: 7.915839351032252, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "55yct", + questionId: "ze2ak", + variantId: "55yct", + text: "On ECAM CAB PRESS page, the outflow valve indicator changes to amber when the valve\n\n- :x: is fully closed\n- :white_check_mark: open more than 95% during flight\n- :x: is fully closed\n- :x: is in transit", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/ze2ak?variantId=55yct", }, { - result: { - questionId: "QOYDMD8WMN", - variantId: "okndGYqR", - text: " \n A jet transport aeroplane with a mass of 100 tons carries out a steady level 50 degree bank turn at FL350. The buffet free speed range extends from: \n\n- :white_check_mark: M = 0.69 to M >gt; 0.84.\n- :x: M = 0.72 to M >gt; 0.84.\n- :x: M = 0.74 to M = 0.84.\n- :x: M = 0.65 to M >gt; 0.84.", - numberOfVariants: 1, - learningObjectives: ["081.03.02.02.06"], - externalIds: ["ATPLQ-813381"], - href: "/modules/atpl/questions/QOYDMD8WMN?variantId=okndGYqR", - }, - score: 7.915839351032252, - match: { - m: ["text"], - }, - terms: ["m"], + questionBank: "type" as QuestionBankName, + id: "hi5df", + questionId: "lcl4a", + variantId: "hi5df", + text: "What is the maximum negative differential pressure for the cabin:\n\n- :x: 0 PSI\n- :white_check_mark: - 1 PSI\n- :x: - 2 PSI\n- :x: + 1 PSI", + subjects: ["A320"], + learningObjectives: [ + { + name: "A320.01", + href: "/modules/type/learning-objectives/A320.01", + }, + ], + externalIds: [], + href: "/modules/type/questions/lcl4a?variantId=hi5df", }, ]; diff --git a/libs/trpc/server/src/config/app-router.ts b/libs/trpc/server/src/config/app-router.ts index c28e2f2ad..11ffddf29 100644 --- a/libs/trpc/server/src/config/app-router.ts +++ b/libs/trpc/server/src/config/app-router.ts @@ -1,5 +1,6 @@ import { analyticsRouter } from "../routers/analytics"; import { questionBankRouter } from "../routers/question-bank"; +import { questionBankQuestionSearchRouter } from "../routers/question-bank-question-search"; import { statusRouter } from "../routers/status"; import { router } from "./trpc"; @@ -7,6 +8,7 @@ export const appRouter = router({ analytics: analyticsRouter, status: statusRouter, questionBank: questionBankRouter, + questionBankQuestionSearch: questionBankQuestionSearchRouter, }); export type AppRouter = typeof appRouter; diff --git a/libs/trpc/server/src/routers/question-bank-question-search.ts b/libs/trpc/server/src/routers/question-bank-question-search.ts new file mode 100644 index 000000000..016d2826b --- /dev/null +++ b/libs/trpc/server/src/routers/question-bank-question-search.ts @@ -0,0 +1,165 @@ +import { default as MiniSearch } from "minisearch"; +import { z } from "zod"; +import { getQuestionPreview } from "@chair-flight/core/app"; +import { questionBanks } from "@chair-flight/core/question-bank"; +import { questionBankNameSchema as questionBank } from "@chair-flight/core/schemas"; +import { publicProcedure, router } from "../config/trpc"; +import type { QuestionBankName } from "@chair-flight/base/types"; + +type SearchField = + | "id" + | "questionId" + | "questionBank" + | "subjects" + | "learningObjectives" + | "externalIds" + | "text"; + +type SearchDocument = Record; + +type SearchResult = { + id: string; + questionBank: QuestionBankName; + questionId: string; + variantId: string; + subjects: string[]; + text: string; + learningObjectives: Array<{ + name: string; + href: string; + }>; + externalIds: string[]; + href: string; +}; + +let initializationWork: Promise | undefined; + +const EXACT_MATCH_SEPERATOR = ", "; +const RESULTS = new Map(); + +const SEARCH_INDEX_FIELDS = [ + "id", + "questionId", + "questionBank", + "subjects", + "learningObjectives", + "text", + "externalIds", +] as const satisfies SearchField[]; + +const SEARCH_STORE_FIELDS = [ + "id", + "questionId", +] as const satisfies SearchField[]; + +const SEARCHABLE_FIELDS = [ + "questionId", + "learningObjectives", + "text", + "externalIds", +] as const satisfies SearchField[]; + +const SEARCH_INDEX = new MiniSearch({ + fields: SEARCH_INDEX_FIELDS, + storeFields: SEARCH_STORE_FIELDS, +}); + +const populateSearchIndex = async (bank: QuestionBankName): Promise => { + const qb = questionBanks[bank]; + if (initializationWork) await initializationWork; + + initializationWork = (async () => { + const questions = await qb.getAll("questions"); + const hasQuestions = await qb.has("questions"); + const firstId = Object.values(questions.at(0)?.variants ?? []).at(0)?.id; + + if (!hasQuestions) return; + if (SEARCH_INDEX.has(firstId)) return; + + const searchItems: SearchDocument[] = questions.flatMap((question) => { + const subjects = question.learningObjectives.map((l) => l.split(".")[0]); + const los = question.learningObjectives.join(EXACT_MATCH_SEPERATOR); + const uniqueSubjects = [...new Set(subjects)]; + return Object.values(question.variants).map((variant) => ({ + id: variant.id, + questionId: question.id, + questionBank: bank, + subjects: uniqueSubjects.join(EXACT_MATCH_SEPERATOR), + learningObjectives: los, + externalIds: variant.externalIds.join(EXACT_MATCH_SEPERATOR), + text: getQuestionPreview(question, variant.id), + })); + }); + + const resultItems: SearchResult[] = questions.flatMap((q) => { + const subjects = q.learningObjectives.map((l) => l.split(".")[0]); + const uniqueSubjects = [...new Set(subjects)]; + return Object.values(q.variants).map((v) => ({ + questionBank: bank, + id: v.id, + questionId: q.id, + variantId: v.id, + text: getQuestionPreview(q, v.id), + subjects: uniqueSubjects, + learningObjectives: q.learningObjectives.map((name) => ({ + name, + href: `/modules/${bank}/learning-objectives/${name}`, + })), + externalIds: v.externalIds, + href: `/modules/${bank}/questions/${q.id}?variantId=${v.id}`, + })); + }); + + await SEARCH_INDEX.addAllAsync(searchItems); + resultItems.forEach((r) => RESULTS.set(r.id, r)); + })(); + + await initializationWork; +}; + +export const questionBankQuestionSearchRouter = router({ + initialize: publicProcedure.query(async () => { + const banks = Object.keys(questionBanks) as QuestionBankName[]; + for (const bank of banks) await populateSearchIndex(bank); + return "ok"; + }), + searchQuestions: publicProcedure + .input( + z.object({ + questionBank, + q: z.string(), + subject: z.string().nullable(), + searchField: z.enum(SEARCHABLE_FIELDS).nullable(), + limit: z.number().min(1).max(50), + cursor: z.number().default(0), + }), + ) + .query(async ({ input }) => { + const { q, subject, searchField, questionBank, limit, cursor } = input; + + await populateSearchIndex(questionBank); + + const fields = searchField ? [searchField] : undefined; + const opts = { fuzzy: 0.2, fields }; + + const results = q + ? SEARCH_INDEX.search(q, opts).map(({ id }) => RESULTS.get(id)) + : Array.from(RESULTS.values()); + + const processedResults = results.filter((r): r is SearchResult => { + if (!r) return false; + if (r["questionBank"] !== questionBank) return false; + if (subject && !r.subjects.join(",").includes(subject)) return false; + if (searchField && !`${r[searchField]}`.includes(q)) return false; + return true; + }); + + const finalItems = processedResults.slice(cursor, cursor + limit); + + return { + items: finalItems, + totalResults: processedResults.length, + nextCursor: cursor + finalItems.length, + }; + }), +}); diff --git a/libs/trpc/server/src/routers/question-bank.ts b/libs/trpc/server/src/routers/question-bank.ts index 86ad7ed49..915f3d691 100644 --- a/libs/trpc/server/src/routers/question-bank.ts +++ b/libs/trpc/server/src/routers/question-bank.ts @@ -1,11 +1,7 @@ import { default as MiniSearch } from "minisearch"; import { z } from "zod"; import { UnimplementedError } from "@chair-flight/base/errors"; -import { - createTest, - getQuestionPreview, - newTestConfigurationSchema, -} from "@chair-flight/core/app"; +import { createTest, newTestConfigurationSchema } from "@chair-flight/core/app"; import { createNewQuestionPr, getQuestionFromGit, @@ -16,39 +12,9 @@ import { questionEditSchema, } from "@chair-flight/core/schemas"; import { publicProcedure, router } from "../config/trpc"; -import type { - QuestionBankLearningObjective, - QuestionBankName, -} from "@chair-flight/base/types"; +import type { QuestionBankLearningObjective } from "@chair-flight/base/types"; import type { MatchInfo } from "minisearch"; -const questionSearchFields = [ - "id", - "questionId", - "learningObjectives", - "text", - "externalIds", -]; - -const questionSearchIndexes: Record = { - b737: new MiniSearch({ - fields: questionSearchFields, - storeFields: questionSearchFields, - }), - a320: new MiniSearch({ - fields: questionSearchFields, - storeFields: questionSearchFields, - }), - atpl: new MiniSearch({ - fields: questionSearchFields, - storeFields: questionSearchFields, - }), - prep: new MiniSearch({ - fields: questionSearchFields, - storeFields: questionSearchFields, - }), -}; - const learningObjectiveSearchFields = ["id", "text"]; const learningObjectiveSearchIndexes: Record<"atpl", MiniSearch> = { @@ -176,75 +142,6 @@ export const questionBankRouter = router({ const count = allFlashcards.reduce((s, e) => s + e.flashcards.length, 0); return { count }; }), - searchQuestions: publicProcedure - .input( - z.object({ - questionBank, - q: z.string().optional(), - limit: z.number().min(1).max(50), - cursor: z.number().default(0), - }), - ) - .query(async ({ input }) => { - if (initializationWork) await initializationWork; - const questionBankName = input.questionBank; - const qb = questionBanks[input.questionBank]; - const searchIndex = questionSearchIndexes[input.questionBank]; - const questions = await qb.getAll("questions"); - const questionMap = await qb.getAll("questions"); - const { q, limit, cursor = 0 } = input; - - if (searchIndex.documentCount === 0) { - initializationWork = (async () => { - const processedData = questions.flatMap((question) => - Object.values(question.variants).map((variant) => ({ - id: variant.id, - questionId: question.id, - learningObjectives: question.learningObjectives.join(", "), - externalIds: variant.externalIds.join(", "), - text: getQuestionPreview(question, variant.id), - })), - ); - await searchIndex.addAllAsync(processedData); - })(); - await initializationWork; - } - - const results = q ? searchIndex.search(q, { fuzzy: 0.2 }) : []; - const seenQuestions: Record = {}; - const processedResults = results.reduce< - SearchResponseItem[] - >((sum, result) => { - const questionId = result["questionId"]; - const variantId = result["id"]; - if (seenQuestions[questionId]) return sum; - seenQuestions[questionId] = 1; - const variants = questionMap[questionId]?.variants; - sum.push({ - result: { - questionId: result["questionId"], - variantId: result["id"], - text: result["text"], - numberOfVariants: variants ? Object.values(variants).length : 1, - learningObjectives: result["learningObjectives"].split(", "), - externalIds: result["externalIds"].split(", "), - href: `/modules/${questionBankName}/questions/${questionId}?variantId=${variantId}`, - }, - score: result.score, - match: result.match, - terms: result.terms, - }); - return sum; - }, []); - - const items = processedResults.slice(cursor, cursor + limit); - - return { - items, - totalResults: processedResults.length, - nextCursor: cursor + items.length, - }; - }), searchLearningObjectives: publicProcedure .input( z.object({ diff --git a/vercel.json b/vercel.json index 5af67252f..fae281dc0 100644 --- a/vercel.json +++ b/vercel.json @@ -4,11 +4,7 @@ "rewrites": [], "crons": [ { - "path": "/api/trpc/questionBankAtpl.searchQuestions?input=%7B\"json\"%3A%7B\"q\"%3A\"p\"%2C\"limit\"%3A12%2C\"cursor\"%3A0%7D%7D", - "schedule": "*/2 * * * *" - }, - { - "path": "/api/trpc/questionBank737.searchQuestions?input=%7B\"json\"%3A%7B\"q\"%3A\"p\"%2C\"limit\"%3A12%2C\"cursor\"%3A0%7D%7D", + "path": "/api/trpc/questionBankQuestionSearch.initialize", "schedule": "*/2 * * * *" }, { @@ -16,11 +12,11 @@ "schedule": "*/10 * * * *" }, { - "path": "/modules/atpl/tests/create", + "path": "/modules/type/tests/create", "schedule": "*/10 * * * *" }, { - "path": "/modules/b737/tests/create", + "path": "/modules/atpl/tests/create", "schedule": "*/10 * * * *" } ]