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 @@ + + + + + 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