AA-253: handle the backend giving less data (#223)

Specifically, no outline tree or no course tools
This commit is contained in:
Michael Terry
2020-09-25 16:50:30 -04:00
committed by GitHub
parent d137d5682d
commit 6f331ea6d5
3 changed files with 26 additions and 19 deletions

View File

@@ -141,7 +141,7 @@ export async function getOutlineTabData(courseId) {
const {
data,
} = tabData;
const courseBlocks = normalizeOutlineBlocks(courseId, data.course_blocks.blocks);
const courseBlocks = data.course_blocks ? normalizeOutlineBlocks(courseId, data.course_blocks.blocks) : {};
const courseGoals = camelCaseObject(data.course_goals);
const courseExpiredHtml = data.course_expired_html;
const courseTools = camelCaseObject(data.course_tools);

View File

@@ -70,8 +70,7 @@ function OutlineTab({ intl }) {
const courseEndAlert = useCourseEndAlert(courseId);
const certificateAvailableAlert = useCertificateAvailableAlert(courseId);
const rootCourseId = Object.keys(courses)[0];
const { sectionIds } = courses[rootCourseId];
const rootCourseId = courses && Object.keys(courses)[0];
return (
<>
@@ -125,22 +124,26 @@ function OutlineTab({ intl }) {
...offerAlert,
}}
/>
<div className="row w-100 m-0 mb-3 justify-content-end">
<div className="col-12 col-sm-auto p-0">
<Button variant="outline-primary" block onClick={() => { setExpandAll(!expandAll); }}>
{expandAll ? intl.formatMessage(messages.collapseAll) : intl.formatMessage(messages.expandAll)}
</Button>
</div>
</div>
{sectionIds.map((sectionId) => (
<Section
key={sectionId}
courseId={courseId}
defaultOpen={sections[sectionId].resumeBlock}
expand={expandAll}
section={sections[sectionId]}
/>
))}
{rootCourseId && (
<>
<div className="row w-100 m-0 mb-3 justify-content-end">
<div className="col-12 col-sm-auto p-0">
<Button variant="outline-primary" block onClick={() => { setExpandAll(!expandAll); }}>
{expandAll ? intl.formatMessage(messages.collapseAll) : intl.formatMessage(messages.expandAll)}
</Button>
</div>
</div>
{courses[rootCourseId].sectionIds.map((sectionId) => (
<Section
key={sectionId}
courseId={courseId}
defaultOpen={sections[sectionId].resumeBlock}
expand={expandAll}
section={sections[sectionId]}
/>
))}
</>
)}
</div>
<div className="col col-12 col-md-4">
{courseGoalToDisplay && goalOptions.length > 0 && (

View File

@@ -18,6 +18,10 @@ function CourseTools({ courseId, intl }) {
courseTools,
} = useModel('outline', courseId);
if (courseTools.length === 0) {
return null;
}
const logClick = (analyticsId) => {
const { administrator } = getAuthenticatedUser();
sendTrackEvent('edx.course.tool.accessed', {