pollination-react-io 1.24.1 → 1.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/CreateStudy/CreateStudy.types.d.ts +7 -3
- package/build/index.esm.js +59 -59
- package/build/index.esm.js.map +1 -1
- package/build/index.js +59 -59
- package/build/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { UserPrivate } from '@pollination-solutions/pollination-sdk';
|
|
1
|
+
import type { Project, RecipeInterface, UserPrivate } from '@pollination-solutions/pollination-sdk';
|
|
2
2
|
import { CSSProperties } from 'react';
|
|
3
3
|
import { APIClient } from '../hooks';
|
|
4
|
+
import { Account } from '../SelectAccount/SelectAccount.types';
|
|
4
5
|
export declare type CreateStudyProps = {
|
|
5
|
-
authUser?: UserPrivate;
|
|
6
|
-
client?: APIClient;
|
|
7
6
|
style?: CSSProperties;
|
|
8
7
|
controlledRecipeInputs?: {
|
|
9
8
|
[index: string]: {
|
|
@@ -11,5 +10,10 @@ export declare type CreateStudyProps = {
|
|
|
11
10
|
hidden?: boolean;
|
|
12
11
|
};
|
|
13
12
|
};
|
|
13
|
+
defaultAccount?: Account;
|
|
14
|
+
defaultProject?: Project;
|
|
15
|
+
defaultRecipe?: RecipeInterface;
|
|
14
16
|
createStudySuccess?: (accountName: string, projectName: string, studyId: string) => void;
|
|
17
|
+
authUser?: UserPrivate;
|
|
18
|
+
client?: APIClient;
|
|
15
19
|
};
|
package/build/index.esm.js
CHANGED
|
@@ -8702,6 +8702,8 @@ var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
|
|
|
8702
8702
|
borderBottomLeftRadius: isOpen ? 0 : 4,
|
|
8703
8703
|
flex: 12,
|
|
8704
8704
|
lineHeight: '1.5rem',
|
|
8705
|
+
}, onReset: function () {
|
|
8706
|
+
selectItem(undefined);
|
|
8705
8707
|
} }, inputProps), { onFocus: function () {
|
|
8706
8708
|
openMenu();
|
|
8707
8709
|
}, type: hidden ? 'hidden' : undefined })))),
|
|
@@ -14380,7 +14382,7 @@ Dropzone.propTypes = {
|
|
|
14380
14382
|
* @property {Function} open Open the native file selection dialog
|
|
14381
14383
|
*/
|
|
14382
14384
|
|
|
14383
|
-
var initialState
|
|
14385
|
+
var initialState = {
|
|
14384
14386
|
isFocused: false,
|
|
14385
14387
|
isFileDialogActive: false,
|
|
14386
14388
|
isDragActive: false,
|
|
@@ -14515,7 +14517,7 @@ function useDropzone() {
|
|
|
14515
14517
|
var rootRef = useRef(null);
|
|
14516
14518
|
var inputRef = useRef(null);
|
|
14517
14519
|
|
|
14518
|
-
var _useReducer = useReducer(reducer, initialState
|
|
14520
|
+
var _useReducer = useReducer(reducer, initialState),
|
|
14519
14521
|
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
14520
14522
|
state = _useReducer2[0],
|
|
14521
14523
|
dispatch = _useReducer2[1];
|
|
@@ -14965,7 +14967,7 @@ function reducer(state, action) {
|
|
|
14965
14967
|
});
|
|
14966
14968
|
|
|
14967
14969
|
case "openDialog":
|
|
14968
|
-
return _objectSpread(_objectSpread({}, initialState
|
|
14970
|
+
return _objectSpread(_objectSpread({}, initialState), {}, {
|
|
14969
14971
|
isFileDialogActive: true
|
|
14970
14972
|
});
|
|
14971
14973
|
|
|
@@ -14988,7 +14990,7 @@ function reducer(state, action) {
|
|
|
14988
14990
|
});
|
|
14989
14991
|
|
|
14990
14992
|
case "reset":
|
|
14991
|
-
return _objectSpread({}, initialState
|
|
14993
|
+
return _objectSpread({}, initialState);
|
|
14992
14994
|
|
|
14993
14995
|
default:
|
|
14994
14996
|
return state;
|
|
@@ -37873,9 +37875,9 @@ function blobToBase64(blob) {
|
|
|
37873
37875
|
if (typeof reader.result !== 'string') {
|
|
37874
37876
|
return;
|
|
37875
37877
|
}
|
|
37876
|
-
resolve(
|
|
37878
|
+
resolve(reader.result.split(',')[1]);
|
|
37877
37879
|
};
|
|
37878
|
-
reader.
|
|
37880
|
+
reader.readAsDataURL(blob);
|
|
37879
37881
|
})];
|
|
37880
37882
|
});
|
|
37881
37883
|
});
|
|
@@ -38096,14 +38098,16 @@ var useCreateStudy = function (accountName, projectName, client) {
|
|
|
38096
38098
|
var input = recipe.inputs.find(function (i) { return i.name === d[0]; });
|
|
38097
38099
|
return processEntryLocal(d, input, cloudProjectName);
|
|
38098
38100
|
}))
|
|
38099
|
-
.then(function (jobArguments) {
|
|
38100
|
-
|
|
38101
|
-
|
|
38102
|
-
|
|
38103
|
-
|
|
38104
|
-
|
|
38105
|
-
|
|
38106
|
-
|
|
38101
|
+
.then(function (jobArguments) {
|
|
38102
|
+
return ({
|
|
38103
|
+
type: 'Job',
|
|
38104
|
+
api_version: 'v1beta1',
|
|
38105
|
+
name: name,
|
|
38106
|
+
description: description,
|
|
38107
|
+
source: recipe.source,
|
|
38108
|
+
arguments: [jobArguments]
|
|
38109
|
+
});
|
|
38110
|
+
}).catch(function (err) {
|
|
38107
38111
|
var data = err.response.data;
|
|
38108
38112
|
console.error(data.detail);
|
|
38109
38113
|
})];
|
|
@@ -38121,7 +38125,6 @@ var useCreateStudy = function (accountName, projectName, client) {
|
|
|
38121
38125
|
console.log(jobInfo);
|
|
38122
38126
|
response = window.parent.chrome.webview.hostObjects.study.RunSimulation(JSON.stringify(jobInfo))
|
|
38123
38127
|
.then(function (value) {
|
|
38124
|
-
console.log(value);
|
|
38125
38128
|
onSuccess && onSuccess(cloudProjectOwner, cloudProjectName, value);
|
|
38126
38129
|
}, function (reason) {
|
|
38127
38130
|
console.error(reason);
|
|
@@ -40658,7 +40661,8 @@ var SelectCloudArtifacts = function (_a) {
|
|
|
40658
40661
|
}, [selArtifact]);
|
|
40659
40662
|
useEffect(function () {
|
|
40660
40663
|
// nonmemoized value from react-hook-form or other parent causes infinite rerendering
|
|
40661
|
-
if (lodash_isequal(valueRef.current, selArtifact)
|
|
40664
|
+
if (lodash_isequal(valueRef.current, selArtifact) ||
|
|
40665
|
+
(!valueRef.current && !selArtifact)) {
|
|
40662
40666
|
return;
|
|
40663
40667
|
}
|
|
40664
40668
|
// if selection is a folder instead of an artifact
|
|
@@ -40788,7 +40792,7 @@ var SelectLocalArtifactNative = function (_a) {
|
|
|
40788
40792
|
}
|
|
40789
40793
|
catch (error) {
|
|
40790
40794
|
// common error is incorrect fileMatchPattern
|
|
40791
|
-
console.
|
|
40795
|
+
console.error(error);
|
|
40792
40796
|
}
|
|
40793
40797
|
if (res && typeof res.data === 'string') {
|
|
40794
40798
|
setSelPath(res.data);
|
|
@@ -44046,8 +44050,8 @@ var RecipeInputsForm = function (_a) {
|
|
|
44046
44050
|
var host = getHost();
|
|
44047
44051
|
var _f = useForm({
|
|
44048
44052
|
resolver: Oe(schema),
|
|
44049
|
-
mode: 'all'
|
|
44050
|
-
}), control = _f.control, register = _f.register, handleSubmit = _f.handleSubmit, reset = _f.reset, resetField = _f.resetField, _g = _f.formState, errors = _g.errors, isValid = _g.isValid
|
|
44053
|
+
mode: 'all',
|
|
44054
|
+
}), control = _f.control, register = _f.register, handleSubmit = _f.handleSubmit, reset = _f.reset, resetField = _f.resetField, _g = _f.formState, errors = _g.errors, isValid = _g.isValid, isSubmitSuccessful = _g.isSubmitSuccessful;
|
|
44051
44055
|
var _onSubmit = function (_data) {
|
|
44052
44056
|
var data = __assign({}, _data);
|
|
44053
44057
|
// strip study name
|
|
@@ -44069,6 +44073,14 @@ var RecipeInputsForm = function (_a) {
|
|
|
44069
44073
|
setLoading(true);
|
|
44070
44074
|
onSubmit(studyName, data, 'description', localConfig)
|
|
44071
44075
|
.finally(function () {
|
|
44076
|
+
// @ts-ignore
|
|
44077
|
+
var defaults = recipe.inputs.map(function (input) {
|
|
44078
|
+
var _a;
|
|
44079
|
+
var _b;
|
|
44080
|
+
return (_a = {}, _a[input.name] = (_b = input.default) !== null && _b !== void 0 ? _b : '', _a);
|
|
44081
|
+
});
|
|
44082
|
+
defaults.push({ 'study-name': '' });
|
|
44083
|
+
// console.log(defaults)
|
|
44072
44084
|
reset();
|
|
44073
44085
|
setLoading(false);
|
|
44074
44086
|
});
|
|
@@ -44089,7 +44101,7 @@ var RecipeInputsForm = function (_a) {
|
|
|
44089
44101
|
gap: 20
|
|
44090
44102
|
} },
|
|
44091
44103
|
React__default.createElement(FormInput, { name: 'study-name', description: 'Study name is a required field.', errorMessage: errors['study-name'] ? (_b = errors['study-name']) === null || _b === void 0 ? void 0 : _b.message : undefined },
|
|
44092
|
-
React__default.createElement(TextInput, { inputProps: __assign({ form: recipe.metadata.name }, register('study-name'))
|
|
44104
|
+
React__default.createElement(TextInput, { inputProps: __assign({ form: recipe.metadata.name }, register('study-name')) })),
|
|
44093
44105
|
host !== 'web' &&
|
|
44094
44106
|
React__default.createElement(ConfigureLocalRun, { onChange: function (localConfig) { return setLocalConfig(localConfig); }, defaultVal: localConfig }),
|
|
44095
44107
|
React__default.createElement(Tabs, { forceRenderTabPanel: true },
|
|
@@ -44131,7 +44143,7 @@ var RecipeInputsForm = function (_a) {
|
|
|
44131
44143
|
get_model: input.extensions.includes('hbjson') && host !== 'web',
|
|
44132
44144
|
get_local: host !== 'web',
|
|
44133
44145
|
get_file: host === 'web'
|
|
44134
|
-
}, value: value, onChange: onChange,
|
|
44146
|
+
}, value: value, onChange: onChange, inputProps: __assign(__assign({}, field), { accept: input.extensions.map(function (e) { return ".".concat(e); }).join(', ') }), hidden: hidden, client: client }));
|
|
44135
44147
|
} });
|
|
44136
44148
|
case 'DAGStringInput':
|
|
44137
44149
|
return typeof ((_a = input.spec) === null || _a === void 0 ? void 0 : _a.enum) !== 'undefined' ?
|
|
@@ -44163,7 +44175,7 @@ var RecipeInputsForm = function (_a) {
|
|
|
44163
44175
|
// @ts-ignore
|
|
44164
44176
|
React__default.createElement("li", { key: key, style: { color: 'red', fontSize: '0.8rem', listStyle: 'none' } }, "".concat(key, " ").concat(val.message, ".")));
|
|
44165
44177
|
}))) :
|
|
44166
|
-
'
|
|
44178
|
+
isSubmitSuccessful ? 'Study has been successfully submitted.' : 'Study input isn\'t valid.' },
|
|
44167
44179
|
React__default.createElement(Button, { type: 'submit', form: recipe.metadata.name, disabled: !isValid || loading, style: {
|
|
44168
44180
|
width: 'fit-content',
|
|
44169
44181
|
}, loading: loading }, "Create Study"))))));
|
|
@@ -44172,11 +44184,6 @@ var RecipeInputsForm = function (_a) {
|
|
|
44172
44184
|
var css_248z$3 = ".react-tabs {\n -webkit-tap-highlight-color: transparent;\n}\n\n.react-tabs__tab-list {\n border-bottom: 1px solid #aaa;\n margin: 0 0 10px;\n padding: 0;\n}\n\n.react-tabs__tab {\n display: inline-block;\n border: 1px solid transparent;\n border-bottom: none;\n bottom: -1px;\n position: relative;\n list-style: none;\n padding: 6px 12px;\n cursor: pointer;\n}\n\n.react-tabs__tab--selected {\n background: #fff;\n border-color: #aaa;\n color: black;\n border-radius: 5px 5px 0 0;\n}\n\n.react-tabs__tab--disabled {\n color: GrayText;\n cursor: default;\n}\n\n.react-tabs__tab:focus {\n outline: none;\n}\n\n.react-tabs__tab:focus:after {\n content: '';\n position: absolute;\n height: 5px;\n left: -4px;\n right: -4px;\n bottom: -5px;\n background: #fff;\n}\n\n.react-tabs__tab-panel {\n display: none;\n}\n\n.react-tabs__tab-panel--selected {\n display: block;\n}\n";
|
|
44173
44185
|
styleInject(css_248z$3);
|
|
44174
44186
|
|
|
44175
|
-
var initialState = {
|
|
44176
|
-
account: undefined,
|
|
44177
|
-
project: undefined,
|
|
44178
|
-
recipe: undefined,
|
|
44179
|
-
};
|
|
44180
44187
|
var defaultStyle = {
|
|
44181
44188
|
display: 'flex',
|
|
44182
44189
|
flexDirection: 'column',
|
|
@@ -44184,27 +44191,20 @@ var defaultStyle = {
|
|
|
44184
44191
|
};
|
|
44185
44192
|
var CreateStudy = function (_a) {
|
|
44186
44193
|
var _b;
|
|
44187
|
-
var
|
|
44194
|
+
var style = _a.style, controlledRecipeInputs = _a.controlledRecipeInputs, defaultAccount = _a.defaultAccount, defaultProject = _a.defaultProject, defaultRecipe = _a.defaultRecipe, createStudySuccess = _a.createStudySuccess, authUser = _a.authUser, client = _a.client;
|
|
44188
44195
|
var _c = useState(0), activeTabIndex = _c[0], setActiveTabIndex = _c[1];
|
|
44189
|
-
var _d = useState(
|
|
44190
|
-
var
|
|
44191
|
-
|
|
44192
|
-
}, []);
|
|
44193
|
-
var setSelProject = useCallback(function (project) {
|
|
44194
|
-
setState(function (state) { return (__assign(__assign({}, state), { project: project, recipe: undefined })); });
|
|
44195
|
-
}, []);
|
|
44196
|
-
var setSelRecipe = useCallback(function (recipe) {
|
|
44197
|
-
setState(function (state) { return (__assign(__assign({}, state), { recipe: recipe })); });
|
|
44198
|
-
}, []);
|
|
44196
|
+
var _d = useState(defaultAccount), selAccount = _d[0], setSelAccount = _d[1];
|
|
44197
|
+
var _e = useState(defaultProject), selProject = _e[0], setSelProject = _e[1];
|
|
44198
|
+
var _f = useState(defaultRecipe), selRecipe = _f[0], setSelRecipe = _f[1];
|
|
44199
44199
|
// @ts-ignore
|
|
44200
|
-
var projectOwner =
|
|
44201
|
-
var projectSlug =
|
|
44202
|
-
var
|
|
44200
|
+
var projectOwner = selAccount ? ((_b = selAccount.username) !== null && _b !== void 0 ? _b : selAccount.account_name) : undefined;
|
|
44201
|
+
var projectSlug = selProject ? selProject.slug.split('/')[1] : undefined;
|
|
44202
|
+
var _g = useCreateStudy(projectOwner, projectSlug, client), host = _g.host, createStudy = _g.createStudy, createLocalStudy = _g.createLocalStudy;
|
|
44203
44203
|
useEffect(function () {
|
|
44204
|
-
if (!
|
|
44204
|
+
if (!selRecipe)
|
|
44205
44205
|
return;
|
|
44206
44206
|
setActiveTabIndex(1);
|
|
44207
|
-
}, [
|
|
44207
|
+
}, [selRecipe]);
|
|
44208
44208
|
var basePath = useMemo(function () {
|
|
44209
44209
|
return client.config.basePath.replace('api', 'app');
|
|
44210
44210
|
}, [client]);
|
|
@@ -44216,19 +44216,19 @@ var CreateStudy = function (_a) {
|
|
|
44216
44216
|
window.open("".concat(basePath, "/").concat(accountName, "/projects/").concat(projectName, "/studies/").concat(studyId));
|
|
44217
44217
|
}, [basePath]);
|
|
44218
44218
|
var handleCreateStudy = useCallback(function (name, data, description, localConfig) {
|
|
44219
|
-
if (!
|
|
44219
|
+
if (!selRecipe) {
|
|
44220
44220
|
return new Promise(function (resolve, reject) { return resolve(); });
|
|
44221
44221
|
}
|
|
44222
44222
|
var handleSuccess = createStudySuccess !== null && createStudySuccess !== void 0 ? createStudySuccess : handleCreateStudySuccess;
|
|
44223
44223
|
// don't attempt navigation if the study is a local study
|
|
44224
44224
|
var handleWebSuccess = localConfig && localConfig.isLocalJob ? handleSuccess : undefined;
|
|
44225
44225
|
if (host !== 'web') {
|
|
44226
|
-
return createLocalStudy({ name: name, recipe:
|
|
44226
|
+
return createLocalStudy({ name: name, recipe: selRecipe, description: description }, data, localConfig, handleWebSuccess);
|
|
44227
44227
|
}
|
|
44228
44228
|
else {
|
|
44229
|
-
return createStudy({ name: name, recipe:
|
|
44229
|
+
return createStudy({ name: name, recipe: selRecipe, description: description }, data, handleWebSuccess);
|
|
44230
44230
|
}
|
|
44231
|
-
}, [
|
|
44231
|
+
}, [createLocalStudy, createStudy, createStudySuccess, handleCreateStudySuccess, host, selRecipe]);
|
|
44232
44232
|
return (React__default.createElement("div", { "data-testid": "CreateProject", style: __assign(__assign({}, defaultStyle), style) },
|
|
44233
44233
|
React__default.createElement(Tabs, { selectedIndex: activeTabIndex, onSelect: function (index) { return setActiveTabIndex(index); }, forceRenderTabPanel: true },
|
|
44234
44234
|
React__default.createElement("div", { style: {
|
|
@@ -44241,7 +44241,7 @@ var CreateStudy = function (_a) {
|
|
|
44241
44241
|
flex: 1
|
|
44242
44242
|
} },
|
|
44243
44243
|
React__default.createElement(Tab, null, "Select Recipe"),
|
|
44244
|
-
|
|
44244
|
+
selRecipe &&
|
|
44245
44245
|
React__default.createElement(Tab, null, "Recipe Inputs"))),
|
|
44246
44246
|
React__default.createElement(TabPanel, { style: {
|
|
44247
44247
|
padding: '8px 8px'
|
|
@@ -44251,14 +44251,14 @@ var CreateStudy = function (_a) {
|
|
|
44251
44251
|
flexDirection: 'column',
|
|
44252
44252
|
gap: 8
|
|
44253
44253
|
} },
|
|
44254
|
-
React__default.createElement(Label, { label:
|
|
44255
|
-
React__default.createElement(SelectAccount, { authUser: authUser, client: client, onChange: setSelAccount })),
|
|
44256
|
-
React__default.createElement(Label, { label:
|
|
44257
|
-
React__default.createElement(SelectProject, { authUser: authUser, client: client, onChange: setSelProject, projectOwner: projectOwner })),
|
|
44258
|
-
React__default.createElement(Label, { label:
|
|
44259
|
-
|
|
44260
|
-
React__default.createElement(SelectRecipe, { authUser: authUser, client: client, projectOwner: projectOwner, projectName:
|
|
44261
|
-
|
|
44254
|
+
React__default.createElement(Label, { label: selAccount ? selAccount.name : 'Account' },
|
|
44255
|
+
React__default.createElement(SelectAccount, { authUser: authUser, client: client, onChange: setSelAccount, value: selAccount })),
|
|
44256
|
+
React__default.createElement(Label, { label: selProject ? selProject.name : 'Project' },
|
|
44257
|
+
React__default.createElement(SelectProject, { authUser: authUser, client: client, onChange: setSelProject, projectOwner: projectOwner, value: selProject })),
|
|
44258
|
+
React__default.createElement(Label, { label: selRecipe && selRecipe.metadata ?
|
|
44259
|
+
selRecipe.metadata.name : 'Recipe' },
|
|
44260
|
+
React__default.createElement(SelectRecipe, { authUser: authUser, client: client, projectOwner: projectOwner, projectName: selProject ? selProject.name : undefined, onChange: setSelRecipe, value: selRecipe })))),
|
|
44261
|
+
selRecipe &&
|
|
44262
44262
|
React__default.createElement(React__default.Fragment, null,
|
|
44263
44263
|
React__default.createElement(TabPanel, { style: {
|
|
44264
44264
|
padding: 8
|
|
@@ -44268,14 +44268,14 @@ var CreateStudy = function (_a) {
|
|
|
44268
44268
|
flexDirection: 'column',
|
|
44269
44269
|
gap: 24
|
|
44270
44270
|
} },
|
|
44271
|
-
|
|
44271
|
+
selRecipe &&
|
|
44272
44272
|
React__default.createElement("h5", { style: {
|
|
44273
44273
|
marginBottom: 0
|
|
44274
|
-
} },
|
|
44274
|
+
} }, selRecipe.metadata.name
|
|
44275
44275
|
.split('-')
|
|
44276
44276
|
.map(function (v) { return v.charAt(0).toUpperCase() + v.slice(1); })
|
|
44277
44277
|
.join(' ')),
|
|
44278
|
-
React__default.createElement(RecipeInputsForm, { client: client, projectOwner: projectOwner, projectName: projectSlug, recipe:
|
|
44278
|
+
React__default.createElement(RecipeInputsForm, { client: client, projectOwner: projectOwner, projectName: projectSlug, recipe: selRecipe, onSubmit: handleCreateStudy, controlledValues: controlledRecipeInputs })))))));
|
|
44279
44279
|
};
|
|
44280
44280
|
|
|
44281
44281
|
// Generated with util/create-component.js
|