Skip to content

Commit 044deab

Browse files
committed
Introduce getKindForType in core.mjs
Used it when type should be transformed into kind
1 parent 6b1d711 commit 044deab

File tree

7 files changed

+49
-50
lines changed

7 files changed

+49
-50
lines changed

modules/base/ObjectPainter.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { pointer as d3_pointer } from '../d3.mjs';
22
import { settings, constants, internals, isNodeJs, isBatchMode, getPromise, BIT,
3-
prROOT, clTObjString, clTAxis, isObject, isFunc, isStr, getDocument, urlClassPrefix } from '../core.mjs';
3+
getKindForType, clTObjString, clTAxis, isObject, isFunc, isStr, getDocument, urlClassPrefix } from '../core.mjs';
44
import { isPlainText, producePlainText, produceLatex, produceMathjax, typesetMathjax, approximateLabelWidth } from './latex.mjs';
55
import { getElementRect, BasePainter, makeTranslate } from './BasePainter.mjs';
66
import { TAttMarkerHandler } from './TAttMarkerHandler.mjs';
@@ -257,7 +257,7 @@ class ObjectPainter extends BasePainter {
257257
if (!cl || !isFunc(pp?.getObjectDrawSettings))
258258
return [];
259259

260-
return pp.getObjectDrawSettings(prROOT + cl, 'nosame')?.opts;
260+
return pp.getObjectDrawSettings(getKindForType(cl), 'nosame')?.opts;
261261
}
262262

263263
/** @summary Central place to update objects drawing

modules/core.mjs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2021,6 +2021,25 @@ function isRootCollection(lst, typename) {
20212021
(typename === clTObjArray) || (typename === clTClonesArray);
20222022
}
20232023

2024+
/** @summary Return kind string for type
2025+
* @desc Used when internal objects without clear ROOT type are used
2026+
* For such objects abstract 'kind' is defined. Used in hpainter and draw handles
2027+
* @private */
2028+
function getKindForType(typ) {
2029+
return (!isStr(typ) || (typ.indexOf(nsROOT) !== 0)) ? prROOT + typ : typ;
2030+
}
2031+
2032+
/** @summary Return type name from kind string
2033+
* @private */
2034+
function getTypeForKind(kind) {
2035+
if (!isStr(kind))
2036+
return null;
2037+
if (kind.indexOf(prROOT) === 0)
2038+
return kind.slice(prROOT.length);
2039+
if (kind.indexOf(nsROOT) === 0)
2040+
return kind;
2041+
return null;
2042+
}
20242043

20252044
/** @summary Internal collection of functions potentially used by batch scripts
20262045
* @private */
@@ -2044,4 +2063,5 @@ export { version_id, version_date, version, source_dir, isNodeJs, isBatchMode, s
20442063
isArrayProto, getDocument, BIT, clone, addMethods, parse, parseMulti, toJSON,
20452064
decodeUrl, findFunction, createHttpRequest, httpRequest, loadModules, loadScript, injectCode,
20462065
create, createHistogram, setHistogramTitle, createTPolyLine, createTGraph, createTHStack, createTMultiGraph,
2047-
getMethods, registerMethods, isRootCollection, isObject, isFunc, isStr, isPromise, getPromise, postponePromise, _ensureJSROOT };
2066+
getMethods, registerMethods, isRootCollection, isObject, isFunc, isStr, isPromise, getPromise, postponePromise,
2067+
getKindForType, getTypeForKind, _ensureJSROOT };

modules/draw.mjs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { select as d3_select } from './d3.mjs';
22
import { loadScript, loadModules, findFunction, internals, settings, getPromise, isNodeJs, isObject, isFunc, isStr,
3-
_ensureJSROOT, prROOT,
3+
_ensureJSROOT, getKindForType, getTypeForKind,
44
clTObject, clTNamed, clTString, clTAttLine, clTAttFill, clTAttMarker, clTAttText,
55
clTObjString, clTFile, clTList, clTHashList, clTMap, clTObjArray, clTClonesArray,
66
clTPave, clTPaveText, clTPavesText, clTPaveStats, clTPaveLabel, clTPaveClass, clTDiamond, clTLegend, clTPaletteAxis,
@@ -196,7 +196,7 @@ function getDrawHandle(kind, selector) {
196196
if ((selector === null) && (kind in drawFuncs.cache))
197197
return drawFuncs.cache[kind];
198198

199-
const search = (kind.indexOf(prROOT) === 0) ? kind.slice(5) : `kind:${kind}`;
199+
const search = getTypeForKind(kind) || `kind:${kind}`;
200200
let counter = 0;
201201
for (let i = 0; i < drawFuncs.lst.length; ++i) {
202202
const h = drawFuncs.lst[i];
@@ -206,7 +206,7 @@ function getDrawHandle(kind, selector) {
206206
continue;
207207

208208
if (h.sameas) {
209-
const hs = getDrawHandle(prROOT + h.sameas, selector);
209+
const hs = getDrawHandle(getKindForType(h.sameas), selector);
210210
if (hs) {
211211
for (const key in hs) {
212212
if (h[key] === undefined)
@@ -298,7 +298,7 @@ function getDrawSettings(kind, selector) {
298298
res.opts = [''];
299299

300300
// if no any handle found, let inspect ROOT-based objects
301-
if (!isany && (kind.indexOf(prROOT) === 0) && !noinspect)
301+
if (!isany && getTypeForKind(kind) && !noinspect)
302302
res.opts = [];
303303

304304
if (!noinspect && res.opts)
@@ -327,7 +327,7 @@ function setDefaultDrawOpt(classname, opt) {
327327
setDefaultDrawOpt(arr[0], arr[1] || '');
328328
});
329329
} else {
330-
const handle = getDrawHandle(prROOT + classname, 0);
330+
const handle = getDrawHandle(getKindForType(classname), 0);
331331
if (handle)
332332
handle.dflt = opt;
333333
}
@@ -356,7 +356,7 @@ async function draw(dom, obj, opt) {
356356
let handle, type_info;
357357
if ('_typename' in obj) {
358358
type_info = 'type ' + obj._typename;
359-
handle = getDrawHandle(prROOT + obj._typename, opt);
359+
handle = getDrawHandle(getKindForType(obj._typename), opt);
360360
} else if ('_kind' in obj) {
361361
type_info = 'kind ' + obj._kind;
362362
handle = getDrawHandle(obj._kind, opt);
@@ -495,7 +495,7 @@ async function redraw(dom, obj, opt) {
495495
const can_painter = getElementCanvPainter(dom);
496496
let handle, res_painter = null, redraw_res;
497497
if (obj._typename)
498-
handle = getDrawHandle(prROOT + obj._typename);
498+
handle = getDrawHandle(getKindForType(obj._typename));
499499
if (handle?.draw_field && obj[handle.draw_field])
500500
obj = obj[handle.draw_field];
501501

@@ -549,7 +549,7 @@ function addStreamerInfosForPainter(lst) {
549549
if (basics.indexOf(element.fName) >= 0)
550550
return null;
551551

552-
let handle = getDrawHandle(prROOT + element.fName);
552+
let handle = getDrawHandle(getKindForType(element.fName));
553553
if (handle && !handle.for_derived)
554554
handle = null;
555555

@@ -567,7 +567,8 @@ function addStreamerInfosForPainter(lst) {
567567
}
568568

569569
lst.arr.forEach(si => {
570-
if (getDrawHandle(prROOT + si.fName) !== null) return;
570+
if (getDrawHandle(getKindForType(si.fName)) !== null)
571+
return;
571572

572573
const handle = checkBaseClasses(si, 0);
573574
if (handle) {
@@ -714,7 +715,7 @@ assignPadPainterDraw(TPadPainter);
714715

715716
import_geo = async function() {
716717
return import('./geom/TGeoPainter.mjs').then(geo => {
717-
const handle = getDrawHandle(prROOT + 'TGeoVolumeAssembly');
718+
const handle = getDrawHandle(getKindForType('TGeoVolumeAssembly'));
718719
if (handle) handle.icon = 'img_geoassembly';
719720
return geo;
720721
});

modules/draw/TTree.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { internals, httpRequest, isBatchMode, isFunc, isStr, create, toJSON, getPromise,
2-
prROOT, clTObjString, clTGraph, clTPolyMarker3D, clTH1, clTH2, clTH3 } from '../core.mjs';
2+
getKindForType, clTObjString, clTGraph, clTPolyMarker3D, clTH1, clTH2, clTH3 } from '../core.mjs';
33
import { select as d3_select } from '../d3.mjs';
44
import { kTString, kObject, kAnyP } from '../io.mjs';
55
import { kClonesNode, kSTLNode, clTBranchFunc, treeDraw, treeIOTest, TDrawSelector } from '../tree.mjs';
@@ -354,7 +354,7 @@ function drawTreePlayer(hpainter, itemname, askey, asleaf) {
354354
if (item._childs && !asleaf) {
355355
for (let n = 0; n < item._childs.length; ++n) {
356356
const leaf = item._childs[n];
357-
if (leaf && leaf._kind && (leaf._kind.indexOf(prROOT + 'TLeaf') === 0) && (leaf_cnt < 2)) {
357+
if (isStr(leaf?._kind) && (leaf._kind.indexOf(getKindForType('TLeaf')) === 0) && (leaf_cnt < 2)) {
358358
if (leaf_cnt++ > 0) expr += ':';
359359
expr += leaf._name;
360360
}

modules/geom/TGeoPainter.mjs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { httpRequest, browser, source_dir, settings, internals, constants, create, clone,
22
findFunction, isBatchMode, isNodeJs, getDocument, isObject, isFunc, isStr, postponePromise, getPromise,
3-
prROOT, clTNamed, clTList, clTAxis, clTObjArray, clTPolyMarker3D, clTPolyLine3D,
3+
getKindForType, clTNamed, clTList, clTAxis, clTObjArray, clTPolyMarker3D, clTPolyLine3D,
44
clTGeoVolume, clTGeoNode, clTGeoNodeMatrix, nsREX, nsSVG, kInspect } from '../core.mjs';
55
import { showProgress, injectStyle, ToolbarIcons } from '../gui/utils.mjs';
66
import { GUI } from '../gui/lil-gui.mjs';
@@ -5459,9 +5459,9 @@ let add_settings = false;
54595459
function getBrowserIcon(hitem, hpainter) {
54605460
let icon = '';
54615461
switch (hitem._kind) {
5462-
case prROOT + clTEveTrack: icon = 'img_evetrack'; break;
5463-
case prROOT + clTEvePointSet: icon = 'img_evepoints'; break;
5464-
case prROOT + clTPolyMarker3D: icon = 'img_evepoints'; break;
5462+
case getKindForType(clTEveTrack): icon = 'img_evetrack'; break;
5463+
case getKindForType(clTEvePointSet): icon = 'img_evepoints'; break;
5464+
case getKindForType(clTPolyMarker3D): icon = 'img_evepoints'; break;
54655465
}
54665466
if (icon) {
54675467
const drawitem = findItemWithGeoPainter(hitem);
@@ -5686,7 +5686,7 @@ function createList(parent, lst, name, title) {
56865686

56875687
const list_item = {
56885688
_name: name,
5689-
_kind: prROOT + clTList,
5689+
_kind: getKindForType(clTList),
56905690
_title: title,
56915691
_more: true,
56925692
_geoobj: lst,
@@ -5789,7 +5789,7 @@ function expandGeoObject(parent, obj) {
57895789
* @private */
57905790
createItem = function(node, obj, name) {
57915791
const sub = {
5792-
_kind: prROOT + obj._typename,
5792+
_kind: getKindForType(obj._typename),
57935793
_name: name || getObjectName(obj),
57945794
_title: obj.fTitle,
57955795
_parent: node,

modules/gui/HierarchyPainter.mjs

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { version, gStyle, httpRequest, create, createHttpRequest, loadScript, loadModules, decodeUrl,
22
source_dir, settings, internals, browser, findFunction, toJSON,
33
isArrayProto, isRootCollection, isBatchMode, isNodeJs, isObject, isFunc, isStr, _ensureJSROOT,
4-
prROOT, clTList, clTMap, clTObjString, clTKey, clTFile, clTText, clTLatex, clTColor, clTStyle, nsROOT, kInspect, isPromise } from '../core.mjs';
4+
prROOT, clTList, clTMap, clTObjString, clTKey, clTFile, clTText, clTLatex, clTColor, clTStyle,
5+
getKindForType, getTypeForKind, kInspect, isPromise } from '../core.mjs';
56
import { select as d3_select } from '../d3.mjs';
67
import { openFile, kBaseClass, clTStreamerInfoList, clTDirectory, clTDirectoryFile, nameStreamerInfo, addUserStreamer } from '../io.mjs';
78
import { getRGBfromTColor } from '../base/colors.mjs';
@@ -84,29 +85,6 @@ ${img('tf2', 16, 'png', 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAABGdBTUE
8485
`, node, 'jsroot_hstyle');
8586
}
8687

87-
88-
/** @summary Return kind string for type
89-
* @private */
90-
function getKindForType(typ) {
91-
return (!isStr(typ) || (typ.indexOf(nsROOT) !== 0)) ? prROOT + typ : typ;
92-
}
93-
94-
/** @summary Return type name from kind string
95-
* @private */
96-
function getTypeForKind(kind) {
97-
if (!isStr(kind))
98-
return null;
99-
if (kind.indexOf(prROOT) === 0)
100-
return kind.slice(prROOT.length);
101-
if (kind.indexOf(nsROOT) === 0)
102-
return kind;
103-
return null;
104-
}
105-
106-
/** @summary Return true if object kind belongs to ROOT
107-
* @private */
108-
function isROOTKind(kind) { return Boolean(getTypeForKind(kind)); }
109-
11088
/** @summary Return size as string with suffix like MB or KB
11189
* @private */
11290
function getSizeStr(sz) {

modules/tree.mjs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { BIT, settings, isArrayProto, isRootCollection, isObject, isFunc, isStr, getMethods,
2-
create, createHistogram, createTGraph, prROOT,
2+
create, createHistogram, createTGraph, getKindForType,
33
clTObject, clTObjString, clTHashList, clTPolyMarker3D, clTH1, clTH2, clTH3, kNoStats } from './core.mjs';
44
import { kChar, kShort, kInt, kFloat,
55
kCharStar, kDouble, kDouble32,
@@ -2879,7 +2879,7 @@ function treeHierarchy(tree_node, obj) {
28792879

28802880
const subitem = {
28812881
_name: ClearName(branch.fName),
2882-
_kind: prROOT + branch._typename,
2882+
_kind: getKindForType(branch._typename),
28832883
_title: branch.fTitle,
28842884
_obj: branch
28852885
};
@@ -2905,7 +2905,7 @@ function treeHierarchy(tree_node, obj) {
29052905
bnode._childs.push({
29062906
_name: '@size',
29072907
_title: 'container size',
2908-
_kind: prROOT + 'TLeafElement',
2908+
_kind: getKindForType('TLeafElement'),
29092909
_icon: 'img_leaf',
29102910
_obj: bobj.fLeaves.arr[0],
29112911
_more: false
@@ -2926,7 +2926,7 @@ function treeHierarchy(tree_node, obj) {
29262926
bnode._childs.push({
29272927
_name: key+'()',
29282928
_title: `function ${key} of class ${object_class}`,
2929-
_kind: prROOT + clTBranchFunc, // fictional class, only for drawing
2929+
_kind: getKindForType(clTBranchFunc), // fictional class, only for drawing
29302930
_obj: { _typename: clTBranchFunc, branch: bobj, func: key },
29312931
_more: false
29322932
});
@@ -2946,7 +2946,7 @@ function treeHierarchy(tree_node, obj) {
29462946
branch.fLeaves.arr[j].$branch = branch; // keep branch pointer for drawing
29472947
const leafitem = {
29482948
_name: ClearName(branch.fLeaves.arr[j].fName),
2949-
_kind: prROOT + branch.fLeaves.arr[j]._typename,
2949+
_kind: getKindForType(branch.fLeaves.arr[j]._typename),
29502950
_obj: branch.fLeaves.arr[j]
29512951
};
29522952
subitem._childs.push(leafitem);

0 commit comments

Comments
 (0)