Skip to content

Commit d49c4ad

Browse files
committed
Teams: Fixed: Last updated date
1 parent b11c166 commit d49c4ad

4 files changed

Lines changed: 61 additions & 26 deletions

File tree

src/app/model/activity-store.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,11 @@ export class ActivityStore {
6363
private _categoryNames: string[] = [];
6464
private _allDimensions: Record<string, Activity[]> = {};
6565
private _maxLevel: number = -1;
66-
private _progress: Progress = {};
6766

6867
public getData(): Data {
6968
return this.data;
7069
}
7170

72-
// public getProgress(): Progress {
73-
// return this._progress;
74-
// }
75-
7671
public getAllActivities(): Activity[] {
7772
return this._activityList;
7873
}
@@ -121,10 +116,6 @@ export class ActivityStore {
121116
this.data = yaml;
122117
} else {
123118
this.removeIgnoredActivities(ignoreList, this._activityList);
124-
// let activityByName: Record<string, Activity> = {};
125-
// let activityByUuid: Record<string, Activity> = {};
126-
//this._ensureNoDuplicateIds(...)
127-
//this.buildLookups(activityList, activityByName, activityByUuid,errors);
128119
this.mergeActivities(activityList, this._activityList, errors);
129120

130121
// Reset lookup tables after merge

src/app/model/progress-store.ts

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,19 @@ export class ProgressStore {
160160
return this._progressTitles[0];
161161
}
162162

163+
public getInProgressTitles(): ProgressTitle[] {
164+
if (!this._progressTitles) return [];
165+
return this._progressTitles.slice(1, -1);
166+
}
167+
168+
public getCompletedProgressTitle(): ProgressTitle {
169+
if (!this._progressTitles) return '';
170+
return this._progressTitles.slice(-1)[0];
171+
}
172+
173+
/* All activities:
174+
* - where all teams have Completed status
175+
*/
163176
public getActivitiesCompletedForTeams(teamNames: TeamName[]): TeamActivityProgress[] {
164177
let completedName: ProgressTitle = this._progressTitlesDescOrder?.[0] || '';
165178

@@ -184,16 +197,32 @@ export class ProgressStore {
184197
return activitiesCompleted;
185198
}
186199

187-
public getInProgressTitles(): ProgressTitle[] {
188-
if (!this._progressTitles) return [];
189-
return this._progressTitles.slice(1, -1);
190-
}
200+
/* Activities Started:
201+
* - where at least one teams have a progress stage > 0%
202+
*/
203+
public getActivitiesStartedForTeams(teamNames: TeamName[]): TeamActivityProgress[] {
204+
let initiatedName: ProgressTitle = this._progressTitles?.[1] || '';
191205

192-
public getCompleetedProgressTitle(): ProgressTitle {
193-
if (!this._progressTitles) return '';
194-
return this._progressTitles.slice(-1)[0];
206+
let activitiesCompleted: TeamActivityProgress[] = [];
207+
for (let activityUuid in this._progress) {
208+
for (let teamName of teamNames) {
209+
// Only include started activities
210+
if (this._progress?.[activityUuid]?.[teamName]?.[initiatedName]) {
211+
let teamActivityProgress: TeamActivityProgress = {
212+
team: teamName,
213+
activityUuid: activityUuid,
214+
progress: this._progress[activityUuid][teamName],
215+
};
216+
activitiesCompleted.push(teamActivityProgress);
217+
}
218+
}
219+
}
220+
return activitiesCompleted;
195221
}
196222

223+
/* Activities In Progress:
224+
* - where at least one teams have a progress stage > 0%, but also less than 100%
225+
*/
197226
public getActivitiesInProgressForTeams(teamNames: TeamName[]): TeamActivityProgress[] {
198227
let initiatedName: ProgressTitle = this._progressTitles?.[1] || '';
199228
let completedName: ProgressTitle = this._progressTitlesDescOrder?.[0] || '';

src/app/pages/teams/teams.component.ts

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
22
import { MatSort } from '@angular/material/sort';
33
import { MatTableDataSource } from '@angular/material/table';
4+
import { sum } from 'd3';
45
import {
56
DialogInfo,
67
ModalMessageComponent,
@@ -33,7 +34,7 @@ export class TeamsComponent implements OnInit, AfterViewInit {
3334
infoTeams: TeamNames = [];
3435
info: Record<string, TeamSummary> = {};
3536

36-
dataSource: MatTableDataSource<TeamActivityProgress> = new MatTableDataSource<TeamActivityProgress>([]); // eslint-disable-line
37+
dataSource: MatTableDataSource<TeamSummaryActivityProgress> = new MatTableDataSource<TeamSummaryActivityProgress>([]); // eslint-disable-line
3738
allColumnNames: string[] = [];
3839
progressColumnNames: string[] = [];
3940
@ViewChild(MatSort, { static: false }) sort!: MatSort;
@@ -60,7 +61,10 @@ export class TeamsComponent implements OnInit, AfterViewInit {
6061
ngAfterViewInit() {
6162
if (this.sort) {
6263
this.dataSource.sort = this.sort;
63-
this.dataSource.sortingDataAccessor = (item: TeamActivityProgress, property: string) => {
64+
this.dataSource.sortingDataAccessor = (
65+
item: TeamSummaryActivityProgress,
66+
property: string
67+
) => {
6468
if (property === 'Team') {
6569
return item.team;
6670
}
@@ -170,12 +174,13 @@ export class TeamsComponent implements OnInit, AfterViewInit {
170174

171175
makeTeamSummary(name: string, teams: TeamNames): TeamSummary {
172176
/* eslint-disable */
173-
let activitiesCompleted: progressStoreMapping[] = this.dataStore?.progressStore?.getActivitiesCompletedForTeams(teams) || [];
177+
let activitiesStarted: progressStoreMapping[] = this.dataStore?.progressStore?.getActivitiesStartedForTeams(teams) || [];
174178
let activitiesInProgress: progressStoreMapping[] = this.dataStore?.progressStore?.getActivitiesInProgressForTeams(teams) || [];
179+
let activitiesCompleted: progressStoreMapping[] = this.dataStore?.progressStore?.getActivitiesCompletedForTeams(teams) || [];
175180

176181
let summary: TeamSummary = {
177182
teams,
178-
lastUpdated: new Date(),
183+
lastUpdated: null,
179184
activitiesCompleted: [],
180185
activitiesInProgress: [],
181186
uniqueActivitiesCompletedCount: 0,
@@ -186,32 +191,43 @@ export class TeamsComponent implements OnInit, AfterViewInit {
186191
summary.activitiesInProgress = activitiesInProgress.map(activityProgress => _self.mapIncludeActivity(activityProgress));
187192
summary.uniqueActivitiesCompletedCount = uniqueCount(summary.activitiesCompleted.map(item => item.activity.uuid));
188193
summary.uniqueActivitiesInProgressCount = uniqueCount(summary.activitiesInProgress.map(item => item.activity.uuid));
194+
if (activitiesStarted.length == 0) {
195+
summary.lastUpdated = null;
196+
} else {
197+
summary.lastUpdated = activitiesStarted.map(activityProgress => _self.mapIncludeActivity(activityProgress).lastUpdated)
198+
// .map(activityProgress => activityProgress.lastUpdated)
199+
.reduce((max, current) => (current > max ? current : max));
200+
}
189201
/* eslint-enable */
190202

191203
return summary;
192204
}
193205

194-
mapIncludeActivity(input: progressStoreMapping): TeamActivityProgress {
206+
mapIncludeActivity(input: progressStoreMapping): TeamSummaryActivityProgress {
195207
return {
196208
team: input.team,
197209
activity:
198210
this.dataStore?.activityStore?.getActivityByUuid(input.activityUuid) || ({} as Activity),
199211
progress: input.progress,
212+
lastUpdated: Object.values(input.progress).reduce((max, current) =>
213+
current > max ? current : max
214+
),
200215
};
201216
}
202217
}
203218

204219
export interface TeamSummary {
205220
teams: TeamNames;
206-
lastUpdated: Date;
207-
activitiesCompleted: TeamActivityProgress[];
208-
activitiesInProgress: TeamActivityProgress[];
221+
lastUpdated: Date | null;
222+
activitiesCompleted: TeamSummaryActivityProgress[];
223+
activitiesInProgress: TeamSummaryActivityProgress[];
209224
uniqueActivitiesCompletedCount: number;
210225
uniqueActivitiesInProgressCount: number;
211226
}
212227

213-
export interface TeamActivityProgress {
228+
export interface TeamSummaryActivityProgress {
214229
team: TeamName;
215230
activity: Activity;
216231
progress: TeamProgress;
232+
lastUpdated: Date;
217233
}

src/assets/Markdown Files/TODO-central-loader.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
## Doing
22
- Bug: Teams: Reads progress heading from activityStore, not metaStore
3-
- Bug: Teams: Last updated gives the incorrect date
43

54
## Next
65
### Dependency graph

0 commit comments

Comments
 (0)