Dimitrie HoekstraChanged title: Update individual pipeline VIEW in real-time or at least refresh (rewrite in Vue) → Update individual pipeline view in real-time or at least refresh (rewrite in Vue)
Changed title: Update individual pipeline VIEW in real-time or at least refresh (rewrite in Vue) → Update individual pipeline view in real-time or at least refresh (rewrite in Vue)
This has to be done in small steps 😸
We can divide this view in several small components to make the transition easier both for frontend and backend (since we'll need all the info to be provided to the API)
One small component is the builds table in the builds tab, issue is here: #25177 (closed)
This will also need backend since we'll need endpoints with the data
In order to make Pipeline Graph realtime we are rewriting it with vuejs, here is how we can move the show view to vuejs
We don't need to make it all at once. In this issue we can start only with the Graph tab component. What do you think of the component division / architecture @iamphill@fatihacet ?
Maybe the title should be outside of the widget component? I don't know if that widget is used elsewhere, but taking the title out of it would mean it could be.
Don't know if its just the image, but are you including the sub nav in the Vue app as well?
Also, I know you probably will, but that graph tab itself could be split it into a few components 👍
Maybe the title should be outside of the widget component? I don't know if that widget is used elsewhere, but taking the title out of it would mean it could be.
Yes, title should be outside.
Don't know if its just the image, but are you including the sub nav in the Vue app as well?
Just the image, will make a better one.
Also, I know you probably will, but that graph tab itself could be split it into a few components
Yes, we have some components there, will update the diagram with them.
The goal is to make only the pipelines graph real time.
We can either make an endpoint only for the graph or for the graph and the info on the top of the page.
For the graph we need to know:
Each stage (that represents each column in the graph)
Each job inside each stage
link
name
status
action
1. type: retry || cancel
1. path
whether it should render the dropdown with jobs or not. When this dropdown is clicked, we need to show a list of jobs. This is a different endpoint, correct? This list need to have for each job the same info (link, name, status, action)
number of grouped jobs to show in the dropdown handler
example (we can improve the names, obviously 😬 )
{ stages: [ { name: "prepare", jobs: [ { status: "success", name: "knapsack", action: { type: retry || cancel, path: 'path to action' }, path: 'path to job', size: 2 // if it's bigger than 0 we render a dropdown endpoint: // need to know to which endpoint need to make the request when dropdown is clicked } ] } ]}
You are splitting on stages, while I would say thats a property of single job. Also, what dropdown are you referring to? As action, manual should be one too, however I understand this wasn't a formal spec ;).
My proposal would be more like: This removes some inferred data too.
Thank you for reopening. This implementation is not the best. Often it stays on the same stage even if I refresh. Then I hard-refresh (clear cache), then it changes/finishes.