@datagrok/helm 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/package-test.js +1 -1
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/package.json +15 -16
- package/src/cell-renderer.ts +13 -36
- package/src/constants.ts +0 -11
- package/src/helm-helper.ts +67 -17
- package/src/helm-monomer-placer.ts +8 -26
- package/src/helm-web-editor.ts +33 -3
- package/src/package-test.ts +12 -4
- package/src/package-utils.ts +160 -0
- package/src/package.ts +123 -197
- package/src/tests/findMonomers-tests.ts +2 -0
- package/src/tests/get-all-parts-tests.ts +5 -0
- package/src/tests/{get-molfiles.ts → get-molfiles-tests.ts} +3 -1
- package/src/tests/get-monomer-tests.ts +279 -0
- package/src/tests/helm-service-tests.ts +4 -0
- package/src/tests/helm-tests.ts +8 -1
- package/src/tests/helm-web-editor-tests.ts +55 -0
- package/src/tests/parse-helm-tests.ts +98 -0
- package/src/tests/properties-widget-tests.ts +33 -4
- package/src/tests/renderers-tests.ts +3 -1
- package/src/tests/utils.ts +6 -0
- package/src/types/index.ts +5 -0
- package/src/utils/get-hovered.ts +9 -21
- package/src/utils/get-monomer-dummy.ts +149 -0
- package/src/utils/get-monomer-of-library.ts +90 -0
- package/src/utils/get-monomer.ts +113 -0
- package/src/utils/helm-grid-cell-renderer.ts +12 -7
- package/src/utils/helm-service.ts +19 -45
- package/src/utils/index.ts +11 -17
- package/src/widgets/properties-widget.ts +29 -9
- package/tsconfig.json +1 -1
- package/vendor/helm-web-editor.development.js +39640 -0
- package/vendor/helm-web-editor.production.js +2 -0
- package/vendor/helm-web-editor.production.js.map +1 -0
- package/webpack.config.js +14 -11
- package/helm/JSDraw/Pistoia.HELM-uncompressed.js +0 -9694
- package/helm/JSDraw/Pistoia.HELM.js +0 -27
- package/helm/JSDraw/ReadMe.txt +0 -8
- package/helm/JSDraw/Scilligence.JSDraw2.Lite-uncompressed.js +0 -31126
- package/helm/JSDraw/Scilligence.JSDraw2.Lite.js +0 -12
- package/helm/JSDraw/Scilligence.JSDraw2.Resources.js +0 -762
- package/helm/JSDraw/dojo.js +0 -250
- package/helm/JSDraw/test.html +0 -24
- package/src/utils/dummy-monomer.ts +0 -69
package/src/package.ts
CHANGED
|
@@ -3,161 +3,138 @@ import * as grok from 'datagrok-api/grok';
|
|
|
3
3
|
import * as ui from 'datagrok-api/ui';
|
|
4
4
|
import * as DG from 'datagrok-api/dg';
|
|
5
5
|
|
|
6
|
-
// import '@datagrok-libraries/bio/src/types/dojo';
|
|
7
|
-
// import * as dojo from 'DOJO';
|
|
8
|
-
import '@datagrok-libraries/bio/src/types/helm';
|
|
9
|
-
import * as scil from 'scil';
|
|
10
|
-
import * as org from 'org';
|
|
11
|
-
import '@datagrok-libraries/bio/src/types/jsdraw2';
|
|
12
|
-
import * as JSDraw2 from 'JSDraw2';
|
|
13
|
-
|
|
14
6
|
import $ from 'cash-dom';
|
|
15
7
|
|
|
8
|
+
import {testEvent} from '@datagrok-libraries/utils/src/test';
|
|
16
9
|
import {errorToConsole} from '@datagrok-libraries/utils/src/to-console';
|
|
10
|
+
import {errInfo} from '@datagrok-libraries/bio/src/utils/err-info';
|
|
17
11
|
import {NOTATION} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
18
|
-
import {
|
|
19
|
-
import {IMonomerLib
|
|
12
|
+
import {SeqHandler} from '@datagrok-libraries/bio/src/utils/seq-handler';
|
|
13
|
+
import {IMonomerLib} from '@datagrok-libraries/bio/src/types';
|
|
14
|
+
import {App, HweWindow} from '@datagrok-libraries/bio/src/helm/types';
|
|
20
15
|
import {IHelmHelper} from '@datagrok-libraries/bio/src/helm/helm-helper';
|
|
21
16
|
import {HelmServiceBase} from '@datagrok-libraries/bio/src/viewers/helm-service';
|
|
17
|
+
import {getMonomerLibHelper} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
|
|
22
18
|
|
|
23
|
-
import {findMonomers, parseHelm} from './utils';
|
|
24
19
|
import {HelmCellRenderer} from './cell-renderer';
|
|
25
20
|
import {HelmHelper} from './helm-helper';
|
|
26
21
|
import {getPropertiesWidget} from './widgets/properties-widget';
|
|
27
22
|
import {HelmGridCellRenderer, HelmGridCellRendererBack} from './utils/helm-grid-cell-renderer';
|
|
28
|
-
import {_getHelmService} from './package-utils';
|
|
23
|
+
import {_getHelmService, HelmPackage, initHelmLoadAndPatchDojo} from './package-utils';
|
|
24
|
+
import {RGROUP_CAP_GROUP_NAME, RGROUP_LABEL, SMILES} from './constants';
|
|
25
|
+
import {getRS} from './utils/get-monomer-dummy';
|
|
29
26
|
|
|
30
|
-
import
|
|
27
|
+
// Do not import anything than types from @datagrok/helm-web-editor/src/types
|
|
28
|
+
import {buildWebEditorApp} from './helm-web-editor';
|
|
29
|
+
import {JSDraw2HelmModule, OrgHelmModule, ScilModule} from './types';
|
|
30
|
+
|
|
31
|
+
export const _package = new HelmPackage();
|
|
31
32
|
|
|
32
33
|
let monomerLib: IMonomerLib | null = null;
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// solution to the "orphan issue" in FF
|
|
47
|
-
let _width = 0;
|
|
48
|
-
const _text = _measurementNode.firstChild.nodeValue;
|
|
49
|
-
oldParent.appendChild(_measurementNode);
|
|
50
|
-
|
|
51
|
-
// solution to the "orphan issue" in Opera
|
|
52
|
-
// (nodeValue == "" hangs firefox)
|
|
53
|
-
if (_text != '') {
|
|
54
|
-
let watchdogCounter = 100;
|
|
55
|
-
while (!_width && --watchdogCounter > 0) { // <-- hangs
|
|
56
|
-
//Yang: work around svgweb bug 417 -- http://code.google.com/p/svgweb/issues/detail?id=417
|
|
57
|
-
if (_measurementNode.getBBox)
|
|
58
|
-
_width = parseInt(_measurementNode.getBBox().width);
|
|
59
|
-
else
|
|
60
|
-
_width = 68;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
oldParent.removeChild(_measurementNode);
|
|
64
|
-
return _width;
|
|
65
|
-
};
|
|
66
|
-
}
|
|
35
|
+
/*
|
|
36
|
+
Loading modules:
|
|
37
|
+
Through Helm/package.json/sources section
|
|
38
|
+
dojo from ajax.googleapis.com
|
|
39
|
+
HELMWebEditor
|
|
40
|
+
JSDraw.Lite is embedded into HELMWebEditor bundle (dist/package.js)
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
declare const window: Window & HweWindow;
|
|
44
|
+
declare const scil: ScilModule;
|
|
45
|
+
declare const JSDraw2: JSDraw2HelmModule;
|
|
46
|
+
declare const org: OrgHelmModule;
|
|
67
47
|
|
|
68
48
|
//tags: init
|
|
69
49
|
export async function initHelm(): Promise<void> {
|
|
70
|
-
const logPrefix: string = 'Helm: initHelm()';
|
|
50
|
+
const logPrefix: string = 'Helm: _package.initHelm()';
|
|
71
51
|
_package.logger.debug(`${logPrefix}, start`);
|
|
72
|
-
org.helm.webeditor.kCaseSensitive = true; // GROK-13880
|
|
73
|
-
|
|
74
|
-
return Promise.all([
|
|
75
|
-
new Promise((resolve, reject) => {
|
|
76
|
-
// @ts-ignore
|
|
77
|
-
dojo.ready(function() { resolve(null); });
|
|
78
|
-
}).then(() => {
|
|
79
|
-
initHelmPatchDojo();
|
|
80
|
-
}),
|
|
81
|
-
grok.functions.call('Bio:getBioLib'),
|
|
82
|
-
])
|
|
83
|
-
.then(([_, lib]: [unknown, IMonomerLib]) => {
|
|
84
|
-
_package.logger.debug(`${logPrefix}, then(), lib loaded`);
|
|
85
|
-
monomerLib = lib;
|
|
86
|
-
rewriteLibraries(); // initHelm()
|
|
87
|
-
monomerLib.onChanged.subscribe((_) => {
|
|
88
|
-
try {
|
|
89
|
-
const logPrefixInt = `${logPrefix} monomerLib.onChanged()`;
|
|
90
|
-
_package.logger.debug(`${logPrefixInt}, start, org,helm.webeditor.Monomers updating`);
|
|
91
|
-
rewriteLibraries(); // initHelm()
|
|
92
|
-
|
|
93
|
-
const libSummary: string = monomerLib!.getSummary()
|
|
94
|
-
.replaceAll('\n', '<br />\n')
|
|
95
|
-
.replaceAll(',', ' ');
|
|
96
|
-
const libMsg: string = `Monomer lib updated:<br /> ${libSummary}'`;
|
|
97
|
-
grok.shell.info(libMsg);
|
|
98
|
-
|
|
99
|
-
_package.logger.debug(`${logPrefixInt}, end, org.helm.webeditor.Monomers completed`);
|
|
100
|
-
} catch (err: any) {
|
|
101
|
-
const errMsg = errorToConsole(err);
|
|
102
|
-
console.error('Helm: initHelm monomerLib.onChanged() error:\n' + errMsg);
|
|
103
|
-
// throw err; // Prevent disabling event handler
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
})
|
|
107
|
-
.catch((err: any) => {
|
|
108
|
-
const errMsg: string = err instanceof Error ? err.message : !!err ? err.toString() : 'Exception \'undefined\'';
|
|
109
|
-
grok.shell.error(`Package \'Helm\' init initHelm() error: ${errMsg}`);
|
|
110
|
-
const errRes = new Error(errMsg);
|
|
111
|
-
errRes.stack = err.stack;
|
|
112
|
-
throw errRes;
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
52
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
function
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
53
|
+
try {
|
|
54
|
+
const [_, lib]: [void, IMonomerLib] = await Promise.all([
|
|
55
|
+
Promise.all([
|
|
56
|
+
new Promise<void>((resolve, reject) => {
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
// try { dojo.ready(function() { resolve(null); }); } catch (err: any) { reject(err); }
|
|
59
|
+
resolve();
|
|
60
|
+
}),
|
|
61
|
+
(async () => {
|
|
62
|
+
_package.logger.debug(`${logPrefix}, dependence loading …`);
|
|
63
|
+
const t1: number = performance.now();
|
|
64
|
+
|
|
65
|
+
_package.logger.debug(`${logPrefix}, dojox loading and patching …`);
|
|
66
|
+
await initHelmLoadAndPatchDojo();
|
|
67
|
+
_package.logger.debug(`${logPrefix}, dojox loaded and patched`);
|
|
68
|
+
|
|
69
|
+
// through webpack.config.ts/alias
|
|
70
|
+
require('vendor/helm-web-editor');
|
|
71
|
+
|
|
72
|
+
_package.logger.debug(`${logPrefix}, HelmWebEditor awaiting …`);
|
|
73
|
+
await window.helmWebEditor$.initPromise;
|
|
74
|
+
_package.logger.debug(`${logPrefix}, HelmWebEditor loaded`);
|
|
75
|
+
org.helm.webeditor.kCaseSensitive = true; // GROK-13880
|
|
76
|
+
|
|
77
|
+
_package.logger.debug(`${logPrefix}, scil.Utils.alert patch`);
|
|
78
|
+
_package.initHelmPatchScilAlert(); // patch immediately
|
|
79
|
+
|
|
80
|
+
const t2: number = performance.now();
|
|
81
|
+
_package.logger.debug(`${logPrefix}, dependence loaded, ET: ${(t2 - t1)} ms`);
|
|
82
|
+
})()
|
|
83
|
+
]).then(() => {
|
|
84
|
+
|
|
85
|
+
// settings
|
|
86
|
+
}),
|
|
87
|
+
(async () => {
|
|
88
|
+
const libHelper = await getMonomerLibHelper();
|
|
89
|
+
return libHelper.getBioLib();
|
|
90
|
+
})()
|
|
91
|
+
]);
|
|
92
|
+
|
|
93
|
+
_package.logger.debug(`${logPrefix}, then(), lib loaded`);
|
|
94
|
+
monomerLib = lib;
|
|
95
|
+
// rewriteLibraries(); // initHelm()
|
|
96
|
+
await _package.initHelmPatchPistoia(monomerLib);
|
|
97
|
+
|
|
98
|
+
monomerLib.onChanged.subscribe((_) => {
|
|
99
|
+
const logPrefixInt = `${logPrefix} monomerLib.onChanged()`;
|
|
100
|
+
try {
|
|
101
|
+
const libSummary = monomerLib!.getSummaryObj();
|
|
102
|
+
const isLibEmpty = Object.keys(libSummary).length == 0;
|
|
103
|
+
const libSummaryLog = isLibEmpty ? 'empty' : Object.entries(libSummary)
|
|
104
|
+
.map(([pt, count]) => `${pt}: ${count}`)
|
|
105
|
+
.join(', ');
|
|
106
|
+
_package.logger.debug(`${logPrefixInt}, start, lib: { ${libSummaryLog} }`);
|
|
107
|
+
|
|
108
|
+
const libSummaryHtml = isLibEmpty ? 'empty' : Object.entries(libSummary)
|
|
109
|
+
.map(([pt, count]) => `${pt} ${count}`)
|
|
110
|
+
.join('<br />');
|
|
111
|
+
const libMsg: string = `Monomer lib updated:<br /> ${libSummaryHtml}`;
|
|
112
|
+
grok.shell.info(libMsg);
|
|
113
|
+
|
|
114
|
+
// _package.logger.debug(`${logPrefixInt}, org,helm.webeditor.Monomers updating ...`);
|
|
115
|
+
// rewriteLibraries(); // initHelm() monomerLib.onChanged()
|
|
116
|
+
// _package.logger.debug(`${logPrefixInt}, end, org.helm.webeditor.Monomers completed`);
|
|
117
|
+
} catch (err: any) {
|
|
118
|
+
const errMsg = errorToConsole(err);
|
|
119
|
+
console.error(`${logPrefixInt} error:\n` + errMsg);
|
|
120
|
+
// throw err; // Prevent disabling event handler
|
|
154
121
|
}
|
|
155
122
|
});
|
|
156
|
-
})
|
|
123
|
+
} catch (err: any) {
|
|
124
|
+
const [errMsg, errStack] = errInfo(err);
|
|
125
|
+
// const errMsg: string = err instanceof Error ? err.message : !!err ? err.toString() : 'Exception \'undefined\'';
|
|
126
|
+
grok.shell.error(`Package \'Helm\' init error:\n${errMsg}`);
|
|
127
|
+
const errRes = new Error(`${logPrefix} error:\n ${errMsg}\n${errStack}`);
|
|
128
|
+
errRes.stack = errStack;
|
|
129
|
+
throw errRes;
|
|
130
|
+
} finally {
|
|
131
|
+
_package.logger.debug(`${logPrefix}, finally`);
|
|
132
|
+
}
|
|
133
|
+
_package.logger.debug(`${logPrefix}, end`);
|
|
134
|
+
}
|
|
157
135
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (grid) grid.invalidate();
|
|
136
|
+
export function getMonomerLib(): IMonomerLib | null {
|
|
137
|
+
return monomerLib;
|
|
161
138
|
}
|
|
162
139
|
|
|
163
140
|
//name: getHelmService
|
|
@@ -172,24 +149,14 @@ export function getHelmService(): HelmServiceBase {
|
|
|
172
149
|
//meta.columnTags: quality=Macromolecule, units=helm
|
|
173
150
|
//output: grid_cell_renderer result
|
|
174
151
|
export function helmCellRenderer(): HelmCellRenderer {
|
|
152
|
+
const logPrefix = `Helm: _package.getHelmCellRenderer()`;
|
|
153
|
+
_package.logger.debug(`${logPrefix}, start`);
|
|
175
154
|
// return new HelmCellRenderer(); // old
|
|
176
155
|
return new HelmGridCellRenderer(); // new
|
|
177
156
|
}
|
|
178
157
|
|
|
179
158
|
function checkMonomersAndOpenWebEditor(cell: DG.Cell, value?: string, units?: string) {
|
|
180
|
-
|
|
181
|
-
const monomerList: string[] = parseHelm(cellValue);
|
|
182
|
-
const missedMonomerSet = findMonomers(monomerList);
|
|
183
|
-
if (missedMonomerSet.size === 0)
|
|
184
|
-
webEditor(cell, value, units);
|
|
185
|
-
else if (missedMonomerSet.size === 1 && missedMonomerSet.has(GapOriginals[NOTATION.HELM]))
|
|
186
|
-
grok.shell.warning(`WebEditor doesn't support Helm with gaps '${GapOriginals[NOTATION.HELM]}'.`);
|
|
187
|
-
else {
|
|
188
|
-
grok.shell.warning(
|
|
189
|
-
`Monomers ${Array.from(missedMonomerSet).map((m) => `'${m}'`).join(', ')} are not found. <br/>` +
|
|
190
|
-
`Please specify the monomer library to use. <br/>` +
|
|
191
|
-
`<a href="https://datagrok.ai/help/datagrok/solutions/domains/bio/#manage-monomer-libraries" target="_blank">Learn more</a>`);
|
|
192
|
-
}
|
|
159
|
+
openWebEditor(cell, value, units);
|
|
193
160
|
}
|
|
194
161
|
|
|
195
162
|
//tags: cellEditor
|
|
@@ -224,41 +191,23 @@ export function propertiesWidget(sequence: DG.SemanticValue): DG.Widget {
|
|
|
224
191
|
return getPropertiesWidget(sequence);
|
|
225
192
|
}
|
|
226
193
|
|
|
227
|
-
function
|
|
194
|
+
function openWebEditor(cell: DG.Cell, value?: string, units?: string) {
|
|
228
195
|
const view = ui.div();
|
|
229
196
|
// const df = grok.shell.tv.grid.dataFrame;
|
|
230
197
|
// const col = df.columns.bySemType('Macromolecule')!;
|
|
231
198
|
const col = cell.column as DG.Column<string>;
|
|
232
199
|
const sh = SeqHandler.forColumn(col);
|
|
233
200
|
const rowIdx = cell.rowIndex;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
mexfontsize: '90%',
|
|
238
|
-
mexrnapinontab: true,
|
|
239
|
-
topmargin: 20,
|
|
240
|
-
mexmonomerstab: true,
|
|
241
|
-
sequenceviewonly: false,
|
|
242
|
-
mexfavoritefirst: true,
|
|
243
|
-
mexfilter: true
|
|
244
|
-
});
|
|
245
|
-
const sizes = app.calculateSizes();
|
|
246
|
-
app.canvas.resize(sizes.rightwidth - 100, sizes.topheight - 210);
|
|
247
|
-
let s = {width: sizes.rightwidth - 100 + 'px', height: sizes.bottomheight + 'px'};
|
|
248
|
-
scil.apply(app.sequence.style, s);
|
|
249
|
-
scil.apply(app.notation.style, s);
|
|
250
|
-
s = {width: sizes.rightwidth + 'px', height: (sizes.bottomheight + app.toolbarheight) + 'px'};
|
|
251
|
-
scil.apply(app.properties.parent.style, s);
|
|
252
|
-
app.structureview.resize(sizes.rightwidth, sizes.bottomheight + app.toolbarheight);
|
|
253
|
-
app.mex.resize(sizes.topheight - 80);
|
|
254
|
-
setTimeout(() => {
|
|
201
|
+
let app: App;
|
|
202
|
+
setTimeout(async () => {
|
|
203
|
+
app = await buildWebEditorApp(view);
|
|
255
204
|
if (!!cell && units === undefined)
|
|
256
205
|
app.canvas.helm.setSequence(cell.value, 'HELM');
|
|
257
206
|
else
|
|
258
207
|
app.canvas.helm.setSequence(value!, 'HELM');
|
|
259
|
-
},
|
|
260
|
-
ui.dialog({showHeader: false, showFooter: true})
|
|
261
|
-
|
|
208
|
+
}, 20);
|
|
209
|
+
const dlg = ui.dialog({showHeader: false, showFooter: true});
|
|
210
|
+
dlg.add(view)
|
|
262
211
|
.onOK(() => {
|
|
263
212
|
const helmValue: string = app.canvas.getHelm(true).replace(/<\/span>/g, '')
|
|
264
213
|
.replace(/<span style='background:#bbf;'>/g, '');
|
|
@@ -271,30 +220,10 @@ function webEditor(cell: DG.Cell, value?: string, units?: string) {
|
|
|
271
220
|
}
|
|
272
221
|
}
|
|
273
222
|
}).show({modal: true, fullScreen: true});
|
|
274
|
-
}
|
|
275
223
|
|
|
276
|
-
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
let el = '';
|
|
280
|
-
let digit;
|
|
281
|
-
if (!!newS) {
|
|
282
|
-
for (let i = 0; i < newS.length; i++) {
|
|
283
|
-
if (newS[i] != null) {
|
|
284
|
-
if (/\d/.test(newS[i])) {
|
|
285
|
-
digit = newS[i][newS[i].length - 1];
|
|
286
|
-
newS[i] = newS[i].replace(/[0-9]/g, '');
|
|
287
|
-
for (let j = 0; j < newS[i].length; j++) {
|
|
288
|
-
if (newS[i][j] != ':')
|
|
289
|
-
el += newS[i][j];
|
|
290
|
-
}
|
|
291
|
-
res['R' + digit] = el;
|
|
292
|
-
el = '';
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return res;
|
|
224
|
+
// Quick fix for full screen dialog
|
|
225
|
+
const dlgCntDiv = $(dlg.root).find('div').get()[0] as HTMLDivElement;
|
|
226
|
+
dlgCntDiv.className = dlgCntDiv.className.replace('dlg- ui-form', 'dlg-ui-form');
|
|
298
227
|
}
|
|
299
228
|
|
|
300
229
|
//name: getMolfiles
|
|
@@ -324,12 +253,9 @@ export function getMolfiles(col: DG.Column): DG.Column {
|
|
|
324
253
|
//name: getHelmHelper
|
|
325
254
|
//output: object result
|
|
326
255
|
export async function getHelmHelper(): Promise<IHelmHelper> {
|
|
327
|
-
return
|
|
256
|
+
return _package.hh;
|
|
328
257
|
}
|
|
329
258
|
|
|
330
|
-
import {testEvent} from '@datagrok-libraries/utils/src/test';
|
|
331
|
-
import {CellRendererBackAsyncBase} from '@datagrok-libraries/bio/src/utils/cell-renderer-async-base';
|
|
332
|
-
|
|
333
259
|
//name: measureCellRenderer
|
|
334
260
|
export async function measureCellRenderer(): Promise<void> {
|
|
335
261
|
const grid = grok.shell.tv.grid;
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from '@datagrok-libraries/bio/src/monomer-works/lib-settings';
|
|
11
11
|
|
|
12
12
|
import {findMonomers, parseHelm} from '../utils';
|
|
13
|
+
import {initHelmMainPackage} from './utils';
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
/** Tests with default monomer library */
|
|
@@ -19,6 +20,7 @@ category('findMonomers', () => {
|
|
|
19
20
|
let userLibSettings: UserLibSettings;
|
|
20
21
|
|
|
21
22
|
before(async () => {
|
|
23
|
+
await initHelmMainPackage();
|
|
22
24
|
monomerLibHelper = await getMonomerLibHelper();
|
|
23
25
|
userLibSettings = await getUserLibSettings();
|
|
24
26
|
|
|
@@ -5,6 +5,7 @@ import * as DG from 'datagrok-api/dg';
|
|
|
5
5
|
import {after, before, category, delay, expect, test, expectArray} from '@datagrok-libraries/utils/src/test';
|
|
6
6
|
|
|
7
7
|
import {getAllParts} from '../helm-monomer-placer';
|
|
8
|
+
import {initHelmMainPackage} from './utils';
|
|
8
9
|
|
|
9
10
|
category('getAllParts', () => {
|
|
10
11
|
/** All parts of Helm string are required for fallback rendering. */
|
|
@@ -21,6 +22,10 @@ category('getAllParts', () => {
|
|
|
21
22
|
}
|
|
22
23
|
};
|
|
23
24
|
|
|
25
|
+
before(async () => {
|
|
26
|
+
await initHelmMainPackage();
|
|
27
|
+
});
|
|
28
|
+
|
|
24
29
|
for (const [testName, testData] of Object.entries(tests)) {
|
|
25
30
|
test(`${testName}`, async () => {
|
|
26
31
|
await _testAllParts(testData.seq, testData.tgt);
|
|
@@ -3,6 +3,7 @@ import * as ui from 'datagrok-api/ui';
|
|
|
3
3
|
import * as DG from 'datagrok-api/dg';
|
|
4
4
|
|
|
5
5
|
import {after, before, category, delay, expect, test, expectArray, testEvent} from '@datagrok-libraries/utils/src/test';
|
|
6
|
+
import {getHelmHelper} from '@datagrok-libraries/bio/src/helm/helm-helper';
|
|
6
7
|
import {
|
|
7
8
|
getUserLibSettings, setUserLibSettings, setUserLibSettingsForTests
|
|
8
9
|
} from '@datagrok-libraries/bio/src/monomer-works/lib-settings';
|
|
@@ -11,7 +12,7 @@ import {getMonomerLibHelper, IMonomerLibHelper} from '@datagrok-libraries/bio/sr
|
|
|
11
12
|
import {MolfileHandler} from '@datagrok-libraries/chem-meta/src/parsing-utils/molfile-handler';
|
|
12
13
|
import {MolfileHandlerBase} from '@datagrok-libraries/chem-meta/src/parsing-utils/molfile-handler-base';
|
|
13
14
|
|
|
14
|
-
import {awaitGrid} from './utils';
|
|
15
|
+
import {awaitGrid, initHelmMainPackage} from './utils';
|
|
15
16
|
|
|
16
17
|
import {_package} from '../package-test';
|
|
17
18
|
|
|
@@ -20,6 +21,7 @@ category('getMolfiles', () => {
|
|
|
20
21
|
let userLibSettings: UserLibSettings;
|
|
21
22
|
|
|
22
23
|
before(async () => {
|
|
24
|
+
await initHelmMainPackage();
|
|
23
25
|
monomerLibHelper = await getMonomerLibHelper();
|
|
24
26
|
userLibSettings = await getUserLibSettings();
|
|
25
27
|
await setUserLibSettingsForTests();
|