chore(curriculum): add blockLayout when missing from meta (#57138)

Co-authored-by: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com>
This commit is contained in:
Oliver Eyton-Williams
2024-11-18 06:56:35 +01:00
committed by GitHub
parent 67a9657cf0
commit 56817b657f
235 changed files with 533 additions and 316 deletions
@@ -13,7 +13,7 @@ import {
BilibiliIds
} from '../../../redux/prop-types';
import { isAuditedSuperBlock } from '../../../../../shared/utils/is-audited';
import { BlockTypes } from '../../../../../shared/config/blocks';
import { BlockLayouts, BlockTypes } from '../../../../../shared/config/blocks';
import Block from './block';
jest.mock('../../../../../shared/utils/is-audited', () => ({
@@ -22,10 +22,12 @@ jest.mock('../../../../../shared/utils/is-audited', () => ({
const defaultProps = {
block: 'test-block',
blockType: null,
challenges: [
{
block: 'testblock',
blockType: BlockTypes.lab,
blockLayout: BlockLayouts.ChallengeGrid,
certification: 'mockCertification',
challengeOrder: 1,
challengeType: 0,
@@ -444,34 +444,20 @@ class Block extends Component<BlockProps> {
</ScrollableAnchor>
);
const blockRenderer = () => {
const blockLayout = challenges[0].blockLayout;
// `blockLayout` property isn't available in all challenges
if (!blockLayout) {
if (isProjectBlock)
return isGridBlock ? LegacyLinkBlock : ProjectListBlock;
return isGridBlock
? LegacyChallengeGridBlock
: LegacyChallengeListBlock;
}
// blockLayout is only being used in new certs at the moment, so I made some new components for them for now to not interfere with the existing ones
if (blockLayout === BlockLayouts.ChallengeGrid) return ChallengeGridBlock;
if (blockLayout === BlockLayouts.ChallengeList) return ChallengeListBlock;
if (blockLayout === BlockLayouts.Link) return LinkBlock;
if (blockLayout === BlockLayouts.ProjectList) return ProjectListBlock;
if (blockLayout === BlockLayouts.LegacyLink) return LegacyLinkBlock;
if (blockLayout === BlockLayouts.LegacyChallengeList)
return LegacyChallengeListBlock;
if (blockLayout === BlockLayouts.LegacyChallengeGrid)
return LegacyChallengeGridBlock;
const layoutToComponent = {
[BlockLayouts.ChallengeGrid]: ChallengeGridBlock,
[BlockLayouts.ChallengeList]: ChallengeListBlock,
[BlockLayouts.Link]: LinkBlock,
[BlockLayouts.ProjectList]: ProjectListBlock,
[BlockLayouts.LegacyLink]: LegacyLinkBlock,
[BlockLayouts.LegacyChallengeList]: LegacyChallengeListBlock,
[BlockLayouts.LegacyChallengeGrid]: LegacyChallengeGridBlock
};
return (
<>
{blockRenderer()}
{isGridBlock && !isProjectBlock ? null : <Spacer size='m' />}
{layoutToComponent[challenges[0].blockLayout]}
{(!isGridBlock || isProjectBlock) && <Spacer size='m' />}
</>
);
}
@@ -10,5 +10,6 @@
"id": "6721db5d9f0c116e6a0fe25a",
"title": "A2 English for Developers Certification Exam"
}
]
}
],
"blockLayout": "project-list"
}
@@ -38,5 +38,6 @@
"id": "647f882207d29547b3bee1c0",
"title": "Trophy - Add Logic to C# Console Applications"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -94,5 +94,6 @@
"id": "589fc832f9fc0f352b528e79",
"title": "Send and Display Chat Messages"
}
]
}
],
"blockLayout": "legacy-challenge-list"
}
@@ -46,5 +46,6 @@
"id": "61abc7ebf3029b56226de5b6",
"title": "Implement Binary Search"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -94,5 +94,6 @@
"id": "587d7790367417b2b2512ab1",
"title": "Use tabindex to Specify the Order of Keyboard Focus for Several Elements"
}
]
}
],
"blockLayout": "legacy-challenge-list"
}
@@ -214,5 +214,6 @@
"id": "587d78a9367417b2b2512aea",
"title": "Make Motion More Natural Using a Bezier Curve"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -26,5 +26,6 @@
"id": "bd7158d8c443edefaeb5bd0f",
"title": "File Metadata Microservice"
}
]
],
"blockLayout": "project-list"
}
@@ -70,5 +70,6 @@
"id": "a9bd25c716030ec90084d8a1",
"title": "Chunky Monkey"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -182,5 +182,6 @@
"id": "5a9d72ad424fe3d0e10cad16",
"title": "Use a media query to change a variable"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -86,5 +86,6 @@
"id": "587d7b7d367417b2b2512b1f",
"title": "Modify an Array Stored in an Object"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -118,5 +118,6 @@
"id": "587d78aa367417b2b2512aec",
"title": "Define the Head and Body of an HTML Document"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -458,5 +458,6 @@
"id": "5cc0bd7a49b71cb96132e54c",
"title": "Use Recursion to Create a Range of Numbers"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -54,5 +54,6 @@
"id": "587d7fb2367417b2b2512bf8",
"title": "Get Data from POST Requests"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -135,5 +135,6 @@
"id": "bad87fee1348bd9aec908857",
"title": "Use Comments to Clarify Code"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -1,7 +1,7 @@
{
"name": "Build a Budget App Project",
"isUpcomingChange": false,
"usesMultifileEditor": true,
"usesMultifileEditor": true,
"dashedName": "build-a-budget-app-project",
"order": 13,
"superBlock": "scientific-computing-with-python",
@@ -11,5 +11,6 @@
"title": "Build a Budget App Project"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "657bdcc3a322aae1eac38392",
"title": "Build a Cash Register"
}
]
}
],
"blockLayout": "legacy-link"
}
@@ -10,5 +10,6 @@
"id": "5f1a4ef5d5d6b5ab580fc6ae",
"title": "Build a Celestial Bodies Database"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "63d8402e39c73468b059cd43",
"title": "Build a Data Graph Explorer"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "63d8401e39c73468b059cd42",
"title": "Build a Financial Calculator"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "63d83ffd39c73468b059cd40",
"title": "Build a Graphing Calculator"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "63d83ff239c73468b059cd3f",
"title": "Build a Multi-Function Calculator"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "602da04c22201c65d2a019f4",
"title": "Build a Number Guessing Game"
}
]
],
"blockLayout": "project-list"
}
@@ -11,5 +11,6 @@
"id": "657bdc55a322aae1eac3838f",
"title": "Build a Palindrome Checker"
}
]
}
],
"blockLayout": "legacy-link"
}
@@ -10,5 +10,6 @@
"id": "602d9ff222201c65d2a019f2",
"title": "Build a Periodic Table Database"
}
]
],
"blockLayout": "project-list"
}
@@ -11,5 +11,6 @@
"id": "bd7158d8c242eddfaeb5bd13",
"title": "Build a Personal Portfolio Webpage"
}
]
],
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "6555c1d3e11a1574434cf8b5",
"title": "Build a Pokémon Search App Project"
}
]
}
],
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"title": "Build a Polygon Area Calculator Project"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"title": "Build a Probability Calculator Project"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "587d78af367417b2b2512b04",
"title": "Build a Product Landing Page"
}
]
],
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "657bdc8ba322aae1eac38390",
"title": "Build a Roman Numeral Converter"
}
]
}
],
"blockLayout": "legacy-link"
}
@@ -10,5 +10,6 @@
"id": "5f87ac112ae598023a42df1a",
"title": "Build a Salon Appointment Scheduler"
}
]
],
"blockLayout": "project-list"
}
@@ -11,5 +11,6 @@
"id": "587d78af367417b2b2512b03",
"title": "Build a Survey Form"
}
]
],
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "587d78b0367417b2b2512b05",
"title": "Build a Technical Documentation Page"
}
]
],
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "657bdcb9a322aae1eac38391",
"title": "Build a Telephone Number Validator"
}
]
}
],
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"title": "Build a Time Calculator Project"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-link"
}
@@ -11,5 +11,6 @@
"id": "bd7158d8c442eddfaeb5bd18",
"title": "Build a Tribute Page"
}
]
],
"blockLayout": "legacy-link"
}
@@ -10,5 +10,6 @@
"id": "5f9771307d4d22b9d2b75a94",
"title": "Build a World Cup Database"
}
]
],
"blockLayout": "project-list"
}
@@ -11,5 +11,6 @@
"title": "Build an Arithmetic Formatter Project"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-link"
}
@@ -10,5 +10,6 @@
"id": "63d8401039c73468b059cd41",
"title": "Build Three Math Games"
}
]
],
"blockLayout": "project-list"
}
@@ -14,5 +14,6 @@
"id": "6363d2959078df117ce4c408",
"title": "More Resources in Colab"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -38,5 +38,6 @@
"id": "647f87dc07d29547b3bee1bf",
"title": "Trophy - Create and Run Simple C# Console Applications"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -30,5 +30,6 @@
"id": "647f877f07d29547b3bee1be",
"title": "Trophy - Create Methods in C# Console Applications"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -74,5 +74,6 @@
"id": "587d78af367417b2b2512b00",
"title": "Use the align-self Property"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -94,5 +94,6 @@
"id": "5a94fe8569fb03452672e464",
"title": "Create Grids within Grids"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -596,5 +596,6 @@
"id": "5d8a4cfbe6b6180ed9a1ca72",
"title": "Step 146"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -118,5 +118,6 @@
"id": "5e9a093a74c4063ca6f7c167",
"title": "Python Iteration and Modules"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -26,5 +26,6 @@
"id": "5e4f5c4b570f7e3a4949899f",
"title": "Sea Level Predictor"
}
]
],
"blockLayout": "project-list"
}
@@ -190,5 +190,6 @@
"id": "587d825d367417b2b2512c96",
"title": "Depth-First Search"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -26,5 +26,6 @@
"id": "587d7fa6367417b2b2512bc0",
"title": "Visualize Data with a Treemap Diagram"
}
]
],
"blockLayout": "project-list"
}
@@ -127,5 +127,6 @@
"id": "587d7fad367417b2b2512bdf",
"title": "Add Axes to a Visualization"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -34,5 +34,6 @@
"id": "647f86ff07d29547b3bee1bd",
"title": "Trophy - Debug C# Console Applications"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -54,5 +54,6 @@
"id": "587d7b86367417b2b2512b3d",
"title": "Prevent Infinite Loops with a Valid Terminal Condition"
}
]
],
"blockLayout": "legacy-challenge-list"
}
+2 -1
View File
@@ -122,5 +122,6 @@
"id": "5cdafbe72913098997531682",
"title": "Handle a Rejected Promise with catch"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -10,5 +10,6 @@
"id": "647e22d18acb466c97ccbef8",
"title": "Foundational C# with Microsoft Certification Exam"
}
]
],
"blockLayout": "project-list"
}
@@ -26,5 +26,6 @@
"id": "bd7158d8c442eddfaeb5bd0f",
"title": "Build a 25 + 5 Clock"
}
]
],
"blockLayout": "project-list"
}
@@ -102,5 +102,6 @@
"id": "587d7dab367417b2b2512b70",
"title": "Introduction to Currying and Partial Application"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -22,5 +22,6 @@
"id": "5e9a0e9ef99a403d019610cd",
"title": "How Convolutional Neural Networks work"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -26,5 +26,6 @@
"id": "5e601c775ac9d0ecd8b94aff",
"title": "Secure Real Time Multiplayer Game"
}
]
],
"blockLayout": "project-list"
}
@@ -62,5 +62,6 @@
"id": "58a25bcff9fc0f352b528e7e",
"title": "Hash and Compare Passwords Synchronously"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -90,5 +90,6 @@
"id": "af4afb223120f7348cdfc9fd",
"title": "Map the Debris"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -26,5 +26,6 @@
"id": "aa2e6f85cab2ab736c9a9b24",
"title": "Cash Register"
}
]
],
"blockLayout": "project-list"
}
+2 -1
View File
@@ -86,5 +86,6 @@
"id": "bad87fee1348bd9aecb08826",
"title": "Use jQuery to Modify the Entire Page"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -51,5 +51,6 @@
"id": "587d7faf367417b2b2512be9",
"title": "Post Data with the JavaScript XMLHttpRequest Method"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -10,5 +10,6 @@
"title": "Dialogue 1: I'm Tom"
}
],
"helpCategory": "English"
"helpCategory": "English",
"blockLayout": "legacy-challenge-list"
}
@@ -10,5 +10,6 @@
"title": "Dialogue 1: I'm Tom"
}
],
"helpCategory": "English"
"helpCategory": "English",
"blockLayout": "legacy-challenge-list"
}
@@ -276,5 +276,6 @@
"id": "6148e41c728f65138addf9cc",
"title": "Step 67"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -244,5 +244,6 @@
"id": "635302be760d6031d11a06cd",
"title": "Step 59"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -10,5 +10,6 @@
"id": "602da0de22201c65d2a019f6",
"title": "Build a Kitty Ipsum Translator"
}
]
],
"blockLayout": "project-list"
}
@@ -244,5 +244,6 @@
"title": "Step 59"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-challenge-grid"
}
@@ -14,5 +14,6 @@
"id": "6363d23a9078df117ce4c3ff",
"title": "Applications of Linear Systems: Extra"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -228,5 +228,6 @@
"id": "64649b108df035051cb2ba2d",
"title": "Step 55"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -10,5 +10,6 @@
"id": "5f5b969a05380d2179fe6e18",
"title": "Build a Bike Rental Shop"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "5ea8adfab628f68d805bfc5e",
"title": "Build a Boilerplate"
}
]
],
"blockLayout": "project-list"
}
@@ -10,5 +10,6 @@
"id": "5f5904ac738bc2fa9efecf5a",
"title": "Build Five Programs"
}
]
],
"blockLayout": "project-list"
}
@@ -188,5 +188,6 @@
"id": "64113249bab9952fb2ce4469",
"title": "Step 45"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -372,5 +372,6 @@
"id": "5f47fe7e31980053a8d4403b",
"title": "Step 91"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -40,5 +40,6 @@
"title": "Step 8"
}
],
"helpCategory": "JavaScript"
"helpCategory": "JavaScript",
"blockLayout": "legacy-challenge-grid"
}
@@ -700,5 +700,6 @@
"id": "62aa2ba9cd881355a6f0a5a8",
"title": "Step 173"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -248,5 +248,6 @@
"id": "63f03b1ed5ab15420c057463",
"title": "Step 60"
}
]
}
],
"blockLayout": "legacy-challenge-grid"
}
@@ -404,5 +404,6 @@
"title": "Step 99"
}
],
"helpCategory": "JavaScript"
}
"helpCategory": "JavaScript",
"blockLayout": "legacy-challenge-grid"
}
@@ -14,5 +14,6 @@
"id": "63dbd0375d93712ff177d969",
"title": "Business Applications of College Algebra: Extra"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -320,5 +320,6 @@
"title": "Step 78"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-challenge-grid"
}
@@ -10,5 +10,6 @@
"id": "6331d251b51aeedd1a2bd648",
"title": "Factoring"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -10,5 +10,6 @@
"title": "Dialogue 1: I'm Tom"
}
],
"helpCategory": "English"
"helpCategory": "English",
"blockLayout": "legacy-challenge-list"
}
@@ -534,5 +534,6 @@
"title": "Task 127"
}
],
"helpCategory": "English"
}
"helpCategory": "English",
"blockLayout": "legacy-challenge-grid"
}
@@ -124,5 +124,6 @@
"id": "6169b284950e171d8d0bb16a",
"title": "Step 29"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -384,5 +384,6 @@
"id": "61b31cd7b0c76bfc076b4719",
"title": "Step 94"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -104,5 +104,6 @@
"id": "6153a3ebb4f7f05b8401b716",
"title": "Step 24"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -328,5 +328,6 @@
"id": "6148f6f7d8914c78e93136ca",
"title": "Step 80"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -424,5 +424,6 @@
"id": "619d3711d04d623000013e9e",
"title": "Step 104"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -480,5 +480,6 @@
"id": "5d822fd413a79914d39e993e",
"title": "Step 118"
}
]
],
"blockLayout": "legacy-challenge-grid"
}
@@ -140,5 +140,6 @@
"title": "Step 33"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-challenge-grid"
}
@@ -10,5 +10,6 @@
"title": "Dialogue 1: I'm Tom"
}
],
"helpCategory": "English"
"helpCategory": "English",
"blockLayout": "legacy-challenge-list"
}
@@ -104,5 +104,6 @@
"title": "Step 24"
}
],
"helpCategory": "Python"
"helpCategory": "Python",
"blockLayout": "legacy-challenge-grid"
}
@@ -10,5 +10,6 @@
"id": "6363d2769078df117ce4c406",
"title": "Exponents and Logarithms"
}
]
],
"blockLayout": "legacy-challenge-list"
}
@@ -124,5 +124,6 @@
"id": "641dab13c1b6f14b9828e6b1",
"title": "Step 29"
}
]
}
],
"blockLayout": "legacy-challenge-grid"
}
@@ -396,5 +396,6 @@
"id": "63c9f2bff625af342023512c",
"title": "Step 97"
}
]
}
],
"blockLayout": "legacy-challenge-grid"
}
@@ -14,5 +14,6 @@
"id": "6331d260b51aeedd1a2bd64a",
"title": "Fractions and Decimals: Extra"
}
]
],
"blockLayout": "legacy-challenge-list"
}

Some files were not shown because too many files have changed in this diff Show More