Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
Signed-off-by: Mark Herwege <mark.herwege@telenet.be>
  • Loading branch information
mherwege committed Feb 16, 2024
1 parent 1962ae4 commit c9cd107
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 32 deletions.
2 changes: 1 addition & 1 deletion bundles/org.openhab.ui/web/src/assets/units.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export const Units = [{
baseUnitsMetric: ['Ω']
}, {
dimension: 'Energy',
units: ['kWh', 'Wh', 'VAh', 'varh', 'J', 'kJ', 'cal', 'kcal'],
units: ['kWh', 'Wh', 'kVAh', 'kvarh', 'J', 'kJ', 'cal', 'kcal'],
baseUnitsMetric: ['Ws', 'Wh', 'VAs', 'VAh', 'vars', 'varh', 'J', 'cal']
}, {
dimension: 'Force',
Expand Down
17 changes: 14 additions & 3 deletions bundles/org.openhab.ui/web/src/components/item/group-form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,9 @@ export default {
props: ['item', 'createMode'],
data () {
return {
types
types,
unitAutocomplete: null,
unitInitialized: !this.createMode
}
},
computed: {
Expand Down Expand Up @@ -185,12 +187,16 @@ export default {
this.unitAutocomplete = this.$f7.autocomplete.create({
inputEl: inputElement,
openIn: 'dropdown',
typeahead: true,
source (query, render) {
if (!query || !query.length) {
if (!query || !query.length || !this.unitInitialized) {
// Render curated list by default
render(curatedUnits)
this.unitInitialized = true
} else {
render(allUnits.filter(u => u.toLowerCase().indexOf(query.toLowerCase()) >= 0))
// Always show currated units on top (don't filter them)
let units = [...new Set(curatedUnits.concat(allUnits.filter(u => u.indexOf(query) >= 0)))]
render(units)
}
}
})
Expand All @@ -210,6 +216,11 @@ export default {
}
this.$set(this.item, 'function', func)
}
},
beforeDestroy () {
if (this.unitAutocomplete) {
this.$f7.autocomplete.destroy(this.unitAutocomplete)
}
}
}
</script>
10 changes: 8 additions & 2 deletions bundles/org.openhab.ui/web/src/components/item/item-form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ export default {
return {
types,
unitAutocomplete: null,
unitInitialized: !this.createMode,
categoryInputId: '',
categoryAutocomplete: null,
nameErrorMessage: ''
Expand Down Expand Up @@ -174,12 +175,17 @@ export default {
this.unitAutocomplete = this.$f7.autocomplete.create({
inputEl: inputElement,
openIn: 'dropdown',
typeahead: true,
dropdownPlaceHolderText: this.getUnitHint(dimension.name),
source (query, render) {
if (!query || !query.length) {
if (!query || !query.length || !this.unitInitialized) {
// Render curated list by default
render(curatedUnits)
this.unitInitialized = true
} else {
render(allUnits.filter(u => u.toLowerCase().indexOf(query.toLowerCase()) >= 0))
// Always show currated units on top (don't filter them)
let units = [...new Set(curatedUnits.concat(allUnits.filter(u => u.indexOf(query) >= 0)))]
render(units)
}
}
})
Expand Down
49 changes: 23 additions & 26 deletions bundles/org.openhab.ui/web/src/components/item/uom-mixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,22 @@ export default {
getUnitList (dimension) {
let unitList = []
const unitCurated = Units.Units.find(u => u.dimension === dimension)
if (unitCurated) {
if (unitCurated.units()) {
unitList = unitList.concat(unitCurated.units)
if (unitCurated?.units) {
unitList = unitList.concat(unitCurated.units)
}
if (this.measurementSystem === 'SI') {
if (unitCurated?.unitsSI) {
unitList = unitList.concat(unitCurated.unitsSI)
}
if (this.measurementSystem === 'SI') {
if (unitCurated.unitsSI) {
unitList = unitList.concat(unitCurated.unitsSI)
}
if (unitCurated.unitsUS) {
unitList = unitList.concat(unitCurated.unitsUS)
}
} else if (this.measurementSystem === 'US') {
if (unitCurated.unitsUS) {
unitList = unitList.concat(unitCurated.unitsUS)
}
if (unitCurated.unitsSI) {
unitList = unitList.concat(unitCurated.unitsSI)
}
if (unitCurated?.unitsUS) {
unitList = unitList.concat(unitCurated.unitsUS)
}
} else if (this.measurementSystem === 'US') {
if (unitCurated?.unitsUS) {
unitList = unitList.concat(unitCurated.unitsUS)
}
if (unitCurated?.unitsSI) {
unitList = unitList.concat(unitCurated.unitsSI)
}
}
const systemUnit = this.dimensions.find(d => d.name === dimension).systemUnit
Expand All @@ -76,29 +74,28 @@ export default {
getFullUnitList (dimension) {
let unitList = []
const unit = Units.Units.find(u => u.dimension === dimension)
let units = unit.baseUnits
let units = unit?.baseUnits
if (units) {
unitList = unitList.concat(units)
}
let metricUnits = unit.baseUnitsMetric?.map(
let metricUnits = unit?.baseUnitsMetric?.flatMap(
u => Units.prefixesMetric.map(
p => unitList.concat(p.concat(u))
).concat())
p => p.concat(u)
))
if (metricUnits) {
unitList = unitList.concat(metricUnits)
}
let binaryUnits = unit.baseUnitsBinary?.map(
let binaryUnits = unit?.baseUnitsBinary?.flatMap(
u => Units.prefixesBinary.map(
p => unitList.concat(p.concat(u))
).concat())
p => p.concat(u)
))
if (binaryUnits) {
unitList = unitList.concat(binaryUnits)
}
// Make sure all curated units are also included, even if missing info in units.js
// Make sure all curated units are also included at top, even if missing info in units.js
// This avoids having to double define them if they are already all in the curated list
unitList = unitList.concat(this.getUnitList(dimension))
unitList = [...new Set(unitList)]
unitList.sort()
return unitList
}
}
Expand Down

0 comments on commit c9cd107

Please sign in to comment.