ewoksweb merge requestshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests2024-03-28T16:13:36+01:00https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/493Warn the user that when workflow changes can be lost2024-03-28T16:13:36+01:00Loic HuderWarn the user that when workflow changes can be lostSupersedes !467Supersedes !467https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/490save the none to server for non-existing markerEnd2024-03-27T11:56:17+01:00Giannis Koumoutsossave the none to server for non-existing markerEndRemoves a bug with "markerEnd" in links which was saved as undefined to server when "none" was selected and then on re-load it would be populated with "arrowclosed" which is the default value.Removes a bug with "markerEnd" in links which was saved as undefined to server when "none" was selected and then on re-load it would be populated with "arrowclosed" which is the default value.Giannis KoumoutsosGiannis Koumoutsoshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/492Remove label fill2024-03-25T15:22:47+01:00Loic HuderRemove label fillFix #263Fix #263https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/491Have consistent fallback for the NodeLabel2024-03-25T08:54:41+01:00Loic HuderHave consistent fallback for the NodeLabelFix #262
Moved the fallback in `NodeLabel`Fix #262
Moved the fallback in `NodeLabel`https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/488Sidebar refactor2024-03-21T16:22:28+01:00Loic HuderSidebar refactorReworked abstractions of the sidebar to remove
- the `SelectedElement` type
- the `ElementDetails` component
- the `EditElementStyle` component
Conditions were duplicated in the latter components, hampering the readability. Also, I did ...Reworked abstractions of the sidebar to remove
- the `SelectedElement` type
- the `ElementDetails` component
- the `EditElementStyle` component
Conditions were duplicated in the latter components, hampering the readability. Also, I did not like them anymore :clown:
We now have three sidebars: one for `Workflow`, one for `Node` and one for `Link`, using the same structure. The condition switching happens in `EditSidebar`.https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/487Move "Save As" and "Delete Workflow" buttons in ActionMenu2024-03-21T14:45:09+01:00Loic HuderMove "Save As" and "Delete Workflow" buttons in ActionMenuSo that these actions are closer from the other workflow actions (new, open, ...)
![image](/uploads/f3a06c3c6aec61e9bc4e5be345177f28/image.png)
First step to streamline the `EditSidebarMenu`So that these actions are closer from the other workflow actions (new, open, ...)
![image](/uploads/f3a06c3c6aec61e9bc4e5be345177f28/image.png)
First step to streamline the `EditSidebarMenu`https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/489make nodes and links optional2024-03-18T14:35:38+01:00Giannis Koumoutsosmake nodes and links optionalSeems that when a workflow without nodes and links is attempted to open on the canvas it fails. Some minor modifications in the calculations and removing the validation resolves the issue in this MR since it is needed in !467 . BUT it br...Seems that when a workflow without nodes and links is attempted to open on the canvas it fails. Some minor modifications in the calculations and removing the validation resolves the issue in this MR since it is needed in !467 . BUT it brings the question of validating the workflows when opening and specifically if a workflow needs to have links and nodes even if empty.
From the practical point of view a workflow makes sense only if it has at least one node defined. But from the ewoksweb point of view a user can as well attempt to save a totally empty workflow as we also do in our tests. Seems that this must be allowed and have a warning through validation for that.Giannis KoumoutsosGiannis Koumoutsoshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/335Manage tasks fetching with react-query and remove tasks from the store2024-03-04T10:50:13+01:00Loic HuderManage tasks fetching with react-query and remove tasks from the storeI tried to use `react-query` for a simple usecase (fetching tasks) to get a feel of it and see if it was worth moving from `rest-hooks` to `react-query`. I must say that it was quite straight-forward and I appreciated that.
I have to s...I tried to use `react-query` for a simple usecase (fetching tasks) to get a feel of it and see if it was worth moving from `rest-hooks` to `react-query`. I must say that it was quite straight-forward and I appreciated that.
I have to see how it will fare for more complex usecase.
It also allowed me to remove the `tasks` store slice (#185) since tasks are now stored in `react-query` fetch store.https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/486Make ppfport an actual expected task type2024-03-04T09:04:38+01:00Loic HuderMake ppfport an actual expected task typehttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/484#note_315491https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/484#note_315491https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/484Add support for notebook task2024-03-04T08:54:30+01:00Loic HuderAdd support for notebook taskFix #173Fix #173https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/485Fix unhandled null for Task IO fields2024-03-01T14:55:34+01:00Loic HuderFix unhandled null for Task IO fields`required_input_names`, `optional_input_names` and `output_names` can be `null`: https://ewoksserver.readthedocs.io/en/latest/restapi.html#tag/tasks/operation/get_task_api_task__identifier__get`required_input_names`, `optional_input_names` and `output_names` can be `null`: https://ewoksserver.readthedocs.io/en/latest/restapi.html#tag/tasks/operation/get_task_api_task__identifier__gethttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/483Don't call `resetRootWorkflow` when deleting a workflow2024-03-01T10:16:04+01:00Loic HuderDon't call `resetRootWorkflow` when deleting a workflowFix #256Fix #256https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/481Remove error when no workflow is fetched and refactor RootWorkflow store2024-03-01T09:36:58+01:00Loic HuderRemove error when no workflow is fetched and refactor RootWorkflow storeFix #257Fix #257https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/482Use workflow `id` instead of `label` to save to disk, generate node ids and s...2024-03-01T08:51:42+01:00Loic HuderUse workflow `id` instead of `label` to save to disk, generate node ids and sort dropdownhttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/480#note_315172https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/480#note_315172https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/480Use workflow id instead of label in the app2024-02-29T15:32:56+01:00Loic HuderUse workflow id instead of label in the appFix #177
- Use `id` instead of `label` in the workflow saving dialog
- Remove the "Overwrite" in the workflow saving dialog
- Use `id` instead of `label` in the workflow dropdown options
- Use "Name" instead of "Identifier" in user-fac...Fix #177
- Use `id` instead of `label` in the workflow saving dialog
- Remove the "Overwrite" in the workflow saving dialog
- Use `id` instead of `label` in the workflow dropdown options
- Use "Name" instead of "Identifier" in user-facing texthttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/479attempt to install theme2024-02-19T15:58:04+01:00Giannis Koumoutsosattempt to install themeGiannis KoumoutsosGiannis Koumoutsoshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/478attempt to install theme2024-02-19T15:53:12+01:00Giannis Koumoutsosattempt to install themeGiannis KoumoutsosGiannis Koumoutsoshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/477update readthedocs yaml for new template2024-02-19T15:43:16+01:00Giannis Koumoutsosupdate readthedocs yaml for new templateGiannis KoumoutsosGiannis Koumoutsoshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/476Draft documentation without images2024-02-19T15:02:19+01:00Giannis KoumoutsosDraft documentation without imagesGiannis KoumoutsosGiannis Koumoutsoshttps://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/475Rework TypeOfValues type into Options2024-02-12T17:16:25+01:00Loic HuderRework TypeOfValues type into OptionsI lied in !474, it was not the final one 😈
I still wanted to tackle https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/465#note_308923. I changed `TypeOfValues` into `Options` for the three situations where we specify opt...I lied in !474, it was not the final one 😈
I still wanted to tackle https://gitlab.esrf.fr/workflow/ewoks/ewoksweb/-/merge_requests/465#note_308923. I changed `TypeOfValues` into `Options` for the three situations where we specify options for `StrOrNumEditCell`
| Situation | TypeOfValues (before) | Options (this MR) |
| --------- | ------------ | ------- |
| There are no options | `{ typeOfInput: input }` | `undefined` |
| There are options but none are required | `{ typeOfInput: select, values: [...] }` | `{ values: [...], requiredValues: [] }`
| There are options and some are required | `{ typeOfInput: select, values: [...], requiredValues: [...] }` | `{ values: [...], requiredValues: [...] }`
Looking a the `TypeOfValues` column, we could see the `values` are always defined when `typeOfInput` is `select`. This means we can rely in the existence of `values` (or `Options` in this case) instead of having an additional field `typeOfInput`. Also, typings are easier to work with if we use a required field for `requiredValues` (and use an empty array when there is no required values).
This sums up the changes I made in this MR.
---
But with that, I think I will stop refactoring.
I think the whole table component hierarchy is now in much better shape. There are probably new refactoring opportunities that I missed or didn't do:
- use a generic for `RowValue`
- put more stuff in common between each table now that abstractions are more sane -
- use `Map` to store rows for other tables as in !460
- ...
But it is time to move on.