allow users to set coordinate display type (#141)

This commit is contained in:
MaysWind
2025-05-27 01:01:55 +08:00
parent e338c7190d
commit 626d3895aa
36 changed files with 516 additions and 144 deletions
+25 -9
View File
@@ -1,6 +1,6 @@
import type { PartialRecord } from '@/core/base.ts';
import type { YearMonth, StartEndTime } from '@/core/datetime.ts';
import type { MapPosition } from '@/core/map.ts';
import { type Coordinate, getNormalizedCoordinate } from '@/core/coordinate.ts';
import { TransactionType } from '@/core/transaction.ts';
import { Account, type AccountInfoResponse } from './account.ts';
@@ -74,7 +74,7 @@ export class Transaction implements TransactionInfoResponse {
}
public set geoLocation(value: MapPosition) {
public set geoLocation(value: Coordinate) {
this._geoLocation = TransactionGeoLocation.of(value);
}
@@ -196,8 +196,20 @@ export class Transaction implements TransactionInfoResponse {
this._pictures = [];
}
public setGeoLocation(geoLocation?: TransactionGeoLocation): void {
this._geoLocation = geoLocation;
public getNormalizedGeoLocation(): Coordinate | undefined {
if (!this._geoLocation) {
return undefined;
}
return this._geoLocation.toNormalizedCoordinate();
}
public setGeoLocation(geoLocation?: Coordinate): void {
if (geoLocation) {
this._geoLocation = TransactionGeoLocation.createNewGeoLocation(geoLocation.latitude, geoLocation.longitude);
} else {
this._geoLocation = undefined;
}
}
public setLatitudeAndLongitude(latitude: number, longitude: number): void {
@@ -228,7 +240,7 @@ export class Transaction implements TransactionInfoResponse {
tagIds: this.tagIds,
pictureIds: this.getPictureIds(),
comment: this.comment,
geoLocation: this.geoLocation,
geoLocation: this.getNormalizedGeoLocation(),
clientSessionId: clientSessionId
};
}
@@ -247,7 +259,7 @@ export class Transaction implements TransactionInfoResponse {
tagIds: this.tagIds,
pictureIds: this.getPictureIds(),
comment: this.comment,
geoLocation: this.geoLocation
geoLocation: this.getNormalizedGeoLocation()
};
}
@@ -410,8 +422,12 @@ export class TransactionGeoLocation implements TransactionGeoLocationRequest {
return new TransactionGeoLocation(latitude, longitude);
}
public static of(mapPosition: MapPosition): TransactionGeoLocation {
return new TransactionGeoLocation(mapPosition.latitude, mapPosition.longitude);
public static of(coordinate: Coordinate): TransactionGeoLocation {
return new TransactionGeoLocation(coordinate.latitude, coordinate.longitude);
}
public toNormalizedCoordinate(): Coordinate {
return getNormalizedCoordinate(this);
}
}
@@ -502,7 +518,7 @@ export interface TransactionListInMonthByPageRequest {
readonly keyword: string;
}
export type TransactionGeoLocationResponse = MapPosition;
export type TransactionGeoLocationResponse = Coordinate;
export interface TransactionInfoResponse {
readonly id: string;
+8
View File
@@ -1,6 +1,7 @@
import { LongDateFormat, ShortDateFormat, LongTimeFormat, ShortTimeFormat } from '@/core/datetime.ts';
import { DecimalSeparator, DigitGroupingSymbol, DigitGroupingType } from '@/core/numeral.ts';
import { CurrencyDisplayType } from '@/core/currency.ts';
import { CoordinateDisplayType } from '@/core/coordinate.ts';
import { PresetAmountColor } from '@/core/color.ts';
import type { LocalizedPresetCategory } from '@/core/category.ts';
import { TransactionEditScopeType } from '@/core/transaction.ts';
@@ -25,6 +26,7 @@ export class User {
public digitGroupingSymbol: number = 0;
public digitGrouping: number = 0;
public currencyDisplayType: number = 0;
public coordinateDisplayType: number = 0;
public expenseAmountColor: number = 0;
public incomeAmountColor: number = 0;
@@ -51,6 +53,7 @@ export class User {
this.digitGroupingSymbol = user.digitGroupingSymbol;
this.digitGrouping = user.digitGrouping;
this.currencyDisplayType = user.currencyDisplayType;
this.coordinateDisplayType = user.coordinateDisplayType;
this.expenseAmountColor = user.expenseAmountColor;
this.incomeAmountColor = user.incomeAmountColor;
}
@@ -87,6 +90,7 @@ export class User {
digitGroupingSymbol: this.digitGroupingSymbol,
digitGrouping: this.digitGrouping,
currencyDisplayType: this.currencyDisplayType,
coordinateDisplayType: this.coordinateDisplayType,
expenseAmountColor: this.expenseAmountColor,
incomeAmountColor: this.incomeAmountColor
};
@@ -104,6 +108,7 @@ export class User {
user.digitGroupingSymbol = userInfo.digitGroupingSymbol;
user.digitGrouping = userInfo.digitGrouping;
user.currencyDisplayType = userInfo.currencyDisplayType;
user.coordinateDisplayType = userInfo.coordinateDisplayType;
user.expenseAmountColor = userInfo.expenseAmountColor;
user.incomeAmountColor = userInfo.incomeAmountColor;
@@ -134,6 +139,7 @@ export interface UserBasicInfo {
readonly digitGroupingSymbol: number;
readonly digitGrouping: number;
readonly currencyDisplayType: number;
readonly coordinateDisplayType: number;
readonly expenseAmountColor: number;
readonly incomeAmountColor: number;
readonly emailVerified: boolean;
@@ -184,6 +190,7 @@ export interface UserProfileUpdateRequest {
readonly digitGroupingSymbol?: number;
readonly digitGrouping?: number;
readonly currencyDisplayType?: number;
readonly coordinateDisplayType?: number;
readonly expenseAmountColor?: number;
readonly incomeAmountColor?: number;
}
@@ -216,6 +223,7 @@ export const EMPTY_USER_BASIC_INFO: UserBasicInfo = {
digitGroupingSymbol: DigitGroupingSymbol.LanguageDefaultType,
digitGrouping: DigitGroupingType.LanguageDefaultType,
currencyDisplayType: CurrencyDisplayType.Default.type,
coordinateDisplayType: CoordinateDisplayType.Default.type,
expenseAmountColor: PresetAmountColor.DefaultExpenseColor.type,
incomeAmountColor: PresetAmountColor.DefaultIncomeColor.type,
emailVerified: false