This commit is contained in:
j3d1 2025-09-25 16:09:52 +02:00
parent 2fe8d14c2c
commit 4627f0aca2
14 changed files with 1064 additions and 11 deletions

View file

@ -30,6 +30,7 @@ export default createStore({
availability_policies: [],
domains: [],
storage_locations: [],
active_workflows: [],
},
mutations: {
setInventoryItems(state, {url, items}) {
@ -65,6 +66,9 @@ export default createStore({
setFiles(state, files) {
state.files = files;
},
setActiveWorkflows(state, workflows) {
state.active_workflows = workflows;
},
setUser(state, user) {
state.user = user;
if (state.remember)
@ -351,6 +355,28 @@ export default createStore({
state.last_load.storage_locations = Date.now()
return data
},
async deleteStorageLocation({state, dispatch, getters}, location) {
const servers = await dispatch('getHomeServers')
const ret = await servers.delete(getters.signAuth, '/api/storage_locations/' + location.id + '/')
dispatch('fetchStorageLocations')
return ret
},
async createStorageLocation({state, dispatch, getters}, location) {
const servers = await dispatch('getHomeServers')
const data = {...location}
if (data.parent === '') data.parent = null
const reply = await servers.post(getters.signAuth, '/api/storage_locations/', data)
state.last_load.storage_locations = 0
return reply
},
async updateStorageLocation({state, dispatch, getters}, location) {
const servers = await dispatch('getHomeServers')
const data = {...location}
if (data.parent === '') data.parent = null
const reply = await servers.patch(getters.signAuth, '/api/storage_locations/' + location.id + '/', data)
dispatch('fetchStorageLocations')
return reply
},
async fetchInfo({state, commit, dispatch, getters}) {
const last_load_info = Math.min(
state.last_load.tags,
@ -378,6 +404,72 @@ export default createStore({
},
async userIdentityRecord({state}, {password}) {
return await serializeIdentityRecord(state.user, state.keypair, password);
},
// Workflow actions
async fetchWorkflows({state, commit, dispatch, getters}) {
if (state.last_load.workflows > Date.now() - 1000 * 60 * 5) { // Cache for 5 minutes
return state.workflows
}
const servers = await dispatch('getHomeServers')
const data = await servers.get(getters.signAuth, '/api/workflows/')
commit('setWorkflows', data)
state.last_load.workflows = Date.now()
return data
},
async fetchActiveWorkflows({state, commit, dispatch, getters}) {
if (state.last_load.active_workflows > Date.now() - 1000 * 60 * 5) { // Cache for 5 minutes
return state.active_workflows
}
const servers = await dispatch('getHomeServers')
const data = await servers.get(getters.signAuth, '/api/workflows/active/')
commit('setActiveWorkflows', data)
state.last_load.active_workflows = Date.now()
return data
},
async createWorkflow({state, commit, dispatch, getters}, workflowData) {
const servers = await dispatch('getHomeServers')
const data = await servers.post(getters.signAuth, '/api/workflows/', workflowData)
state.last_load.active_workflows = 0 // Invalidate cache
return data
},
async updateWorkflow({state, commit, dispatch, getters}, workflow) {
const servers = await dispatch('getHomeServers')
const data = await servers.patch(getters.signAuth, '/api/workflows/' + workflow.id + '/', workflow)
state.last_load.active_workflows = 0 // Invalidate cache
return data
},
async updateWorkflowStep({state, commit, dispatch, getters}, {workflowId, currentStep, payload}) {
const servers = await dispatch('getHomeServers')
const data = await servers.post(getters.signAuth, '/api/workflows/' + workflowId + '/update_step/', {
current_step: currentStep,
payload: payload
})
state.last_load.active_workflows = 0 // Invalidate cache
return data
},
async pauseWorkflow({state, commit, dispatch, getters}, workflowId) {
const servers = await dispatch('getHomeServers')
const data = await servers.post(getters.signAuth, '/api/workflows/' + workflowId + '/pause/')
state.last_load.active_workflows = 0 // Invalidate cache
return data
},
async resumeWorkflow({state, commit, dispatch, getters}, workflowId) {
const servers = await dispatch('getHomeServers')
const data = await servers.post(getters.signAuth, '/api/workflows/' + workflowId + '/resume/')
state.last_load.active_workflows = 0 // Invalidate cache
return data
},
async cancelWorkflow({state, commit, dispatch, getters}, workflowId) {
const servers = await dispatch('getHomeServers')
const data = await servers.post(getters.signAuth, '/api/workflows/' + workflowId + '/cancel/')
state.last_load.active_workflows = 0 // Invalidate cache
return data
},
async deleteWorkflow({state, commit, dispatch, getters}, workflowId) {
const servers = await dispatch('getHomeServers')
await servers.delete(getters.signAuth, '/api/workflows/' + workflowId + '/')
state.last_load.active_workflows = 0 // Invalidate cache
return true
}
},
getters: {