UNPKG

vitessce

Version:

Vitessce app and React component library

44 lines (37 loc) 1.64 kB
import cellSetsSchema from '../schemas/cell-sets.schema.json'; import JsonLoader from './JsonLoader'; import { tryUpgradeTreeToLatestSchema } from '../components/sets/io'; import { AbstractLoaderError } from './errors'; import LoaderResult from './LoaderResult'; import { initializeCellSetColor } from '../components/sets/cell-set-utils'; export default class CellSetsJsonLoader extends JsonLoader { constructor(dataSource, params) { super(dataSource, params); this.schema = cellSetsSchema; } async load() { const payload = await super.load().catch(reason => Promise.resolve(reason)); if (payload instanceof AbstractLoaderError) { return Promise.reject(payload); } const { data: rawData, url } = payload; const upgradedData = tryUpgradeTreeToLatestSchema(rawData, 'cell'); const coordinationValues = { cellSetSelection: [], cellSetColor: [], }; // Set up the initial coordination values. if (upgradedData && upgradedData.tree.length >= 1) { const { tree } = upgradedData; const newAutoSetSelectionParentName = tree[0].name; // Create a list of set paths to initally select. const newAutoSetSelections = tree[0].children .map(node => ([newAutoSetSelectionParentName, node.name])); // Create a list of cell set objects with color mappings. const newAutoSetColors = initializeCellSetColor(upgradedData, []); coordinationValues.cellSetSelection = newAutoSetSelections; coordinationValues.cellSetColor = newAutoSetColors; } return Promise.resolve(new LoaderResult(upgradedData, url, coordinationValues)); } }