Handle invalid links (#807)
Display links which are invalid (for instance, missing thing or channel) and offer the option to remove them. Cleanups. Fixes #709. Signed-off-by: Yannick Schaus <github@schaus.net>3.0.x
parent
64020cd772
commit
7384ec9387
|
@ -8,9 +8,8 @@
|
||||||
:badge="thingStatusBadgeText(l.thing.statusInfo)"
|
:badge="thingStatusBadgeText(l.thing.statusInfo)"
|
||||||
:badge-color="thingStatusBadgeColor(l.thing.statusInfo)"
|
:badge-color="thingStatusBadgeColor(l.thing.statusInfo)"
|
||||||
link="#" @click="editLink(l)">
|
link="#" @click="editLink(l)">
|
||||||
<span slot="media" class="item-initial">{{l.channel.label ? l.channel.label[0] : '?'}}</span>
|
<span slot="media" class="item-initial">{{!l._invalid && l.channel.label ? l.channel.label[0] : '?'}}</span>
|
||||||
</f7-list-item>
|
</f7-list-item>
|
||||||
<!-- <f7-list-button v-if="!$theme.md" color="blue" title="Add Link" @click="addLink"></f7-list-button> -->
|
|
||||||
</ul>
|
</ul>
|
||||||
</f7-list>
|
</f7-list>
|
||||||
</f7-card-content>
|
</f7-card-content>
|
||||||
|
@ -45,7 +44,13 @@ export default {
|
||||||
this.currentItemName = this.item.name
|
this.currentItemName = this.item.name
|
||||||
const itemLinks = this.links.filter((l) => l.itemName === this.item.name)
|
const itemLinks = this.links.filter((l) => l.itemName === this.item.name)
|
||||||
const thingNames = itemLinks.map((l) => l.channelUID.substring(0, l.channelUID.lastIndexOf(':')))
|
const thingNames = itemLinks.map((l) => l.channelUID.substring(0, l.channelUID.lastIndexOf(':')))
|
||||||
const promises = thingNames.map((t) => this.$oh.api.get('/rest/things/' + t))
|
const promises = thingNames.map((t) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.$oh.api.get('/rest/things/' + t)
|
||||||
|
.then((thing) => resolve(thing))
|
||||||
|
.catch((thing) => resolve({ UID: t, label: '(unknown)', channels: [], _invalid: true }))
|
||||||
|
})
|
||||||
|
})
|
||||||
this.ready = false
|
this.ready = false
|
||||||
Promise.all(promises).then((things) => {
|
Promise.all(promises).then((things) => {
|
||||||
this.enrichedLinks = [
|
this.enrichedLinks = [
|
||||||
|
@ -58,6 +63,13 @@ export default {
|
||||||
thing: thing,
|
thing: thing,
|
||||||
channel: channel
|
channel: channel
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
link: l,
|
||||||
|
thing: { label: '(unknown)', channels: [], statusInfo: { status: 'UNKNOWN' }, _invalid: true },
|
||||||
|
channel: { UID: l.channelUID, label: 'Invalid Link', _invalid: true },
|
||||||
|
_invalid: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
@ -65,18 +77,11 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
addLink () {
|
addLink () {
|
||||||
const self = this
|
|
||||||
this.$f7router.navigate({
|
this.$f7router.navigate({
|
||||||
url: 'links/new',
|
url: 'links/new',
|
||||||
route: {
|
route: {
|
||||||
component: AddLinkPage,
|
component: AddLinkPage,
|
||||||
path: 'links/new',
|
path: 'links/new'
|
||||||
props: {
|
|
||||||
},
|
|
||||||
on: {
|
|
||||||
pageAfterOut (event, page) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
props: {
|
props: {
|
||||||
|
@ -85,18 +90,26 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
editLink (link) {
|
editLink (link) {
|
||||||
const self = this
|
if (link._invalid) {
|
||||||
|
this.$f7.dialog.confirm('This link is invalid, remove it?', 'Invalid Link',
|
||||||
|
() => {
|
||||||
|
this.$oh.api.delete('/rest/links/' + link.link.itemName + '/' + encodeURIComponent(link.link.channelUID)).then(() => {
|
||||||
|
this.$f7.toast.create({
|
||||||
|
text: 'Link deleted',
|
||||||
|
destroyOnClose: true,
|
||||||
|
closeTimeout: 2000
|
||||||
|
}).open()
|
||||||
|
this.$f7router.back()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this.$f7router.navigate({
|
this.$f7router.navigate({
|
||||||
url: 'links/edit/' + link.channel.uid,
|
url: 'links/edit/' + link.channel.uid,
|
||||||
route: {
|
route: {
|
||||||
component: EditLinkPage,
|
component: EditLinkPage,
|
||||||
path: 'links/edit/' + link.channel.uid,
|
path: 'links/edit/' + link.channel.uid
|
||||||
props: {
|
|
||||||
},
|
|
||||||
on: {
|
|
||||||
pageAfterOut (event, page) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
props: {
|
props: {
|
||||||
|
|
Loading…
Reference in New Issue