import React from 'react'; import ng from 'core/services/ng'; import {IDesk, IStage, IUser} from 'superdesk-api'; import {HeaderComponent} from './components/HeaderComponent'; import {OverviewComponent} from './components/OverviewComponent'; import {UsersComponent} from './components/UsersComponent'; import {AssignmentsComponent} from './components/AssignmentsComponent'; import {PreviewComponent} from './components/PreviewComponent'; import {FilterPanelComponent} from './components/FilterPanelComponent'; import {FilterBarComponent} from './components/FilterBarComponent'; import {assertNever} from 'core/helpers/typescript-helpers'; import {gettext} from 'core/utils'; import {appConfig} from 'appConfig'; import UserActivityWidget from 'apps/dashboard/user-activity/components/UserActivityWidget'; export enum IMasterDeskTab { overview = 'overview', users = 'users', assignments = 'assignments', } export const USER_PREFERENCE_SETTINGS = 'masterdesk:desks'; export function getLabelForMasterDeskTab(tab: IMasterDeskTab): string { switch (tab) { case IMasterDeskTab.overview: return gettext('Overview'); case IMasterDeskTab.users: return gettext('Users'); case IMasterDeskTab.assignments: return gettext('Assignments'); default: return assertNever(tab); } } interface IState { desks: Array; stages: Array; currentTab: IMasterDeskTab; filterOpen: boolean; activeUser: IUser; planning: boolean; deskFilter: string; filters: any; } export class MasterDesk extends React.Component<{}, IState> { services: any; constructor(props: {}) { super(props); this.state = { currentTab: IMasterDeskTab.overview, filterOpen: false, desks: [], stages: [], activeUser: null, planning: false, deskFilter: '', filters: {}, }; this.services = { desks: ng.get('desks'), preferences: ng.get('preferencesService'), }; } componentDidMount() { this.services.preferences.get(USER_PREFERENCE_SETTINGS).then((desks) => { desks && (desks.showAllDesks || desks.showAllDesks === undefined) ? this.getDeskList() : this.getDeskList(desks.items); }); if (appConfig?.apps?.includes('superdesk-planning')) { this.setState({planning: true}); } } getDeskList(enabledDeskIds?: Array, showAll?: boolean) { const desks = this.services.desks; desks.initialize().then(() => { this.setState({stages: desks.deskStages}); let filteredDesks; enabledDeskIds && !showAll ? filteredDesks = desks.desks._items.filter((item) => enabledDeskIds.includes(item._id)) : filteredDesks = desks.desks._items; this.setState({desks: filteredDesks}); }); } isFilterAllowed() { return this.state.currentTab === IMasterDeskTab.overview; } render() { return (
this.setState({currentTab: tab})} onUpdateDeskList={(desks, showAll) => this.getDeskList(desks, showAll)} onFilterOpen={(filter) => this.setState({filterOpen: filter})} /> {this.isFilterAllowed() ? ( this.setState({deskFilter: desk})} onFilterChange={(filters) => this.setState({filters: filters})} /> ) : null}
{this.isFilterAllowed() ? ( this.setState({filters: filters})} /> ) : null}
{(() => { switch (this.state.currentTab) { case IMasterDeskTab.overview: return ( this.setState({filters: filters})} /> ); case IMasterDeskTab.users: return ( this.setState({activeUser: user})} /> ); case IMasterDeskTab.assignments: return ( ); default: return assertNever(this.state.currentTab); } })()}
{this.state.activeUser ? ( this.setState({activeUser: null})}> this.setState({activeUser: user})} /> ) : null}
); } }