diff --git a/frontend/src/metadata/components/cell-formatter/file-name.js b/frontend/src/metadata/components/cell-formatter/file-name.js
index 61c4dfbc0f..968661e403 100644
--- a/frontend/src/metadata/components/cell-formatter/file-name.js
+++ b/frontend/src/metadata/components/cell-formatter/file-name.js
@@ -7,7 +7,7 @@ import { siteRoot, thumbnailDefaultSize } from '../../../utils/constants';
import { getParentDirFromRecord, getFileMTimeFromRecord } from '../../utils/cell';
import { checkIsDir } from '../../utils/row';
-const FileName = ({ record, className: propsClassName, value, onFileNameClick, ...params }) => {
+const FileName = ({ record, className: propsClassName, value, showThumbnail = true, onFileNameClick, ...params }) => {
const parentDir = useMemo(() => getParentDirFromRecord(record), [record]);
const isDir = useMemo(() => checkIsDir(record), [record]);
const className = useMemo(() => {
@@ -21,14 +21,14 @@ const FileName = ({ record, className: propsClassName, value, onFileNameClick, .
return { iconUrl: icon, defaultIconUrl: icon };
}
const defaultIconUrl = Utils.getFileIconUrl(value);
- if (Utils.imageCheck(value)) {
+ if (Utils.imageCheck(value) && showThumbnail) {
const path = Utils.encodePath(Utils.joinPath(parentDir, value));
const repoID = window.sfMetadataStore.repoId;
const thumbnail = `${siteRoot}thumbnail/${repoID}/${thumbnailDefaultSize}${path}?mtime=${getFileMTimeFromRecord(record)}`;
return { iconUrl: thumbnail, defaultIconUrl };
}
return { iconUrl: defaultIconUrl, defaultIconUrl };
- }, [isDir, value, parentDir, record]);
+ }, [isDir, value, parentDir, record, showThumbnail]);
return ();
diff --git a/frontend/src/metadata/views/card/card-items/card-item/index.css b/frontend/src/metadata/views/card/card-items/card-item/index.css
index c87bce5e34..97f72ab409 100644
--- a/frontend/src/metadata/views/card/card-items/card-item/index.css
+++ b/frontend/src/metadata/views/card/card-items/card-item/index.css
@@ -1,8 +1,9 @@
.sf-metadata-card-item {
width: 300px;
background: #f9f9f9;
- border: 1px solid #e2e2e2;
+ border: 1px solid var(--bs-border-secondary-color);
border-radius: 6px;
+ box-shadow: 0 0 3px #0000001f;
display: flex;
flex-direction: column;
overflow: hidden;
@@ -14,8 +15,7 @@
}
.sf-metadata-card-item:hover {
- background: #fff;
- box-shadow: 0 0 3px #0000002e;
+ box-shadow: 0 0 6px #0000002e;
}
.sf-metadata-card-item-image-container {
@@ -24,12 +24,23 @@
.sf-metadata-card-item-text-container {
padding: 10px;
+ background-color: var(--bs-body-bg);
}
.sf-metadata-card-item-text-container .sf-metadata-file-name {
font-weight: 500;
}
+.sf-metadata-card-item-text-container .sf-metadata-card-last-modified-info {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+}
+
+.sf-metadata-card-item-text-container .sf-metadata-card-last-modified-info .collaborator-item {
+ background-color: transparent;
+}
+
.sf-metadata-card-item .sf-metadata-card-item-field {
margin-top: 10px;
}
diff --git a/frontend/src/metadata/views/card/card-items/card-item/index.js b/frontend/src/metadata/views/card/card-items/card-item/index.js
index 2ce299f893..bb12cbcb59 100644
--- a/frontend/src/metadata/views/card/card-items/card-item/index.js
+++ b/frontend/src/metadata/views/card/card-items/card-item/index.js
@@ -19,6 +19,7 @@ const CardItem = ({
tagsData,
fileNameColumn,
mtimeColumn,
+ modifierColumn,
displayColumns,
displayEmptyValue,
displayColumnName,
@@ -30,6 +31,7 @@ const CardItem = ({
const fileNameValue = getCellValueByColumn(record, fileNameColumn);
const mtimeValue = getCellValueByColumn(record, mtimeColumn);
+ const modifierValue = getCellValueByColumn(record, modifierColumn);
// for the big image
const parentDir = useMemo(() => getParentDirFromRecord(record), [record]);
@@ -82,8 +84,11 @@ const CardItem = ({
-
-
+
+
+
+
+
{displayColumns.map((column) => {
const value = getCellValueByColumn(record, column);
if (!displayEmptyValue && !isValidCellValue(value)) {
@@ -114,8 +119,13 @@ const CardItem = ({
CardItem.propTypes = {
isSelected: PropTypes.bool,
record: PropTypes.object,
+ tagsData: PropTypes.object,
fileNameColumn: PropTypes.object,
mtimeColumn: PropTypes.object,
+ modifierColumn: PropTypes.object,
+ displayColumns: PropTypes.array,
+ displayEmptyValue: PropTypes.bool,
+ displayColumnName: PropTypes.bool,
onOpenFile: PropTypes.func.isRequired,
onSelectCard: PropTypes.func.isRequired,
onContextMenu: PropTypes.func.isRequired,
diff --git a/frontend/src/metadata/views/card/card-items/index.js b/frontend/src/metadata/views/card/card-items/index.js
index 158e7374e2..dd658465c9 100644
--- a/frontend/src/metadata/views/card/card-items/index.js
+++ b/frontend/src/metadata/views/card/card-items/index.js
@@ -2,7 +2,7 @@ import React, { useMemo, useCallback, useState, useRef, useEffect } from 'react'
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { useMetadataView } from '../../../hooks/metadata-view';
-import { CARD_SETTINGS_KEYS } from '../../../constants';
+import { CARD_SETTINGS_KEYS, PRIVATE_COLUMN_KEY } from '../../../constants';
import { gettext } from '../../../../utils/constants';
import { getRecordIdFromRecord, getFileNameFromRecord, getParentDirFromRecord } from '../../../utils/cell';
import { openFile } from '../../../utils/file';
@@ -30,11 +30,15 @@ const CardItems = ({ modifyRecord, deleteRecords, modifyColumnData, onCloseSetti
const repoInfo = window.sfMetadataContext.getSetting('repoInfo');
const fileNameColumn = useMemo(() => {
- return metadata.key_column_map['_name'];
+ return metadata.key_column_map[PRIVATE_COLUMN_KEY.FILE_NAME];
}, [metadata.key_column_map]);
const mtimeColumn = useMemo(() => {
- return metadata.key_column_map['_file_mtime'];
+ return metadata.key_column_map[PRIVATE_COLUMN_KEY.FILE_MTIME];
+ }, [metadata.key_column_map]);
+
+ const modifierColumn = useMemo(() => {
+ return metadata.key_column_map[PRIVATE_COLUMN_KEY.FILE_MODIFIER];
}, [metadata.key_column_map]);
const displayColumns = useMemo(() => {
@@ -154,6 +158,7 @@ const CardItems = ({ modifyRecord, deleteRecords, modifyColumnData, onCloseSetti
tagsData={tagsData}
fileNameColumn={fileNameColumn}
mtimeColumn={mtimeColumn}
+ modifierColumn={modifierColumn}
displayColumns={displayColumns}
displayEmptyValue={displayEmptyValue}
displayColumnName={displayColumnName}