Skip to content

Commit 3634129

Browse files
committed
Update Resource.vue
1 parent 1ce93f1 commit 3634129

File tree

3 files changed

+57
-76
lines changed

3 files changed

+57
-76
lines changed

generator/templates/Authorisation/src/api/endpoints/user.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import axios from '../implementation/app';
1+
import axios, {getPaginated} from '../implementation/app';
2+
3+
function index(page, perPage, search, sortBy, descending, params) {
4+
return getPaginated('user', page, perPage, search, sortBy, descending, params);
5+
}
6+
7+
/**
8+
* @param id {number}
9+
*/
10+
function show(id) {
11+
return axios.get(`user/${id}`);
12+
}
213

314
/**
415
* @param user {User}
@@ -22,6 +33,8 @@ function destroy(userId) {
2233
}
2334

2435
export {
36+
index,
37+
show,
2538
create,
2639
update,
2740
destroy,

generator/templates/Crud/src/components/Resource.vue

Lines changed: 35 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
<vuetify-resource
44
:beforeCreateCallback="beforeOpenCreateHandler"
55
:beforeUpdateCallback="beforeOpenUpdateHandler"
6-
:createCallback="createEvent"
7-
:deleteCallback="deleteEvent"
8-
:getDataCallback="getDataFromApi"
9-
:getItemCallback="getItemFromApi"
6+
:deleteCallback="handleDeleteRequest"
7+
:createCallback="handleCreateRequest"
8+
:getDataCallback="handleIndexRequest"
9+
:getItemCallback="handleShowRequest"
10+
:updateCallback="handleUpdateRequest"
1011
@row-click="onRowClick"
1112
:meta="meta"
1213
:tableContent="tableContent"
1314
:texts="require('../VuetifyResourceTexts.js').default"
14-
:updateCallback="updateEvent"
1515
ref="resourceList"
1616
v-model="selected"
1717
v-bind="$attrs"
@@ -38,7 +38,6 @@
3838
</template>
3939

4040
<script>
41-
import axios from '../api/implementation/app';
4241
import VuetifyResource from '@kingscode/vuetify-resource';
4342
4443
export default {
@@ -71,32 +70,21 @@ export default {
7170
return {name: 'item', namePlural: 'items'};
7271
},
7372
},
74-
resourceUri: {
75-
type: String,
73+
indexRequest: {
74+
type: Function,
7675
required: true,
7776
},
78-
showResourceUri: {
79-
type: String,
80-
required: false,
81-
},
82-
updateHandler: {
77+
showRequest: {
8378
type: Function,
84-
required: false,
8579
},
86-
deleteHandler: {
80+
createRequest: {
8781
type: Function,
88-
required: false,
8982
},
90-
createHandler: {
83+
updateRequest: {
9184
type: Function,
92-
required: false,
9385
},
94-
mapDataResponse: {
86+
deleteRequest: {
9587
type: Function,
96-
required: false,
97-
default: (data) => {
98-
return data;
99-
},
10088
},
10189
beforeOpenUpdate: {
10290
type: Function,
@@ -106,14 +94,6 @@ export default {
10694
type: Function,
10795
required: false,
10896
},
109-
afterUpdate: {
110-
type: Function,
111-
required: false,
112-
},
113-
afterCreate: {
114-
type: Function,
115-
required: false,
116-
},
11797
},
11898
methods: {
11999
onRowClick(item) {
@@ -123,7 +103,7 @@ export default {
123103
* @param pagination
124104
* @param search
125105
*/
126-
getDataFromApi(pagination, search) {
106+
handleIndexRequest(pagination, search) {
127107
const {sortBy, sortDesc, page, itemsPerPage} = pagination;
128108
return new Promise((resolve, reject) => {
129109
const sorting = {};
@@ -142,11 +122,9 @@ export default {
142122
params.search = search;
143123
}
144124
145-
axios.get(this.resourceUri, {
146-
params: params,
147-
})
125+
this.indexRequest(page, itemsPerPage, search, sorting.sortBy, sorting.desc)
148126
.then((response) => {
149-
const items = this.mapDataResponse(response.data.data);
127+
const items = response.data.data;
150128
const total = response.data.meta.total;
151129
resolve({
152130
items,
@@ -156,9 +134,9 @@ export default {
156134
157135
});
158136
},
159-
getItemFromApi(id) {
137+
handleShowRequest(id) {
160138
return new Promise((resolve) => {
161-
axios.get((this.showResourceUri || this.resourceUri) + '/' + id)
139+
this.showRequest(id)
162140
.then((response) => {
163141
let item;
164142
@@ -176,41 +154,35 @@ export default {
176154
177155
});
178156
},
179-
createEvent() {
157+
handleCreateRequest() {
180158
this.errors = {};
181159
this.$refs.createForm.validate();
182160
183161
return new Promise((resolve, reject) => {
184162
process.nextTick(() => {
185163
if (this.createForm.valid) {
186-
this.createHandler(this.createForm.values)
187-
.then((response) => {
164+
this.createRequest(this.createForm.values)
165+
.then(() => {
188166
if (this.modelType) {
189167
this.createForm.values = new this.modelType();
190168
} else {
191169
this.createForm.values = {};
192170
}
193171
194-
if (typeof this.afterCreate === 'function') {
195-
this.afterCreate(response.data).then(() => {
196-
resolve();
197-
});
198-
} else {
199-
resolve();
200-
}
201-
}).catch((error) => {
202-
this.errors = error.response.data.errors;
203-
reject();
204-
});
205-
172+
resolve();
173+
})
174+
.catch((error) => {
175+
this.errors = error.response.data.errors;
176+
reject();
177+
});
206178
} else {
207179
reject();
208180
}
209181
});
210182
211183
});
212184
},
213-
updateEvent(selected) {
185+
handleUpdateRequest(selected) {
214186
this.errors = {};
215187
this.$refs.updateForm.validate();
216188
@@ -219,31 +191,24 @@ export default {
219191
if (this.updateForm.valid) {
220192
this.updateForm.values.id = selected[0].id;
221193
222-
this.updateHandler(this.updateForm.values)
223-
.then((response) => {
224-
if (typeof this.afterUpdate === 'function') {
225-
this.afterUpdate(response.data).then(() => {
226-
resolve();
227-
});
228-
} else {
229-
resolve();
230-
}
231-
}).catch((error) => {
232-
this.errors = error.response.data.errors;
233-
reject();
234-
});
194+
this.updateRequest(this.updateForm.values)
195+
.then(() => resolve())
196+
.catch((error) => {
197+
this.errors = error.response.data.errors;
198+
reject();
199+
});
235200
} else {
236201
reject();
237202
}
238203
});
239204
});
240205
241206
},
242-
deleteEvent(ids) {
207+
handleDeleteRequest(ids) {
243208
return new Promise((resolve, reject) => {
244209
const promises = [];
245210
ids.forEach((id) => {
246-
promises.push(this.deleteHandler(id));
211+
promises.push(this.deleteRequest(id));
247212
});
248213
249214
Promise.all(promises).then(() => {
@@ -271,7 +236,7 @@ export default {
271236
this.updateForm.values = new this.modelType();
272237
this.updateForm.values.mapResponse(selected[0]);
273238
} else {
274-
this.updateForm.values = {};
239+
this.updateForm.values = selected[0];
275240
}
276241
},
277242
},

generator/templates/Crud/src/views/UserResource.vue

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@
44
:form-component="() => import('../components/forms/UserForm.vue')"
55
:meta="{name: 'gebruiker', namePlural: 'gebruikers'}"
66
:table-content="tableContent"
7-
:update-handler="updateHandler"
8-
:delete-handler="deleteHandler"
9-
:create-handler="createHandler"
7+
:index-request="indexHandler"
8+
:show-request="showHandler"
9+
:update-request="updateHandler"
10+
:delete-request="deleteHandler"
11+
:create-request="createHandler"
1012
:model-type="modelType"
11-
resource-uri="user"
1213
/>
1314
</v-container>
1415
</template>
1516

1617
<script lang="js">
1718
import Resource from '@/components/Resource.vue';
18-
import {create, destroy, update} from '../api/endpoints/user.js';
19+
import {create, destroy, index, show, update} from '../api/endpoints/user.js';
1920
import User from '../application/models/user.js';
2021
2122
export default {
@@ -24,6 +25,8 @@ export default {
2425
Resource,
2526
},
2627
computed: {
28+
indexHandler: () => index,
29+
showHandler: () => show,
2730
updateHandler: () => update,
2831
deleteHandler: () => destroy,
2932
createHandler: () => create,

0 commit comments

Comments
 (0)