Skip to content

Commit cbf96ef

Browse files
authored
feat(metadata-views): Update metadata columns prop type in metadata view (#1666)
1 parent ae23f01 commit cbf96ef

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

src/common/types/metadataQueries.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ type MetadataQuery = {
3131
query_params: Object,
3232
};
3333

34-
type MetadataColumnsToShow = Array<string>;
34+
type MetadataColumnConfig = {
35+
canEdit?: boolean,
36+
name: string,
37+
};
38+
39+
type MetadataColumnsToShow = Array<MetadataColumnConfig | string>;
3540

3641
type FlattenedMetadataQueryResponseEntryMetadata = {
3742
data?: StringAnyMap,
@@ -66,6 +71,7 @@ export type {
6671
FlattenedMetadataQueryResponseCollection,
6772
FlattenedMetadataQueryResponseEntry,
6873
FlattenedMetadataQueryResponseEntryMetadata,
74+
MetadataColumnConfig,
6975
MetadataColumnsToShow,
7076
MetadataQuery,
7177
MetadataQueryOrderByClause,

src/features/metadata-based-view/MetadataBasedItemList.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import './MetadataBasedItemList.scss';
1515
import type {
1616
FlattenedMetadataQueryResponseCollection,
1717
FlattenedMetadataQueryResponseEntry,
18+
MetadataColumnConfig,
19+
MetadataColumnsToShow,
1820
} from '../../common/types/metadataQueries';
1921

2022
const FILE_ICON_COLUMN_INDEX = 0;
@@ -34,7 +36,7 @@ type State = {
3436
type Props = {
3537
currentCollection: FlattenedMetadataQueryResponseCollection,
3638
intl: IntlShape,
37-
metadataColumnsToShow: Array<string>,
39+
metadataColumnsToShow: MetadataColumnsToShow,
3840
onItemClick: FlattenedMetadataQueryResponseEntry => void,
3941
} & InjectIntlProvidedProps;
4042

@@ -58,6 +60,10 @@ class MetadataBasedItemList extends React.Component<Props, State> {
5860
};
5961
}
6062

63+
getMetadataColumnName(column: MetadataColumnConfig | string): string {
64+
return typeof column === 'string' ? column : getProp(column, 'name');
65+
}
66+
6167
getColumnWidth(width: number): ColumnWidthCallback {
6268
const { metadataColumnsToShow }: Props = this.props;
6369

@@ -111,7 +117,9 @@ class MetadataBasedItemList extends React.Component<Props, State> {
111117
break;
112118
default: {
113119
const data = getProp(item, 'metadata.data', {});
114-
const mdFieldName = metadataColumnsToShow[columnIndex - FIXED_COLUMNS_NUMBER];
120+
const mdFieldName = this.getMetadataColumnName(
121+
metadataColumnsToShow[columnIndex - FIXED_COLUMNS_NUMBER],
122+
);
115123
cellData = data[mdFieldName];
116124
}
117125
}
@@ -129,7 +137,7 @@ class MetadataBasedItemList extends React.Component<Props, State> {
129137
}
130138

131139
if (columnIndex > FILE_NAME_COLUMN_INDEX) {
132-
headerData = metadataColumnsToShow[columnIndex - FIXED_COLUMNS_NUMBER]; // column header
140+
headerData = this.getMetadataColumnName(metadataColumnsToShow[columnIndex - FIXED_COLUMNS_NUMBER]); // column header
133141
}
134142

135143
return headerData;

src/features/metadata-based-view/__tests__/MetadataBasedItemList-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('features/metadata-based-view/MetadataBasedItemList', () => {
2929
],
3030
nextMarker: 'abc',
3131
};
32-
const metadataColumnsToShow = ['type', 'amount'];
32+
const metadataColumnsToShow = ['type', { name: 'amount', canEdit: true }];
3333

3434
const pdfNameButton = (
3535
<PlainButton onClick={onClick} type="button">

src/features/metadata-based-view/__tests__/__snapshots__/MetadataBasedItemList-test.js.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ exports[`features/metadata-based-view/MetadataBasedItemList render() should rend
3535
metadataColumnsToShow={
3636
Array [
3737
"type",
38-
"amount",
38+
Object {
39+
"canEdit": true,
40+
"name": "amount",
41+
},
3942
]
4043
}
4144
onItemClick={[MockFunction]}

0 commit comments

Comments
 (0)