pollination-react-io 1.64.0 → 1.65.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.
package/build/index.js CHANGED
@@ -38146,6 +38146,26 @@ var usePollinationPanel = function () {
38146
38146
  return undefined;
38147
38147
  }
38148
38148
  };
38149
+ /**
38150
+ * Count number of simulation by platform
38151
+ * @param projectSlug Project slug
38152
+ * @returns Object with platform count
38153
+ */
38154
+ var getPlatforms = function (projectSlug) {
38155
+ if (!panel)
38156
+ return;
38157
+ var count = {};
38158
+ try {
38159
+ var message = panel.GetJob(projectSlug);
38160
+ var arr = JSON.parse(message.data);
38161
+ arr.forEach(function (i) { count[i.platform] = (count[i.platform] || 0) + 1; });
38162
+ return count;
38163
+ }
38164
+ catch (error) {
38165
+ // Do nothing. It is written at the end
38166
+ return undefined;
38167
+ }
38168
+ };
38149
38169
  /**
38150
38170
  * Delete job with the same input/ouput folder from DB
38151
38171
  * @param projectSlug Project slug
@@ -38176,7 +38196,8 @@ var usePollinationPanel = function () {
38176
38196
  fileExplorer: fileExplorer,
38177
38197
  getPaginatedJob: getPaginatedJob,
38178
38198
  getJob: getJob,
38179
- deleteJob: deleteJob
38199
+ deleteJob: deleteJob,
38200
+ getPlatforms: getPlatforms
38180
38201
  };
38181
38202
  };
38182
38203
 
@@ -38348,13 +38369,14 @@ var useCreateStudy = function (accountName, projectName, client) {
38348
38369
  });
38349
38370
  }, [accountName, client, processEntryCloud, projectName]);
38350
38371
  var createLocalStudy = React.useCallback(function (_a, data, _b, onSuccess, key) {
38351
- var name = _a.name, description = _a.description, recipe = _a.recipe;
38372
+ var name = _a.name, description = _a.description, recipe = _a.recipe, recipeFilter = _a.recipeFilter;
38352
38373
  var localCPUCount = _b.localCPUCount, localRunFolder = _b.localRunFolder, isLocalJob = _b.isLocalJob, cloudProjectName = _b.cloudProjectName, cloudProjectOwner = _b.cloudProjectOwner;
38353
38374
  if (key === void 0) { key = performance.now().toString(); }
38354
38375
  return __awaiter$1(void 0, void 0, void 0, function () {
38355
38376
  var job, jobInfo, response;
38356
- return __generator$1(this, function (_c) {
38357
- switch (_c.label) {
38377
+ var _c;
38378
+ return __generator$1(this, function (_d) {
38379
+ switch (_d.label) {
38358
38380
  case 0:
38359
38381
  if (!checkDotNet || !client || !uploadArtifact)
38360
38382
  return [2 /*return*/];
@@ -38379,9 +38401,9 @@ var useCreateStudy = function (accountName, projectName, client) {
38379
38401
  // JobInfo mapping
38380
38402
  ];
38381
38403
  case 1:
38382
- job = _c.sent();
38404
+ job = _d.sent();
38383
38405
  jobInfo = {
38384
- RecipeOwner: '',
38406
+ RecipeOwner: (_c = recipeFilter.owner) !== null && _c !== void 0 ? _c : 'ladybug-tools',
38385
38407
  Recipe: recipe,
38386
38408
  Job: job,
38387
38409
  IsLocalJob: isLocalJob,
@@ -41278,8 +41300,14 @@ var ComboFileSelector = function (_a) {
41278
41300
  return (React__default["default"].createElement(SelectCloudArtifacts, { projectOwner: projectOwner, projectName: projectName, value: value, hidden: hidden, fileNameMatch: typeof inputProps.accept === 'string' ?
41279
41301
  ".*(".concat(inputProps.accept.replace(/\./g, '').split(', ').join('$|'), "$)") : '.*', onChange: onChange, client: client }));
41280
41302
  case 'get_local':
41281
- return (React__default["default"].createElement(SelectLocalArtifactNative, { onChange: handleLocalArtifactSelect, buttonLabel: "Select ".concat(inputProps.accept.split(',').length > 1 ?
41282
- 'any of' : 'an', " ").concat(inputProps.accept, " ").concat(inputProps.accept.split(',').length > 1 ? 'file types' : 'file', "."), fileMatchPattern: "File types ".concat(inputProps.accept, "|*").concat(inputProps.accept.split(', ').join(';*')) }));
41303
+ return (React__default["default"].createElement(SelectLocalArtifactNative, { onChange: handleLocalArtifactSelect, buttonLabel: (inputProps === null || inputProps === void 0 ? void 0 : inputProps.accept)
41304
+ ? "Select ".concat(inputProps.accept.split(',').length > 1
41305
+ ? 'any of'
41306
+ : 'an', " ").concat(inputProps.accept, " ").concat(inputProps.accept.split(',').length > 1
41307
+ ? 'file types' : 'file', ".")
41308
+ : 'Select a file.', fileMatchPattern: (inputProps === null || inputProps === void 0 ? void 0 : inputProps.accept)
41309
+ ? "File types ".concat(inputProps.accept, "|*").concat(inputProps.accept.split(', ').join(';*'))
41310
+ : 'File types | *.*' }));
41283
41311
  default:
41284
41312
  return (React__default["default"].createElement(FileInput, { onChange: onChange, inputProps: inputProps, accept: typeof inputProps.accept === 'string' ?
41285
41313
  inputProps.accept.split(', ') : undefined }));
@@ -42421,7 +42449,7 @@ var SelectRecipe = function (_a) {
42421
42449
  var data;
42422
42450
  return __generator$1(this, function (_a) {
42423
42451
  switch (_a.label) {
42424
- case 0: return [4 /*yield*/, client.projects.getProjectRecipes(queryConfig)];
42452
+ case 0: return [4 /*yield*/, client.projects.getProjectRecipeFilters(queryConfig)];
42425
42453
  case 1:
42426
42454
  data = (_a.sent()).data;
42427
42455
  setRecipes(function (state) { return state ? __spreadArray(__spreadArray([], state, true), data.resources, true) : __spreadArray([], data.resources, true); });
@@ -42444,8 +42472,8 @@ var SelectRecipe = function (_a) {
42444
42472
  return;
42445
42473
  }
42446
42474
  // if (selRecipe == null) return
42447
- if (selRecipe && selRecipe.metadata && selRecipe.metadata.name) {
42448
- comboBoxRef.current.setInputValue(selRecipe.metadata.name);
42475
+ if (selRecipe && selRecipe.name) {
42476
+ comboBoxRef.current.setInputValue(selRecipe.name);
42449
42477
  }
42450
42478
  comboBoxRef.current.selectItem(selRecipe);
42451
42479
  valueRef.current = selRecipe;
@@ -42457,12 +42485,11 @@ var SelectRecipe = function (_a) {
42457
42485
  return;
42458
42486
  setPageNumber(projectApiRef.current.page + 1);
42459
42487
  }, []);
42460
- return (React__default["default"].createElement(ComboBox, { ref: comboBoxRef, items: (_b = recipes === null || recipes === void 0 ? void 0 : recipes.map(function (r, i) { return (__assign(__assign({}, r), { name: "".concat(r.metadata.name, "-").concat(r.metadata.tag), id: "".concat(r.metadata.name, "-").concat(r.metadata.tag) })); })) !== null && _b !== void 0 ? _b : [], renderItem: function (item) { return (React__default["default"].createElement("div", { style: {
42488
+ return (React__default["default"].createElement(ComboBox, { ref: comboBoxRef, items: (_b = recipes === null || recipes === void 0 ? void 0 : recipes.map(function (r, i) { return (__assign(__assign({}, r), { name: "".concat(r.name, "-").concat(r.tag), id: "".concat(r.name, "-").concat(r.tag) })); })) !== null && _b !== void 0 ? _b : [], onClear: function () { return setSelRecipe(undefined); }, renderItem: function (item) { return (React__default["default"].createElement("div", { style: {
42461
42489
  display: 'flex',
42462
42490
  alignItems: 'center',
42463
42491
  gap: 8,
42464
- }, id: "".concat(item.metadata.name, "-").concat(item.metadata.tag) },
42465
- React__default["default"].createElement(Avatar, { src: item.metadata.icon, alt: item.metadata.name, fallback: item.metadata.name, size: 24 }), "".concat(item.metadata.name, "-").concat(item.metadata.tag))); }, setSelected: setSelRecipe, inputProps: {
42492
+ }, id: "".concat(item.name, "-").concat(item.tag) }, item.name)); }, setSelected: setSelRecipe, inputProps: {
42466
42493
  placeholder: 'Select a recipe...',
42467
42494
  }, loading: loading, disabled: !authUser || !projectName, footer: (React__default["default"].createElement("div", { key: "footer", style: {
42468
42495
  width: '100%',
@@ -44785,15 +44812,15 @@ var RecipeForm = function (_a) {
44785
44812
  : React__default["default"].createElement(TextInput, { key: i.name, inputProps: __assign(__assign({}, register(i.name)), { defaultValue: i.default }), reset: function () { return handleReset(i); } });
44786
44813
  case InputType.DAGFileInput:
44787
44814
  return React__default["default"].createElement(Controller, { name: i.name, control: control, defaultValue: i.default, render: function (_a) {
44788
- var _b, _c, _d;
44789
- var _e = _a.field, value = _e.value, onChange = _e.onChange, field = __rest(_e, ["value", "onChange"]);
44815
+ var _b, _c;
44816
+ var _d = _a.field, value = _d.value, onChange = _d.onChange, field = __rest(_d, ["value", "onChange"]);
44790
44817
  return React__default["default"].createElement(ComboFileSelector, { projectOwner: projectOwner, projectName: projectName, defaultOption: i.extensions &&
44791
44818
  ((_b = i.extensions) === null || _b === void 0 ? void 0 : _b.includes('hbjson')) &&
44792
44819
  host !== 'web' ? 'get_model' : 'get_cloud', optionsConfig: {
44793
- get_model: ((_c = i.extensions) === null || _c === void 0 ? void 0 : _c.includes('hbjson')) && host !== 'web',
44820
+ get_model: host !== 'web' && i.extensions && i.extensions.includes('hbjson'),
44794
44821
  get_local: host !== 'web',
44795
44822
  get_file: host === 'web'
44796
- }, value: value, onChange: onChange, inputProps: __assign(__assign({}, field), { accept: i.extensions && ((_d = i.extensions) === null || _d === void 0 ? void 0 : _d.map(function (e) { return ".".concat(e); }).join(', ')) }), client: client });
44823
+ }, value: value, onChange: onChange, inputProps: __assign(__assign({}, field), { accept: i.extensions && ((_c = i.extensions) === null || _c === void 0 ? void 0 : _c.map(function (e) { return ".".concat(e); }).join(', ')) }), client: client });
44797
44824
  } });
44798
44825
  // Others...
44799
44826
  default:
@@ -44878,11 +44905,38 @@ var CreateStudy = function (_a) {
44878
44905
  var _d = React.useState(0), activeTabIndex = _d[0], setActiveTabIndex = _d[1];
44879
44906
  var _e = React.useState(defaultAccount), selAccount = _e[0], setSelAccount = _e[1];
44880
44907
  var _f = React.useState(defaultProject), selProject = _f[0], setSelProject = _f[1];
44881
- var _g = React.useState(defaultRecipe), selRecipe = _g[0], setSelRecipe = _g[1];
44908
+ var _g = React.useState(), selRecipe = _g[0], setSelRecipe = _g[1];
44909
+ var _h = React.useState(defaultRecipe), selRecipeFilter = _h[0], setSelRecipeFilter = _h[1];
44910
+ React.useEffect(function () {
44911
+ if (!selRecipeFilter) {
44912
+ setSelRecipe(undefined);
44913
+ return;
44914
+ }
44915
+ // Remove tag from name
44916
+ var clearName = selRecipeFilter
44917
+ .name.replace(selRecipeFilter.tag, '')
44918
+ .slice(0, -1);
44919
+ // If * use latest
44920
+ var conditionalTag = selRecipeFilter.tag === '*'
44921
+ ? 'latest'
44922
+ : selRecipeFilter.tag;
44923
+ client.recipes.getRecipeByTag({
44924
+ owner: selRecipeFilter.owner,
44925
+ name: clearName,
44926
+ tag: conditionalTag
44927
+ })
44928
+ .then(function (d) {
44929
+ setSelRecipe(d.data.manifest);
44930
+ }).catch(function (err) {
44931
+ _t.error('Recipe not found. Try a new tag!', { duration: 2000, position: 'top-center', style: { minWidth: '300px', fontSize: '14px' }
44932
+ });
44933
+ setSelRecipe(undefined);
44934
+ });
44935
+ }, [selRecipeFilter]);
44882
44936
  // @ts-ignore
44883
44937
  var projectOwner = selAccount ? ((_b = selAccount.username) !== null && _b !== void 0 ? _b : selAccount.account_name) : undefined;
44884
44938
  var projectSlug = selProject ? selProject.slug.split('/')[1] : undefined;
44885
- var _h = useCreateStudy(projectOwner, projectSlug, client), host = _h.host, createStudy = _h.createStudy, createLocalStudy = _h.createLocalStudy;
44939
+ var _j = useCreateStudy(projectOwner, projectSlug, client), host = _j.host, createStudy = _j.createStudy, createLocalStudy = _j.createLocalStudy;
44886
44940
  React.useEffect(function () {
44887
44941
  if (!selRecipe)
44888
44942
  return;
@@ -44900,7 +44954,7 @@ var CreateStudy = function (_a) {
44900
44954
  onSuccess(projectJobInfo, true);
44901
44955
  }
44902
44956
  else {
44903
- _t.success('Study submitted!', { duration: 4000, position: 'bottom-left', style: { minWidth: '300px', fontSize: '12px' }
44957
+ _t.success('Study submitted!', { duration: 4000, position: 'bottom-left', style: { minWidth: '300px', fontSize: '14px' }
44904
44958
  });
44905
44959
  setTimeout(function () {
44906
44960
  window.location.href = "".concat(basePath, "/").concat(projectJobInfo.accountName, "/projects/").concat(projectJobInfo.projectName, "/studies/").concat(projectJobInfo.studyId, "?tab=details&perPage=5&status=null&page=1");
@@ -44936,6 +44990,7 @@ var CreateStudy = function (_a) {
44936
44990
  name: name,
44937
44991
  recipe: selRecipe,
44938
44992
  description: description !== null && description !== void 0 ? description : 'Study created from pollination',
44993
+ recipeFilter: selRecipeFilter
44939
44994
  }, jobArgs, localConfig, localConfig.isLocalJob ? _onSuccessLocal : _onSuccessCloud);
44940
44995
  }
44941
44996
  else {
@@ -44974,7 +45029,8 @@ var CreateStudy = function (_a) {
44974
45029
  React__default["default"].createElement(SelectProject, { authUser: authUser, client: client, onChange: setSelProject, projectOwner: projectOwner, value: selProject })),
44975
45030
  React__default["default"].createElement(Label, { label: selRecipe && selRecipe.metadata ?
44976
45031
  selRecipe.metadata.name : 'Recipe' },
44977
- React__default["default"].createElement(SelectRecipe, { authUser: authUser, client: client, projectOwner: projectOwner, projectName: selProject ? selProject.name : undefined, onChange: setSelRecipe, value: selRecipe })))),
45032
+ React__default["default"].createElement(SelectRecipe, { authUser: authUser, client: client, projectOwner: projectOwner, projectName: selProject ? selProject.name : undefined, onChange: setSelRecipeFilter, value: selRecipeFilter }),
45033
+ React__default["default"].createElement(Ie, null)))),
44978
45034
  selRecipe &&
44979
45035
  React__default["default"].createElement(React__default["default"].Fragment, null,
44980
45036
  React__default["default"].createElement(TabPanel, { style: {