Skip to content

Commit

Permalink
Merge pull request #177 from dekart-xyz/fix-layer-reorder
Browse files Browse the repository at this point in the history
Add reorderLayer action to downloadDataset function
  • Loading branch information
delfrrr committed Apr 12, 2024
2 parents 0a996d8 + 238fe68 commit 943a098
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions src/client/actions/dataset.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { CreateDatasetRequest, RemoveDatasetRequest, UpdateDatasetConnectionRequ
import { Dekart } from '../../proto/dekart_pb_service'
import { grpcCall } from './grpc'
import { downloading, setError, finishDownloading, success } from './message'
import { addDataToMap, toggleSidePanel, removeDataset as removeDatasetFromKepler } from '@dekart-xyz/kepler.gl/dist/actions'
import { addDataToMap, toggleSidePanel, removeDataset as removeDatasetFromKepler, reorderLayer } from '@dekart-xyz/kepler.gl/dist/actions'
import { processCsvData, processGeojson } from '@dekart-xyz/kepler.gl/dist/processors'
import { get } from '../lib/api'
import { KeplerGlSchema } from '@dekart-xyz/kepler.gl/dist/schemas'
Expand Down Expand Up @@ -79,14 +79,14 @@ export function removeDataset (datasetId) {
}
}

export function downloadDataset (dataset, connectionId, extension, prevDatasetsList) {
export function downloadDataset (dataset, sourceId, extension, prevDatasetsList) {
return async (dispatch, getState) => {
dispatch({ type: downloadDataset.name, dataset })
dispatch(downloading(dataset))
const { token } = getState()
let data
try {
const res = await get(`/dataset-source/${dataset.id}/${connectionId}.${extension}`, token)
const res = await get(`/dataset-source/${dataset.id}/${sourceId}.${extension}`, token)
if (extension === 'csv') {
const csv = await res.text()
data = processCsvData(csv)
Expand All @@ -100,7 +100,9 @@ export function downloadDataset (dataset, connectionId, extension, prevDatasetsL
}
const { datasets, files, queries, keplerGl } = getState()
const label = getDatasetName(dataset, queries, files)
const prevDataset = prevDatasetsList.find(d => d.id === dataset.id)
// check if dataset was already added to kepler
const addedDatasets = getState().keplerGl.kepler.visState.datasets
const prevDataset = prevDatasetsList.find(d => d.id in addedDatasets)
const i = datasets.findIndex(d => d.id === dataset.id)
if (i < 0) {
return
Expand All @@ -114,6 +116,11 @@ export function downloadDataset (dataset, connectionId, extension, prevDatasetsL
// receive config
const config = KeplerGlSchema.getConfigToSave(keplerGl.kepler)

// remember layer order, because kepler will reshuffle layers after adding dataset
const layerOrder = [].concat(getState().keplerGl.kepler.visState.layerOrder)
const layersAr = getState().keplerGl.kepler.visState.layers.map(layer => layer.id)
const layerIdOrder = layerOrder.map(id => layersAr[id])

// filter for specific dataset
config.config.visState.layers = config.config.visState.layers.filter(
layer => layer.config.dataId === dataset.id
Expand Down Expand Up @@ -147,6 +154,13 @@ export function downloadDataset (dataset, connectionId, extension, prevDatasetsL
options: { keepExistingConfig: true },
config
}))

// restore layer order
const newLayersAr = getState().keplerGl.kepler.visState.layers.map(layer => layer.id)
if (newLayersAr.length === layerIdOrder.length) {
const newOrder = layerIdOrder.map(id => newLayersAr.indexOf(id))
dispatch(reorderLayer(newOrder))
}
} else {
dispatch(addDataToMap({
datasets: {
Expand Down

0 comments on commit 943a098

Please sign in to comment.