import React = require('react'); import { observer } from 'mobx-react'; import { Doc } from '../../../../fields/Doc'; import { CollectionSubView } from '../CollectionSubView'; import './CollectionSchemaView.scss'; import { SchemaRowBox } from './SchemaRowBox'; import { action, computed, observable } from 'mobx'; import { BoolCast, Cast, StrCast } from '../../../../fields/Types'; import { listSpec } from '../../../../fields/Schema'; import { SchemaColumnHeader } from './SchemaColumnHeader'; import { List } from '../../../../fields/List'; import { dropActionType } from '../../../util/DragManager'; export enum ColumnType { Number, String, Boolean, Doc, Image, } const defaultColumnKeys: string[] = ['title', 'type', 'author', 'text', 'data', 'tags']; @observer export class CollectionSchemaView extends CollectionSubView() { isChildContentActive = () => (this.props.isDocumentActive?.() && (this.props.childDocumentsActive?.() || BoolCast(this.rootDoc.childDocumentsActive)) ? true : undefined); @computed get layoutDoc() { return Doc.Layout(this.props.Document); } @computed get columnKeys() { return Cast(this.props.Document.columnKeys, listSpec('string'), defaultColumnKeys); } @computed get columnWidths() { return Cast( this.props.Document.columnWidths, listSpec('number'), this.columnKeys.map(() => (this.props.PanelWidth() - 100) / this.columnKeys.length) ); } @action changeColumnKey = (index: number, newKey: string) => { let currKeys = this.columnKeys; currKeys[index] = newKey; this.layoutDoc.columnKeys = new List(currKeys); return true; }; render() { return (
{this.columnKeys.map((key, index) => ( ))}
{this.childDocs.map((doc: Doc) => ( ))}
); } } function DocListCast(childDocs: Doc[]): any { throw new Error('Function not implemented.'); }