/**
 * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */

import * as React from 'react'
import { ColorTheme } from 'mol-canvas3d/theme/color';
import { Color } from 'mol-util/color';

export interface ColorThemeComponentProps {
    colorTheme: ColorTheme
}

export interface ColorThemeComponentState {

}

export class ColorThemeComponent extends React.Component<ColorThemeComponentProps, ColorThemeComponentState> {
    state = {

    }

    render() {
        const ct = this.props.colorTheme
        return <div>
            <span>Color Theme </span>

            {ct.description ? <div><i>{ct.description}</i></div> : ''}
            {
                ct.legend && ct.legend.kind === 'scale-legend'
                    ? <div
                        style={{
                            width: '100%',
                            height: '30px',
                            background: `linear-gradient(to right, ${ct.legend.colors.map(c => Color.toStyle(c)).join(', ')})`
                        }}
                    >
                        <span style={{float: 'left', padding: '6px', color: 'white', fontWeight: 'bold', backgroundColor: 'rgba(0, 0, 0, 0.2)'}}>{ct.legend.minLabel}</span>
                        <span style={{float: 'right', padding: '6px', color: 'white', fontWeight: 'bold', backgroundColor: 'rgba(0, 0, 0, 0.2)'}}>{ct.legend.maxLabel}</span>
                    </div>
                : ct.legend && ct.legend.kind === 'table-legend'
                    ? <div>
                        {ct.legend.table.map((value, i) => {
                            const [name, color] = value
                            return <div key={i} style={{minWidth: '60px', marginRight: '5px', display: 'inline-block'}}>
                                <div style={{width: '30px', height: '20px', backgroundColor: Color.toStyle(color), display: 'inline-block'}}></div>
                                {name}
                            </div>
                        })}
                    </div>
                : ''
            }
        </div>;
    }
}