aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/newlightbox/Header/LightboxHeader.tsx
blob: 76efe018573de241611b5020d5d2d1759bfa9910 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import { Button, IconButton, Size, Type } from 'browndash-components';
import * as React from 'react';
import { BsBookmark, BsBookmarkFill } from 'react-icons/bs';
import { MdTravelExplore } from 'react-icons/md';
import { Doc } from '../../../../fields/Doc';
import { StrCast } from '../../../../fields/Types';
import { LightboxView } from '../../LightboxView';
import { Colors } from '../../global/globalEnums';
import { NewLightboxView } from '../NewLightboxView';
import { EditableText } from '../components/EditableText';
import { getType } from '../utils';
import './LightboxHeader.scss';
import { INewLightboxHeader } from './utils';

export const NewLightboxHeader = (props: INewLightboxHeader) => {
    const { height = 100, width } = props;
    const [doc, setDoc] = React.useState<Doc | undefined>(LightboxView.LightboxDoc);
    const [editing, setEditing] = React.useState<boolean>(false);
    const [title, setTitle] = React.useState<JSX.Element | null>(null);
    React.useEffect(() => {
        let lbDoc = LightboxView.LightboxDoc;
        setDoc(lbDoc);
        if (lbDoc) {
            setTitle(
                <EditableText
                    editing={editing}
                    text={StrCast(lbDoc.title)}
                    onEdit={(newText: string) => {
                        if (lbDoc) lbDoc.title = newText;
                    }}
                    setEditing={setEditing}
                />
            );
        }
    }, [LightboxView.LightboxDoc]);

    const [saved, setSaved] = React.useState<boolean>(false);

    if (!doc) return null;
    else
        return (
            <div className={`newLightboxHeader-container`} onPointerDown={e => e.stopPropagation()} style={{ minHeight: height, height: height, width: width }}>
                <div className={`title-container`}>
                    <div className={`lb-label`}>Title</div>
                    {title}
                </div>
                <div className={`type-container`}>
                    <div className={`lb-label`}>Type</div>
                    <div className={`type`}>{getType(StrCast(doc.type))}</div>
                </div>
                <div style={{ gridColumn: 2, gridRow: 1, height: '100%', display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}>
                    <IconButton size={Size.XSMALL} onClick={() => setSaved(!saved)} color={Colors.DARK_GRAY} icon={saved ? <BsBookmarkFill /> : <BsBookmark />} />
                    <IconButton size={Size.XSMALL} onClick={() => setSaved(!saved)} color={Colors.DARK_GRAY} icon={saved ? <BsBookmarkFill /> : <BsBookmark />} />
                </div>
                <div style={{ gridColumn: 2, gridRow: 2, height: '100%', display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}>
                    <Button
                        onClick={() => {
                            console.log(NewLightboxView.ExploreMode);
                            NewLightboxView.SetExploreMode(!NewLightboxView.ExploreMode);
                        }}
                        size={Size.XSMALL}
                        color={Colors.DARK_GRAY}
                        type={Type.SEC}
                        text={'t-SNE 2D Embeddings'}
                        icon={<MdTravelExplore />}
                    />
                </div>
            </div>
        );
};