-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/bundles/org.openhab.ui/web/src/components/widgets/chart/series/oh-data-series.js b/bundles/org.openhab.ui/web/src/components/widgets/chart/series/oh-data-series.js
new file mode 100644
index 0000000000..015262df04
--- /dev/null
+++ b/bundles/org.openhab.ui/web/src/components/widgets/chart/series/oh-data-series.js
@@ -0,0 +1,32 @@
+import Framework7 from 'framework7'
+
+export default {
+ neededItems () {
+ return []
+ },
+ get (component, points, startTime, endTime, chart) {
+ if (!component.config || typeof component.config !== 'object') return {}
+
+ if (!component.dataSeriesId) {
+ component.dataSeriesId = Framework7.utils.id()
+ }
+
+ let series = chart.evaluateExpression(component.dataSeriesId, component.config)
+
+ if (series.data && Array.isArray(series.data)) {
+ series.data = series.data.map((v, index) => {
+ const item = chart.evaluateExpression(component.dataSeriesId + 'data.' + index, v)
+ return Number.isNaN(item.value) ? {} : item
+ })
+ }
+
+ if (series.axisLine && series.axisLine.lineStyle && series.axisLine.lineStyle.color && Array.isArray(series.axisLine.lineStyle.color)) {
+ series.axisLine.lineStyle.color = series.axisLine.lineStyle.color.map((v, index) => {
+ if (!Array.isArray(v)) return v
+ return v.map((s, subindex) => chart.evaluateExpression(component.dataSeriesId + 'axisLine.lineStyle.color.' + index + '.' + subindex, s))
+ })
+ }
+
+ return series
+ }
+}
diff --git a/bundles/org.openhab.ui/web/src/components/widgets/system/index.js b/bundles/org.openhab.ui/web/src/components/widgets/system/index.js
index f82dbe6d2d..630660a558 100644
--- a/bundles/org.openhab.ui/web/src/components/widgets/system/index.js
+++ b/bundles/org.openhab.ui/web/src/components/widgets/system/index.js
@@ -19,3 +19,4 @@ export { default as OhSwiperSlide } from './oh-swiper-slide.vue'
export { default as OhTrend } from './oh-trend.vue'
export { default as OhWebframe } from './oh-webframe.vue'
export { default as OhRepeater } from './oh-repeater.vue'
+export { default as OhChart } from './oh-chart.vue'
diff --git a/bundles/org.openhab.ui/web/src/components/widgets/system/oh-chart-component.vue b/bundles/org.openhab.ui/web/src/components/widgets/system/oh-chart-component.vue
new file mode 100644
index 0000000000..260e652731
--- /dev/null
+++ b/bundles/org.openhab.ui/web/src/components/widgets/system/oh-chart-component.vue
@@ -0,0 +1,133 @@
+