From c4940eaf127af795b7d2678d1a579630886c1800 Mon Sep 17 00:00:00 2001 From: lesion Date: Sun, 3 Mar 2019 01:04:24 +0100 Subject: [PATCH] update place api and admin ui --- app/api.js | 1 + app/controller/event.js | 7 ++++++- client/src/api.js | 1 + client/src/components/Admin.vue | 23 +++++++++++++++++++++-- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/api.js b/app/api.js index 5fd28777..c77ed637 100644 --- a/app/api.js +++ b/app/api.js @@ -22,6 +22,7 @@ api.route('/user') api.get('/users', isAuth, isAdmin, userController.getAll) api.put('/tag', isAuth, isAdmin, eventController.updateTag) +api.put('/place', isAuth, isAdmin, eventController.updatePlace) api.route('/user/event') .post(isAuth, upload.single('image'), userController.addEvent) diff --git a/app/controller/event.js b/app/controller/event.js index ab8a8128..4229a0da 100644 --- a/app/controller/event.js +++ b/app/controller/event.js @@ -32,7 +32,12 @@ const eventController = { res.send(404) } }, - + async updatePlace (req, res) { + const place = await Place.findByPk(req.body.id) + console.log(place) + await place.update(req.body) + res.json(place) + }, async get (req, res) { const id = req.params.event_id const event = await Event.findByPk(id, { include: [User, Tag, Comment, Place] }) diff --git a/client/src/api.js b/client/src/api.js index 85d21693..5236a925 100644 --- a/client/src/api.js +++ b/client/src/api.js @@ -33,6 +33,7 @@ export default { getAllEvents: (month, year) => get(`/event/${year}/${month}/`), addEvent: event => post('/user/event', event), updateEvent: event => put('/user/event', event), + updatePlace: place => put('/place', place), delEvent: eventId => del(`/user/event/${eventId}`), getEvent: eventId => get(`/event/${eventId}`), getMeta: () => get('/event/meta'), diff --git a/client/src/components/Admin.vue b/client/src/components/Admin.vue index 3cb26a77..8237fc36 100644 --- a/client/src/components/Admin.vue +++ b/client/src/components/Admin.vue @@ -15,8 +15,17 @@ template(slot='title') v-icon(name='map-marker-alt') span {{$t('Places')}} - b-table(:items='places' :fields='placeFields' striped hover) - b-tab + p You can change place's name or address + b-form.mb-2(inline) + b-input.mr-1(:placeholder='$t("Name")' v-model='place.name') + b-input.mr-1(:placeholder='$t("Address")' v-model='place.address') + b-button(variant='primary' @click='savePlace') {{$t('Save')}} + b-table(selectable :items='places' :fields='placeFields' striped hover + small selectedVariant='success' primary-key='id' + select-mode="single" @row-selected='placeSelected' + :per-page='5' :current-page='placePage') + b-pagination(:per-page='5' v-model='placePage' :total-rows='places.length') + b-tab.pt-1 template(slot='title') v-icon(name='tag') span {{$t('Tags')}} @@ -51,6 +60,16 @@ export default { }, computed: mapState(['tags', 'places']), methods: { + placeSelected (items) { + const item = items[0] + this.place.name = item.name + this.place.address = item.address + this.place.id = item.id + }, + async savePlace () { + const place = await api.updatePlace(this.place) + + }, async toggle(user) { user.is_active = !user.is_active const newuser = await api.updateUser(user)