Skip to content

Commit 01ced3e

Browse files
authored
* add table slice to time series, fix default variable determination * add tombstone availability status support * fix runtime validation of tombstoned status type * add table slice to time series, fix default variable determination * enable multi citation support for bundles * update citation bundle display * update citation bundle display * create bundle presentation component, update citation display * pull out bundle content builder from component * regen drupal assets * update bundle blurbs and display * tweak citation use language * improve drupal asset handling, font, style loading * improve css response handling, script await refinement, regen assets * update image asset location update in drupal css cleaning * update assets script options, allow env var for disabling drupal fetch * helper script for apps to synchronize cached public assets * handle multi-citation release case * inject only single metadata tags for multi parent * add bundled information link, generate lib * prepare v2.1.0 * remove parent language from bundle subtitles
1 parent b88dc1f commit 01ced3e

File tree

133 files changed

+4998
-15088
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+4998
-15088
lines changed

.env.development

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ REACT_APP_NEON_AUTH_DISABLE_WS="true"
2929
REACT_APP_NEON_USE_GRAPHQL="true"
3030
REACT_APP_NEON_SHOW_AOP_VIEWER="true"
3131
REACT_APP_NEON_ENABLE_GLOBAL_SIGNIN_STATE="false"
32+
# Option to disable fetching Drupal assets and utilize cached assets
33+
REACT_APP_NEON_FETCH_DRUPAL_ASSETS="true"
3234

3335
#-------------------------------------------------------------------------------
3436
# Third party APIs and options

.eslintrc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"src/**/__tests__",
2222
"src/**/__mocks__",
2323
"lib/",
24+
"scripts/*.js",
2425
"config/",
2526
"jest.config.js",
2627
"server.js"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/// <reference types="react" />
2+
import { IDataProductLike } from '../../types/internal';
3+
export interface IBundleContentBuilder {
4+
getParentProductLink: (dataProduct: IDataProductLike, release?: string) => JSX.Element;
5+
getBundledLink: () => JSX.Element;
6+
buildManyParentsMainContent: (dataProducts: IDataProductLike[], release?: string) => JSX.Element;
7+
buildDefaultTitleContent: (dataProduct: IDataProductLike, release?: string) => JSX.Element;
8+
buildDefaultSplitTitleContent: (isRelease: boolean, terminalChar?: string) => JSX.Element;
9+
buildDefaultSubTitleContent: (forwardAvailability: boolean, hasManyParents: boolean) => JSX.Element;
10+
}
11+
declare const BundleContentBuilder: IBundleContentBuilder;
12+
export default BundleContentBuilder;
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.default = void 0;
7+
var _react = _interopRequireDefault(require("react"));
8+
var _Link = _interopRequireDefault(require("@material-ui/core/Link"));
9+
var _RouteService = _interopRequireDefault(require("../../service/RouteService"));
10+
var _Theme = _interopRequireDefault(require("../Theme/Theme"));
11+
var _typeUtil = require("../../util/typeUtil");
12+
var _ReleaseService = require("../../service/ReleaseService");
13+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14+
var BundleContentBuilder = {
15+
getParentProductLink: function getParentProductLink(dataProduct, release) {
16+
var isRelease = (0, _typeUtil.isStringNonEmpty)(release) && release !== _ReleaseService.LATEST_AND_PROVISIONAL;
17+
var href = _RouteService.default.getProductDetailPath(dataProduct.productCode, isRelease ? release : undefined);
18+
return /*#__PURE__*/_react.default.createElement(_Link.default, {
19+
href: href,
20+
target: "_blank"
21+
}, "".concat(dataProduct.productName, " (").concat(dataProduct.productCode, ")"));
22+
},
23+
getBundledLink: function getBundledLink() {
24+
var href = _RouteService.default.getDataProductBundlesPath();
25+
return /*#__PURE__*/_react.default.createElement(_Link.default, {
26+
href: href,
27+
target: "_blank"
28+
}, "bundled");
29+
},
30+
buildManyParentsMainContent: function buildManyParentsMainContent(dataProducts, release) {
31+
return /*#__PURE__*/_react.default.createElement("ul", {
32+
style: {
33+
margin: _Theme.default.spacing(1, 0)
34+
}
35+
}, dataProducts.map(function (dataProduct) {
36+
return /*#__PURE__*/_react.default.createElement("li", {
37+
key: dataProduct.productCode
38+
}, BundleContentBuilder.getParentProductLink(dataProduct, release));
39+
}));
40+
},
41+
buildDefaultTitleContent: function buildDefaultTitleContent(dataProduct, release) {
42+
var isRelease = (0, _typeUtil.isStringNonEmpty)(release) && release !== _ReleaseService.LATEST_AND_PROVISIONAL;
43+
var bundleParentLink = BundleContentBuilder.getParentProductLink(dataProduct, isRelease ? release : undefined);
44+
var bundledLink = BundleContentBuilder.getBundledLink();
45+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "This data product ", isRelease ? 'release ' : '', "is ", bundledLink, " into ", bundleParentLink);
46+
},
47+
buildDefaultSplitTitleContent: function buildDefaultSplitTitleContent(isRelease, terminalChar) {
48+
var bundledLink = BundleContentBuilder.getBundledLink();
49+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "This data product ", isRelease ? 'release ' : '', "is ", bundledLink, " into the following data product", isRelease ? ' releases' : 's', "".concat(terminalChar));
50+
},
51+
buildDefaultSubTitleContent: function buildDefaultSubTitleContent(forwardAvailability, hasManyParents) {
52+
return (
53+
/*#__PURE__*/
54+
// eslint-disable-next-line react/jsx-no-useless-fragment
55+
_react.default.createElement(_react.default.Fragment, null, forwardAvailability ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "It is not available as a standalone download. Data availability shown below reflects availability of the entire bundle.") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "It is not available as a standalone download. Data availability information and data product download is only available through the bundle data ", hasManyParents ? 'products' : 'product', "."))
56+
);
57+
}
58+
};
59+
Object.freeze(BundleContentBuilder);
60+
var _default = BundleContentBuilder;
61+
exports.default = _default;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import React from 'react';
2+
export interface BundleListItemIconProps {
3+
isSplit?: boolean;
4+
}
5+
declare const BundleListItemIcon: React.FC<BundleListItemIconProps>;
6+
export default BundleListItemIcon;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.default = void 0;
7+
var _react = _interopRequireDefault(require("react"));
8+
var _ListItemIcon = _interopRequireDefault(require("@material-ui/core/ListItemIcon"));
9+
var _styles = require("@material-ui/core/styles");
10+
var _reactFontawesome = require("@fortawesome/react-fontawesome");
11+
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
12+
var _Theme = _interopRequireDefault(require("../Theme/Theme"));
13+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14+
var useStyles = (0, _styles.makeStyles)(function (theme) {
15+
return {
16+
bundleIcon: {
17+
padding: '5px',
18+
marginRight: theme.spacing(2)
19+
}
20+
};
21+
});
22+
var BundleListItemIcon = function BundleListItemIcon(props) {
23+
var classes = useStyles(_Theme.default);
24+
var isSplit = props.isSplit;
25+
return /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
26+
icon: isSplit ? _freeSolidSvgIcons.faBoxesStacked : _freeSolidSvgIcons.faBox,
27+
size: "2x",
28+
className: classes.bundleIcon
29+
}));
30+
};
31+
BundleListItemIcon.defaultProps = {
32+
isSplit: false
33+
};
34+
var _default = BundleListItemIcon;
35+
exports.default = _default;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react';
2+
export interface DataProductBundleCardClasses {
3+
card?: string;
4+
cardContent?: string;
5+
cardContentFlexContainer?: string;
6+
cardContentContainer?: string;
7+
cardIcon?: string;
8+
}
9+
export interface DataProductBundleCardProps {
10+
titleContent?: React.ReactNode;
11+
detailContent?: React.ReactNode;
12+
subTitleContent?: React.ReactNode;
13+
customContent?: React.ReactNode;
14+
isSplit?: boolean;
15+
showIcon?: boolean;
16+
classes?: DataProductBundleCardClasses;
17+
}
18+
declare const DataProductBundleCard: React.FC<DataProductBundleCardProps>;
19+
export default DataProductBundleCard;
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.default = void 0;
7+
var _react = _interopRequireDefault(require("react"));
8+
var _Card = _interopRequireDefault(require("@material-ui/core/Card"));
9+
var _CardContent = _interopRequireDefault(require("@material-ui/core/CardContent"));
10+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
11+
var _styles = require("@material-ui/core/styles");
12+
var _reactFontawesome = require("@fortawesome/react-fontawesome");
13+
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
14+
var _Theme = _interopRequireDefault(require("../Theme/Theme"));
15+
var _typeUtil = require("../../util/typeUtil");
16+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17+
var useStyles = (0, _styles.makeStyles)(function (theme) {
18+
return {
19+
card: {
20+
backgroundColor: _Theme.default.colors.GOLD[50],
21+
borderColor: _Theme.default.colors.GOLD[200],
22+
marginTop: theme.spacing(1)
23+
},
24+
cardContent: {
25+
padding: theme.spacing(2),
26+
paddingBottom: "".concat(theme.spacing(2), "px !important")
27+
},
28+
cardContentFlexContainer: {
29+
display: 'flex',
30+
alignItems: 'center',
31+
padding: theme.spacing(2),
32+
paddingBottom: "".concat(theme.spacing(2), "px !important")
33+
},
34+
cardContentContainer: {
35+
flexGrow: 1
36+
},
37+
cardIcon: {
38+
color: theme.colors.GOLD[700],
39+
padding: '5px',
40+
fontSize: '2.3875em',
41+
marginRight: theme.spacing(2)
42+
},
43+
cardIconBoxesStacked: {
44+
color: theme.colors.GOLD[700],
45+
fontSize: '2.3875em',
46+
marginRight: theme.spacing(2)
47+
}
48+
};
49+
});
50+
var DataProductBundleCard = function DataProductBundleCard(props) {
51+
var classes = useStyles(_Theme.default);
52+
var titleContent = props.titleContent,
53+
subTitleContent = props.subTitleContent,
54+
detailContent = props.detailContent,
55+
customContent = props.customContent,
56+
isSplit = props.isSplit,
57+
showIcon = props.showIcon,
58+
customClasses = props.classes;
59+
var customCardClass = customClasses ? customClasses.card : undefined;
60+
var customCardContentClass = customClasses ? customClasses.cardContent : undefined;
61+
var customCardContentFlexContainerClass = customClasses ? customClasses.cardContentFlexContainer : undefined;
62+
var customCardContentContainerClass = customClasses ? customClasses.cardContentContainer : undefined;
63+
var customIconClass = customClasses ? customClasses.cardIcon : undefined;
64+
var renderContent = function renderContent() {
65+
if ((0, _typeUtil.exists)(customContent)) {
66+
// eslint-disable-next-line react/jsx-no-useless-fragment
67+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, customContent);
68+
}
69+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !(0, _typeUtil.exists)(titleContent) ? null : /*#__PURE__*/_react.default.createElement(_Typography.default, {
70+
variant: "subtitle2"
71+
}, titleContent), !(0, _typeUtil.exists)(detailContent) ? null :
72+
/*#__PURE__*/
73+
// eslint-disable-next-line react/jsx-no-useless-fragment
74+
_react.default.createElement(_react.default.Fragment, null, detailContent), !(0, _typeUtil.exists)(subTitleContent) ? null : /*#__PURE__*/_react.default.createElement(_Typography.default, {
75+
variant: "body2"
76+
}, subTitleContent));
77+
};
78+
var renderCardContent = function renderCardContent() {
79+
if (!showIcon) {
80+
return renderContent();
81+
}
82+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
83+
icon: isSplit ? _freeSolidSvgIcons.faBoxesStacked : _freeSolidSvgIcons.faBox,
84+
size: "2x",
85+
className: customIconClass || isSplit ? classes.cardIconBoxesStacked : classes.cardIcon
86+
}), /*#__PURE__*/_react.default.createElement("div", {
87+
className: customCardContentContainerClass || classes.cardContentContainer
88+
}, renderContent()));
89+
};
90+
return /*#__PURE__*/_react.default.createElement(_Card.default, {
91+
className: customCardClass || classes.card
92+
}, /*#__PURE__*/_react.default.createElement(_CardContent.default, {
93+
className: showIcon ? customCardContentFlexContainerClass || classes.cardContentFlexContainer : customCardContentClass || classes.cardContent
94+
}, renderCardContent()));
95+
};
96+
DataProductBundleCard.defaultProps = {
97+
titleContent: undefined,
98+
detailContent: undefined,
99+
subTitleContent: undefined,
100+
customContent: undefined,
101+
isSplit: false,
102+
showIcon: true,
103+
classes: undefined
104+
};
105+
var _default = DataProductBundleCard;
106+
exports.default = _default;

lib/components/Bundles/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default } from "./DataProductBundleCard";

lib/components/Bundles/index.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
Object.defineProperty(exports, "default", {
7+
enumerable: true,
8+
get: function get() {
9+
return _DataProductBundleCard.default;
10+
}
11+
});
12+
var _DataProductBundleCard = _interopRequireDefault(require("./DataProductBundleCard"));
13+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

0 commit comments

Comments
 (0)