diff --git a/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/addon/addon.xml
new file mode 100644
index 0000000000..65c2f3aa89
--- /dev/null
+++ b/bundles/org.openhab.ui.basic/src/main/resources/OH-INF/addon/addon.xml
@@ -0,0 +1,14 @@
+
+
+
+ ui
+ Basic UI
+ This is the openHAB Basic UI.
+
+ org.openhab.basicui
+
+
+
+
diff --git a/bundles/org.openhab.ui.cometvisu.php/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.ui.cometvisu.php/src/main/resources/OH-INF/addon/addon.xml
new file mode 100644
index 0000000000..d853d8f05c
--- /dev/null
+++ b/bundles/org.openhab.ui.cometvisu.php/src/main/resources/OH-INF/addon/addon.xml
@@ -0,0 +1,10 @@
+
+
+
+ ui
+ CometVisu PHP Extension
+ This is the PHP Extension for the CometVisu backend.
+
+
diff --git a/bundles/org.openhab.ui.cometvisu/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.ui.cometvisu/src/main/resources/OH-INF/addon/addon.xml
new file mode 100644
index 0000000000..b8e49b3d7f
--- /dev/null
+++ b/bundles/org.openhab.ui.cometvisu/src/main/resources/OH-INF/addon/addon.xml
@@ -0,0 +1,14 @@
+
+
+
+ ui
+ CometVisu Backend
+ This is the backend for the CometVisu.
+
+ org.openhab.cometvisu
+
+
+
+
diff --git a/bundles/org.openhab.ui.habot/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.ui.habot/src/main/resources/OH-INF/addon/addon.xml
new file mode 100644
index 0000000000..3f19a213a8
--- /dev/null
+++ b/bundles/org.openhab.ui.habot/src/main/resources/OH-INF/addon/addon.xml
@@ -0,0 +1,14 @@
+
+
+
+ ui
+ HABot
+ This is the add-on for HABot.
+
+ org.openhab.habot
+
+
+
+
diff --git a/bundles/org.openhab.ui.habpanel/src/main/resources/OH-INF/addon.xml b/bundles/org.openhab.ui.habpanel/src/main/resources/OH-INF/addon.xml
new file mode 100644
index 0000000000..49bd67771a
--- /dev/null
+++ b/bundles/org.openhab.ui.habpanel/src/main/resources/OH-INF/addon.xml
@@ -0,0 +1,10 @@
+
+
+
+ ui
+ HABPanel
+ This is the add-on for HABPanel.
+
+
diff --git a/bundles/org.openhab.ui/src/main/resources/OH-INF/addon/addon.xml b/bundles/org.openhab.ui/src/main/resources/OH-INF/addon/addon.xml
new file mode 100644
index 0000000000..6c3ca5fb31
--- /dev/null
+++ b/bundles/org.openhab.ui/src/main/resources/OH-INF/addon/addon.xml
@@ -0,0 +1,10 @@
+
+
+
+ ui
+ Main UI
+ This is the openHAB Main UI.
+
+
diff --git a/bundles/org.openhab.ui/web/src/js/routes.js b/bundles/org.openhab.ui/web/src/js/routes.js
index 72409641fd..9913863cce 100644
--- a/bundles/org.openhab.ui/web/src/js/routes.js
+++ b/bundles/org.openhab.ui/web/src/js/routes.js
@@ -10,7 +10,8 @@ const SettingsMenuPage = () => import(/* webpackChunkName: "admin-base" */ '../p
const ServiceSettingsPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/services/service-settings.vue')
const AddonsListPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/addons-list.vue')
const AddonsAddPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/addons-add.vue')
-const AddonsConfigureBindingPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/binding-config.vue')
+const AddonsConfigureBindingPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/addon-config.vue')
+const OldAddonsConfigureBindingPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/binding-config.vue')
const AddonsStorePage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/addons-store.vue')
const AddonDetailsPage = () => import(/* webpackChunkName: "admin-base" */ '../pages/settings/addons/addon-details.vue')
@@ -243,11 +244,15 @@ export default [
async: loadAsync(AddonDetailsPage)
},
{
- path: ':bindingId/config',
+ path: ':addonId/config',
async: loadAsync(AddonsConfigureBindingPage)
}
]
},
+ {
+ path: 'bindings/:bindingId/config',
+ async: loadAsync(OldAddonsConfigureBindingPage)
+ },
{
path: 'services/:serviceId',
beforeLeave: checkDirtyBeforeLeave,
diff --git a/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-config.vue b/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-config.vue
new file mode 100644
index 0000000000..dec051a05b
--- /dev/null
+++ b/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-config.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+ Save
+
+
+
+
+
+
+ Add-on configuration
+
+
+
+
+
+
+
+ Add-on log settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details-sheet.vue b/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details-sheet.vue
index c6106b7ddc..c64141ab3c 100644
--- a/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details-sheet.vue
+++ b/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details-sheet.vue
@@ -122,7 +122,7 @@ export default {
this.addon = data
if (this.addon.type === 'binding' && this.addon.installed) {
- this.$oh.api.get('/rest/bindings').then(data2 => {
+ this.$oh.api.get('/rest/addons').then(data2 => {
this.bindingInfo = data2.find(b => b.id === this.addonId.replace('binding-', '')) || {}
self.$f7.preloader.hide()
setTimeout(() => {
diff --git a/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details.vue b/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details.vue
index 2be1eb38b3..ca221451b4 100644
--- a/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details.vue
+++ b/bundles/org.openhab.ui/web/src/pages/settings/addons/addon-details.vue
@@ -28,7 +28,7 @@
-
+
@@ -204,6 +204,9 @@ export default {
}
},
computed: {
+ showConfig () {
+ return this.addon && this.addon.installed && (this.addon.configDescriptionURI || this.addon.loggerPackages.length > 0)
+ },
realAddonId () {
if (!this.addon) return null
return (this.addon.id.indexOf(':') > 0) ? this.addon.id.substring(this.addon.id.indexOf(':') + 1) : this.addon.id
@@ -279,14 +282,14 @@ export default {
})
if (this.addon.type === 'binding' && this.addonId.indexOf('binding-') === 0 && this.addon.installed) {
- this.$oh.api.get('/rest/bindings').then(data2 => {
+ this.$oh.api.get('/rest/addons').then(data2 => {
this.bindingInfo = data2.find(b => b.id === this.addonId.replace('binding-', '')) || {}
})
}
})
},
processDescription () {
- if (!this.addon.description && this.addon.author === 'openHAB') {
+ if (this.addon.author === 'openHAB') {
// assuming the add-on is an official one (distribution), try to fetch the documentation from GitHub
let docsBranch = 'final'
if (this.$store.state.runtimeInfo.buildString === 'Release Build') docsBranch = 'final-stable'
diff --git a/bundles/org.openhab.ui/web/src/pages/settings/addons/binding-config.vue b/bundles/org.openhab.ui/web/src/pages/settings/addons/binding-config.vue
index 79e665e3ca..863eb1e113 100644
--- a/bundles/org.openhab.ui/web/src/pages/settings/addons/binding-config.vue
+++ b/bundles/org.openhab.ui/web/src/pages/settings/addons/binding-config.vue
@@ -36,7 +36,7 @@ export default {
},
methods: {
save () {
- this.$oh.api.put('/rest/bindings/' + this.bindingId + '/config', this.config).then(() => {
+ this.$oh.api.put('/rest/addons/' + this.bindingId + '/config', this.config).then(() => {
this.$f7.toast.create({
text: 'Saved',
destroyOnClose: true,
@@ -47,14 +47,14 @@ export default {
}
},
created () {
- this.$oh.api.get('/rest/bindings').then(data => {
+ this.$oh.api.get('/rest/addons').then(data => {
this.binding = data.find((b) => b.id === this.bindingId)
if (this.binding.configDescriptionURI) {
this.$oh.api.get('/rest/config-descriptions/' + this.binding.configDescriptionURI).then(data2 => {
this.configDescriptions = data2
- this.$oh.api.get('/rest/bindings/' + this.bindingId + '/config').then(data3 => {
+ this.$oh.api.get('/rest/addons/' + this.bindingId + '/config').then(data3 => {
this.config = data3
})
})
diff --git a/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-binding.vue b/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-binding.vue
index f90b925f4a..5f303c1173 100644
--- a/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-binding.vue
+++ b/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-binding.vue
@@ -35,14 +35,12 @@
media-item
:key="binding.id"
:link="binding.id"
- :title="binding.name"
+ :title="binding.label"
:header="binding.id"
:badge="inbox.filter((e) => e.thingTypeUID.split(':')[0] === binding.id && e.flag !== 'IGNORED').length || undefined"
badge-color="red"
:footer="(binding.description && binding.description.indexOf('
') >= 0) ?
- binding.description.split('
')[0] : binding.description">
-
-
+ binding.description.split('
')[0] : binding.description" />
@@ -78,8 +76,9 @@ export default {
methods: {
onPageAfterIn () {
this.loading = true
- this.$oh.api.get('/rest/bindings').then((data) => {
- this.bindings = data.sort((a, b) => a.name.localeCompare(b.name))
+ this.$oh.api.get('/rest/addons').then((data) => {
+ let installedBindings = data.filter(addon => addon.type === 'binding' && addon.installed === true)
+ this.bindings = installedBindings.sort((a, b) => a.label.localeCompare(b.label))
this.loading = false
this.initSearchbar = true
this.ready = true
diff --git a/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-thing-type.vue b/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-thing-type.vue
index 14262c9ca2..2b73b1c832 100644
--- a/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-thing-type.vue
+++ b/bundles/org.openhab.ui/web/src/pages/settings/things/add/choose-thing-type.vue
@@ -103,8 +103,9 @@ export default {
},
onPageAfterIn () {
this.loading = true
- this.$oh.api.get('/rest/thing-types?bindingId=' + this.bindingId).then((data) => {
- this.thingTypes = data.filter((tt) => tt.UID.split(':')[0] === this.bindingId && tt.listed)
+ this.rawBindingId = this.bindingId.substring('binding-'.length)
+ this.$oh.api.get('/rest/thing-types?bindingId=' + this.rawBindingId).then((data) => {
+ this.thingTypes = data.filter((tt) => tt.UID.split(':')[0] === this.rawBindingId && tt.listed)
.sort((a, b) => {
if (a.bridge && !b.bridge) return -1
if (b.bridge && !a.bridge) return 1
@@ -115,7 +116,7 @@ export default {
this.ready = true
this.loadInbox()
this.$oh.api.get('/rest/discovery').then((data) => {
- if (data.indexOf(this.bindingId) >= 0) {
+ if (data.indexOf(this.rawBindingId) >= 0) {
this.discoverySupported = true
// this.scan()
}
@@ -137,7 +138,7 @@ export default {
return
}
this.scanning = true
- this.$oh.api.postPlain('/rest/discovery/bindings/' + this.bindingId + '/scan', null, 'text/plain', 'text/plain').then((data) => {
+ this.$oh.api.postPlain('/rest/discovery/bindings/' + this.rawBindingId + '/scan', null, 'text/plain', 'text/plain').then((data) => {
try {
this.scanTimeout = parseInt(data)
this.scanProgress = 0
@@ -158,7 +159,7 @@ export default {
this.loading = true
this.$oh.api.get('/rest/inbox').then((data) => {
this.loading = false
- this.scanResults = data.filter((e) => e.thingTypeUID.split(':')[0] === this.bindingId && e.flag !== 'IGNORED')
+ this.scanResults = data.filter((e) => e.thingTypeUID.split(':')[0] === this.rawBindingId && e.flag !== 'IGNORED')
const searchbar = this.$refs.searchbar.$el.f7Searchbar
const filterQuery = searchbar.query
this.initSearchbar = false