diff --git a/nomad-front-end/src/store/reducers/NMRium.js b/nomad-front-end/src/store/reducers/NMRium.js index 1453939..a1ad522 100644 --- a/nomad-front-end/src/store/reducers/NMRium.js +++ b/nomad-front-end/src/store/reducers/NMRium.js @@ -1,14 +1,15 @@ import { Modal } from 'antd' import * as actionTypes from '../actions/actionTypes' +import { nmriumDataVersion } from '../../utils/nmriumUtils' import history from '../../utils/history' const initialState = { nmriumState: { data: { spectra: [] }, - version: 7 + version: nmriumDataVersion }, - changedData: { data: { spectra: [] }, version: 7 }, + changedData: { data: { spectra: [] }, version: nmriumDataVersion }, spinning: false, adding: false, showFidsModal: false, @@ -72,8 +73,8 @@ const reducer = (state = initialState, { type, payload }) => { case actionTypes.RESET_NMRIUM_DATA: return { ...state, - nmriumState: { data: { spectra: [] }, version: 7 }, - changedData: { data: { spectra: [] }, version: 7 }, + nmriumState: { data: { spectra: [] }, version: nmriumDataVersion }, + changedData: { data: { spectra: [] }, version: nmriumDataVersion }, datasetMeta: { id: null } } diff --git a/nomad-front-end/src/utils/nmriumUtils.js b/nomad-front-end/src/utils/nmriumUtils.js index f722679..58b8a88 100644 --- a/nomad-front-end/src/utils/nmriumUtils.js +++ b/nomad-front-end/src/utils/nmriumUtils.js @@ -11,3 +11,5 @@ export const skimNMRiumdata = input => { delete output.view return output } + +export const nmriumDataVersion = 7 diff --git a/nomad-rest-api/controllers/data.js b/nomad-rest-api/controllers/data.js index 1f90ec4..2ae8b45 100644 --- a/nomad-rest-api/controllers/data.js +++ b/nomad-rest-api/controllers/data.js @@ -12,7 +12,7 @@ import Group from '../models/group.js' import User from '../models/user.js' import Instrument from '../models/instrument.js' import { getIO } from '../socket.js' -import { getNMRiumDataObj } from '../utils/nmriumUtils.js' +import { getNMRiumDataObj, nmriumDataVersion } from '../utils/nmriumUtils.js' import { getGrantInfo } from '../utils/accountsUtils.js' export const postData = async (req, res) => { @@ -123,7 +123,7 @@ export const getNMRium = async (req, res) => { const expIds = req.query.exps.split(',') const { dataType } = req.query - let responseData = { version: 7, data: { spectra: [] } } + let responseData = { version: nmriumDataVersion, data: { spectra: [] } } try { await Promise.all( @@ -320,7 +320,7 @@ export const getExpsFromDatasets = async (req, res) => { }) ) - const responseData = { version: 7, data: { spectra: newSpectraArray } } + const responseData = { version: nmriumDataVersion, data: { spectra: newSpectraArray } } const respDataJSON = JSON.stringify(responseData, (k, v) => ArrayBuffer.isView(v) ? Array.from(v) : v diff --git a/nomad-rest-api/controllers/datasets.js b/nomad-rest-api/controllers/datasets.js index 3e23f32..7d66e29 100644 --- a/nomad-rest-api/controllers/datasets.js +++ b/nomad-rest-api/controllers/datasets.js @@ -11,7 +11,7 @@ import Dataset from '../models/dataset.js' import Experiment from '../models/experiment.js' import ManualExperiment from '../models/manualExperiment.js' import Collection from '../models/collection.js' -import { getNMRiumDataObj } from '../utils/nmriumUtils.js' +import { getNMRiumDataObj, nmriumDataVersion } from '../utils/nmriumUtils.js' import zipDataset from '../utils/zipDataset.js' export const postDataset = async (req, res) => { @@ -79,6 +79,14 @@ export const getDataset = async (req, res) => { i.data = nmriumDataObj.spectra[0].data i.meta = nmriumDataObj.spectra[0].meta + + //contourOptions stored in DB by older NMRium is not compatible with version 7 data format + // if deleted NMRium generates contours from scratch like for freshly parsed experiments + + if (i.display.dimension === 2 && dataset.nmriumData.version < 7) { + delete i.display.contourOptions + } + return Promise.resolve(i) }) ) @@ -96,7 +104,8 @@ export const getDataset = async (req, res) => { nmriumData: dataset.nmriumData } - respObj.nmriumData.version = 7 + //version of NMRium data format has to be in sync with nmr-load-save parser + respObj.nmriumData.version = nmriumDataVersion const respJSON = JSON.stringify(respObj, (k, v) => (ArrayBuffer.isView(v) ? Array.from(v) : v)) //.json can't be used as we already convert object to json above using custom function diff --git a/nomad-rest-api/utils/nmriumUtils.js b/nomad-rest-api/utils/nmriumUtils.js index 6b53679..5741fac 100644 --- a/nomad-rest-api/utils/nmriumUtils.js +++ b/nomad-rest-api/utils/nmriumUtils.js @@ -14,9 +14,11 @@ export const getNMRiumDataObj = async (dataPath, title, fid) => { const nmriumObj = await read(fileCollection) //If nmr-load-save is updated you can check version of nmrium object here - // and then update data.js controller and NMRium.js reducer in frontend + //console.log(nmriumObj) + //then update nmriumDataVersion export from this file and also frontend nmriumUtils file + const newSpectraArr = nmriumObj.nmriumState.data.spectra .filter(i => (fid ? !i.info.isFt : i.info.isFt)) .map(i => { @@ -26,6 +28,7 @@ export const getNMRiumDataObj = async (dataPath, title, fid) => { }) nmriumObj.nmriumState.data.spectra = [...newSpectraArr] + return Promise.resolve(nmriumObj.nmriumState.data) } catch (error) { Promise.reject(error) @@ -57,3 +60,5 @@ export const validateNMRiumData = input => { }) ) } + +export const nmriumDataVersion = 7