From b9be45d1513b4df41552a46f8ea485c28d4239f5 Mon Sep 17 00:00:00 2001 From: Aries Date: Wed, 12 Mar 2025 12:01:31 +0800 Subject: [PATCH] display location column (#7569) Co-authored-by: zhouwenxuan --- .../components/cell-formatter/geolocation.js | 8 +++- .../components/cell-formatter/index.js | 3 +- .../src/metadata/constants/column/common.js | 1 - .../src/metadata/constants/column/private.js | 1 - frontend/src/metadata/hooks/metadata-view.js | 40 ++++++++++++++----- 5 files changed, 39 insertions(+), 14 deletions(-) diff --git a/frontend/src/metadata/components/cell-formatter/geolocation.js b/frontend/src/metadata/components/cell-formatter/geolocation.js index b61c642d8c..970cddf479 100644 --- a/frontend/src/metadata/components/cell-formatter/geolocation.js +++ b/frontend/src/metadata/components/cell-formatter/geolocation.js @@ -3,11 +3,15 @@ import PropTypes from 'prop-types'; import classnames from 'classnames'; import { getGeolocationDisplayString } from '../../utils/cell/column/geolocation'; -const GeolocationFormatter = ({ isBaiduMap, format, value, children: emptyFormatter, className, hyphen = ' ' }) => { +const GeolocationFormatter = ({ isBaiduMap, format, value, children: emptyFormatter, className, hyphen = ' ', record }) => { const displayValue = useMemo(() => { if (typeof value !== 'object') return null; + const translatedLocation = record._location_translated; + if (translatedLocation && translatedLocation.address) { + return translatedLocation.address; + } return getGeolocationDisplayString(value, { geo_format: format }, { isBaiduMap, hyphen }); - }, [value, format, isBaiduMap, hyphen]); + }, [value, format, isBaiduMap, hyphen, record]); if (!displayValue) return emptyFormatter || null; return ( diff --git a/frontend/src/metadata/components/cell-formatter/index.js b/frontend/src/metadata/components/cell-formatter/index.js index 9907b96814..c5560ea431 100644 --- a/frontend/src/metadata/components/cell-formatter/index.js +++ b/frontend/src/metadata/components/cell-formatter/index.js @@ -17,8 +17,9 @@ const CellFormatter = ({ readonly, value, field, record, ...params }) => { value, field, queryUserAPI: queryUser, + record, }; - }, [readonly, value, field, collaborators, collaboratorsCache, updateCollaboratorsCache, queryUser]); + }, [readonly, value, field, collaborators, collaboratorsCache, updateCollaboratorsCache, queryUser, record]); const { tagsData } = useTags(); if (field.type === CellType.FILE_NAME) { diff --git a/frontend/src/metadata/constants/column/common.js b/frontend/src/metadata/constants/column/common.js index d67f35051f..ff0cd7d36b 100644 --- a/frontend/src/metadata/constants/column/common.js +++ b/frontend/src/metadata/constants/column/common.js @@ -8,7 +8,6 @@ export const NOT_DISPLAY_COLUMN_KEYS = [ PRIVATE_COLUMN_KEY.LAST_MODIFIER, PRIVATE_COLUMN_KEY.OBJ_ID, PRIVATE_COLUMN_KEY.FILE_DETAILS, - PRIVATE_COLUMN_KEY.LOCATION, PRIVATE_COLUMN_KEY.IS_DIR, PRIVATE_COLUMN_KEY.FACE_LINKS, PRIVATE_COLUMN_KEY.EXCLUDED_FACE_LINKS, diff --git a/frontend/src/metadata/constants/column/private.js b/frontend/src/metadata/constants/column/private.js index 1eb5401aef..98be13afd9 100644 --- a/frontend/src/metadata/constants/column/private.js +++ b/frontend/src/metadata/constants/column/private.js @@ -111,7 +111,6 @@ export const DELETABLE_PRIVATE_COLUMN_KEY = [ PRIVATE_COLUMN_KEY.FILE_REVIEWER, PRIVATE_COLUMN_KEY.FILE_EXPIRE_TIME, PRIVATE_COLUMN_KEY.FILE_KEYWORDS, - PRIVATE_COLUMN_KEY.FILE_DESCRIPTION, PRIVATE_COLUMN_KEY.FILE_EXPIRED, PRIVATE_COLUMN_KEY.FILE_STATUS, PRIVATE_COLUMN_KEY.CAPTURE_TIME, diff --git a/frontend/src/metadata/hooks/metadata-view.js b/frontend/src/metadata/hooks/metadata-view.js index 52e9ffdd21..0ef52243ce 100644 --- a/frontend/src/metadata/hooks/metadata-view.js +++ b/frontend/src/metadata/hooks/metadata-view.js @@ -305,21 +305,43 @@ export const MetadataViewProvider = ({ const recordIds = records.map(record => getRecordIdFromRecord(record)); extractFilesDetails(recordObjIds, { success_callback: ({ details }) => { - const captureColumn = getColumnByKey(metadata.columns, PRIVATE_COLUMN_KEY.CAPTURE_TIME); - if (!captureColumn) return; let idOldRecordData = {}; let idOriginalOldRecordData = {}; - const captureColumnKey = PRIVATE_COLUMN_KEY.CAPTURE_TIME; - records.forEach(record => { - idOldRecordData[record[PRIVATE_COLUMN_KEY.ID]] = { [captureColumnKey]: record[captureColumnKey] }; - idOriginalOldRecordData[record[PRIVATE_COLUMN_KEY.ID]] = { [captureColumnKey]: record[captureColumnKey] }; - }); let idRecordUpdates = {}; let idOriginalRecordUpdates = {}; + const captureColumnKey = PRIVATE_COLUMN_KEY.CAPTURE_TIME; + const captureColumn = getColumnByKey(metadata.columns, PRIVATE_COLUMN_KEY.CAPTURE_TIME); + const locationColumnKey = PRIVATE_COLUMN_KEY.LOCATION; + const locationColumn = getColumnByKey(metadata.columns, PRIVATE_COLUMN_KEY.LOCATION); + records.forEach(record => { + const recordId = record[PRIVATE_COLUMN_KEY.ID]; + idOldRecordData[recordId] = {}; + idOriginalOldRecordData[recordId] = {}; + + if (captureColumn) { + idOldRecordData[recordId][captureColumnKey] = record[captureColumnKey]; + idOriginalOldRecordData[recordId][captureColumnKey] = record[captureColumnKey]; + } + + if (locationColumn) { + idOldRecordData[recordId][locationColumnKey] = record[locationColumnKey]; + idOriginalOldRecordData[recordId][locationColumnKey] = record[locationColumnKey]; + } + }); details.forEach(detail => { const updateRecordId = detail[PRIVATE_COLUMN_KEY.ID]; - idRecordUpdates[updateRecordId] = { [captureColumnKey]: detail[captureColumnKey] }; - idOriginalRecordUpdates[updateRecordId] = { [captureColumnKey]: detail[captureColumnKey] }; + idRecordUpdates[updateRecordId] = {}; + idOriginalRecordUpdates[updateRecordId] = {}; + + if (captureColumn) { + idRecordUpdates[updateRecordId][captureColumnKey] = detail[captureColumnKey]; + idOriginalRecordUpdates[updateRecordId][captureColumnKey] = detail[captureColumnKey]; + } + + if (locationColumn) { + idRecordUpdates[updateRecordId][locationColumnKey] = detail[locationColumnKey]; + idOriginalRecordUpdates[updateRecordId][locationColumnKey] = detail[locationColumnKey]; + } }); modifyRecords({ recordIds, idRecordUpdates, idOriginalRecordUpdates, idOldRecordData, idOriginalOldRecordData }); }