forked from enviPath/enviPy
Current Dev State
This commit is contained in:
128
static/js/ketcher2/script/index.js
Normal file
128
static/js/ketcher2/script/index.js
Normal file
@ -0,0 +1,128 @@
|
||||
/****************************************************************************
|
||||
* 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.
|
||||
***************************************************************************/
|
||||
var safda = 0;
|
||||
import 'babel-polyfill';
|
||||
import 'whatwg-fetch';
|
||||
import queryString from 'query-string';
|
||||
|
||||
import api from './api.js';
|
||||
import * as molfile from './chem/molfile';
|
||||
import * as smiles from './chem/smiles';
|
||||
import * as structformat from './ui/structformat';
|
||||
|
||||
import ui from './ui';
|
||||
import Render from './render';
|
||||
|
||||
function getSmiles() {
|
||||
return smiles.stringify(ketcher.editor.struct(),
|
||||
{ ignoreErrors: true });
|
||||
}
|
||||
|
||||
function saveSmiles() {
|
||||
const struct = ketcher.editor.struct();
|
||||
return structformat.toString(struct, 'smiles', ketcher.server);
|
||||
}
|
||||
|
||||
function getMolfile() {
|
||||
return molfile.stringify(ketcher.editor.struct(),
|
||||
{ ignoreErrors: true });
|
||||
}
|
||||
|
||||
function setMolecule(molString) {
|
||||
if (!(typeof molString === "string"))
|
||||
return;
|
||||
ketcher.ui.load(molString, {
|
||||
rescale: true
|
||||
});
|
||||
}
|
||||
|
||||
function addFragment(molString) {
|
||||
if (!(typeof molString === "string"))
|
||||
return;
|
||||
ketcher.ui.load(molString, {
|
||||
rescale: true,
|
||||
fragment: true
|
||||
});
|
||||
}
|
||||
|
||||
function showMolfile(clientArea, molString, options) {
|
||||
const render = new Render(clientArea, Object.assign({
|
||||
scale: options.bondLength || 75
|
||||
}, options));
|
||||
if (molString) {
|
||||
const mol = molfile.parse(molString);
|
||||
render.setMolecule(mol);
|
||||
}
|
||||
render.update();
|
||||
// not sure we need to expose guts
|
||||
return render;
|
||||
}
|
||||
|
||||
// TODO: replace window.onload with something like <https://github.com/ded/domready>
|
||||
// to start early
|
||||
window.onload = function () {
|
||||
var params = queryString.parse(document.location.search);
|
||||
if (params.api_path)
|
||||
ketcher.apiPath = params.api_path;
|
||||
// Url is something similar http://localhost:8080/js/ketcher2/...
|
||||
// To access server split on "/js/"
|
||||
var requestUrl = document.location.href.split("/static")[0]
|
||||
fetch(requestUrl,{
|
||||
method: "GET",
|
||||
//async: false,
|
||||
body: {
|
||||
getMLServerPath: true
|
||||
}
|
||||
}).then(function (response) {
|
||||
ketcher.api = response.mlServerPath;
|
||||
|
||||
}).catch(function (err) {
|
||||
throw 'Cannot parse result\n' + err;
|
||||
});
|
||||
|
||||
ketcher.server = api(ketcher.apiPath, {
|
||||
'smart-layout': true,
|
||||
'ignore-stereochemistry-errors': true,
|
||||
'mass-skip-error-on-pseudoatoms': false,
|
||||
'gross-formula-add-rsites': true
|
||||
});
|
||||
ketcher.ui = ui(Object.assign({}, params, buildInfo), ketcher.server);
|
||||
ketcher.editor = global._ui_editor;
|
||||
ketcher.server.then(function () {
|
||||
if (params.mol)
|
||||
ketcher.ui.load(params.mol);
|
||||
}, function () {
|
||||
document.title += ' (standalone)';
|
||||
});
|
||||
};
|
||||
|
||||
const buildInfo = {
|
||||
version: '__VERSION__',
|
||||
apiPath: '__API_PATH__',
|
||||
buildDate: '__BUILD_DATE__',
|
||||
buildNumber: '__BUILD_NUMBER__' || null,
|
||||
buildOptions: '__BUILD_OPTIONS__',
|
||||
miewPath: '__MIEW_PATH__' || null
|
||||
};
|
||||
|
||||
const ketcher = module.exports = Object.assign({
|
||||
getSmiles,
|
||||
saveSmiles,
|
||||
getMolfile,
|
||||
setMolecule,
|
||||
addFragment,
|
||||
showMolfile
|
||||
}, buildInfo);
|
||||
Reference in New Issue
Block a user