Files
pupil.brain.riken.jp/src/components/DatabaseItemType.tsx
T

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;