A sine wave is kind of boring, so perhaps some real data would be
              more interesting. We will use the IRIS
       
        FDSNWS dataselect
       
       web service to grab some actual seismic data. Seisplotjs's util
              module has some helper functions to create
       
        Luxon
       
       Intervals from any combination of start, end and duration. The
              parameters for the
       
        DataSelectQuery
       
       match those listed in the
       
        fdsnws-dataselect
       
       specification, along with some functions that can set multiple
              parameters at once, such a timeRange. This example only uses the
              simple
       
        GET
       
       style query, and so is limited to a single channel (maybe
              wildcarded) and single time range.
       
        DataSelectQuery
       
       also supports the
       
        POST
       
       style query that allows many channel-time range pairs to be
              requested at once.
      
import * as sp from "../seisplotjs_3.1.5-SNAPSHOT_standalone.mjs";
sp.util.updateVersionText(".sp_version");
let timeWindow = sp.util.startDuration("2019-07-06T03:19:53Z", 1800);
let dsQuery = new sp.fdsndataselect.DataSelectQuery();
dsQuery
  .networkCode("CO")
  .stationCode("HODGE")
  .locationCode("00")
  .channelCode("LH?")
  .timeRange(timeWindow);
       One important difference here is that, unlike the previous
              example, getting data remotely is inherently an asynchronous
              operation, and so rather than return seismograms, the
       
        querySeismograms()
       
       method returns a
       
        Promise
       
       . The
       
        then()
       
       method of the promise, effectively a callback, is executed
       
        after
       
       the request returns. Since we know these seismograms are from the
              same station and earthquake, we can plot them all overlayed in a
              single seismograph.
      
dsQuery
  .querySeismograms()
  .then((seisArray) => {
    const div = document.querySelector("div#myseismograph");
    let seisConfig = new sp.seismographconfig.SeismographConfig();
    let seisData = [];
    for (let s of seisArray) {
      seisData.push(sp.seismogram.SeismogramDisplayData.fromSeismogram(s));
    }
    let graph = new sp.seismograph.Seismograph(seisData, seisConfig);
    div.appendChild(graph);
  })
  .catch(function (error) {
    const div = document.querySelector("div#myseismograph");
    div.innerHTML = `
      <p>Error loading data. ${error}</p>
    `;
    console.assert(false, error);
  });
Previous: Sine wave
Next: Quakes and Channels