Skip to content

Commit

Permalink
Merge pull request #335 from bento-platform/feat/manager/enum-url-int…
Browse files Browse the repository at this point in the history
…erpolation

 feat(manager): allow service url interp. in workflow input enum urls
  • Loading branch information
davidlougheed authored Dec 6, 2023
2 parents 5b2ea6c + 63700c9 commit 072625f
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 10 deletions.
50 changes: 47 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"cross-fetch": "^3.1.8",
"file-saver": "^2.0.5",
"filesize": "^10.0.12",
"handlebars": "^4.7.8",
"igv": "~2.15.11",
"iso8601-duration": "^1.2.0",
"jose": "^4.14.6",
Expand Down
25 changes: 18 additions & 7 deletions src/components/manager/RunSetupInputForm.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import React, { forwardRef, useCallback, useEffect, useState } from "react";
import React, { forwardRef, useCallback, useEffect, useMemo, useState } from "react";
import { useSelector } from "react-redux";
import PropTypes from "prop-types";

import Handlebars from "handlebars";

import { Button, Checkbox, Form, Icon, Input, Select, Spin } from "antd";

import {
Expand All @@ -9,13 +12,13 @@ import {
FORM_BUTTON_COL,
} from "./workflowCommon";

import {BENTO_DROP_BOX_FS_BASE_PATH} from "../../config";
import {workflowPropTypesShape} from "../../propTypes";
import {nop} from "../../utils/misc";
import { BENTO_DROP_BOX_FS_BASE_PATH } from "../../config";
import { workflowPropTypesShape } from "../../propTypes";
import { testFileAgainstPattern } from "../../utils/files";
import { nop } from "../../utils/misc";

import DatasetTreeSelect, { ID_FORMAT_PROJECT_DATASET } from "./DatasetTreeSelect";
import DropBoxTreeSelect from "./DropBoxTreeSelect";
import { testFileAgainstPattern } from "../../utils/files";


const EnumSelect = forwardRef(({ mode, onChange, values: valuesConfig, value }, ref) => {
Expand All @@ -24,10 +27,18 @@ const EnumSelect = forwardRef(({ mode, onChange, values: valuesConfig, value },
const [values, setValues] = useState(isUrl ? [] : valuesConfig);
const [fetching, setFetching] = useState(false);

const bentoServicesByKind = useSelector((state) => state.bentoServices.itemsByKind);
const serviceUrls = useMemo(
() => Object.fromEntries(Object.entries(bentoServicesByKind).map(([k, v]) => [k, v.url])),
[bentoServicesByKind]);

useEffect(() => {
if (isUrl) {
setFetching(true);
fetch(valuesConfig)

const url = Handlebars.compile(valuesConfig)({ serviceUrls });
console.debug(`enum - using values URL: ${url}`);
fetch(url)
.then(r => r.json())
.then(data => {
if (Array.isArray(data)) {
Expand Down Expand Up @@ -59,7 +70,7 @@ EnumSelect.propTypes = {
mode: PropTypes.oneOf(["default", "multiple", "tags", "combobox"]),
onChange: PropTypes.func,
values: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
value: PropTypes.arrayOf(PropTypes.string),
value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
};


Expand Down

0 comments on commit 072625f

Please sign in to comment.