Esempio n. 1
0
 const pinnedVessels = layersData.filter(l => l.type === 'VesselTrackAnimation').map(l => ({
   title: l.title,
   hue: hexToHue(l.color),
   seriesgroup: getSeriesGroupsFromVesselURL(l.url),
   tilesetId: getTilesetFromVesselURL(l.url)
 }));
Esempio n. 2
0
function processLegacyWorkspace(data, dispatch) {
  const workspace = data;

  let startOuterDate = TIMELINE_DEFAULT_OUTER_START_DATE;
  let endOuterDate = TIMELINE_DEFAULT_OUTER_END_DATE;
  let startInnerDate = TIMELINE_DEFAULT_INNER_START_DATE;
  let endInnerDate = TIMELINE_DEFAULT_INNER_END_DATE;

  const serializedStartDate = workspace.state.time.__jsonclass__;

  if (serializedStartDate !== undefined && serializedStartDate[0] === 'Date' && workspace.state.timeExtent) {
    endOuterDate = new Date(serializedStartDate[1]);
    startOuterDate = new Date(endOuterDate.getTime() - workspace.state.timeExtent);
    startInnerDate = startOuterDate;
    endInnerDate = new Date(startInnerDate.getTime() + Math.min(workspace.state.timeExtent / 2, 15778476000));
  }

  dispatch({
    type: SET_INNER_TIMELINE_DATES_FROM_WORKSPACE, payload: [startInnerDate, endInnerDate]
  });

  dispatch({
    type: SET_BASEMAP, payload: workspace.basemap
  });

  const layersData = workspace.map.animations.filter(l => l.args.source.args.url).map(l => ({
    title: l.args.title,
    color: l.args.color,
    visible: l.args.visible,
    type: l.type,
    url: l.args.source.args.url
  }));
  layersData.forEach((layer) => {
    layer.id = calculateLayerId(layer);
    if (layer.type === LAYER_TYPES.Heatmap) {
      layer.tilesetId = layer.id;
    }
  });

  const layers = layersData.filter(l => l.type !== LAYER_TYPES.VesselTrackAnimation);
  const vesselLayer = layers.filter(l => l.type === LAYER_TYPES.Heatmap)[0];
  // vesselLayer.id = '849-tileset-tms';
  const tilesetUrl = vesselLayer.url;

  const rawVesselLayer = workspace.map.animations.filter(l => l.type === LAYER_TYPES.Heatmap)[0];
  const filters = uniq(rawVesselLayer.args.selections.Flags.data.category)
    .filter(flag => (Array.prototype.hasOwnProperty.call(FLAGS, flag)))
    .map(flag => ({
      flag
    }));

  const pinnedVessels = layersData.filter(l => l.type === 'VesselTrackAnimation').map(l => ({
    title: l.title,
    hue: hexToHue(l.color),
    seriesgroup: getSeriesGroupsFromVesselURL(l.url),
    tilesetId: getTilesetFromVesselURL(l.url)
  }));

  let shownVessel = null;
  if (
    rawVesselLayer.args.selections &&
    rawVesselLayer.args.selections.selected &&
    rawVesselLayer.args.selections.selected.data &&
    rawVesselLayer.args.selections.selected.data.series &&
    rawVesselLayer.args.selections.selected.data.series[0] &&
    rawVesselLayer.args.selections.selected.data.seriesgroup &&
    rawVesselLayer.args.selections.selected.data.seriesgroup[0] &&
    rawVesselLayer.args.selections.selected.data.source &&
    rawVesselLayer.args.selections.selected.data.source[0]
  ) {
    shownVessel = {
      series: rawVesselLayer.args.selections.selected.data.series[0],
      seriesgroup: rawVesselLayer.args.selections.selected.data.seriesgroup[0],
      tilesetId: getTilesetFromLayerURL(rawVesselLayer.args.selections.selected.data.source[0])
    };
  }

  return {
    zoom: workspace.state.zoom,
    center: [workspace.state.lat, workspace.state.lon],
    timelineInnerDates: [startInnerDate, endInnerDate],
    timelineOuterDates: [startOuterDate, endOuterDate],
    basemap: workspace.basemap,
    timelineSpeed: workspace.timelineSpeed,
    layers,
    pinnedVessels,
    tilesetUrl,
    shownVessel,
    filters,
    tilesetId: getTilesetFromLayerURL(tilesetUrl)
  };
}