thêm tab "Xem chi tiết chuyến đi", "Xem chi tiết thành viên chuyến đi", tái sử dụng lại components modal tripForm
This commit is contained in:
54
utils/tripDataConverters.ts
Normal file
54
utils/tripDataConverters.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import { FishingGear, TripCost } from "@/components/diary/TripFormModal";
|
||||
|
||||
/**
|
||||
* Convert Model.FishingGear[] to component format with id
|
||||
*/
|
||||
export function convertFishingGears(
|
||||
gears: Model.FishingGear[] | undefined,
|
||||
prefix: string = "gear"
|
||||
): FishingGear[] {
|
||||
if (!gears || !Array.isArray(gears)) return [];
|
||||
|
||||
return gears.map((gear, index) => ({
|
||||
id: `${prefix}-${Date.now()}-${index}`,
|
||||
name: gear.name || "",
|
||||
number: gear.number?.toString() || "",
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert Model.TripCost[] to component format with id
|
||||
*/
|
||||
export function convertTripCosts(
|
||||
costs: Model.TripCost[] | undefined,
|
||||
prefix: string = "cost"
|
||||
): TripCost[] {
|
||||
if (!costs || !Array.isArray(costs)) return [];
|
||||
|
||||
return costs.map((cost, index) => ({
|
||||
id: `${prefix}-${Date.now()}-${index}`,
|
||||
type: cost.type || "",
|
||||
amount: cost.amount || 0,
|
||||
unit: cost.unit || "",
|
||||
cost_per_unit: cost.cost_per_unit || 0,
|
||||
total_cost: cost.total_cost || 0,
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert fishing ground codes array to comma-separated string
|
||||
*/
|
||||
export function convertFishingGroundCodes(codes: number[] | undefined): string {
|
||||
if (!codes || !Array.isArray(codes)) return "";
|
||||
return codes.join(", ");
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse comma-separated string to number array
|
||||
*/
|
||||
export function parseFishingGroundCodes(codesString: string): number[] {
|
||||
return codesString
|
||||
.split(",")
|
||||
.map((code) => parseInt(code.trim()))
|
||||
.filter((code) => !isNaN(code));
|
||||
}
|
||||
Reference in New Issue
Block a user