1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
selectedSign: "all",
callSigns: [],
data: []
},
getters: {
getSelectedSign(state) {
return state.selectedSign;
},
getSigns(state) {
return state.callSigns;
},
getData(state) {
return state.data;
},
getDataRow(state) {
return (index) => _.cloneDeep(state.data[index]);
}
},
mutations: {
setSelectedSign(state, sign) {
state.selectedSign = sign;
},
setSigns(state, signs) {
state.callSigns = signs;
},
setData(state, data) {
state.data = data;
},
setDataRow(state, row) {
state.data[row.index] = _.cloneDeep(row.data);
},
removeDataRow(state, index) {
state.data.splice(index, 1);
}
},
actions: {
setSelectedSign(context, sign) {
context.commit('setSelectedSign', sign);
},
async pullSigns(context) {
await axios.get('/special-calls/show').then(response => {
context.commit('setSigns', response.data);
}).catch(error => {
console.log(error);
});
},
async pullActivities(context) {
await axios.post('/api/activities', {'call-sign': this.state.selectedSign}).then(response => {
context.commit('setData', response.data.data);
}).catch(error => {
console.log(error);
});
},
async pullReservations(context) {
await axios.post('/special-calls/reservations', {'call-sign': this.state.selectedSign}).then(response => {
context.commit('setData', response.data.data);
}).catch(error => {
console.log(error);
});
},
async pushReservation(context, data) {
await axios.post('/api/reservations', {
action: 'update',
...data.reservation
}).then(() => {
context.commit('setDataRow', {
index: data.index,
data: data.reservation
});
}).catch(error => {
console.log(error);
alert("Couldn't update reservation! Bad data!");
});
},
async removeReservation(context, index) {
let data = {
action: 'delete',
...this.state.data[index]
};
if (confirm(`Are you sure you want to delete reservation #${data.id} made by ${data.operatorCall}?`) === true) {
await axios.post('/api/reservations', data).then(() => {
context.commit('removeDataRow', index);
}).catch(error => {
console.log(error);
alert('Unable to remove reservation!');
});
}
}
}
});
|