mirror of https://github.com/qt/qtdoc.git
135 lines
3.9 KiB
QML
135 lines
3.9 KiB
QML
// Copyright (C) 2025 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import QtQuick.Effects
|
|
import QtGraphs
|
|
import qtgraphscsv
|
|
|
|
Item {
|
|
id: graphsItem
|
|
|
|
property alias series: chartView.barSeries
|
|
property alias chartView: chartView
|
|
property alias modelMapper: chartView.modelMapper
|
|
property alias categoryAxis: chartView.categoryAxis
|
|
property alias theme: chartView.theme
|
|
property alias labelDelegateTextColor: chartView.labelTextColor
|
|
|
|
readonly property font graphCategoryFont: ({
|
|
"family": "Inter",
|
|
"weight": 600 * Units.px,
|
|
"pixelSize": 14 * Units.px,
|
|
"letterSpacing": 0 * Units.px,
|
|
"bold": false
|
|
})
|
|
|
|
function updateModelMapper(first, last) {
|
|
chartView.modelMapper.firstBarSetSection = first.y;
|
|
chartView.modelMapper.lastBarSetSection = last.y;
|
|
chartView.modelMapper.first = first.x;
|
|
chartView.modelMapper.count = (last.x - first.x) + 1;
|
|
}
|
|
|
|
function clearGraph() {
|
|
series.clear();
|
|
categoryAxis.clear();
|
|
}
|
|
|
|
GraphsView {
|
|
id: chartView
|
|
anchors.fill: graphsItem
|
|
|
|
property alias modelMapper: barModelMapper
|
|
property alias barSeries: barSeries
|
|
property alias categoryAxis: categoryAxis
|
|
property alias barRadius: barSeries.radius
|
|
property alias barBlur: barSeries.blur
|
|
property alias opa: barSeries.opa
|
|
property alias sizeFactor: barSeries.sizeFactor
|
|
property color labelTextColor: "green"
|
|
|
|
marginLeft: 71 * Units.px
|
|
marginRight: 43 * Units.px
|
|
marginTop: 47 * Units.px
|
|
marginBottom: 80 * Units.px
|
|
|
|
axisX: BarCategoryAxis {
|
|
id: categoryAxis
|
|
subGridVisible: false
|
|
|
|
property color labelDelegateTextColor: chartView.labelTextColor
|
|
|
|
labelDelegate: Item {
|
|
id: labelItem
|
|
property string text
|
|
property color labelTextColor: categoryAxis.labelDelegateTextColor
|
|
|
|
Text {
|
|
id: labelDelegate
|
|
anchors.centerIn: parent
|
|
font: graphCategoryFont
|
|
text: labelItem.text
|
|
color: labelItem.labelTextColor
|
|
}
|
|
}
|
|
}
|
|
|
|
axisY: ValueAxis {
|
|
id: axisY
|
|
max: 35
|
|
min: 0
|
|
subTickCount: 4
|
|
tickInterval: 5
|
|
}
|
|
|
|
BarSeries {
|
|
id: barSeries
|
|
property real radius: 20 * Units.px
|
|
property real blur: 15
|
|
property real sizeFactor: 0.6
|
|
property real opa: 0.4
|
|
|
|
barDelegate: Item {
|
|
id: customBar
|
|
|
|
property color barColor
|
|
|
|
RectangularShadow {
|
|
id: shadowEffect
|
|
|
|
anchors.horizontalCenter: barRectangle.horizontalCenter
|
|
anchors.bottom: barRectangle.bottom
|
|
blur: barSeries.blur
|
|
opacity: barSeries.opa
|
|
width: barSeries.sizeFactor * barRectangle.width * Units.px
|
|
height: 0.9 * barRectangle.height * Units.px
|
|
cached: true
|
|
}
|
|
|
|
Rectangle {
|
|
id: barRectangle
|
|
anchors.fill: parent
|
|
color: customBar.barColor
|
|
opacity: 0.9
|
|
width: 24 * Units.px
|
|
topLeftRadius: barSeries.radius
|
|
topRightRadius: barSeries.radius
|
|
}
|
|
}
|
|
}
|
|
|
|
BarModelMapper {
|
|
id: barModelMapper
|
|
series: barSeries
|
|
firstBarSetSection: -1
|
|
lastBarSetSection: -1
|
|
first: -1
|
|
count: -1
|
|
orientation: Qt.Horizontal
|
|
}
|
|
}
|
|
}
|