terriajs
Version:
Geospatial data visualization platform.
61 lines • 3.68 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { runInAction } from "mobx";
import { observer } from "mobx-react";
import { Component, Fragment } from "react";
import isDefined from "../../../Core/isDefined";
import CatalogMemberMixin from "../../../ModelMixins/CatalogMemberMixin";
import CommonStrata from "../../../Models/Definition/CommonStrata";
import Box from "../../../Styled/Box";
import Spacing from "../../../Styled/Spacing";
import Text from "../../../Styled/Text";
import Collapsible from "../../Custom/Collapsible/Collapsible";
import parseCustomMarkdownToReact from "../../Custom/parseCustomMarkdownToReact";
let ShortReport = class ShortReport extends Component {
clickShortReport(item, reportName, isOpen) {
const shortReportSections = item.shortReportSections;
const clickedReport = shortReportSections.find((report) => report.name === reportName);
if (isDefined(clickedReport)) {
runInAction(() => {
/**
* Ensure short report order is reflected by all strata up to this point
* & replicate all onto user stratum so that toggling doesn't re-order
* reports - a stopgap for the lack of consistent behavior surrounding
* removals / re-ordering of objectArrayTraits
*/
shortReportSections.forEach((report) => report.setTrait(CommonStrata.user, "show", report.show));
clickedReport.setTrait(CommonStrata.user, "show", isOpen);
});
}
return false;
}
render() {
if (!CatalogMemberMixin.isMixedInto(this.props.item))
return null;
const item = this.props.item;
const shortReportSections = item.shortReportSections?.filter((r) => isDefined(r.name));
if ((!isDefined(item.shortReport) || item.shortReport === "") &&
(!isDefined(shortReportSections) || shortReportSections.length === 0)) {
return null;
}
return (_jsxs(Box, { fullWidth: true, displayInlineBlock: true, children: [isDefined(item.shortReport) && (_jsx(Text, { textGreyLighter: true, medium: true, children: parseCustomMarkdownToReact(item.shortReport, {
catalogItem: item
}) })), shortReportSections
.filter((r) => r.name)
.map((r, i) => (_jsxs(Fragment, { children: [r.content ? (_jsx(Collapsible, { title: r.name, isOpen: r.show, onToggle: (show) => this.clickShortReport(item, r.name, show), children: parseCustomMarkdownToReact(r.content, {
catalogItem: item
}) })) : (_jsx(Text, { textGreyLighter: true, medium: true, children: parseCustomMarkdownToReact(r.name, {
catalogItem: item
}) })), i < shortReportSections.length - 1 && _jsx(Spacing, { bottom: 2 })] }, r.name)))] }));
}
};
ShortReport = __decorate([
observer
], ShortReport);
export default ShortReport;
//# sourceMappingURL=ShortReport.js.map