1.1.7 • Published 9 months ago

@edsc/timeline v1.1.7

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
9 months ago

Earthdata Search Components: Timeline

npm version Build Status codecov

Try out the online demo

A React plugin implementing a timeline view of data, allowing time range selection as well as keyboard and touch interaction For a basic usage example and a testbed for changes, see example/src

The edsc-timeline plugin was developed as a component of Earthdata Search.

Installation

npm install @edsc/timeline

Usage

After installing you can use the component in your code.

import EDSCTimeline from '@edsc/timeline'

const Component = () => {
  const data = [
    {
      id: 'row1',
      title: 'Example title',
      intervals: [
        [
          new Date('2019-08-12').getTime(), // Start of the interval
          new Date('2019-12-20').getTime() // End of the interval
        ],
        [
          new Date('2020-01-04').getTime(),
          new Date('2020-05-20').getTime()
        ]
      ]
    }
  ]

  return (
    <EDSCTimeline
      data={data}
    />
  )
}

Props

PropTypeRequiredDefault ValueDescription
dataarraytrueArray of rows to be displayed on the timeline
centernumbernew Date().getTime()Center timestamp of the timeline
minZoomnumber1Minimum zoom level
maxZoomnumber5Maximum zoom level
zoomnumber3Active zoom level
temporalRangeobject{}Temporal range ({ start, end }) that is displayed on the timeline
focusedIntervalobject{}Focused interval ({ start, end }) that is displayed on the timeline
onFocusedSetfunctionCallback function that returns the focused interval when it is set
onTemporalSetfunctionCallback function that returns the temporal range when it is set
onTimelineMovefunctionCallback function called when the timeline is moved
onTimelineMoveEndfunctionCallback function called when the timeline is finished moving
onArrowKeyPanfunctionCallback function called when arrow keys are used to change the focused interval
onButtonPanfunctionCallback function called when buttons are used to change the focused interval
onButtonZoomfunctionCallback function called when buttons are used to change the zoom level
onDragPanfunctionCallback function called when the timeline is panned using dragging
onFocusedIntervalClickfunctionCallback function called when a focused interval is clicked
onScrollPanfunctionCallback function called when the mouse wheel is used to pan the timeline
onScrollZoomfunctionCallback function called when the mouse wheel is used to change the zoom level

Callback function return value

Every callback function returns this object

{
  center,
  focusedEnd,
  focusedStart,
  temporalEnd,
  temporalStart,
  timelineEnd,
  timelineStart,
  zoom
}

Development

To compile:

npm install

To start the example project for local testing:

npm start

To run the Jest tests:

npm test

To run the Cypress tests:

npm run cypress:run

Contributing

See CONTRIBUTING.md

License

Copyright © 2007-2014 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.