pollination-react-io 1.18.1 → 1.19.0

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.
@@ -4,5 +4,6 @@ export declare type Account = Organization | UserPrivate;
4
4
  export interface SelectAccountProps {
5
5
  authUser?: UserPrivate;
6
6
  client?: APIClient;
7
+ defaultValue?: string;
7
8
  setSelAccount?: (account: Account) => void;
8
9
  }
@@ -3,6 +3,7 @@ import { APIClient } from '../hooks';
3
3
  export interface SelectProjectProps {
4
4
  authUser?: UserPrivate;
5
5
  client?: APIClient;
6
- projectOwner: string;
6
+ projectOwner?: string;
7
+ defaultValue?: string;
7
8
  setSelProject?: (project: Project) => void;
8
9
  }
@@ -4,6 +4,7 @@ export interface SelectRunProps {
4
4
  projectOwner?: string;
5
5
  projectName?: string;
6
6
  jobId?: string[];
7
+ defaultValue?: string;
7
8
  setSelRun?: (recipe: Run) => void;
8
9
  authUser?: UserPrivate;
9
10
  client?: APIClient;
@@ -4,6 +4,7 @@ export interface SelectStudyProps {
4
4
  projectName?: string;
5
5
  projectOwner?: string;
6
6
  authUser?: UserPrivate;
7
+ defaultValue?: string;
7
8
  client?: APIClient;
8
9
  setSelStudy?: (project: CloudJob) => void;
9
10
  }
@@ -8,6 +8,7 @@ export interface ComboBoxProps {
8
8
  }[];
9
9
  renderItem?: (item: any, i?: number, arr?: any[]) => ReactNode;
10
10
  setSelected?: (item: any) => void;
11
+ onClear?: () => void;
11
12
  onScrollReachEnd?: (...args: any) => void;
12
13
  stateReducer?: (state: UseComboboxState<{
13
14
  id: string;
@@ -8647,12 +8647,11 @@ var ScrollZone = function (_a) {
8647
8647
 
8648
8648
  var ICON_SIZE = 18;
8649
8649
  var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
8650
- var _b;
8651
- var items = _a.items, renderItem = _a.renderItem, setSelected = _a.setSelected, onScrollReachEnd = _a.onScrollReachEnd, _c = _a.stateReducer, stateReducer = _c === void 0 ? function (state, _a) {
8650
+ var items = _a.items, renderItem = _a.renderItem, setSelected = _a.setSelected, onClear = _a.onClear, onScrollReachEnd = _a.onScrollReachEnd, _b = _a.stateReducer, stateReducer = _b === void 0 ? function (state, _a) {
8652
8651
  _a.type; var changes = _a.changes;
8653
8652
  return changes;
8654
- } : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, hidden = _a.hidden, _e = _a.loading, loading = _e === void 0 ? false : _e, _f = _a.icon, icon = _f === void 0 ? React__default.createElement(CursorText$1, null) : _f, inputStyle = _a.inputStyle, menuStyle = _a.menuStyle, _g = _a.maxHeight, maxHeight = _g === void 0 ? 180 : _g, inputProps = _a.inputProps, header = _a.header, footer = _a.footer, _h = _a.noMatchText, noMatchText = _h === void 0 ? 'No matching items' : _h;
8655
- var _j = useState(items), inputItems = _j[0], setInputItems = _j[1];
8653
+ } : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, hidden = _a.hidden, _d = _a.loading, loading = _d === void 0 ? false : _d, _e = _a.icon, icon = _e === void 0 ? React__default.createElement(CursorText$1, null) : _e, inputStyle = _a.inputStyle, menuStyle = _a.menuStyle, _f = _a.maxHeight, maxHeight = _f === void 0 ? 180 : _f, inputProps = _a.inputProps, header = _a.header, footer = _a.footer, _g = _a.noMatchText, noMatchText = _g === void 0 ? 'No matching items' : _g;
8654
+ var _h = useState(items), inputItems = _h[0], setInputItems = _h[1];
8656
8655
  useEffect(function () {
8657
8656
  setInputItems(items);
8658
8657
  }, [items]);
@@ -8661,7 +8660,7 @@ var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
8661
8660
  lodash_debounce(onScrollReachEnd, 1000, { leading: true, trailing: false })
8662
8661
  : undefined;
8663
8662
  }, [onScrollReachEnd]);
8664
- var _k = useCombobox({
8663
+ var _j = useCombobox({
8665
8664
  items: inputItems,
8666
8665
  onInputValueChange: function (_a) {
8667
8666
  var inputValue = _a.inputValue;
@@ -8676,20 +8675,22 @@ var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
8676
8675
  stateReducer: stateReducer
8677
8676
  // to what extent is this necessary?
8678
8677
  // environment: environment ? environment : undefined
8679
- }), isOpen = _k.isOpen, getToggleButtonProps = _k.getToggleButtonProps, getMenuProps = _k.getMenuProps, getInputProps = _k.getInputProps, getComboboxProps = _k.getComboboxProps, highlightedIndex = _k.highlightedIndex, getItemProps = _k.getItemProps, openMenu = _k.openMenu, closeMenu = _k.closeMenu, selectItem = _k.selectItem, selectedItem = _k.selectedItem, inputValue = _k.inputValue;
8678
+ }), isOpen = _j.isOpen, getToggleButtonProps = _j.getToggleButtonProps, getMenuProps = _j.getMenuProps, getInputProps = _j.getInputProps, getComboboxProps = _j.getComboboxProps, highlightedIndex = _j.highlightedIndex, getItemProps = _j.getItemProps, openMenu = _j.openMenu, closeMenu = _j.closeMenu, selectItem = _j.selectItem, selectedItem = _j.selectedItem, inputValue = _j.inputValue, setInputValue = _j.setInputValue;
8680
8679
  useImperativeHandle(ref, function () { return ({
8681
8680
  selectItem: selectItem,
8682
8681
  selectedItem: selectedItem,
8683
- inputValue: inputValue
8682
+ inputValue: inputValue,
8683
+ setInputValue: setInputValue,
8684
8684
  }); });
8685
8685
  useEffect(function () {
8686
- // @ts-ignore
8687
- // console.log('combobox: ', selectedItem && (selectedItem.name || selectedItem.file_name) ? selectedItem.name ?? selectedItem.file_name : undefined,)
8686
+ var _a;
8688
8687
  if (!selectedItem)
8689
8688
  return;
8689
+ // @ts-ignore
8690
+ setInputValue((_a = selectedItem.name) !== null && _a !== void 0 ? _a : selectedItem.file_name);
8690
8691
  setSelected && setSelected(selectedItem);
8691
8692
  closeMenu();
8692
- }, [closeMenu, selectedItem, setSelected]);
8693
+ }, [closeMenu, selectedItem, setInputValue, setSelected]);
8693
8694
  return (React__default.createElement("div", { "data-testid": "ComboBoxSelect", className: hidden ? undefined : 'poll-combobox' },
8694
8695
  React__default.createElement(ButtonGroup, { wrapperProps: __assign(__assign({}, getComboboxProps()), { style: __assign(__assign({}, inputStyle), { position: 'relative', width: '100%' }) }), disabled: disabled },
8695
8696
  React__default.createElement("input", __assign({}, getInputProps(__assign(__assign({ placeholder: 'Search for something...', spellCheck: false, disabled: disabled, style: {
@@ -8698,9 +8699,7 @@ var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
8698
8699
  borderBottomLeftRadius: isOpen ? 0 : 4,
8699
8700
  flex: 12,
8700
8701
  lineHeight: '1.5rem',
8701
- },
8702
- // @ts-ignore
8703
- value: selectedItem && (selectedItem.name || selectedItem.file_name) ? (_b = selectedItem.name) !== null && _b !== void 0 ? _b : selectedItem.file_name : '' }, inputProps), { onFocus: function () {
8702
+ } }, inputProps), { onFocus: function () {
8704
8703
  openMenu();
8705
8704
  }, type: hidden ? 'hidden' : undefined })))),
8706
8705
  !hidden &&
@@ -8731,6 +8730,7 @@ var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
8731
8730
  return (React__default.createElement("button", { type: 'button', tabIndex: -1, disabled: disabled, onClick: function () {
8732
8731
  selectItem(null);
8733
8732
  setSelected && setSelected(undefined);
8733
+ onClear && onClear();
8734
8734
  }, style: {
8735
8735
  borderBottomRightRadius: isOpen ? 0 : 4,
8736
8736
  } },
@@ -40503,6 +40503,7 @@ var SelectCloudArtifacts = function (_a) {
40503
40503
  // Support default values
40504
40504
  var defaultValueRef = useRef(defaultValue ? defaultValue.split('/').splice(-1)[0] : undefined);
40505
40505
  var _g = useState(defaultValue ? defaultValue.split('/').slice(0, -1) : []), path = _g[0], setPath = _g[1];
40506
+ var pathRef = useRef(defaultValue ? defaultValue.split('/').slice(0, -1) : []);
40506
40507
  var _h = useState(), selArtifact = _h[0], setSelArtifact = _h[1];
40507
40508
  useEffect(function () {
40508
40509
  setLoading(true);
@@ -40517,22 +40518,35 @@ var SelectCloudArtifacts = function (_a) {
40517
40518
  if (defaultFile) {
40518
40519
  comboBoxRef.current.selectItem(defaultFile);
40519
40520
  defaultValueRef.current = undefined;
40520
- onChange && onChange(__assign(__assign({}, selArtifact), { pollination_cloud_path: "".concat(path, "/").concat(defaultFile.file_name) }));
40521
+ setSelArtifact(defaultFile);
40521
40522
  }
40522
40523
  }
40523
40524
  })
40524
40525
  .finally(function () { return setLoading(false); });
40525
- }, [client, defaultValue, fileNameMatch, host, jobId, listArtifacts, onChange, path, selArtifact]);
40526
+ }, [
40527
+ client,
40528
+ defaultValue,
40529
+ fileNameMatch,
40530
+ host,
40531
+ jobId,
40532
+ listArtifacts,
40533
+ onChange,
40534
+ path,
40535
+ ]);
40526
40536
  useEffect(function () {
40527
40537
  if (!selArtifact || selArtifact.file_type !== 'folder')
40528
40538
  return;
40529
- setPath(function (path) { return ["".concat(path, "/").concat(selArtifact.file_name)]; });
40539
+ setPath(function (path) {
40540
+ var newPath = ["".concat(path, "/").concat(selArtifact.file_name)];
40541
+ pathRef.current = ["".concat(path, "/").concat(selArtifact.file_name)];
40542
+ return newPath;
40543
+ });
40530
40544
  }, [onChange, selArtifact]);
40531
40545
  useEffect(function () {
40532
40546
  if (!selArtifact || selArtifact.file_type !== 'file')
40533
40547
  return;
40534
- onChange && onChange(__assign(__assign({}, selArtifact), { pollination_cloud_path: "".concat(path, "/").concat(selArtifact.file_name) }));
40535
- }, [onChange, path, selArtifact]);
40548
+ onChange && onChange(__assign(__assign({}, selArtifact), { pollination_cloud_path: "".concat(pathRef.current, "/").concat(selArtifact.file_name) }));
40549
+ }, [onChange, selArtifact]);
40536
40550
  var stateReducer = useCallback(function (state, actionAndChanges) {
40537
40551
  var type = actionAndChanges.type, changes = actionAndChanges.changes;
40538
40552
  switch (type) {
@@ -40570,7 +40584,7 @@ var SelectCloudArtifacts = function (_a) {
40570
40584
  } },
40571
40585
  icon,
40572
40586
  item.name));
40573
- }, setSelected: setSelArtifact, loading: loading, disabled: !projectName || !projectOwner, hidden: hidden, icon: React__default.createElement(CloudPlus$1, null), header: path.length > 0 &&
40587
+ }, setSelected: setSelArtifact, onClear: function () { return setPath([]); }, loading: loading, disabled: !projectName || !projectOwner, hidden: hidden, icon: React__default.createElement(CloudPlus$1, null), header: path.length > 0 &&
40574
40588
  React__default.createElement("div", { key: "header", style: {
40575
40589
  width: '100%',
40576
40590
  display: 'flex',
@@ -41596,24 +41610,26 @@ TabPanel.defaultProps = defaultProps;
41596
41610
 
41597
41611
  var SelectProject = function (_a) {
41598
41612
  var _b, _c;
41599
- var authUser = _a.authUser, client = _a.client, projectOwner = _a.projectOwner, setSelProject = _a.setSelProject;
41613
+ var authUser = _a.authUser, client = _a.client, projectOwner = _a.projectOwner, _defaultValue = _a.defaultValue, setSelProject = _a.setSelProject;
41600
41614
  var comboBoxRef = useRef();
41601
- var _d = useState(), projects = _d[0], setProjects = _d[1];
41602
- var _e = useState(false), loading = _e[0], setLoading = _e[1];
41603
- var totalRunsRef = useRef({
41615
+ var _d = useState(_defaultValue ? [_defaultValue] : undefined), defaultValue = _d[0], setDefaultValue = _d[1];
41616
+ var _e = useState([]), projects = _e[0], setProjects = _e[1];
41617
+ var _f = useState(false), loading = _f[0], setLoading = _f[1];
41618
+ var totalProjectsRef = useRef({
41604
41619
  loaded: 0,
41605
41620
  total: undefined
41606
41621
  });
41607
- var _f = useState(0), total = _f[0], setTotal = _f[1];
41608
- var _g = useState({
41622
+ var _g = useState(0), total = _g[0], setTotal = _g[1];
41623
+ var _h = useState({
41609
41624
  owner: (_b = [projectOwner]) !== null && _b !== void 0 ? _b : (authUser && [authUser.username]),
41610
41625
  page: 1,
41611
41626
  perPage: 10,
41612
- }), queryConfig = _g[0], setQueryConfig = _g[1];
41627
+ ids: defaultValue
41628
+ }), queryConfig = _h[0], setQueryConfig = _h[1];
41613
41629
  // resetting query
41614
41630
  useEffect(function () {
41615
41631
  // reset total loaded
41616
- totalRunsRef.current = {
41632
+ totalProjectsRef.current = {
41617
41633
  loaded: 0,
41618
41634
  total: undefined
41619
41635
  };
@@ -41622,14 +41638,14 @@ var SelectProject = function (_a) {
41622
41638
  comboBoxRef.current.selectItem(null);
41623
41639
  }
41624
41640
  setProjects([]);
41625
- setQueryConfig(function (q) { return (__assign(__assign({}, q), { owner: [projectOwner], page: 1 })); });
41626
- }, [projectOwner]);
41641
+ setQueryConfig(function (q) { return (__assign(__assign({}, q), { owner: [projectOwner], ids: defaultValue, page: 1 })); });
41642
+ }, [defaultValue, projectOwner]);
41627
41643
  var fetchProjects = useCallback(function (queryConfig) {
41628
- if (!authUser)
41644
+ if (!authUser || !client || !client.projects)
41629
41645
  return;
41630
41646
  if (!queryConfig.owner)
41631
41647
  return;
41632
- var _a = totalRunsRef.current, total = _a.total, loaded = _a.loaded;
41648
+ var _a = totalProjectsRef.current, total = _a.total, loaded = _a.loaded;
41633
41649
  if (total && loaded >= total)
41634
41650
  return;
41635
41651
  setLoading(true);
@@ -41638,24 +41654,36 @@ var SelectProject = function (_a) {
41638
41654
  var data = _a.data;
41639
41655
  setProjects(function (state) { return state ? __spreadArray(__spreadArray([], state, true), data.resources, true) : __spreadArray([], data.resources, true); });
41640
41656
  setTotal(data.total_count);
41641
- totalRunsRef.current.loaded += data.resources.length;
41642
- totalRunsRef.current.total = data.total_count;
41657
+ totalProjectsRef.current.loaded += data.resources.length;
41658
+ totalProjectsRef.current.total = data.total_count;
41643
41659
  })
41644
41660
  .finally(function () {
41645
41661
  setLoading(false);
41646
41662
  });
41647
- }, [authUser, client.projects]);
41663
+ }, [authUser, client]);
41648
41664
  useEffect(function () {
41649
41665
  fetchProjects(queryConfig);
41650
41666
  }, [fetchProjects, queryConfig]);
41667
+ useEffect(function () {
41668
+ if (!defaultValue || !projects.length)
41669
+ return;
41670
+ // if this were to become a multiselect could use defaultValue.includes(p.id)
41671
+ // other things would have to change
41672
+ var selDefault = projects.find(function (p) { return p.id === defaultValue[0]; });
41673
+ if (selDefault) {
41674
+ setSelProject(selDefault);
41675
+ comboBoxRef.current.selectItem(selDefault);
41676
+ return;
41677
+ }
41678
+ }, [defaultValue, projects, setSelProject]);
41651
41679
  var onScrollReachEnd = useCallback(function () {
41652
41680
  // already loaded all runs
41653
- var _a = totalRunsRef.current, total = _a.total, loaded = _a.loaded;
41681
+ var _a = totalProjectsRef.current, total = _a.total, loaded = _a.loaded;
41654
41682
  if (total && loaded >= total)
41655
41683
  return;
41656
41684
  setQueryConfig(function (q) { return (__assign(__assign({}, q), { page: q.page ? q.page + 1 : 1 })); });
41657
41685
  }, []);
41658
- return (React__default.createElement(ComboBox, { ref: comboBoxRef, items: projects !== null && projects !== void 0 ? projects : [], setSelected: setSelProject, inputProps: {
41686
+ return (React__default.createElement(ComboBox, { ref: comboBoxRef, items: projects !== null && projects !== void 0 ? projects : [], setSelected: setSelProject, onClear: function () { return setDefaultValue(undefined); }, inputProps: {
41659
41687
  placeholder: 'Select a project...',
41660
41688
  }, loading: loading, disabled: !authUser || !queryConfig.owner, footer: (React__default.createElement("div", { key: "footer", style: {
41661
41689
  width: '100%',
@@ -41667,11 +41695,11 @@ var SelectProject = function (_a) {
41667
41695
 
41668
41696
  var SelectAccount = function (_a) {
41669
41697
  var _b;
41670
- var authUser = _a.authUser, client = _a.client, setSelAccount = _a.setSelAccount;
41698
+ var authUser = _a.authUser, client = _a.client, defaultValue = _a.defaultValue, setSelAccount = _a.setSelAccount;
41671
41699
  var comboBoxRef = useRef();
41672
41700
  var _c = useState(function () { return authUser ? [authUser] : []; }), accounts = _c[0], setAccounts = _c[1];
41673
41701
  var _d = useState(false), loading = _d[0], setLoading = _d[1];
41674
- var totalRunsRef = useRef({
41702
+ var totalAccountsRef = useRef({
41675
41703
  loaded: 0,
41676
41704
  total: undefined
41677
41705
  });
@@ -41682,8 +41710,10 @@ var SelectAccount = function (_a) {
41682
41710
  }), queryConfig = _f[0], setQueryConfig = _f[1];
41683
41711
  // resetting query
41684
41712
  useEffect(function () {
41713
+ if (!authUser)
41714
+ return;
41685
41715
  // reset total loaded
41686
- totalRunsRef.current = {
41716
+ totalAccountsRef.current = {
41687
41717
  loaded: 0,
41688
41718
  total: undefined
41689
41719
  };
@@ -41691,16 +41721,16 @@ var SelectAccount = function (_a) {
41691
41721
  if (comboBoxRef.current) {
41692
41722
  comboBoxRef.current.selectItem(null);
41693
41723
  }
41694
- setAccounts(authUser ? [authUser] : []);
41695
- setQueryConfig(function (q) { return (__assign(__assign({}, q), { member: authUser ? [authUser === null || authUser === void 0 ? void 0 : authUser.username] : undefined, page: 1 })); });
41696
- }, [authUser]);
41724
+ setAccounts([authUser]);
41725
+ setQueryConfig(function (q) { return (__assign(__assign({}, q), { member: [authUser === null || authUser === void 0 ? void 0 : authUser.username], page: 1 })); });
41726
+ }, [authUser, defaultValue, setSelAccount]);
41697
41727
  var fetchOrganizations = useCallback(function (queryConfig) {
41698
- if (!authUser)
41728
+ if (!authUser || !client || !client.orgs)
41699
41729
  return;
41700
41730
  if (!queryConfig.member)
41701
41731
  return;
41702
- // we've already loaded all Runs
41703
- var _a = totalRunsRef.current, total = _a.total, loaded = _a.loaded;
41732
+ var _a = totalAccountsRef.current, total = _a.total, loaded = _a.loaded;
41733
+ // we've already loaded all accounts
41704
41734
  if (total && loaded >= total)
41705
41735
  return;
41706
41736
  setLoading(true);
@@ -41709,19 +41739,30 @@ var SelectAccount = function (_a) {
41709
41739
  var data = _a.data;
41710
41740
  setAccounts(function (state) { return state ? __spreadArray(__spreadArray([], state, true), data.resources, true) : __spreadArray([], data.resources, true); });
41711
41741
  setTotal(data.total_count);
41712
- totalRunsRef.current.loaded += data.resources.length;
41713
- totalRunsRef.current.total = data.total_count;
41742
+ totalAccountsRef.current.loaded += data.resources.length;
41743
+ totalAccountsRef.current.total = data.total_count;
41714
41744
  })
41715
41745
  .finally(function () {
41716
41746
  setLoading(false);
41717
41747
  });
41718
- }, [authUser, client.orgs]);
41748
+ }, [authUser, client]);
41719
41749
  useEffect(function () {
41720
41750
  fetchOrganizations(queryConfig);
41721
41751
  }, [fetchOrganizations, queryConfig]);
41752
+ useEffect(function () {
41753
+ if (!defaultValue || !accounts.length)
41754
+ return;
41755
+ // @ts-ignore
41756
+ var selDefault = accounts.find(function (a) { return typeof a.username !== 'undefined' ? a.username === defaultValue : a.account_name === defaultValue; });
41757
+ if (selDefault) {
41758
+ setSelAccount(selDefault);
41759
+ comboBoxRef.current.selectItem(selDefault);
41760
+ return;
41761
+ }
41762
+ }, [defaultValue, accounts, setSelAccount, authUser]);
41722
41763
  var onScrollReachEnd = useCallback(function () {
41723
41764
  // already loaded all runs
41724
- var _a = totalRunsRef.current, total = _a.total, loaded = _a.loaded;
41765
+ var _a = totalAccountsRef.current, total = _a.total, loaded = _a.loaded;
41725
41766
  if (total && loaded >= total)
41726
41767
  return;
41727
41768
  setQueryConfig(function (q) { return (__assign(__assign({}, q), { page: q.page ? q.page + 1 : 1 })); });
@@ -41787,7 +41828,7 @@ var SelectRecipe = function (_a) {
41787
41828
  setQueryConfig(function (q) { return (__assign(__assign({}, q), { owner: projectOwner, name: projectName, page: 1 })); });
41788
41829
  }, [projectOwner, projectName]);
41789
41830
  var fetchRecipes = useCallback(function (queryConfig) {
41790
- if (!authUser)
41831
+ if (!authUser || !client || !client.projects)
41791
41832
  return;
41792
41833
  if (!queryConfig.owner || !queryConfig.name)
41793
41834
  return;
@@ -43856,7 +43897,7 @@ var RecipeInputsForm = function (_a) {
43856
43897
  var _e = useForm({
43857
43898
  resolver: Oe(schema),
43858
43899
  mode: 'all'
43859
- }), control = _e.control, register = _e.register, handleSubmit = _e.handleSubmit, resetField = _e.resetField, _f = _e.formState, errors = _f.errors, isValid = _f.isValid; _f.isSubmitting;
43900
+ }), control = _e.control, register = _e.register, handleSubmit = _e.handleSubmit, reset = _e.reset, resetField = _e.resetField, _f = _e.formState, errors = _f.errors, isValid = _f.isValid; _f.isSubmitting;
43860
43901
  var _onSubmit = function (_data) {
43861
43902
  var data = __assign({}, _data);
43862
43903
  // strip study name
@@ -43878,6 +43919,7 @@ var RecipeInputsForm = function (_a) {
43878
43919
  setLoading(true);
43879
43920
  onSubmit(studyName, data)
43880
43921
  .finally(function () {
43922
+ reset();
43881
43923
  setLoading(false);
43882
43924
  });
43883
43925
  }
@@ -45655,8 +45697,6 @@ var SelectLocalArtifacts = function (_a) {
45655
45697
  if (!selArtifact)
45656
45698
  return;
45657
45699
  if (selArtifact.kind === 'file') {
45658
- // console.log(selArtifact)
45659
- // directoryRef.current[0].resolve(selArtifact).then((path) => console.log(path) )
45660
45700
  var getFile = function (fileHandle) { return __awaiter$1(void 0, void 0, void 0, function () {
45661
45701
  var path, _a, _b;
45662
45702
  return __generator$1(this, function (_c) {
@@ -45812,22 +45852,23 @@ var SelectLocalArtifacts = function (_a) {
45812
45852
 
45813
45853
  var SelectRun = function (_a) {
45814
45854
  var _b, _c;
45815
- var authUser = _a.authUser, client = _a.client, projectOwner = _a.projectOwner, projectName = _a.projectName, jobId = _a.jobId, setSelRun = _a.setSelRun;
45855
+ var authUser = _a.authUser, client = _a.client, projectOwner = _a.projectOwner, projectName = _a.projectName, jobId = _a.jobId, _defaultValue = _a.defaultValue, setSelRun = _a.setSelRun;
45816
45856
  var comboBoxRef = useRef();
45817
- var _d = useState(), runs = _d[0], setRuns = _d[1];
45818
- var _e = useState(false), loading = _e[0], setLoading = _e[1];
45857
+ var _d = useState(_defaultValue), defaultValue = _d[0], setDefaultValue = _d[1];
45858
+ var _e = useState(), runs = _e[0], setRuns = _e[1];
45859
+ var _f = useState(false), loading = _f[0], setLoading = _f[1];
45819
45860
  var totalRunsRef = useRef({
45820
45861
  loaded: 0,
45821
45862
  total: undefined
45822
45863
  });
45823
- var _f = useState(0), total = _f[0], setTotal = _f[1];
45824
- var _g = useState({
45864
+ var _g = useState(0), total = _g[0], setTotal = _g[1];
45865
+ var _h = useState({
45825
45866
  owner: projectOwner !== null && projectOwner !== void 0 ? projectOwner : (authUser && authUser.username),
45826
45867
  name: projectName,
45827
45868
  jobId: jobId,
45828
45869
  page: 1,
45829
45870
  perPage: 10,
45830
- }), queryConfig = _g[0], setQueryConfig = _g[1];
45871
+ }), queryConfig = _h[0], setQueryConfig = _h[1];
45831
45872
  // resetting query
45832
45873
  useEffect(function () {
45833
45874
  // reset total loaded
@@ -45837,13 +45878,14 @@ var SelectRun = function (_a) {
45837
45878
  };
45838
45879
  // deselect items
45839
45880
  if (comboBoxRef.current) {
45881
+ console.log('clear selection');
45840
45882
  comboBoxRef.current.selectItem(null);
45841
45883
  }
45842
45884
  setRuns([]);
45843
45885
  setQueryConfig(function (q) { return (__assign(__assign({}, q), { jobId: jobId, owner: projectOwner, name: projectName, page: 1 })); });
45844
45886
  }, [jobId, projectOwner, projectName]);
45845
45887
  var fetchRuns = useCallback(function (queryConfig) {
45846
- if (!authUser)
45888
+ if (!authUser || !client || !client.runs)
45847
45889
  return;
45848
45890
  if (!queryConfig.name || !queryConfig.owner || !queryConfig.jobId)
45849
45891
  return;
@@ -45855,7 +45897,13 @@ var SelectRun = function (_a) {
45855
45897
  client.runs.listRuns(queryConfig)
45856
45898
  .then(function (_a) {
45857
45899
  var data = _a.data;
45858
- setRuns(function (state) { return state ? __spreadArray(__spreadArray([], state, true), data.resources, true) : __spreadArray([], data.resources, true); });
45900
+ setRuns(function (state) {
45901
+ if (!state)
45902
+ return __spreadArray([], data.resources, true);
45903
+ var newRuns = __spreadArray(__spreadArray([], state, true), data.resources, true);
45904
+ var uniqueRuns = newRuns.filter(function (run, i, arr) { return arr.findIndex(function (v) { return v.id === run.id; }) === i; });
45905
+ return uniqueRuns;
45906
+ });
45859
45907
  setTotal(data.total_count);
45860
45908
  totalRunsRef.current.loaded += data.resources.length;
45861
45909
  totalRunsRef.current.total = data.total_count;
@@ -45863,10 +45911,32 @@ var SelectRun = function (_a) {
45863
45911
  .finally(function () {
45864
45912
  setLoading(false);
45865
45913
  });
45866
- }, [authUser, client.runs]);
45914
+ }, [authUser, client]);
45867
45915
  useEffect(function () {
45868
45916
  fetchRuns(queryConfig);
45869
45917
  }, [fetchRuns, queryConfig]);
45918
+ useEffect(function () {
45919
+ if (!defaultValue || !client || !client.runs)
45920
+ return;
45921
+ client.runs.getRun({
45922
+ owner: projectOwner,
45923
+ name: projectName,
45924
+ runId: defaultValue
45925
+ }).then(function (_a) {
45926
+ var data = _a.data;
45927
+ if (!data)
45928
+ return;
45929
+ setRuns(function (state) {
45930
+ if (!state)
45931
+ return [data];
45932
+ var newRuns = __spreadArray(__spreadArray([], state, true), [data], false);
45933
+ var uniqueRuns = newRuns.filter(function (run, i, arr) { return arr.findIndex(function (v) { return v.id === run.id; }) === i; });
45934
+ return uniqueRuns;
45935
+ });
45936
+ setSelRun(data);
45937
+ comboBoxRef.current.selectItem(__assign(__assign({}, data), { name: "".concat(data.recipe.metadata.name, " : ").concat(data.status.status) }));
45938
+ });
45939
+ }, [client, defaultValue, projectName, projectOwner, setSelRun]);
45870
45940
  var onScrollReachEnd = useCallback(function () {
45871
45941
  // already loaded all runs
45872
45942
  var _a = totalRunsRef.current, total = _a.total, loaded = _a.loaded;
@@ -45891,7 +45961,7 @@ var SelectRun = function (_a) {
45891
45961
  width: 24,
45892
45962
  display: 'flex',
45893
45963
  justifyContent: 'flex-end'
45894
- }, className: 'secondary' }, "".concat(i)))); }, setSelected: setSelRun, inputProps: {
45964
+ }, className: 'secondary' }, "".concat(i)))); }, setSelected: setSelRun, onClear: function () { return setDefaultValue(undefined); }, inputProps: {
45895
45965
  placeholder: 'Select a run...',
45896
45966
  }, loading: loading, disabled: !authUser || !queryConfig.name || !queryConfig.owner, footer: (React__default.createElement("div", { key: "footer", style: {
45897
45967
  width: '100%',
@@ -45902,23 +45972,36 @@ var SelectRun = function (_a) {
45902
45972
  } }, "Showing ".concat((_c = runs === null || runs === void 0 ? void 0 : runs.length) !== null && _c !== void 0 ? _c : 0, " of ").concat(total, " runs"))), onScrollReachEnd: onScrollReachEnd }));
45903
45973
  };
45904
45974
 
45975
+ var formatStudy = function (study) {
45976
+ var name = study.spec.name;
45977
+ if (!name) {
45978
+ if (study.recipe && study.recipe.metadata) {
45979
+ name = "".concat(study.recipe.metadata.name, " : ").concat(study.status.id.slice(0, 5), "...");
45980
+ }
45981
+ else {
45982
+ name = 'No name';
45983
+ }
45984
+ }
45985
+ return (__assign(__assign({}, study), { name: name }));
45986
+ };
45905
45987
  var SelectStudy = function (_a) {
45906
45988
  var _b, _c;
45907
- var authUser = _a.authUser, client = _a.client, projectName = _a.projectName, projectOwner = _a.projectOwner, setSelStudy = _a.setSelStudy;
45989
+ var authUser = _a.authUser, client = _a.client, projectName = _a.projectName, projectOwner = _a.projectOwner, _defaultValue = _a.defaultValue, setSelStudy = _a.setSelStudy;
45908
45990
  var comboBoxRef = useRef();
45909
- var _d = useState(), studies = _d[0], setStudies = _d[1];
45910
- var _e = useState(false), loading = _e[0], setLoading = _e[1];
45991
+ var _d = useState(_defaultValue), defaultValue = _d[0], setDefaultValue = _d[1];
45992
+ var _e = useState([]), studies = _e[0], setStudies = _e[1];
45993
+ var _f = useState(false), loading = _f[0], setLoading = _f[1];
45911
45994
  var totalRunsRef = useRef({
45912
45995
  loaded: 0,
45913
45996
  total: undefined
45914
45997
  });
45915
- var _f = useState(0), total = _f[0], setTotal = _f[1];
45916
- var _g = useState({
45998
+ var _g = useState(0), total = _g[0], setTotal = _g[1];
45999
+ var _h = useState({
45917
46000
  owner: projectOwner !== null && projectOwner !== void 0 ? projectOwner : (authUser && authUser.username),
45918
46001
  name: projectName,
45919
46002
  page: 1,
45920
46003
  perPage: 10,
45921
- }), queryConfig = _g[0], setQueryConfig = _g[1];
46004
+ }), queryConfig = _h[0], setQueryConfig = _h[1];
45922
46005
  // resetting query
45923
46006
  useEffect(function () {
45924
46007
  // reset total loaded
@@ -45934,7 +46017,7 @@ var SelectStudy = function (_a) {
45934
46017
  setQueryConfig(function (q) { return (__assign(__assign({}, q), { owner: projectOwner, name: projectName, page: 1 })); });
45935
46018
  }, [projectOwner, projectName]);
45936
46019
  var fetchStudies = useCallback(function (queryConfig) {
45937
- if (!authUser)
46020
+ if (!authUser || !client || !client.jobs)
45938
46021
  return;
45939
46022
  if (!queryConfig.name || !queryConfig.owner)
45940
46023
  return;
@@ -45946,7 +46029,13 @@ var SelectStudy = function (_a) {
45946
46029
  client.jobs.listJobs(queryConfig)
45947
46030
  .then(function (_a) {
45948
46031
  var data = _a.data;
45949
- setStudies(function (state) { return state ? __spreadArray(__spreadArray([], state, true), data.resources, true) : __spreadArray([], data.resources, true); });
46032
+ setStudies(function (state) {
46033
+ if (!state)
46034
+ return __spreadArray([], data.resources, true);
46035
+ var newStudies = __spreadArray(__spreadArray([], state, true), data.resources, true);
46036
+ var uniqueStudies = newStudies.filter(function (study, i, arr) { return arr.findIndex(function (v) { return v.id === study.id; }) === i; });
46037
+ return uniqueStudies;
46038
+ });
45950
46039
  setTotal(data.total_count);
45951
46040
  totalRunsRef.current.loaded += data.resources.length;
45952
46041
  totalRunsRef.current.total = data.total_count;
@@ -45954,10 +46043,32 @@ var SelectStudy = function (_a) {
45954
46043
  .finally(function () {
45955
46044
  setLoading(false);
45956
46045
  });
45957
- }, [authUser, client.jobs]);
46046
+ }, [authUser, client]);
45958
46047
  useEffect(function () {
45959
46048
  fetchStudies(queryConfig);
45960
46049
  }, [fetchStudies, queryConfig]);
46050
+ useEffect(function () {
46051
+ if (!defaultValue || !client || !client.jobs)
46052
+ return;
46053
+ client.jobs.getJob({
46054
+ owner: projectOwner,
46055
+ name: projectName,
46056
+ jobId: defaultValue
46057
+ }).then(function (_a) {
46058
+ var data = _a.data;
46059
+ if (!data)
46060
+ return;
46061
+ setStudies(function (state) {
46062
+ if (!state)
46063
+ return [data];
46064
+ var newStudies = __spreadArray(__spreadArray([], state, true), [data], false);
46065
+ var uniqueStudies = newStudies.filter(function (study, i, arr) { return arr.findIndex(function (v) { return v.id === study.id; }) === i; });
46066
+ return uniqueStudies;
46067
+ });
46068
+ setSelStudy(data);
46069
+ comboBoxRef.current.selectItem(formatStudy(data));
46070
+ });
46071
+ }, [client, defaultValue, projectName, projectOwner, setSelStudy]);
45961
46072
  var onScrollReachEnd = useCallback(function () {
45962
46073
  // already loaded all runs
45963
46074
  var _a = totalRunsRef.current, total = _a.total, loaded = _a.loaded;
@@ -45965,18 +46076,7 @@ var SelectStudy = function (_a) {
45965
46076
  return;
45966
46077
  setQueryConfig(function (q) { return (__assign(__assign({}, q), { page: q.page ? q.page + 1 : 1 })); });
45967
46078
  }, []);
45968
- return (React__default.createElement(ComboBox, { ref: comboBoxRef, items: (_b = studies === null || studies === void 0 ? void 0 : studies.map(function (r) {
45969
- var name = r.spec.name;
45970
- if (!name) {
45971
- if (r.recipe && r.recipe.metadata) {
45972
- name = "".concat(r.recipe.metadata.name, " : ").concat(r.status.id.slice(0, 5), "...");
45973
- }
45974
- else {
45975
- name = 'No name';
45976
- }
45977
- }
45978
- return (__assign(__assign({}, r), { name: name }));
45979
- })) !== null && _b !== void 0 ? _b : [], setSelected: setSelStudy, inputProps: {
46079
+ return (React__default.createElement(ComboBox, { ref: comboBoxRef, items: (_b = studies === null || studies === void 0 ? void 0 : studies.map(formatStudy)) !== null && _b !== void 0 ? _b : [], setSelected: setSelStudy, onClear: function () { return setDefaultValue(undefined); }, inputProps: {
45980
46080
  placeholder: 'Select a study...',
45981
46081
  }, loading: loading, disabled: !authUser || !queryConfig.name || !queryConfig.owner, footer: (React__default.createElement("div", { key: "footer", style: {
45982
46082
  width: '100%',