⚡ Improving performance
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import Vue from 'vue'
|
||||
import Vue from "vue";
|
||||
|
||||
export const SETTINGS_KEYS = [
|
||||
/**
|
||||
@@ -61,20 +61,27 @@ export const SETTINGS_KEYS = [
|
||||
|
||||
export const state = () => ({
|
||||
settings: {},
|
||||
collections: [{
|
||||
name: 'My Collection',
|
||||
folders: [],
|
||||
requests: [],
|
||||
}],
|
||||
collections: [
|
||||
{
|
||||
name: "My Collection",
|
||||
folders: [],
|
||||
requests: []
|
||||
}
|
||||
],
|
||||
selectedRequest: {},
|
||||
editingRequest: {},
|
||||
editingRequest: {}
|
||||
});
|
||||
|
||||
export const mutations = {
|
||||
|
||||
applySetting({settings}, setting) {
|
||||
if (setting == null || !(setting instanceof Array) || setting.length !== 2) {
|
||||
throw new Error("You must provide a setting (array in the form [key, value])");
|
||||
applySetting({ settings }, setting) {
|
||||
if (
|
||||
setting == null ||
|
||||
!(setting instanceof Array) ||
|
||||
setting.length !== 2
|
||||
) {
|
||||
throw new Error(
|
||||
"You must provide a setting (array in the form [key, value])"
|
||||
);
|
||||
}
|
||||
|
||||
const [key, value] = setting;
|
||||
@@ -103,151 +110,160 @@ export const mutations = {
|
||||
}
|
||||
},
|
||||
|
||||
addNewCollection({collections}, collection) {
|
||||
addNewCollection({ collections }, collection) {
|
||||
collections.push({
|
||||
name: '',
|
||||
name: "",
|
||||
folders: [],
|
||||
requests: [],
|
||||
...collection,
|
||||
})
|
||||
},
|
||||
|
||||
removeCollection({collections}, payload) {
|
||||
const {
|
||||
collectionIndex
|
||||
} = payload;
|
||||
collections.splice(collectionIndex, 1)
|
||||
},
|
||||
|
||||
editCollection({collections}, payload) {
|
||||
const {
|
||||
collection,
|
||||
collectionIndex
|
||||
} = payload
|
||||
collections[collectionIndex] = collection
|
||||
},
|
||||
|
||||
addNewFolder({collections}, payload) {
|
||||
const {
|
||||
collectionIndex,
|
||||
folder
|
||||
} = payload;
|
||||
collections[collectionIndex].folders.push({
|
||||
name: '',
|
||||
requests: [],
|
||||
...folder,
|
||||
...collection
|
||||
});
|
||||
},
|
||||
|
||||
editFolder({collections}, payload) {
|
||||
const {
|
||||
collectionIndex,
|
||||
folder,
|
||||
folderIndex
|
||||
} = payload;
|
||||
Vue.set(collections[collectionIndex].folders, folderIndex, folder)
|
||||
removeCollection({ collections }, payload) {
|
||||
const { collectionIndex } = payload;
|
||||
collections.splice(collectionIndex, 1);
|
||||
},
|
||||
|
||||
removeFolder({collections}, payload) {
|
||||
const {
|
||||
collectionIndex,
|
||||
folderIndex
|
||||
} = payload;
|
||||
collections[collectionIndex].folders.splice(folderIndex, 1)
|
||||
editCollection({ collections }, payload) {
|
||||
const { collection, collectionIndex } = payload;
|
||||
collections[collectionIndex] = collection;
|
||||
},
|
||||
|
||||
addRequest({collections}, payload) {
|
||||
const {
|
||||
request
|
||||
} = payload;
|
||||
addNewFolder({ collections }, payload) {
|
||||
const { collectionIndex, folder } = payload;
|
||||
collections[collectionIndex].folders.push({
|
||||
name: "",
|
||||
requests: [],
|
||||
...folder
|
||||
});
|
||||
},
|
||||
|
||||
editFolder({ collections }, payload) {
|
||||
const { collectionIndex, folder, folderIndex } = payload;
|
||||
Vue.set(collections[collectionIndex].folders, folderIndex, folder);
|
||||
},
|
||||
|
||||
removeFolder({ collections }, payload) {
|
||||
const { collectionIndex, folderIndex } = payload;
|
||||
collections[collectionIndex].folders.splice(folderIndex, 1);
|
||||
},
|
||||
|
||||
addRequest({ collections }, payload) {
|
||||
const { request } = payload;
|
||||
|
||||
// Request that is directly attached to collection
|
||||
if (request.folder === -1) {
|
||||
collections[request.collection].requests.push(request);
|
||||
return
|
||||
return;
|
||||
}
|
||||
|
||||
collections[request.collection].folders[request.folder].requests.push(request);
|
||||
collections[request.collection].folders[request.folder].requests.push(
|
||||
request
|
||||
);
|
||||
},
|
||||
|
||||
editRequest({collections}, payload) {
|
||||
editRequest({ collections }, payload) {
|
||||
const {
|
||||
requestOldCollectionIndex,
|
||||
requestOldFolderIndex,
|
||||
requestOldIndex,
|
||||
requestNew,
|
||||
requestNewCollectionIndex,
|
||||
requestNewFolderIndex,
|
||||
} = payload
|
||||
requestNewFolderIndex
|
||||
} = payload;
|
||||
|
||||
const changedCollection = requestOldCollectionIndex !== requestNewCollectionIndex
|
||||
const changedFolder = requestOldFolderIndex !== requestNewFolderIndex
|
||||
const changedPlace = changedCollection || changedFolder
|
||||
const changedCollection =
|
||||
requestOldCollectionIndex !== requestNewCollectionIndex;
|
||||
const changedFolder = requestOldFolderIndex !== requestNewFolderIndex;
|
||||
const changedPlace = changedCollection || changedFolder;
|
||||
|
||||
// set new request
|
||||
if (requestNewFolderIndex !== undefined) {
|
||||
Vue.set(collections[requestNewCollectionIndex].folders[requestNewFolderIndex].requests, requestOldIndex, requestNew)
|
||||
}
|
||||
else {
|
||||
Vue.set(collections[requestNewCollectionIndex].requests, requestOldIndex, requestNew)
|
||||
Vue.set(
|
||||
collections[requestNewCollectionIndex].folders[requestNewFolderIndex]
|
||||
.requests,
|
||||
requestOldIndex,
|
||||
requestNew
|
||||
);
|
||||
} else {
|
||||
Vue.set(
|
||||
collections[requestNewCollectionIndex].requests,
|
||||
requestOldIndex,
|
||||
requestNew
|
||||
);
|
||||
}
|
||||
|
||||
// remove old request
|
||||
if (changedPlace) {
|
||||
if (requestOldFolderIndex !== undefined) {
|
||||
collections[requestOldCollectionIndex].folders[requestOldFolderIndex].requests.splice(requestOldIndex, 1)
|
||||
}
|
||||
else {
|
||||
collections[requestOldCollectionIndex].requests.splice(requestOldIndex, 1)
|
||||
collections[requestOldCollectionIndex].folders[
|
||||
requestOldFolderIndex
|
||||
].requests.splice(requestOldIndex, 1);
|
||||
} else {
|
||||
collections[requestOldCollectionIndex].requests.splice(
|
||||
requestOldIndex,
|
||||
1
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
saveRequestAs({collections}, payload) {
|
||||
const {
|
||||
request,
|
||||
collectionIndex,
|
||||
folderIndex,
|
||||
requestIndex,
|
||||
} = payload
|
||||
saveRequestAs({ collections }, payload) {
|
||||
const { request, collectionIndex, folderIndex, requestIndex } = payload;
|
||||
|
||||
const specifiedCollection = collectionIndex !== undefined
|
||||
const specifiedFolder = folderIndex !== undefined
|
||||
const specifiedRequest = requestIndex !== undefined
|
||||
const specifiedCollection = collectionIndex !== undefined;
|
||||
const specifiedFolder = folderIndex !== undefined;
|
||||
const specifiedRequest = requestIndex !== undefined;
|
||||
|
||||
if (specifiedCollection && specifiedFolder && specifiedRequest) {
|
||||
Vue.set(collections[collectionIndex].folders[folderIndex].requests, requestIndex, request)
|
||||
}
|
||||
else if (specifiedCollection && specifiedFolder && !specifiedRequest) {
|
||||
const requests = collections[collectionIndex].folders[folderIndex].requests
|
||||
Vue.set(
|
||||
collections[collectionIndex].folders[folderIndex].requests,
|
||||
requestIndex,
|
||||
request
|
||||
);
|
||||
} else if (specifiedCollection && specifiedFolder && !specifiedRequest) {
|
||||
const requests =
|
||||
collections[collectionIndex].folders[folderIndex].requests;
|
||||
const lastRequestIndex = requests.length - 1;
|
||||
Vue.set(requests, lastRequestIndex + 1, request)
|
||||
Vue.set(requests, lastRequestIndex + 1, request);
|
||||
} else if (specifiedCollection && !specifiedFolder && specifiedRequest) {
|
||||
const requests = collections[collectionIndex].requests
|
||||
Vue.set(requests, requestIndex, request)
|
||||
const requests = collections[collectionIndex].requests;
|
||||
Vue.set(requests, requestIndex, request);
|
||||
} else if (specifiedCollection && !specifiedFolder && !specifiedRequest) {
|
||||
const requests = collections[collectionIndex].requests
|
||||
const requests = collections[collectionIndex].requests;
|
||||
const lastRequestIndex = requests.length - 1;
|
||||
Vue.set(requests, lastRequestIndex + 1, request)
|
||||
Vue.set(requests, lastRequestIndex + 1, request);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
saveRequest({collections}, payload) {
|
||||
const {
|
||||
request
|
||||
} = payload;
|
||||
saveRequest({ collections }, payload) {
|
||||
const { request } = payload;
|
||||
|
||||
// Remove the old request from collection
|
||||
if (request.hasOwnProperty('oldCollection') && request.oldCollection > -1) {
|
||||
const folder = request.hasOwnProperty('oldFolder') && request.oldFolder >= -1 ? request.oldFolder : request.folder;
|
||||
if (request.hasOwnProperty("oldCollection") && request.oldCollection > -1) {
|
||||
const folder =
|
||||
request.hasOwnProperty("oldFolder") && request.oldFolder >= -1
|
||||
? request.oldFolder
|
||||
: request.folder;
|
||||
if (folder > -1) {
|
||||
collections[request.oldCollection].folders[folder].requests.splice(request.requestIndex, 1)
|
||||
collections[request.oldCollection].folders[folder].requests.splice(
|
||||
request.requestIndex,
|
||||
1
|
||||
);
|
||||
} else {
|
||||
collections[request.oldCollection].requests.splice(request.requestIndex, 1)
|
||||
collections[request.oldCollection].requests.splice(
|
||||
request.requestIndex,
|
||||
1
|
||||
);
|
||||
}
|
||||
} else if (request.hasOwnProperty('oldFolder') && request.oldFolder !== -1) {
|
||||
collections[request.collection].folders[folder].requests.splice(request.requestIndex, 1)
|
||||
} else if (
|
||||
request.hasOwnProperty("oldFolder") &&
|
||||
request.oldFolder !== -1
|
||||
) {
|
||||
collections[request.collection].folders[folder].requests.splice(
|
||||
request.requestIndex,
|
||||
1
|
||||
);
|
||||
}
|
||||
|
||||
delete request.oldCollection;
|
||||
@@ -255,31 +271,37 @@ export const mutations = {
|
||||
|
||||
// Request that is directly attached to collection
|
||||
if (request.folder === -1) {
|
||||
Vue.set(collections[request.collection].requests, request.requestIndex, request)
|
||||
return
|
||||
Vue.set(
|
||||
collections[request.collection].requests,
|
||||
request.requestIndex,
|
||||
request
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
Vue.set(collections[request.collection].folders[request.folder].requests, request.requestIndex, request)
|
||||
Vue.set(
|
||||
collections[request.collection].folders[request.folder].requests,
|
||||
request.requestIndex,
|
||||
request
|
||||
);
|
||||
},
|
||||
|
||||
removeRequest({collections}, payload) {
|
||||
const {
|
||||
collectionIndex,
|
||||
folderIndex,
|
||||
requestIndex
|
||||
} = payload;
|
||||
removeRequest({ collections }, payload) {
|
||||
const { collectionIndex, folderIndex, requestIndex } = payload;
|
||||
|
||||
// Request that is directly attached to collection
|
||||
if (folderIndex === -1) {
|
||||
collections[collectionIndex].requests.splice(requestIndex, 1)
|
||||
return
|
||||
collections[collectionIndex].requests.splice(requestIndex, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
collections[collectionIndex].folders[folderIndex].requests.splice(requestIndex, 1)
|
||||
collections[collectionIndex].folders[folderIndex].requests.splice(
|
||||
requestIndex,
|
||||
1
|
||||
);
|
||||
},
|
||||
|
||||
selectRequest(state, {request}) {
|
||||
selectRequest(state, { request }) {
|
||||
state.selectedRequest = Object.assign({}, request);
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user