UNPKG

terriajs

Version:

Geospatial data visualization platform.

55 lines (45 loc) 1.94 kB
import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import Sortable from 'react-anything-sortable'; import WorkbenchItem from './WorkbenchItem.jsx'; import ObserveModelMixin from './../ObserveModelMixin'; import Styles from './workbench-list.scss'; import '!!style-loader!css-loader?sourceMap!react-anything-sortable/sortable.css'; import '!!style-loader!css-loader?sourceMap!./sortable.css'; const WorkbenchList = createReactClass({ displayName: 'WorkbenchList', mixins: [ObserveModelMixin], propTypes: { terria: PropTypes.object.isRequired, viewState: PropTypes.object.isRequired }, onSort(sortedArray, currentDraggingSortData, currentDraggingIndex) { let draggedItemIndex = this.props.terria.nowViewing.items.indexOf(currentDraggingSortData); const addAtIndex = currentDraggingIndex; while (draggedItemIndex < addAtIndex) { this.props.terria.nowViewing.lower(currentDraggingSortData); ++draggedItemIndex; } while (draggedItemIndex > addAtIndex) { this.props.terria.nowViewing.raise(currentDraggingSortData); --draggedItemIndex; } }, render() { return ( <ul className={Styles.workbenchContent}> <Sortable onSort={this.onSort} direction="vertical" dynamic={true}> <For each="item" of={this.props.terria.nowViewing.items}> <WorkbenchItem item={item} sortData={item} key={item.uniqueId} viewState={this.props.viewState} /> </For> </Sortable> </ul> ); }, }); module.exports = WorkbenchList;