Files
OpenMediaCenter/src/pages/ActorOverviewPage/ActorOverviewPage.tsx

66 lines
2.1 KiB
TypeScript
Raw Normal View History

2020-12-29 19:39:30 +00:00
import React from 'react';
import {APINode, callAPI} from '../../utils/Api';
import {ActorType} from '../../types/VideoTypes';
2020-12-29 19:39:30 +00:00
import ActorTile from '../../elements/ActorTile/ActorTile';
import PageTitle from '../../elements/PageTitle/PageTitle';
import SideBar from '../../elements/SideBar/SideBar';
// import style from './ActorOverviewPage.module.css';
2020-12-29 19:39:30 +00:00
import {Button} from '../../elements/GPElements/Button';
import NewActorPopup from '../../elements/Popups/NewActorPopup/NewActorPopup';
import DynamicContentContainer from '../../elements/DynamicContentContainer/DynamicContentContainer';
2020-12-29 19:39:30 +00:00
interface Props {}
2020-12-29 19:39:30 +00:00
interface state {
actors: ActorType[];
NActorPopupVisible: boolean;
2020-12-29 19:39:30 +00:00
}
class ActorOverviewPage extends React.Component<Props, state> {
constructor(props: Props) {
2020-12-29 19:39:30 +00:00
super(props);
this.state = {
actors: [],
NActorPopupVisible: false
};
}
2020-12-29 19:39:30 +00:00
componentDidMount(): void {
2020-12-29 19:39:30 +00:00
this.fetchAvailableActors();
}
render(): JSX.Element {
return (
<>
<PageTitle title='Actors' subtitle={this.state.actors.length + ' Actors'} />
2020-12-29 19:39:30 +00:00
<SideBar>
<Button title='Add Actor' onClick={(): void => this.setState({NActorPopupVisible: true})} />
2020-12-29 19:39:30 +00:00
</SideBar>
<DynamicContentContainer
renderElement={(el): JSX.Element => <ActorTile key={el.ActorId} actor={el} />}
data={this.state.actors}
initialLoadNr={36}
/>
{this.state.NActorPopupVisible ? (
<NewActorPopup
onHide={(): void => {
this.setState({NActorPopupVisible: false});
this.fetchAvailableActors(); // refetch actors
}}
/>
) : null}
2020-12-29 19:39:30 +00:00
</>
);
}
fetchAvailableActors(): void {
callAPI<ActorType[]>(APINode.Actor, {action: 'getAllActors'}, (result) => {
2020-12-29 19:39:30 +00:00
this.setState({actors: result});
});
}
}
export default ActorOverviewPage;