refactor: Clean up code formatting and improve type annotations in various files

This commit is contained in:
Simon Larsen
2025-05-16 20:36:28 +01:00
parent 9034b7fa4c
commit aaa4f3c732
11 changed files with 71 additions and 87 deletions

View File

@@ -54,7 +54,7 @@ export class Service extends DatabaseService<Model> {
const { endsAt, onCallDutyPolicyScheduleId } = data;
await this.updateBy({
query: {
projectId: data.projectId,
projectId: data.projectId,
onCallDutyPolicyScheduleId,
},
data: {
@@ -80,7 +80,7 @@ export class Service extends DatabaseService<Model> {
teamId,
},
limit: LIMIT_PER_PROJECT,
limit: LIMIT_PER_PROJECT,
skip: 0,
data: {
endsAt: endsAt,
@@ -102,7 +102,7 @@ export class Service extends DatabaseService<Model> {
projectId: data.projectId,
userId,
},
limit: LIMIT_PER_PROJECT,
limit: LIMIT_PER_PROJECT,
skip: 0,
data: {
endsAt: endsAt,
@@ -139,7 +139,7 @@ export class Service extends DatabaseService<Model> {
...(teamId && { teamId }),
...(onCallDutyPolicyScheduleId && { onCallDutyPolicyScheduleId }),
},
limit: LIMIT_PER_PROJECT,
limit: LIMIT_PER_PROJECT,
skip: 0,
data: {
endsAt: endsAt,

View File

@@ -15,18 +15,15 @@ export default class GreaterThan<T extends CompareType> extends CompareBase<T> {
};
}
public override toString(): string {
let value: T = this.value;
public override toString(): string {
let value: T = this.value;
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
public static override fromJSON<T extends CompareType>(
json: JSONObject,

View File

@@ -17,18 +17,15 @@ export default class GreaterThanOrEqual<
};
}
public override toString(): string {
let value: T = this.value;
public override toString(): string {
let value: T = this.value;
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
public static override fromJSON<T extends CompareType>(
json: JSONObject,

View File

@@ -17,18 +17,16 @@ export default class GreaterThanOrNull<
};
}
public override toString(): string {
let value: T = this.value;
public override toString(): string {
let value: T = this.value;
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
public static override fromJSON<T extends CompareType>(
json: JSONObject,
): GreaterThanOrNull<T> {

View File

@@ -15,18 +15,15 @@ export default class LessThan<T extends CompareType> extends CompareBase<T> {
};
}
public override toString(): string {
let value: T = this.value;
public override toString(): string {
let value: T = this.value;
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
public static override fromJSON<T extends CompareType>(
json: JSONObject,

View File

@@ -17,18 +17,15 @@ export default class LessThanOrEqual<
};
}
public override toString(): string {
let value: T = this.value;
public override toString(): string {
let value: T = this.value;
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
public static override fromJSON<T extends CompareType>(
json: JSONObject,

View File

@@ -17,18 +17,15 @@ export default class LessThanOrNull<
};
}
public override toString(): string {
let value: T = this.value;
public override toString(): string {
let value: T = this.value;
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
if (value instanceof Date) {
value = OneUptimeDate.asDateForDatabaseQuery(value) as T;
}
return value.toString();
}
public static override fromJSON<T extends CompareType>(
json: JSONObject,

View File

@@ -11,9 +11,7 @@ export const Moment: typeof moment = moment;
export default class OneUptimeDate {
// get date time from unix timestamp
public static getHoursAndMinutesFromMinutes(
minutes: number,
): string {
public static getHoursAndMinutesFromMinutes(minutes: number): string {
const hours: number = Math.floor(minutes / 60);
const mins: number = minutes % 60;
@@ -26,7 +24,6 @@ export default class OneUptimeDate {
if (mins > 0) {
formattedString += mins + " minutes";
}
return formattedString.trim() || "0 minutes";
}

View File

@@ -109,21 +109,22 @@ const OnCallPolicyLogTable: FunctionComponent<ComponentProps> = (
}
// Sort logs by start time to properly handle overlaps
logs.sort((a, b) => {
logs.sort((a: OnCallDutyPolicyTimeLog, b: OnCallDutyPolicyTimeLog) => {
return a.startsAt!.getTime() - b.startsAt!.getTime();
});
// Merge overlapping time periods
const mergedPeriods: Array<{ start: Date; end: Date }> = [];
logs.forEach((log) => {
logs.forEach((log: OnCallDutyPolicyTimeLog) => {
const startDate: Date = log.startsAt!;
let endDate: Date = log.endsAt || OneUptimeDate.getCurrentDate();
// if end date is mroe than the end date selected in the range, then
// if end date is mroe than the end date selected in the range, then
// set the end date to the end date selected in the range
if (OneUptimeDate.isAfter(endDate, pickedStartAndEndDate.endValue)) {
if (
OneUptimeDate.isAfter(endDate, pickedStartAndEndDate.endValue)
) {
endDate = pickedStartAndEndDate.endValue;
}
@@ -131,13 +132,16 @@ const OnCallPolicyLogTable: FunctionComponent<ComponentProps> = (
if (
mergedPeriods.length === 0 ||
startDate.getTime() >
mergedPeriods[mergedPeriods.length - 1]!.end.getTime()
mergedPeriods[mergedPeriods.length - 1]!.end.getTime()
) {
// No overlap - add as a new period
mergedPeriods.push({ start: startDate, end: endDate });
} else {
// Overlapping with the last period - extend the end time if necessary
const lastPeriod = mergedPeriods[mergedPeriods.length - 1];
const lastPeriod: {
start: Date;
end: Date;
} | undefined = mergedPeriods[mergedPeriods.length - 1];
if (endDate.getTime() > lastPeriod!.end.getTime()) {
lastPeriod!.end = endDate;
}
@@ -145,8 +149,11 @@ const OnCallPolicyLogTable: FunctionComponent<ComponentProps> = (
});
// Calculate total minutes from merged periods (no double counting)
let totalMinutes = 0;
mergedPeriods.forEach((period) => {
let totalMinutes: number = 0;
mergedPeriods.forEach((period: {
start: Date;
end: Date;
}) => {
totalMinutes += OneUptimeDate.getDifferenceInMinutes(
period.start,
period.end,
@@ -229,8 +236,6 @@ const OnCallPolicyLogTable: FunctionComponent<ComponentProps> = (
type: FieldType.Minutes,
key: "totalTimeInMinutesOnCall",
getElement: (item: TableDataItem) => {
return (
<span>
{OneUptimeDate.getHoursAndMinutesFromMinutes(
@@ -238,7 +243,7 @@ const OnCallPolicyLogTable: FunctionComponent<ComponentProps> = (
)}
</span>
);
}
},
},
]}
/>

View File

@@ -58,7 +58,6 @@ const DashboardSideMenu: () => JSX.Element = (): ReactElement => {
icon={IconProp.User}
/>
<SideMenuItem
link={{
title: "Execution Logs",
@@ -72,7 +71,7 @@ const DashboardSideMenu: () => JSX.Element = (): ReactElement => {
/>
</SideMenuSection>
<SideMenuSection title="Reports">
<SideMenuItem
<SideMenuItem
link={{
title: "User On Call Time",
to: RouteUtil.populateRouteParams(

View File

@@ -74,7 +74,7 @@ export default class StartOnCallUserTimeLog extends DataMigrationBase {
for (const escalationRule of escalationRulesForTeams) {
// get users in team.
const users: Array<User> = await TeamMemberService.getUsersInTeam(
escalationRule.teamId!
escalationRule.teamId!,
);
for (const user of users) {