From 5421266bc8402c6ae889dedc3e8c166c3c5dc936 Mon Sep 17 00:00:00 2001 From: dorian Date: Sun, 7 Jul 2019 17:13:55 +0200 Subject: [PATCH] fixed some bugs that occured when cats of one comp cover multiple disciplines --- resources/qml/Components/SpeedFlowChart.qml | 64 ++++++++++----------- resources/qml/Widgets/CalendarWidget.qml | 2 +- resources/qml/Widgets/ResultWidget.qml | 39 ++++++++++--- resources/qml/main.qml | 13 ++++- 4 files changed, 72 insertions(+), 46 deletions(-) diff --git a/resources/qml/Components/SpeedFlowChart.qml b/resources/qml/Components/SpeedFlowChart.qml index 804d60e..6966f8b 100644 --- a/resources/qml/Components/SpeedFlowChart.qml +++ b/resources/qml/Components/SpeedFlowChart.qml @@ -8,7 +8,7 @@ ListView { property var flowchartData property var allFlowchartData - property int rounds + property int rounds: 0 property int tileSize: app.height / 8 * 0.8 property int refreshes: 0 @@ -16,7 +16,6 @@ ListView { anchors.fill: parent anchors.margins: 10 - model: rounds + 2 spacing: app.width * 0.1 @@ -27,8 +26,11 @@ ListView { prepareData() } + model: 0 + function prepareData() { - if(!control.enabled) + + if(!control.enabled || control.flowchartData === undefined || control.flowchartData['route_names'] === undefined) return /*refreshes += 1 @@ -65,19 +67,16 @@ ListView { // array to store the restructured data var allData = [] + control.allFlowchartData = [] + + control.rounds = Object.keys(control.flowchartData['route_names']).length > 2 ? control.flowchartData['route_names']["2"].includes("8") ? 2:1 : 0 //console.log(JSON.stringify(flowchartData['route_names'])) for(var round in flowchartData['route_names']){ - //console.log(round) if(flowchartData['route_names'].hasOwnProperty(round) && parseInt(round) >= 0){ //console.log(round) - /*if(allData.length > 0){ - allData[allData.length-1].push(round) - allData[allData.length-1].push(flowchartData['route_names'][round]) - }*/ - if(parseInt(round) === 0){ // this is the first round @@ -94,7 +93,8 @@ ListView { }); var nextRoundPairs = [] - var nextRoundMatches = Math.pow(2, control.model-1) + var totalMatches = (parseInt(Object.keys(control.flowchartData['route_names']).length > 2 ? control.flowchartData['route_names']["2"].includes("8") ? 2:1 : 0) + 2) + var nextRoundMatches = Math.pow(2, totalMatches-1) for(var i = 0; i < nextRoundMatches; i++){ nextRoundPairs.push([qualificationResults[i], qualificationResults[nextRoundMatches*2-i-1]]) @@ -203,14 +203,12 @@ ListView { } } } + control.allFlowchartData = allData + control.model = (parseInt(Object.keys(control.flowchartData['route_names']).length > 2 ? control.flowchartData['route_names']["2"].includes("8") ? 2:1 : 0) + 2) //console.log(JSON.stringify(allData)) } - function getWinner(part1, part2){ - - } - delegate: Column { id: roundCol @@ -232,6 +230,7 @@ ListView { verticalAlignment: Text.AlignVCenter fontSizeMode: Text.Fit font.pixelSize: height * 0.6 + minimumPixelSize: 1 font.bold: true text: roundCol.thisRoundIsValid && control.allFlowchartData[roundCol.thisIndex][control.allFlowchartData[roundCol.thisIndex].length-1] !== undefined ? control.allFlowchartData[roundCol.thisIndex][control.allFlowchartData[roundCol.thisIndex].length-1] : "-" } @@ -261,6 +260,16 @@ ListView { height: !roundCol.thisIsLastRound ? (roundCol.height - roundNameLa.height) / rectRep.model - roundCol.spacing : (thisIsFinal ? (roundCol.height - roundNameLa.height) * 0.5 + control.tileSize * 0.5 : (roundCol.height - roundNameLa.height) - (roundCol.height - roundNameLa.height) * 0.5 + control.tileSize * 0.5 ) width: parent.width + onMatchDataChanged: { + fadeInPa.start() + } + + ParallelAnimation { + id: fadeInPa + NumberAnimation { target: matchItm; property: "opacity"; from: 0; to: 1.0; duration: 400 } + NumberAnimation { target: matchItm; property: "scale"; from: 0.8; to: 1.0; duration: 400 } + } + Canvas { id: lineCanvas width: app.width; height: app.height @@ -325,7 +334,6 @@ ListView { Label { Layout.preferredHeight: parent.height - //Layout.preferredWidth: parent.width * 0.1 height: parent.height @@ -348,7 +356,7 @@ ListView { horizontalAlignment: Text.AlignHCenter //horizontalAlignment: app.landscape() ? Text.AlignLeft : Text.AlignLeft font.pixelSize: app.landscape() ? height * 0.4 : height * 0.6 - minimumPixelSize: app.landscape() ? height * 0.35 : height * 0.5 + minimumPixelSize: (app.landscape() ? height * 0.35 : height * 0.5) < 1 ? 1 : (app.landscape() ? height * 0.35 : height * 0.5) fontSizeMode: Text.Fit font.bold: matchItm.winnerIndex === index elide: "ElideRight" @@ -362,7 +370,6 @@ ListView { Label { Layout.preferredHeight: parent.height - //Layout.preferredWidth: parent.width * 0.2 height: parent.height @@ -371,25 +378,12 @@ ListView { Layout.alignment: Layout.Right - text: matchItm.thisMatchData[index] !== undefined ? ( parseFloat(matchItm.thisMatchData[index]['result'+matchItm.thisRound]) ? (parseFloat(matchItm.thisMatchData[index]['result'+matchItm.thisRound]).toFixed(2)) : matchItm.thisMatchData[index]['result'+matchItm.thisRound] ): "-" + text: matchItm.thisMatchData[index] !== undefined && matchItm.thisMatchData[index]['result'+matchItm.thisRound] !== undefined ? + ( parseFloat(matchItm.thisMatchData[index]['result'+matchItm.thisRound]) ? + (parseFloat(matchItm.thisMatchData[index]['result'+matchItm.thisRound]).toFixed(2)) + : matchItm.thisMatchData[index]['result'+matchItm.thisRound] ) + : "-" } - - /*Rectangle { - id: hasWonRect - - anchors.verticalCenter: parent.verticalCenter - - height: width - width: parent.width * 0.1 - - scale: 0.7 - - radius: width * 0.5 - - color: "green" - - visible: (parseInt(matchItm.thisMatchData[0]["result_rank" + roundCol.thisRound ]) < parseInt(matchItm.thisMatchData[1]["result_rank" + roundCol.thisRound])) === (index === 0 ? true:false) - }*/ } } } diff --git a/resources/qml/Widgets/CalendarWidget.qml b/resources/qml/Widgets/CalendarWidget.qml index c82d4c8..a7b58bc 100644 --- a/resources/qml/Widgets/CalendarWidget.qml +++ b/resources/qml/Widgets/CalendarWidget.qml @@ -31,7 +31,7 @@ DataListView { property Component headerComponent: RowLayout { height: parent.height - width: 100//childrenRect.width + //width: 10//childrenRect.width spacing: 0 diff --git a/resources/qml/Widgets/ResultWidget.qml b/resources/qml/Widgets/ResultWidget.qml index 1c7e69c..529a932 100644 --- a/resources/qml/Widgets/ResultWidget.qml +++ b/resources/qml/Widgets/ResultWidget.qml @@ -34,9 +34,9 @@ DataListView { property bool titleIsPageTitle: true property Component headerComponent: RowLayout { + id: headerComponent height: parent.height - width: 100//childrenRect.width spacing: 0 @@ -63,6 +63,8 @@ DataListView { ToolButton { id: moreToolBt + Layout.alignment: Layout.Right + onClicked: { control.changeCat() } @@ -96,6 +98,20 @@ DataListView { updateData({}, false) } + onWidgetDataChanged: { + console.log("widget data changed") + + if(control.widgetData['discipline'] === 'speed'){ + speedFlowChart.flowchartData = ({}) + speedFlowChart.enabled = true + speedFlowChart.flowchartData = control.widgetData + } + else { + speedFlowChart.enabled = false + speedFlowChart.flowchartData = ({}) + } + } + function getSubtitle() { var titleString @@ -151,6 +167,12 @@ DataListView { } } + onContentYChanged: { + if(contentY > 0 && speedFlowChartBackgroundRect.state === "visible"){ + control.positionViewAtBeginning() + } + } + delegate: ItemDelegate { id: partDel @@ -236,7 +258,7 @@ DataListView { fontSizeMode: Text.Fit font.bold: false font.pixelSize: Math.abs( partDelSecondRow.height > 0 ? height * 0.4:height * 0.3 ) - minimumPixelSize: height * 0.3 + minimumPixelSize: height * 0.3 < 1 ? 1:height * 0.3 elide: "ElideRight" @@ -703,14 +725,15 @@ DataListView { anchors.fill: parent - enabled: control.widgetData['discipline'] === 'speed' + enabled: false - flowchartData: control.widgetData + flowchartData: ({}) - //participants: control.widgetData['participants'].slice() - //route_names: control.widgetData['route_names'] - - rounds: Object.keys(control.widgetData['route_names']).length > 2 ? control.widgetData['route_names']["2"].includes("8") ? 2:1 : 0 + onEnabledChanged: { + if(!enabled){ + speedFlowChartBackgroundRect.state = 'hidden' + } + } } states: [ diff --git a/resources/qml/main.qml b/resources/qml/main.qml index 626e402..f1f2a91 100644 --- a/resources/qml/main.qml +++ b/resources/qml/main.qml @@ -410,6 +410,8 @@ Window { height: parent.height + Layout.alignment: Layout.Right + onStatusChanged: { //console.log("loader status changed: " + status) @@ -419,10 +421,9 @@ Window { else { extraComponentLoader.item.width = extraComponentLoader.item.implicitWidth extraComponentLoader.Layout.preferredWidth = extraComponentLoader.item.width + widthChangedCon.target = extraComponentLoader.item } - - //console.log("set loader width to: " + extraComponentLoader.Layout.preferredWidth + " for a item width of: " + extraComponentLoader.item.implicitWidth) } @@ -443,6 +444,14 @@ Window { } } + Connections { + id: widthChangedCon + onImplicitWidthChanged:{ + extraComponentLoader.item.width = extraComponentLoader.item.implicitWidth + extraComponentLoader.Layout.preferredWidth = extraComponentLoader.item.implicitWidth + } + } + ParallelAnimation { id: appearNa