88 lines
3.4 KiB
TypeScript
88 lines
3.4 KiB
TypeScript
import React from 'react';
|
|
import { Item, ItemBook, ItemConference, ItemData, ItemModel, ItemPaper, ItemUrl } from '../common/ItemUtil';
|
|
import DatabaseItemTypeBook from './DatabaseItemTypeBook';
|
|
import DatabaseItemTypeConference from './DatabaseItemTypeConference';
|
|
import DatabaseItemTypeData from './DatabaseItemTypeData';
|
|
import DatabaseItemTypePaper from './DatabaseItemTypePaper';
|
|
import DatabaseItemTypeModel from './DatabaseItemTypeModel';
|
|
import DatabaseItemTypeUrl from './DatabaseItemTypeUrl';
|
|
import styles from './DatabaseItemType.module.css';
|
|
|
|
class DatabaseItemType {
|
|
|
|
static Top() {
|
|
return (
|
|
<table className={styles.itemTypes}>
|
|
<tbody>
|
|
<tr>
|
|
<td className={styles.itemType}>
|
|
<DatabaseItemTypeConference.Top />
|
|
</td>
|
|
<td className={styles.itemType}>
|
|
<DatabaseItemTypePaper.Top />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td className={styles.itemType}>
|
|
<DatabaseItemTypeBook.Top />
|
|
</td>
|
|
<td className={styles.itemType}>
|
|
<DatabaseItemTypeData.Top />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td className={styles.itemType}>
|
|
<DatabaseItemTypeModel.Top />
|
|
</td>
|
|
<td className={styles.itemType}>
|
|
<DatabaseItemTypeUrl.Top />
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
);
|
|
}
|
|
|
|
static List(props: { item: Item }) {
|
|
const item = props.item;
|
|
switch (item.item_type_name) {
|
|
case 'xnpbook':
|
|
return (<DatabaseItemTypeBook.List item={item as ItemBook} />);
|
|
case 'xnpconference':
|
|
return (<DatabaseItemTypeConference.List item={item as ItemConference} />);
|
|
case 'xnpdata':
|
|
return (<DatabaseItemTypeData.List item={item as ItemData} />);
|
|
case 'xnpmodel':
|
|
return (<DatabaseItemTypeModel.List item={item as ItemModel} />);
|
|
case 'xnppaper':
|
|
return (<DatabaseItemTypePaper.List item={item as ItemPaper} />);
|
|
case 'xnpurl':
|
|
return (<DatabaseItemTypeUrl.List item={item as ItemUrl} />);
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
static Detail(props: { item: Item }) {
|
|
const item = props.item;
|
|
switch (item.item_type_name) {
|
|
case 'xnpbook':
|
|
return (<DatabaseItemTypeBook.Detail item={item as ItemBook} />);
|
|
case 'xnpconference':
|
|
return (<DatabaseItemTypeConference.Detail item={item as ItemConference} />);
|
|
case 'xnpdata':
|
|
return (<DatabaseItemTypeData.Detail item={item as ItemData} />);
|
|
case 'xnpmodel':
|
|
return (<DatabaseItemTypeModel.Detail item={item as ItemModel} />);
|
|
case 'xnppaper':
|
|
return (<DatabaseItemTypePaper.Detail item={item as ItemPaper} />);
|
|
case 'xnpurl':
|
|
return (<DatabaseItemTypeUrl.Detail item={item as ItemUrl} />);
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
export default DatabaseItemType;
|