Warning, /pim/itinerary/src/app/StatisticsPage.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0002 // SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu> 0003 // SPDX-License-Identifier: LGPL-2.0-or-later 0004 0005 import QtQuick 0006 import QtQuick.Layouts 0007 import QtQuick.Controls as QQC2 0008 import org.kde.kirigami as Kirigami 0009 import org.kde.i18n.localeData 0010 import org.kde.itinerary 0011 import org.kde.kirigamiaddons.formcard as FormCard 0012 0013 FormCard.FormCardPage { 0014 id: root 0015 title: i18n("Statistics") 0016 0017 property alias reservationManager: model.reservationManager 0018 property alias tripGroupManager: model.tripGroupManager 0019 0020 data: [ 0021 StatisticsModel { 0022 id: model 0023 }, 0024 StatisticsTimeRangeModel { 0025 id: timeRangeModel 0026 reservationManager: model.reservationManager 0027 } 0028 ] 0029 0030 FormCard.FormHeader {} 0031 FormCard.FormCard { 0032 FormCard.FormComboBoxDelegate { 0033 model: timeRangeModel 0034 text: i18n("Year") 0035 textRole: "display" 0036 onActivated: { 0037 const begin = timeRangeModel.data(timeRangeModel.index(currentIndex, 0), StatisticsTimeRangeModel.BeginRole); 0038 const end = timeRangeModel.data(timeRangeModel.index(currentIndex, 0), StatisticsTimeRangeModel.EndRole); 0039 model.setTimeRange(begin, end); 0040 } 0041 currentIndex: 0 0042 } 0043 } 0044 0045 FormCard.FormHeader { 0046 title: i18n("Total") 0047 } 0048 FormCard.FormCard { 0049 StatisticsDelegate { statItem: model.totalCount } 0050 FormCard.FormDelegateSeparator {} 0051 StatisticsDelegate { statItem: model.totalDistance } 0052 FormCard.FormDelegateSeparator {} 0053 StatisticsDelegate { statItem: model.totalNights } 0054 FormCard.FormDelegateSeparator {} 0055 StatisticsDelegate { statItem: model.totalCO2 } 0056 0057 FormCard.FormDelegateSeparator {} 0058 0059 FormCard.FormButtonDelegate { 0060 id: countryDetailsLink 0061 text: model.visitedCountries.label 0062 description: model.visitedCountries.value.split(" ").map(countryCode => Country.fromAlpha2(countryCode).emojiFlag).join(" ") 0063 onClicked: countryDetailsDelegate.visible = !countryDetailsDelegate.visible 0064 descriptionItem.font.family: 'emoji' 0065 } 0066 0067 FormCard.FormDelegateSeparator { visible: countryDetailsDelegate.visible } 0068 0069 FormCard.AbstractFormDelegate { 0070 id: countryDetailsDelegate 0071 background: Item {} 0072 visible: false 0073 property var model: visible ? model.visitedCountries.value.split(" ") : [] 0074 contentItem: ColumnLayout { 0075 Repeater { 0076 id: countryDetailsRepeater 0077 model: countryDetailsDelegate.model 0078 QQC2.Label { 0079 Layout.fillWidth: true 0080 wrapMode: Text.WordWrap 0081 readonly property var country: Country.fromAlpha2(modelData) 0082 textFormat: Text.RichText 0083 text: '<span style="font-family: emoji">' + country.emojiFlag + "</span> " + country.name 0084 Accessible.name: country.name 0085 } 0086 } 0087 } 0088 } 0089 } 0090 0091 FormCard.FormHeader { 0092 title: i18n("Flight") 0093 visible: model.flightCount.hasData 0094 } 0095 FormCard.FormCard { 0096 visible: model.flightCount.hasData 0097 0098 StatisticsDelegate { statItem: model.flightCount } 0099 FormCard.FormDelegateSeparator {} 0100 StatisticsDelegate { statItem: model.flightDistance } 0101 FormCard.FormDelegateSeparator {} 0102 StatisticsDelegate { statItem: model.flightCO2 } 0103 } 0104 0105 FormCard.FormHeader { 0106 title: i18n("Train") 0107 visible: model.trainCount.hasData 0108 } 0109 FormCard.FormCard { 0110 visible: model.trainCount.hasData 0111 0112 StatisticsDelegate { statItem: model.trainCount } 0113 FormCard.FormDelegateSeparator {} 0114 StatisticsDelegate { statItem: model.trainDistance } 0115 FormCard.FormDelegateSeparator {} 0116 StatisticsDelegate { statItem: model.trainCO2 } 0117 } 0118 0119 FormCard.FormHeader { 0120 title: i18n("Bus") 0121 visible: model.busCount.hasData 0122 } 0123 FormCard.FormCard { 0124 visible: model.busCount.hasData 0125 0126 StatisticsDelegate { statItem: model.busCount } 0127 FormCard.FormDelegateSeparator {} 0128 StatisticsDelegate { statItem: model.busDistance } 0129 FormCard.FormDelegateSeparator {} 0130 StatisticsDelegate { statItem: model.busCO2 } 0131 } 0132 0133 FormCard.FormHeader { 0134 title: i18n("Boat") 0135 visible: model.boatCount.hasData 0136 } 0137 FormCard.FormCard { 0138 visible: model.boatCount.hasData 0139 0140 StatisticsDelegate { statItem: model.boatCount } 0141 FormCard.FormDelegateSeparator {} 0142 StatisticsDelegate { statItem: model.boatDistance } 0143 FormCard.FormDelegateSeparator {} 0144 StatisticsDelegate { statItem: model.boatCO2 } 0145 } 0146 0147 FormCard.FormHeader { 0148 title: i18n("Car") 0149 visible: model.carCount.hasData 0150 } 0151 FormCard.FormCard { 0152 visible: model.carCount.hasData 0153 0154 StatisticsDelegate { statItem: model.carCount } 0155 FormCard.FormDelegateSeparator {} 0156 StatisticsDelegate { statItem: model.carDistance } 0157 FormCard.FormDelegateSeparator {} 0158 StatisticsDelegate { statItem: model.carCO2 } 0159 } 0160 }