forked from enviPath/enviPy
Current Dev State
This commit is contained in:
402
static/js/ketcher2/script/ui/data/sdata-schema.js
Normal file
402
static/js/ketcher2/script/ui/data/sdata-schema.js
Normal file
@ -0,0 +1,402 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2017 EPAM Systems
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
***************************************************************************/
|
||||
|
||||
import { mapOf } from '../utils';
|
||||
|
||||
const radioButtonsSchema = {
|
||||
enum: [
|
||||
"Absolute",
|
||||
"Relative",
|
||||
"Attached"
|
||||
],
|
||||
default: "Absolute"
|
||||
};
|
||||
|
||||
const contextSchema = {
|
||||
title: 'Context',
|
||||
enum: [
|
||||
'Fragment',
|
||||
'Multifragment',
|
||||
'Bond',
|
||||
'Atom',
|
||||
'Group'
|
||||
],
|
||||
default: 'Fragment'
|
||||
};
|
||||
|
||||
const sData = {
|
||||
Fragment: {
|
||||
title: 'Fragment',
|
||||
type: 'Object',
|
||||
oneOf: [
|
||||
{
|
||||
key: 'FRG_STR',
|
||||
title: 'MDLBG_FRAGMENT_STEREO',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: 'Field name',
|
||||
enum: ["MDLBG_FRAGMENT_STEREO"],
|
||||
default: "MDLBG_FRAGMENT_STEREO"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: 'array',
|
||||
items: {
|
||||
enum: [
|
||||
"abs",
|
||||
"(+)-enantiomer",
|
||||
"(-)-enantiomer",
|
||||
"racemate",
|
||||
"steric",
|
||||
"rel",
|
||||
"R(a)",
|
||||
"S(a)",
|
||||
"R(p)",
|
||||
"S(p)"
|
||||
]
|
||||
},
|
||||
default: ["abs"]
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
},
|
||||
{
|
||||
key: 'FRG_COEFF',
|
||||
title: 'MDLBG_FRAGMENT_COEFFICIENT',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: "Field name",
|
||||
enum: ["MDLBG_FRAGMENT_COEFFICIENT"],
|
||||
default: "MDLBG_FRAGMENT_COEFFICIENT"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: "string",
|
||||
default: "",
|
||||
minLength: 1,
|
||||
invalidMessage: "Please, specify field name"
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
},
|
||||
{
|
||||
key: 'FRG_CHRG',
|
||||
title: 'MDLBG_FRAGMENT_CHARGE',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: 'Field name',
|
||||
enum: ["MDLBG_FRAGMENT_CHARGE"],
|
||||
default: "MDLBG_FRAGMENT_CHARGE"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: "string",
|
||||
default: "",
|
||||
minLength: 1,
|
||||
invalidMessage: "Please, specify field name"
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
},
|
||||
{
|
||||
key: 'FRG_RAD',
|
||||
title: 'MDLBG_FRAGMENT_RADICALS',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: "Field name",
|
||||
enum: ["MDLBG_FRAGMENT_RADICALS"],
|
||||
default: "MDLBG_FRAGMENT_RADICALS"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: "string",
|
||||
default: "",
|
||||
minLength: 1,
|
||||
invalidMessage: "Please, specify field name"
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
},
|
||||
]
|
||||
},
|
||||
Multifragment: {
|
||||
title: 'Multifragment',
|
||||
type: 'Object',
|
||||
oneOf: [
|
||||
{
|
||||
key: 'MLT_FRG',
|
||||
title: 'KETCHER_MULTIPLE_FRAGMENT',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: 'Field name',
|
||||
enum: ["KETCHER_MULTIPLE_FRAGMENT"],
|
||||
default: "KETCHER_MULTIPLE_FRAGMENT"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: 'array',
|
||||
items: {
|
||||
enum: [
|
||||
"aerosol",
|
||||
"alloy",
|
||||
"catenane",
|
||||
"complex",
|
||||
"composite",
|
||||
"co-polymer",
|
||||
"emulsion",
|
||||
"host-guest complex",
|
||||
"mixture",
|
||||
"rotaxane",
|
||||
"suspension"
|
||||
]
|
||||
},
|
||||
default: ["aerosol"]
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
}
|
||||
]
|
||||
},
|
||||
Bond: {
|
||||
title: 'Bond',
|
||||
type: 'Object',
|
||||
oneOf: [
|
||||
{
|
||||
key: 'SB_STR',
|
||||
title: 'MDLBG_STEREO_KEY',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: "Field name",
|
||||
enum: ["MDLBG_STEREO_KEY"],
|
||||
default: "MDLBG_STEREO_KEY"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: 'array',
|
||||
items: {
|
||||
enum: [
|
||||
"erythro",
|
||||
"threo",
|
||||
"alpha",
|
||||
"beta",
|
||||
"endo",
|
||||
"exo",
|
||||
"anti",
|
||||
"syn",
|
||||
"ECL",
|
||||
"STG"
|
||||
]
|
||||
},
|
||||
default: ["erythro"]
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
},
|
||||
{
|
||||
key: 'SB_BND',
|
||||
title: 'MDLBG_BOND_KEY',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: "Field name",
|
||||
enum: ["MDLBG_BOND_KEY"],
|
||||
default: "MDLBG_BOND_KEY"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: 'array',
|
||||
items: {
|
||||
enum: [
|
||||
"Value=4"
|
||||
]
|
||||
},
|
||||
default: ["Value=4"]
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
}
|
||||
]
|
||||
},
|
||||
Atom: {
|
||||
title: 'Atom',
|
||||
type: 'Object',
|
||||
oneOf: [
|
||||
{
|
||||
key: 'AT_STR',
|
||||
title: 'MDLBG_STEREO_KEY',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: "Field name",
|
||||
enum: ["MDLBG_STEREO_KEY"],
|
||||
default: "MDLBG_STEREO_KEY"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: 'array',
|
||||
items: {
|
||||
enum: [
|
||||
"RS",
|
||||
"SR",
|
||||
"P-3",
|
||||
"P-3-PI",
|
||||
"SP-4",
|
||||
"SP-4-PI",
|
||||
"T-4",
|
||||
"T-4-PI",
|
||||
"SP-5",
|
||||
"SP-5-PI",
|
||||
"TB-5",
|
||||
"TB-5-PI",
|
||||
"OC-6",
|
||||
"TP-6",
|
||||
"PB-7",
|
||||
"CU-8",
|
||||
"SA-8",
|
||||
"DD-8",
|
||||
"HB-9",
|
||||
"TPS-9"
|
||||
],
|
||||
},
|
||||
default: ["RS"]
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
}
|
||||
]
|
||||
},
|
||||
Group: {
|
||||
title: 'Group',
|
||||
type: 'Object',
|
||||
oneOf: [
|
||||
{
|
||||
key: 'GRP_STR',
|
||||
title: 'MDLBG_STEREO_KEY',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
fieldName: {
|
||||
title: "Field name",
|
||||
enum: ["MDLBG_STEREO_KEY"],
|
||||
default: "MDLBG_STEREO_KEY"
|
||||
},
|
||||
fieldValue: {
|
||||
title: "Field value",
|
||||
type: 'array',
|
||||
items: {
|
||||
enum: [
|
||||
"cis",
|
||||
"trans"
|
||||
]
|
||||
},
|
||||
default: ["cis"]
|
||||
},
|
||||
radiobuttons: radioButtonsSchema
|
||||
},
|
||||
required: ["fieldName", "fieldValue", "radiobuttons"]
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
export const sdataCustomSchema = {
|
||||
key: 'Custom',
|
||||
properties: {
|
||||
type: { enum: ["DAT"] },
|
||||
context: {
|
||||
title: 'Context',
|
||||
enum: [
|
||||
'Fragment',
|
||||
'Multifragment',
|
||||
'Bond',
|
||||
'Atom',
|
||||
'Group'
|
||||
],
|
||||
default: 'Fragment'
|
||||
},
|
||||
fieldName: {
|
||||
title: 'Field name',
|
||||
type: "string",
|
||||
default: "",
|
||||
minLength: 1,
|
||||
invalidMessage: "Please, specify field name"
|
||||
},
|
||||
fieldValue: {
|
||||
title: 'Field value',
|
||||
type: "string",
|
||||
default: "",
|
||||
minLength: 1,
|
||||
invalidMessage: "Please, specify field value"
|
||||
},
|
||||
radiobuttons: {
|
||||
enum: [
|
||||
"Absolute",
|
||||
"Relative",
|
||||
"Attached"
|
||||
],
|
||||
default: "Absolute"
|
||||
}
|
||||
},
|
||||
required: ["context", "fieldName", "fieldValue", "radiobuttons"]
|
||||
};
|
||||
|
||||
export const sdataSchema = Object.keys(sData).reduce((acc, title) => {
|
||||
acc[title] = mapOf(sData[title], 'fieldName');
|
||||
Object.keys(acc[title]).forEach(fieldName => acc[title][fieldName].properties.context = contextSchema);
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
/**
|
||||
* Returns first key of passed object
|
||||
* @param obj { object }
|
||||
*/
|
||||
function firstKeyOf(obj) {
|
||||
return Object.keys(obj)[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns schema default values. Depends on passed arguments:
|
||||
* pass schema only -> returns default context
|
||||
* pass schema & context -> returns default fieldName
|
||||
* pass schema & context & fieldName -> returns default fieldValue
|
||||
* @param context? { string }
|
||||
* @param fieldName? { string }
|
||||
* @returns { string }
|
||||
*/
|
||||
export function getSdataDefault(context, fieldName) {
|
||||
if (!context && !fieldName)
|
||||
return firstKeyOf(sdataSchema);
|
||||
|
||||
if (!fieldName)
|
||||
return firstKeyOf(sdataSchema[context]);
|
||||
|
||||
return sdataSchema[context][fieldName] ?
|
||||
sdataSchema[context][fieldName].properties.fieldValue.default :
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user