多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
4.6 KiB

import Vue from 'vue'
export const state = () => ({
projectApiFilePaths: {},
activeEnvironment: {},
currentProjectKey: ''
})
export const mutations = {
MutApiFilePathsAdd(state, args) {
state.projectApiFilePaths = {
...state.projectApiFilePaths,
[state.currentProjectKey]: [...state.projectApiFilePaths[state.currentProjectKey], args]
}
},
MutApiFilePathsRemove(state, index) {
state.projectApiFilePaths[state.currentProjectKey].splice(index, 1)
state.projectApiFilePaths[state.currentProjectKey] = [...state.projectApiFilePaths[state.currentProjectKey]]
},
MutListAdd(state, args) {
state.list.unshift(args)
if (state.list.length > 500) { state.list.pop() }
},
MutListRemove(state, index) {
// find index and set status
state.list.splice(index, 1)
// state.list = [...state.list]
},
MutList(state, list) {
state.projectApiFilePaths[state.currentProjectKey] = list
},
MutCurrentProjectKey(state, currentProjectKey) {
state.currentProjectKey = currentProjectKey
},
MutActiveEnvironment(state, { env }) {
Vue.set(state.activeEnvironment, state.currentProjectKey, env)
}
}
export const getters = {
GtrCurrentApiFilePaths(state) {
return state.projectApiFilePaths[state.currentProjectKey]
}
}
export const actions = {
async send({ commit, state, rootGetters }, { apiDecoded, api }) {
const apiMeta = { ...apiDecoded }
// let t, t1, t2
// return (await rootGetters['sqlMgr/sqlMgr'].sqlOp(null, 'handleApiCall', apiMeta));
return (await this.dispatch('sqlMgr/ActSqlOp', [null, 'handleApiCall', apiMeta]))
//
// try {
// commit('notification/MutToggleProgressBar', true, {root: true});
// const req = XcApiHelp.axiosRequestMake(apiMeta);
// console.log(req);
//
//
// if (Object.values(apiMeta.perf).every(v => !v)) {
//
// // t = process.hrtime();
// let data = await axios(req);
//
// // t1 = process.hrtime(t);
// // t2 = (t1[0] + t1[1] / 1000000000).toFixed(2);
//
// apiMeta.response.status = data.status;
// apiMeta.response.headers = data.headers;
// apiMeta.response.data = data.data;
// console.log(data);
// } else {
// this.$toast.info('Starting performance test').goAway(3000);
// try {
// const res = await autocannon({
// ...req,`
// ...apiMeta.perf,
// body: req.data
// });
// console.log('perf result', res)
//
// apiMeta.response.status = 200;
// apiMeta.response.headers = [];
// apiMeta.response.data = res;
//
// this.$toast.info('Finished performance test').goAway(3000);
//
// } catch (e) {
// console.log(e)
// apiMeta.response.status = 400;
// apiMeta.response.data = e;
// }
//
// }
// } catch (e) {
// // t1 = process.hrtime(t);
// // t2 = (t1[0] + t1[1] / 1000000000).toFixed(2);
//
// console.log(e, Object.keys(e), Object.entries(e));
// apiMeta.response = e.response;
// if (apiMeta.response)
// delete apiMeta.response.request
// //throw e;
// } finally {
// commit('notification/MutToggleProgressBar', false, {root: true});
// }
// return {
// ...apiMeta,
// body: JSON.stringify(apiMeta.body, 0, 2),
// response: {
// ...apiMeta.response,
// timeTaken: t2,
// createdAt: Date.now()
// }
// };
},
async loadApiCollectionForProject({ commit, state }, { projectName = '__default', projectId = '__id' }) {
const key = projectName + '__' + projectId
commit('MutCurrentProjectKey', key)
if (!(key in state.projectApiFilePaths)) {
commit('MutList', [])
}
}
}
/**
* @copyright Copyright (c) 2021, Xgene Cloud Ltd
*
* @author Naveen MR <oof1lab@gmail.com>
* @author Pranav C Balan <pranavxc@gmail.com>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/