Merge pull request #588 from kvpt/service

Fix service handling in announcements page
pull/626/head
Hunter Long 2020-06-04 03:20:58 -07:00 committed by GitHub
commit eddf378938
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 102 additions and 101 deletions

View File

@ -13,11 +13,10 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="message in $store.getters.messages" v-bind:key="message.id">
<tr v-for="(message, index) in $store.getters.messages" v-bind:key="index">
<td>{{message.title}}</td> <td>{{message.title}}</td>
<td class="d-none d-md-table-cell"> <td class="d-none d-md-table-cell">
<router-link :to="serviceLink(message.service)">{{service(message.service)}}</router-link> <router-link :to="serviceLink(service(message.service))">{{serviceName(service(message.service))}}</router-link>
</td> </td>
<td class="d-none d-md-table-cell">{{niceDate(message.start_on)}}</td> <td class="d-none d-md-table-cell">{{niceDate(message.start_on)}}</td>
<td class="text-right"> <td class="text-right">
@ -27,12 +26,10 @@
</div> </div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<FormMessage v-if="$store.state.admin" :edit="editChange" :in_message="message"/> <FormMessage v-if="$store.state.admin" :edit="editChange" :in_message="message"/>
</div> </div>
</template> </template>
@ -60,8 +57,10 @@
this.edit = !mode this.edit = !mode
}, },
service (id) { service (id) {
const s = this.$store.getters.serviceById(id) || {} return this.$store.getters.serviceById(id) || {}
return s.name || "Global Message" },
serviceName (service) {
return service.name || "Global Message"
}, },
async deleteMessage(m) { async deleteMessage(m) {
let c = confirm(`Are you sure you want to delete message '${m.title}'?`) let c = confirm(`Are you sure you want to delete message '${m.title}'?`)

View File

@ -2,7 +2,6 @@
<div> <div>
<div class="card contain-card text-black-50 bg-white mb-5"> <div class="card contain-card text-black-50 bg-white mb-5">
<div class="card-header">{{message.id ? `Update ${message.title}` : "Create Announcement"}} <div class="card-header">{{message.id ? `Update ${message.title}` : "Create Announcement"}}
<transition name="slide-fade"> <transition name="slide-fade">
<button @click="removeEdit" v-if="message.id" class="btn btn-sm float-right btn-danger btn-sm">Close</button> <button @click="removeEdit" v-if="message.id" class="btn btn-sm float-right btn-danger btn-sm">Close</button>
</transition> </transition>
@ -26,9 +25,9 @@
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-4 col-form-label">Service</label> <label class="col-sm-4 col-form-label">Service</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select v-model="message.service_id" name="service_id" class="form-control"> <select v-model="message.service" name="service_id" class="form-control">
<option :value="0">Global Announcement</option> <option :value="0">Global Announcement</option>
<option v-for="(service, i) in $store.getters.services" :value="service.id" >{{service.name}}</option> <option v-for="service in $store.getters.services" :value="service.id" v-bind:key="service.id" >{{service.name}}</option>
</select> </select>
</div> </div>
</div> </div>
@ -46,9 +45,9 @@
<div v-show="this.service === null" class="form-group row"> <div v-show="this.service === null" class="form-group row">
<label for="service_id" class="col-sm-4 col-form-label">Service</label> <label for="service_id" class="col-sm-4 col-form-label">Service</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select v-model="message.service_id" class="form-control" name="service" id="service_id"> <select v-model="message.service" class="form-control" name="service" id="service_id">
<option :value="0">Global Message</option> <option :value="0">Global Message</option>
<option v-for="(service, index) in $store.getters.services" :value="service.id" v-bind:key="index" >{{service.name}}</option> <option v-for="service in $store.getters.services" :value="service.id" v-bind:key="service.id">{{service.name}}</option>
</select> </select>
</div> </div>
</div> </div>

View File

@ -92,12 +92,15 @@ export default Vue.mixin({
if (service.permalink) { if (service.permalink) {
service = this.$store.getters.serviceByPermalink(service.permalink) service = this.$store.getters.serviceByPermalink(service.permalink)
} }
if (service===undefined) { if (service===undefined || this.isEmptyObject(service)) {
return `/service/0` return `/service/0`
} }
let link = service.permalink ? service.permalink : service.id let link = service.permalink ? service.permalink : service.id
return `/service/${link}` return `/service/${link}`
}, },
isEmptyObject(obj) {
return Object.keys(obj).length === 0 && obj.constructor === Object
},
isInt(n) { isInt(n) {
return n % 1 === 0; return n % 1 === 0;
}, },