cập nhật thông tin cảng trong modal add/edit trip, tối ưu lại UI modal add/edit trip
This commit is contained in:
@@ -52,3 +52,43 @@ export function parseFishingGroundCodes(codesString: string): number[] {
|
||||
.map((code) => parseInt(code.trim()))
|
||||
.filter((code) => !isNaN(code));
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract province codes from groups
|
||||
* @param groups - Model.GroupResponse containing groups with metadata.code
|
||||
* @returns Array of province codes
|
||||
*/
|
||||
export function getProvinceCodesFromGroups(
|
||||
groups: Model.GroupResponse | null | undefined
|
||||
): string[] {
|
||||
if (!groups?.groups) return [];
|
||||
|
||||
return groups.groups
|
||||
.map((group) => group.metadata?.code)
|
||||
.filter((code): code is string => !!code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter ports by province codes extracted from groups
|
||||
* @param ports - Model.PortResponse containing all ports
|
||||
* @param groups - Model.GroupResponse to extract province_code from metadata.code
|
||||
* @returns Filtered ports that match the province codes from groups
|
||||
*/
|
||||
export function filterPortsByProvinceCode(
|
||||
ports: Model.PortResponse | null | undefined,
|
||||
groups: Model.GroupResponse | null | undefined
|
||||
): Model.Port[] {
|
||||
if (!ports?.ports) return [];
|
||||
if (!groups?.groups) return ports.ports; // Return all ports if no groups
|
||||
|
||||
// Extract province codes from groups
|
||||
const provinceCodes = getProvinceCodesFromGroups(groups);
|
||||
|
||||
// If no province codes found, return all ports
|
||||
if (provinceCodes.length === 0) return ports.ports;
|
||||
|
||||
// Filter ports by province codes
|
||||
return ports.ports.filter(
|
||||
(port) => port.province_code && provinceCodes.includes(port.province_code)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user