Skip to content

Commit

Permalink
refactor(UtilService): Move convertMillisecondsToFormattedDateTime()
Browse files Browse the repository at this point in the history
  • Loading branch information
breity authored Apr 25, 2023
1 parent df92a0d commit 97fede6
Show file tree
Hide file tree
Showing 14 changed files with 94 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { ConfigService } from '../../../services/configService';
import { DataExportService } from '../../../services/dataExportService';
import { MatchService } from '../../../components/match/matchService';
import { TeacherDataService } from '../../../services/teacherDataService';
import { UtilService } from '../../../services/utilService';
import { TeacherProjectService } from '../../../services/teacherProjectService';
import { ComponentServiceLookupService } from '../../../services/componentServiceLookupService';
import { StudentWorkDataExportStrategy } from '../strategies/StudentWorkDataExportStrategy';
Expand All @@ -23,6 +22,7 @@ import { DiscussionComponentDataExportStrategy } from '../strategies/DiscussionC
import { LabelComponentDataExportStrategy } from '../strategies/LabelComponentDataExportStrategy';
import { Component as WISEComponent } from '../../../common/Component';
import { removeHTMLTags } from '../../../common/string/string';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

@Component({
selector: 'data-export',
Expand Down Expand Up @@ -122,8 +122,7 @@ export class DataExportComponent implements OnInit {
private matchService: MatchService,
public projectService: TeacherProjectService,
public teacherDataService: TeacherDataService,
private upgrade: UpgradeModule,
public utilService: UtilService
private upgrade: UpgradeModule
) {}

ngOnInit(): void {
Expand Down Expand Up @@ -283,9 +282,7 @@ export class DataExportComponent implements OnInit {
row[columnNameToNumber['Run ID']] = this.configService.getRunId();
row[columnNameToNumber['Student Work ID']] = componentState.id;
if (componentState.serverSaveTime != null) {
var formattedDateTime = this.utilService.convertMillisecondsToFormattedDateTime(
componentState.serverSaveTime
);
var formattedDateTime = millisecondsToDateTime(componentState.serverSaveTime);
row[columnNameToNumber['Server Timestamp']] = formattedDateTime;
}
if (componentState.clientSaveTime != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { TeacherProjectService } from '../../../services/teacherProjectService';
import { UtilService } from '../../../services/utilService';
import ExportController from '../exportController';
import { UpgradeModule } from '@angular/upgrade/static';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

@Component({
selector: 'export-step-visits',
Expand Down Expand Up @@ -418,20 +419,12 @@ export class ExportStepVisitsComponent extends ExportController {
this.setCellInRow(visit, 'End Date', this.configService.getFormattedEndDate());
this.setCellInRow(visit, 'Node ID', nodeId);
this.setCellInRow(visit, 'Step Title', this.getStepNumberAndTitle(nodeId));
this.setCellInRow(
visit,
'Enter Time',
this.utilService.convertMillisecondsToFormattedDateTime(nodeEnteredEvent.clientSaveTime)
);
this.setCellInRow(visit, 'Enter Time', millisecondsToDateTime(nodeEnteredEvent.clientSaveTime));
if (nodeExitedEvent == null) {
this.setCellInRow(visit, 'Exit Time', '(Unknown Exit Time)');
this.setCellInRow(visit, 'Visit Duration (Seconds)', '(Unknown Visit Duration)');
} else if (nodeExitedEvent != null) {
this.setCellInRow(
visit,
'Exit Time',
this.utilService.convertMillisecondsToFormattedDateTime(nodeExitedEvent.clientSaveTime)
);
this.setCellInRow(visit, 'Exit Time', millisecondsToDateTime(nodeExitedEvent.clientSaveTime));
this.setCellInRow(
visit,
'Visit Duration (Seconds)',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ComponentDataExportParams } from '../ComponentDataExportParams';
import { ComponentRevisionCounter } from '../ComponentRevisionCounter';
import { UserIdsAndStudentNames } from '../UserIdsAndStudentNames';
import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

export abstract class AbstractComponentDataExportStrategy extends AbstractDataExportStrategy {
abstract COMPONENT_TYPE: string;
Expand Down Expand Up @@ -167,9 +168,9 @@ export abstract class AbstractComponentDataExportStrategy extends AbstractDataEx
row[this.columnNameToNumber.get('Project Name')] = this.projectService.getProjectTitle();
row[this.columnNameToNumber.get('Run ID')] = this.configService.getRunId();
row[this.columnNameToNumber.get('Student Work ID')] = componentState.id;
row[
this.columnNameToNumber.get('Server Timestamp')
] = this.utilService.convertMillisecondsToFormattedDateTime(componentState.serverSaveTime);
row[this.columnNameToNumber.get('Server Timestamp')] = millisecondsToDateTime(
componentState.serverSaveTime
);
const clientSaveTime = new Date(componentState.clientSaveTime);
const clientSaveTimeString =
clientSaveTime.toDateString() + ' ' + clientSaveTime.toLocaleTimeString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { ConfigService } from '../../../services/configService';
import { DataExportService } from '../../../services/dataExportService';
import { TeacherDataService } from '../../../services/teacherDataService';
import { TeacherProjectService } from '../../../services/teacherProjectService';
import { UtilService } from '../../../services/utilService';
import { DataExportComponent } from '../data-export/data-export.component';
import { DataExportContext } from '../DataExportContext';
import { DataExportStrategy } from './DataExportStrategy';
Expand All @@ -16,7 +15,6 @@ export abstract class AbstractDataExportStrategy implements DataExportStrategy {
dataExportService: DataExportService;
projectService: TeacherProjectService;
teacherDataService: TeacherDataService;
utilService: UtilService;

setDataExportContext(context: DataExportContext) {
this.context = context;
Expand All @@ -26,7 +24,6 @@ export abstract class AbstractDataExportStrategy implements DataExportStrategy {
this.dataExportService = context.controller.dataExportService;
this.projectService = context.controller.projectService;
this.teacherDataService = context.controller.teacherDataService;
this.utilService = context.controller.utilService;
}

abstract export();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { removeHTMLTags } from '../../../common/string/string';
import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

export class DiscussionComponentDataExportStrategy extends AbstractDataExportStrategy {
constructor(private nodeId: string, private component: any) {
Expand Down Expand Up @@ -128,9 +129,9 @@ export class DiscussionComponentDataExportStrategy extends AbstractDataExportStr
row[columnNameToNumber['Run ID']] = this.configService.getRunId();

if (componentState.serverSaveTime != null) {
row[
columnNameToNumber['Server Timestamp']
] = this.utilService.convertMillisecondsToFormattedDateTime(componentState.serverSaveTime);
row[columnNameToNumber['Server Timestamp']] = millisecondsToDateTime(
componentState.serverSaveTime
);
}

if (componentState.clientSaveTime != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { removeHTMLTags } from '../../../common/string/string';
import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

export class EventDataExportStrategy extends AbstractDataExportStrategy {
export() {
Expand Down Expand Up @@ -386,15 +387,11 @@ export class EventDataExportStrategy extends AbstractDataExportStrategy {
}

private setServerSaveTime(row, columnNameToNumber, data) {
row[
columnNameToNumber['Server Timestamp']
] = this.utilService.convertMillisecondsToFormattedDateTime(data.serverSaveTime);
row[columnNameToNumber['Server Timestamp']] = millisecondsToDateTime(data.serverSaveTime);
}

private setClientSaveTime(row, columnNameToNumber, data) {
row[
columnNameToNumber['Client Timestamp']
] = this.utilService.convertMillisecondsToFormattedDateTime(data.clientSaveTime);
row[columnNameToNumber['Client Timestamp']] = millisecondsToDateTime(data.clientSaveTime);
}

private setNodeId(row, columnNameToNumber, data) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { removeHTMLTags } from '../../../common/string/string';
import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

export class NotebookDataExportStrategy extends AbstractDataExportStrategy {
constructor(private exportType: string) {
Expand Down Expand Up @@ -90,12 +91,12 @@ export class NotebookDataExportStrategy extends AbstractDataExportStrategy {
if (position != -1) {
row[columnNameToNumber['Component Part Number']] = position + 1;
}
row[
columnNameToNumber['Client Save Time']
] = this.utilService.convertMillisecondsToFormattedDateTime(notebookItem.clientSaveTime);
row[
columnNameToNumber['Server Save Time']
] = this.utilService.convertMillisecondsToFormattedDateTime(notebookItem.serverSaveTime);
row[columnNameToNumber['Client Save Time']] = millisecondsToDateTime(
notebookItem.clientSaveTime
);
row[columnNameToNumber['Server Save Time']] = millisecondsToDateTime(
notebookItem.serverSaveTime
);
row[columnNameToNumber['Type']] = notebookItem.type;
row[columnNameToNumber['Content']] = JSON.parse(notebookItem.content);
row[columnNameToNumber['Run ID']] = notebookItem.runId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

export class NotificationDataExportStrategy extends AbstractDataExportStrategy {
export() {
Expand Down Expand Up @@ -76,16 +77,14 @@ export class NotificationDataExportStrategy extends AbstractDataExportStrategy {
if (componentPosition != -1) {
row[columnNameToNumber['Component Part Number']] = componentPosition + 1;
}
row[
columnNameToNumber['Server Save Time']
] = this.utilService.convertMillisecondsToFormattedDateTime(notification.serverSaveTime);
row[
columnNameToNumber['Time Generated']
] = this.utilService.convertMillisecondsToFormattedDateTime(notification.timeGenerated);
row[columnNameToNumber['Server Save Time']] = millisecondsToDateTime(
notification.serverSaveTime
);
row[columnNameToNumber['Time Generated']] = millisecondsToDateTime(notification.timeGenerated);
if (notification.timeDismissed != null) {
row[
columnNameToNumber['Time Dismissed']
] = this.utilService.convertMillisecondsToFormattedDateTime(notification.timeDismissed);
row[columnNameToNumber['Time Dismissed']] = millisecondsToDateTime(
notification.timeDismissed
);
}
row[columnNameToNumber['Type']] = notification.type;
if (notification.groupId != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { removeHTMLTags } from '../../../common/string/string';
import { AbstractDataExportStrategy } from './AbstractDataExportStrategy';
import { millisecondsToDateTime } from '../../../common/datetime/datetime';

export class OneWorkgroupPerRowDataExportStrategy extends AbstractDataExportStrategy {
/**
Expand Down Expand Up @@ -126,7 +127,7 @@ export class OneWorkgroupPerRowDataExportStrategy extends AbstractDataExportStra
}
if (this.controller.includeStudentWorkTimestamps) {
if (componentState.serverSaveTime != null) {
var formattedDateTime = this.utilService.convertMillisecondsToFormattedDateTime(
var formattedDateTime = millisecondsToDateTime(
componentState.serverSaveTime
);
workgroupRow[
Expand All @@ -148,7 +149,7 @@ export class OneWorkgroupPerRowDataExportStrategy extends AbstractDataExportStra
var commentAnnotation = latestComponentAnnotations.comment;
if (scoreAnnotation != null) {
if (this.controller.includeScoreTimestamps) {
var scoreTimestamp = this.utilService.convertMillisecondsToFormattedDateTime(
var scoreTimestamp = millisecondsToDateTime(
scoreAnnotation.serverSaveTime
);
workgroupRow[
Expand All @@ -169,7 +170,7 @@ export class OneWorkgroupPerRowDataExportStrategy extends AbstractDataExportStra
}
if (commentAnnotation != null) {
if (this.controller.includeCommentTimestamps) {
var commentTimestamp = this.utilService.convertMillisecondsToFormattedDateTime(
var commentTimestamp = millisecondsToDateTime(
commentAnnotation.serverSaveTime
);
workgroupRow[
Expand Down
8 changes: 8 additions & 0 deletions src/assets/wise5/common/datetime/datetime.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { millisecondsToDateTime } from './datetime';

describe('millisecondsToDateTime()', () => {
it('should convert milliseconds to formatted date/time string', () => {
expect(millisecondsToDateTime(1682115840000)).toEqual('Fri Apr 21 2023 10:24:00 PM');
expect(millisecondsToDateTime(-1682115840000)).toEqual('Tue Sep 12 1916 1:36:00 AM');
});
});
11 changes: 11 additions & 0 deletions src/assets/wise5/common/datetime/datetime.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/**
* Convert milliseconds since the epoch to a pretty printed date time
* @param milliseconds the milliseconds since the epoch
* @return a string containing the pretty printed date time
* example
* Wed Apr 06 2016 9:05:38 AM
*/
export function millisecondsToDateTime(milliseconds: number): string {
const date = new Date(milliseconds);
return `${date.toDateString()} ${date.toLocaleTimeString()}`;
}
12 changes: 4 additions & 8 deletions src/assets/wise5/services/configService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,16 @@ import { Inject, Injectable, LOCALE_ID } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, Subject } from 'rxjs';
import { formatDate } from '@angular/common';
import { UtilService } from './utilService';
import { isMatchingPeriods } from '../common/period/period';
import { millisecondsToDateTime } from '../common/datetime/datetime';

@Injectable()
export class ConfigService {
public config: any = null;
private configRetrievedSource: Subject<any> = new Subject<any>();
public configRetrieved$: Observable<any> = this.configRetrievedSource.asObservable();

constructor(
private http: HttpClient,
@Inject(LOCALE_ID) private localeID: string,
private utilService: UtilService
) {}
constructor(private http: HttpClient, @Inject(LOCALE_ID) private localeID: string) {}

setConfig(config) {
this.config = config;
Expand Down Expand Up @@ -985,12 +981,12 @@ export class ConfigService {
}

getFormattedStartDate() {
return this.utilService.convertMillisecondsToFormattedDateTime(this.getStartDate());
return millisecondsToDateTime(this.getStartDate());
}

getFormattedEndDate() {
if (this.getEndDate() != null) {
return this.utilService.convertMillisecondsToFormattedDateTime(this.getEndDate());
return millisecondsToDateTime(this.getEndDate());
}
return '';
}
Expand Down
15 changes: 0 additions & 15 deletions src/assets/wise5/services/utilService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,6 @@ export class UtilService {
}
}

/**
* Convert milliseconds since the epoch to a pretty printed date time
* @param milliseconds the milliseconds since the epoch
* @return a string containing the pretty printed date time
* example
* Wed Apr 06 2016 9:05:38 AM
*/
convertMillisecondsToFormattedDateTime(milliseconds) {
const date = new Date(milliseconds);
if (date != null) {
return date.toDateString() + ' ' + date.toLocaleTimeString();
}
return '';
}

/**
* Determine whether the component has been authored to import work.
* @param componentContent The component content.
Expand Down
Loading

0 comments on commit 97fede6

Please sign in to comment.