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"
3838</template >
3939
4040<script >
41- import axios from ' ../api/implementation/app' ;
4241import VuetifyResource from ' @kingscode/vuetify-resource' ;
4342
4443export 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 },
0 commit comments