Skip to content

Commit

Permalink
Edit setup fixes and improvements (#520)
Browse files Browse the repository at this point in the history
* Setup new template
* Fix: #510
* Fix #480 , #479 & #481
* Update to v1.7
* Fixes for parameters and inputs
* do no show loading when no versions
* Show new config even when there's any config
* Not lazy creation
* Fixed loading forever when no setups
* Now parameters and inputs can be removed
  • Loading branch information
hvarg authored Jan 28, 2021
1 parent 3dc6e69 commit 9cc481b
Show file tree
Hide file tree
Showing 38 changed files with 2,349 additions and 6,915 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"@apollo/client": "^3.1.3",
"@babel/polyfill": "^7.10.4",
"@babel/runtime-corejs2": "^7.11.2",
"@mintproject/modelcatalog_client": "^6.0.0",
"@mintproject/modelcatalog_client": "^7.0.0",
"@polymer/app-layout": "^3.0.2",
"@polymer/polymer": "^3.1.0",
"@types/codemirror": "^0.0.78",
Expand All @@ -47,7 +47,7 @@
"subscriptions-transport-ws": "^0.9.18",
"ts-md5": "^1.2.6",
"tslib": "^1.9.3",
"weightless": "0.0.37"
"weightless": "^0.0.37"
},
"devDependencies": {
"@babel/core": "^7.11.4",
Expand Down
31 changes: 12 additions & 19 deletions src/model-catalog/dataset-specification-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,26 +75,19 @@ export const datasetSpecificationPost: ActionThunk<Promise<DatasetSpecification>
return Promise.reject(new Error('Cannot create DatasetSpecification, object has ID'));
} else {
return new Promise((resolve,reject) => {
Promise.all( (datasetSpecification.hasFixedResource || []).map((sample:SampleResource|SampleCollection) => {
return sample.type.indexOf('SampleCollection') >= 0 ?
dispatch(sampleCollectionPost(sample))
: dispatch(sampleResourcePost(sample));
})).then((samples) => {
datasetSpecification.hasFixedResource = samples;
let api : DatasetSpecificationApi = new DatasetSpecificationApi(cfg);
let req = api.datasetspecificationsPost({user: user, datasetSpecification: datasetSpecification}); // This should be my username on prod.
req.then((resp:DatasetSpecification) => {
debug('Response for POST', resp);
dispatch({
type: DATASET_SPECIFICATIONS_ADD,
payload: createIdMap(resp)
});
resolve(resp);
});
req.catch((err) => {
console.error('Error on POST DatasetSpecification', err);
reject(err);
let api : DatasetSpecificationApi = new DatasetSpecificationApi(cfg);
let req = api.datasetspecificationsPost({user: user, datasetSpecification: datasetSpecification});
req.then((resp:DatasetSpecification) => {
debug('Response for POST', resp);
dispatch({
type: DATASET_SPECIFICATIONS_ADD,
payload: createIdMap(resp)
});
resolve(resp);
});
req.catch((err) => {
console.error('Error on POST DatasetSpecification', err);
reject(err);
});
});
}
Expand Down
24 changes: 21 additions & 3 deletions src/model-catalog/model-configuration-actions.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { Action } from "redux";
import { IdMap } from 'app/reducers'
import { Configuration, ModelConfiguration, ModelConfigurationApi } from '@mintproject/modelcatalog_client';
import { ActionThunk, getIdFromUri, createIdMap, idReducer, getStatusConfigAndUser, fixObjects, getUser } from './actions';
import { Configuration, ModelConfiguration, SoftwareVersion, ModelConfigurationApi } from '@mintproject/modelcatalog_client';
import { ActionThunk, getIdFromUri, createIdMap, idReducer, getStatusConfigAndUser, fixObjects, getUser,
versionGet, versionPut } from './actions';

function debug (...args: any[]) { console.log('[MC ModelConfiguration]', ...args); }

Expand Down Expand Up @@ -87,7 +88,11 @@ export const modelConfigurationGet: ActionThunk<Promise<ModelConfiguration>, MCA
return req;
}

export const modelConfigurationPost: ActionThunk<Promise<ModelConfiguration>, MCAModelConfigurationsAdd> = (modelConfiguration:ModelConfiguration) => (dispatch) => {
export const modelConfigurationPost: ActionThunk<Promise<ModelConfiguration>, MCAModelConfigurationsAdd> =
(modelConfiguration:ModelConfiguration, version:SoftwareVersion) => (dispatch) => {
if (!version || !version.id) {
return Promise.reject(new Error('Configuration creation needs a valid software version.'));
}
let status : string, cfg : Configuration, user : string;
[status, cfg, user] = getStatusConfigAndUser();
if (status === 'DONE') {
Expand All @@ -101,6 +106,19 @@ export const modelConfigurationPost: ActionThunk<Promise<ModelConfiguration>, MC
type: MODEL_CONFIGURATIONS_ADD,
payload: createIdMap(resp)
});

// ADD Configuration to Version
dispatch(versionGet(version.id)).then((sVersion:SoftwareVersion) => {
let syncVersion : SoftwareVersion = { ...sVersion };
if (syncVersion.hasConfiguration) syncVersion.hasConfiguration.push(resp);
else syncVersion.hasConfiguration = [resp];
//FIXME: --> FIX DATES
if (syncVersion.dateCreated) delete syncVersion.dateCreated;
dispatch(versionPut(syncVersion)).then((rVersion:SoftwareVersion) => {
resolve(resp);
});
});

resolve(resp);
});
req.catch((err) => {
Expand Down
67 changes: 25 additions & 42 deletions src/model-catalog/model-configuration-setup-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import { IdMap } from 'app/reducers'
import { Configuration, ModelConfigurationSetup, ModelConfigurationSetupApi, ModelConfiguration,
ConfigurationSetupApi, Parameter, DatasetSpecification } from '@mintproject/modelcatalog_client';
import { ActionThunk, getIdFromUri, createIdMap, idReducer, getStatusConfigAndUser, fixObjects, getUser,
parameterPost, datasetSpecificationPost, modelConfigurationPut } from './actions';
modelConfigurationPut } from './actions';

function debug (...args: any[]) { }// console.log('[MC ModelConfigurationSetup]', ...args); }
function debug (...args: any[]) { console.log('[MC ModelConfigurationSetup]', ...args); }

export const MODEL_CONFIGURATION_SETUPS_ADD = "MODEL_CONFIGURATION_SETUPS_ADD";
export const MODEL_CONFIGURATION_SETUP_DELETE = "MODEL_CONFIGURATION_SETUP_DELETE";
Expand Down Expand Up @@ -76,50 +76,33 @@ export const modelConfigurationSetupPost: ActionThunk<Promise<ModelConfiguration
return Promise.reject(new Error('Cannot create ModelConfigurationSetup, object has ID'));
} else {
return new Promise((resolve,reject) => {
// Parameters
let paramProm : Promise<Parameter>[] = modelConfigurationSetup.hasParameter
.map((parameter: Parameter) => dispatch(parameterPost(parameter)));
Promise.all(paramProm).then((parameters:Parameter[]) => {
modelConfigurationSetup.hasParameter = parameters;
modelConfigurationSetup.adjustableParameter = parameters.filter(p => p["isAdjustable"]);
});
// Check adjustable parameters.
if (modelConfigurationSetup.hasParameter)
modelConfigurationSetup.adjustableParameter = modelConfigurationSetup.hasParameter
.filter((p:Parameter) => (p && (!p.hasFixedValue || p.hasFixedValue.length === 0)));
let api : ModelConfigurationSetupApi = new ModelConfigurationSetupApi(cfg);
let req = api.modelconfigurationsetupsPost({user: user, modelConfigurationSetup: modelConfigurationSetup});
req.then((resp:ModelConfigurationSetup) => {
debug('Response for POST', resp);
dispatch({
type: MODEL_CONFIGURATION_SETUPS_ADD,
payload: createIdMap(resp)
});

//Inputs
let dsProm : Promise<DatasetSpecification>[] = modelConfigurationSetup.hasInput
.map((input:DatasetSpecification) => dispatch(datasetSpecificationPost(input)));
Promise.all(dsProm).then((dss:DatasetSpecification[]) => {
modelConfigurationSetup.hasInput = dss;
});
if (modelConfiguration.hasSetup) {
modelConfiguration.hasSetup.push(resp)
} else {
modelConfiguration.hasSetup = [resp]
}

Promise.all(paramProm.concat(dsProm)).then((v) => {
modelConfigurationSetup.hasOutput = fixObjects(modelConfigurationSetup.hasOutput);
//Create setup and update config
let api : ModelConfigurationSetupApi = new ModelConfigurationSetupApi(cfg);
let req = api.modelconfigurationsetupsPost({user: user, modelConfigurationSetup: modelConfigurationSetup});
req.then((resp:ModelConfigurationSetup) => {
debug('Response for POST', resp);
dispatch({
type: MODEL_CONFIGURATION_SETUPS_ADD,
payload: createIdMap(resp)
});

if (modelConfiguration.hasSetup) {
modelConfiguration.hasSetup.push(resp)
} else {
modelConfiguration.hasSetup = [resp]
}

dispatch(modelConfigurationPut(modelConfiguration)).then((v) => {
resolve(resp);
});
});
req.catch((err) => {
console.error('Error on POST ModelConfiguration', err);
reject(err);
dispatch(modelConfigurationPut(modelConfiguration)).then((v) => {
resolve(resp);
});

});

req.catch((err) => {
console.error('Error on POST ModelConfiguration', err);
reject(err);
});
});
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/model-catalog/numerical-index-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export const numericalIndexsGet: ActionThunk<Promise<IdMap<NumericalIndex>>, MCA
debug('Fetching all');
let api : NumericalIndexApi = new NumericalIndexApi();
numericalIndexsPromise = new Promise((resolve, reject) => {
let req : Promise<NumericalIndex[]> = api.numericalindexsGet({username: getUser()});
let req : Promise<NumericalIndex[]> = api.numericalindexsGet({username: getUser(), perPage:200});
req.then((resp:NumericalIndex[]) => {
let data = resp.reduce(idReducer, {}) as IdMap<NumericalIndex>
dispatch({
Expand Down
2 changes: 1 addition & 1 deletion src/model-catalog/standard-variable-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export const standardVariablesGet: ActionThunk<Promise<IdMap<StandardVariable>>,
debug('Fetching all');
let api : StandardVariableApi = new StandardVariableApi();
standardVariablesPromise = new Promise((resolve, reject) => {
let req : Promise<StandardVariable[]> = api.standardvariablesGet({username: getUser()});
let req : Promise<StandardVariable[]> = api.standardvariablesGet({username: getUser(), perPage: 200});
req.then((resp:StandardVariable[]) => {
let data = resp.reduce(idReducer, {}) as IdMap<StandardVariable>
dispatch({
Expand Down
2 changes: 1 addition & 1 deletion src/model-catalog/variable-presentation-actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const variablePresentationsGet: ActionThunk<Promise<IdMap<VariablePresent
debug('Fetching all');
let api : VariablePresentationApi = new VariablePresentationApi();
variablePresentationsPromise = new Promise((resolve, reject) => {
let req : Promise<VariablePresentation[]> = api.variablepresentationsGet({username: getUser()});
let req : Promise<VariablePresentation[]> = api.variablepresentationsGet({username: getUser(), perPage:200});
req.then((resp:VariablePresentation[]) => {
let data = resp.reduce(idReducer, {}) as IdMap<VariablePresentation>
dispatch({
Expand Down
Loading

0 comments on commit 9cc481b

Please sign in to comment.