diff --git a/lib/ProjectDetails.dart b/lib/ProjectDetails.dart index 6ecbd6f..fb755db 100644 --- a/lib/ProjectDetails.dart +++ b/lib/ProjectDetails.dart @@ -28,6 +28,7 @@ class _ProjectDetailsState extends State { int totalTimeSpent = 0; List timeSpentData = []; List timeProgressionData = []; + List stepsProgressionData = []; String chartOption = 'Time Spent'; DateTimeRange? chartRange; @@ -75,6 +76,21 @@ class _ProjectDetailsState extends State { } }); chartRange ??= (lastDateTime != null && firstDateTime != null) ? DateTimeRange(end: lastDateTime!, start: firstDateTime!) : null; + List steps = project.steps; + steps.sort((a,b)=> (a.finishedDate??DateTime(0,0,0)).compareTo(b.finishedDate?? DateTime(0,0,0))); + int stepsCompleted = 1; + stepsProgressionData=[]; + for(int i =0; i < steps.length; i++){ + if(steps[i].finishedDate==null){continue;} + + if(steps[i].finishedDate!.isAfter(chartRange!.start) && steps[i].finishedDate!.isBefore(chartRange!.end)){ + stepsCompleted+= steps[i].eta ; + stepsProgressionData.add(ProjectChartData(steps[i].finishedDate!, stepsCompleted,metadata: steps[i].stepName)); + + } + } + + return Scaffold( appBar: AppBar( title: Row( @@ -168,7 +184,7 @@ class _ProjectDetailsState extends State { "I'll show you detailed info about this day in future, When my master creates the feature"); }, color: Colors.blue), - if (chartOption == 'Time Progression') + if (chartOption == 'Time Progression' || chartOption == 'Time & Steps Progression') LineSeries( // Bind data source dataSource: timeProgressionData, @@ -180,7 +196,20 @@ class _ProjectDetailsState extends State { showAlertDialog(context, DateFormat("MM/dd").format(timeSpentData[point.pointIndex!].day), "I'll show you detailed info about this day in future, When my master creates the feature"); }, - color: Colors.blue) + color: Colors.blue), + if (chartOption == 'Steps Progression'|| chartOption == 'Time & Steps Progression') + LineSeries( + // Bind data source + dataSource: stepsProgressionData, + xValueMapper: (ProjectChartData sales, _) => DateFormat("MM/dd").format(sales.day), + yValueMapper: (ProjectChartData sales, _) => sales.timeSpent, + dataLabelMapper: (ProjectChartData sales, _) => sales.metadata, + dataLabelSettings: DataLabelSettings(overflowMode: OverflowMode.hide, showZeroValue: false, isVisible: true), + onPointTap: (ChartPointDetails point) { + showAlertDialog(context, DateFormat("MM/dd").format(timeSpentData[point.pointIndex!].day), + "I'll show you detailed info about this day in future, When my master creates the feature"); + }, + color: Colors.yellow) ]), ], ))), @@ -451,8 +480,9 @@ class _ProjectDetailsState extends State { } class ProjectChartData { - ProjectChartData(this.day, this.timeSpent); + ProjectChartData(this.day, this.timeSpent,{this.metadata}); DateTime day; int timeSpent; + String? metadata; }