- Fix - support newest TFormula in TF1 (#127)
- Fix - ignore NaN value in saved TF1 buffer
- Fix - correctly treat transparancy in geo painter
- Fix - disable useFontCache for SVG mathjax output
- Fix - invoke callback in JSROOT.draw() at proper time
- Fix - support TGeoHMatrix, produced after GDML conversion
- Fix - support also TGeoScale and TGeoGenTrans matrixes
- Fix - update histograms with all provided functions (#125)
- New 'float' browser kind overlays with objects drawing
- Browser can be enabled after drawing with 'nobrowser' mode
- One can hide browser or switch browser kind at any time
- New 'horizontal' and 'vertical' layouts for object display. One could configure several frames, each divided on sub-frames. Like display=horiz231 will create three horizontal frames, divided on 2,3 and 1 sub-frames.
- One could enable status line where current tooltip info will be shown
- Improve enlarge functionality - now works with all layouts
- Do not display all canvas tool buttons by default - provide toggle button instead
- Let move TAxis title, its position now similar to ROOT graphics
- Support 'col0' option for TH2Poly class to suppress empty bins
- Implement for TH3 'box2', 'box3', 'glbox2', 'glcol' draw options
- Support more superscript/subscript letters in normal text output
- Correctly handle unzoom with logx/logy scales
- Let disable stamp parameter in file url with "-" sign at the end of file name
- Let use quotes in the URL parameters to protect complex arguments with special symbols
- Introduce direct streamers - like TBasket or TRef Benefit - one can add custom streamers of such kind or reuse existing
- Handle TMatrixTSym classes in I/O
- Correctly count TH3 statistic in TTree::Draw
- Recognize bower installation when "bower_components/jsroot/scripts" string appears in the script path (#120)
- Fix - prevent exception when discover HTML element position (#121)
- Fix - prevent I/O failure when server automatically gzip response (#119)
- Fix - lego drawing for stacked TH1 histograms
- Fix - when change global tooltips settings, also change for each sub-pad
- Fix - read branch entries as arrays
- Fix - command submission to THttpServer
- Fix - let refill statbox also for empty histogram
- Fix - problem with online TTree::Draw and ROOT6
- Support older ROOT files, created before 2010
- Support TBranchObject - appears in old files
- Correctly set TBasket buffer position for the entry
- Fix - problem with empty STL containers
- Fix - empty baskets at the end of branch store
- Fix - problem with zooming in THStack
- Reading TTree data
- all kinds of branches, including split STL containers
- branches with several elementary leaves
- branches from different ROOT files
- JSROOT.TSelector class to access TTree data
- simple access to branch data with "dump" draw option
- TTree::Draw support
- simple 1D/2D/3D histograms
- simple cut conditions
- configurable histogram like "px:py>>hist(50,-5,5,50,-5,5)"
- strings support
- iterate over arrays indexes, let use another branch as index values
- support "Entry$" and "Entries$" variables in expressions
- bits histogram like "event.fTracks.fBits>>bits(16)"
- special handling of TBits
- arbitrary math function from JavaScript Math class, some TMath:: function from ROOT
- if branch is object, one could use methods "TMath::Abs(lep1_p4.X()+lep1_p4.Y())"
- interactive player to configure and execute draw expression
- Full support of Float16_t and Double32_t types in I/O
- Drawing of RooPlot objects, I/O support for RooFit classes
- Many improvements in object inspector
- support of large lists; only first part is shown
- support of large arrays; values group in decades
- allow to call draw function for sub-elements in inspector
- Canvas or selected sub-pad can be enlarged when double-clicked outside frame (#116) Complete drawing will be expanded to the visible space. Not available for flex, tabs and collapsible layouts.
- Support reading of local ROOT files with HTML5 FileReader. Files can be selected only with interactive dialog.
- Combine "Ctrl" and "Shift" keys with mouse click on the items:
- with Shift key typically object inspector will be activated
- with Ctrl key alternative draw options will be used (like colz for TH2)
- Update libraries
- d3.js - 4.4.4
- three.js - 84
- jquery - 3.3.1
- jquery-ui - 1.12.1
- Support compressed array, produced with newest TBufferJSON
- $arr field identify such array and contains data type
- native arrays are used when decoding such array
- zero values are not stored
- many similar values stored as one with repetition factor
- position stored only when differ from produced with previous block
- array [3,3,3,3,3,3,1,2,2,2,2,2,2,2] compressed as {$arr:"Int",len:14,v:3,n:6,v1:1,v2:2,n2:7}
- Support new JSON format, produced with newest TBufferJSON
- object references stored as {"$ref":12}
- pair objects for std::map marked with "$pair" : "pair<type1,type2>" data member
- old JSON format will be recognized automatically and supported as well
- Fix - better selection of Y range for log scale
- Provide JSROOT.parse_multi function to correctly parse response of multi.json request, support it in the JSROOT.NewHttpRequest method as well.
- Fix - correctly calculate integral for TH1
- Partially support new TFormula with complex C code inside
- Many improvements in the I/O part
- support most of STL containers
- support TMap and TClonesArray containers
- all kind of multidimensional arrays
- correct treatment of foreign classes
- supports different versions of class in the same file
- support members like ClassName* fField; //[fCnt]
- support const char*
- support fixed-size array of TString, TObject and TNamed
- Many new draw options for different classes are supported:
- TGraph - 'z', 'x', '||', '[]', '>', '|>', '5', 'X+', 'Y+'
- TH1 - '*', 'L', 'LF2', 'B', 'B1', 'TEXT', 'E0', 'E3', 'E4', 'EX0', 'X+', 'Y+'
- TH2 - 'E', 'col1', 'box', 'box1', 'surf3', 'surf7', 'base0'
- TH2 - 'same' with 'box', 'col', 'cont', 'lego', 'surf'
- TH3 - 'scat', use by default
- TF1/TF2 - 'nosave' to ignore saved buffer
- TCanvas - logx/y/z, gridx/y, tickx/y
- THStack - 'lego' and other 3D draw options
- Implement drawing of TProfile2D, TF2, TGraph2D, TGraph2DErrors and TMarker
- Fix - correctly place TGAxis relative to frame (when exists)
- When superimpose items, one can specify individual options ...&item=histo1+histo2&opt=hist+e1 ...&item=[histo1,histo2]&opt=[hist,e1]
- Support loading of TStyle object, providing in URL ...&style=item_name or ...&style=json_file_name All values are copied directly to JSROOT.gStyle object.
- Add callback argument into JSROOT.draw() function. Function will be called after drawing of object is completed. Painter for drawn object will be provided as first argument (or null in case of error).
- Improve cleanup of JSROOT objects
- Workaround for MathJax output - scaling not always works in Firefox
- Fix - bin scaling for box draw option for TH2 and TH3 histograms
- Fix - increase points limits for contour plots
- Fix - position of 3D canvas in WebKit browsers
- Fix - use abs bin content in RMS calculations
- Fix - support char star* and object arrays in I/O
- Fix - correct decoding of TAxis time offset
- Fix - checksum reading for foreign classes
- Implement simple TTree::Draw over single leaf (#80) Support basic types, fixed-size arrays and several vector types
- Display of TEveTrack(s) and TEvePointSet(s) over drawn geometry (drag and drop) Also browsing, toggling, highlight of tracks and hits are done.
- Let set default geo colors as TGeoManager::DefaultColors() does
- Let use original ROOT macros to configure visibility of geometry volumes. Like:
&file=files/alice2.root&item=Geometry;1&opt=macro:macros/geomAlice.C
One can set default colors or colors/transperency for selected volumes. Also volume, selected for drawing in the macro, will be used in the JSROOT - Support drawing of TH2Poly class with 'col' and 'lego' options
- Implement 'CONT', 'ARR' and 'SURF' draw options for TH2 class
- Support basic drawing of TPolyLine class
- Interactive axis zooming in 3D with mouse, very much like to 2D
- Zooming and tool buttons via keyboards
- Improvements in TGeo drawings
- support of large (~10M volumes) models, only most significant volumes are shown
- one could activate several clip planes (only with WebGL)
- interaction with object browser to change visibility flags or focus on selected volume
- support of floating browser for TGeo objects
- intensive use of HTML Worker to offload computation tasks and keep interactivity
- enable more details when changing camera position/zoom
- better and faster build of composite shapes
- Improvements in histograms 3D drawing
- all lego options: lego1..lego4, combined with 'fb', 'bb', '0' or 'z'
- support axis labels on lego plots
- support lego plots for TH1
- Improvements in all 3D graphics
- upgrade three.js to r79
- use of THREE.BufferGeometry for all components
- significant (up to factor 10) performance improvement
- Implement box and hbox draw options for TH1 class
- Implement drawing of axes ticks on opposite side (when fTickx/y specified)
- Preliminary support of candle plot (many options to be implemented)
- Update draw attributes (fill/line/position) when monitor objects
- Fix - position of TFrame in canvas/pad
- Fix - use histogram fMinimum/fMaximum when creating color palette
- Fix - correctly draw empty th2 bins when zmin<0 is specified
- Fix - limit th2 text output size
- Fix - use histogram fMinimum/fMaximum when drawing z axis in lego plot
- Fix - error in TGeoCtub shape creation
- Fix - error in pcon/pgon shapes when Rmin===0
- Fix - correctly handle ^2..^9 in TFormula equations
- Fix - support TMath::Gaus in TFormula
- Fix - correctly display ^2 and ^3 in SVG text output
- Fix - do not show tooltips for empty TProfile bins
- Fix - statbox toggling was not working on subpads
- Fix - positioning of 3D objects in Webkit browsers in complex layouts
- Fix - difference in TF1 between ROOT5/6 (#54)
- Zooming with mouse wheel
- Context menus for many different objects attributes are provided
- Context menu for every drawn object can be activated via toolbar button
- Support browsing of TTask and derived classes (#40)
- Apply user range for drawing TH1/TH2 histograms, also when superimposed (#44)
- Implement scaling factor like x10^3 on the vertical axes
- Provide shortcut buttons for each subpad
- Implement simple drawing for TBox, TWbox, TSliderBox classes
- Fix - toggling of statbox was not working in all situations
- Fix - for mouse rect zooming use only left mouse button
- Fix - correctly draw TH2 with lego option, when histogram has negative bin content
- Fix - log axis drawing with no visible ticks
- Fix - wrong selection of TH1 Y axis range when errors are displayed (#44)
- Fix - apply user range for TH1 X-axis zooming (#44)
- Fix - protect against pathological case of 1-bin histogram
- Fix - use error plot by default in TH1 only when positive sumw2 entry exists
- Fix - for TH2 box draw option draw at least 1px rect for non-empty bin
- Fix - support transparency (alpha) in TColor (#45)
- Fix - correct tooltip handling for graphs with lines and markers
- Fix - interactive zooming in TH2 when doing histogram update
- Fix - statistic collection for TH2
- Fix - correct handling of empty TList in browser/inspector
- Fix - support TFolder in browser/inspector (#40)
- Fix - colz palette resize when drawing histogram second time
- Fix - use embedded in TCanvas color for background color of canvas itself
- Fix - rotate too long X axis text labels
- Fix - draw histogram bins on frame boundary
- Fix - use alternative color for shapes with default black color
- Fix - correctly handle pcon/pgon shape with rmin==rmax on top or bottom side
- Fix faces orientation for all TGeo shapes.
- Improve TGeoTorus creation - handle all parameters combinations
- Implement TGeoCompositeShape, using ThreeCSG.js
- Fix problem with color palette when switch to 3D mode (#28)
- Use nested CSS classes to avoid conflicts with other libraries (#29)
- Let move and resize TFrame
- Improve TH1/TH2 drawings
- draw all histograms points in the range (no any skipped bins)
- minimize SVG code for drawing (up to factor 100)
- gives significant speedup in drawings
- SVG code improvement for TGraph, TF1, TAxis drawings
- Provide new tooltip kind
- created only when needed (minimizing SVG code)
- tooltip can be drawn for every object in the frame
- touch devices are supported
- Fix - let draw same object on the canvas with different options
- Create cached list of known class methods. It can be extended by users.
- Use of cached methods improves binary I/O performance by 20%
- Support TGaxis
- Project now can be obtained via 'bower install jsroot'
- Support 'scat' and 'text' draw options for TH2
- Support in binary I/O zipped buffer bigger than 16M
- Correctly handle in binary I/O pointer on TArray object (like in THnSparseArrayChunk)
- Implement TGeoCtub, TGeoParaboloid and TGeoHype shapes
- Support TGeoTube with Rmin==0
- Exclude empty faces in TGeoArb8
- Improve TGeoSphere creation - handle all parameters combinations
- Introduce JSROOT.cleanup() function to safely clear all drawn objects
- Fix wrong resize method in 'tabs' and 'collapsible' layouts
- Fix canvas resize problem (issue #27)
- Fix zero-height canvas when draw TGeo in collapsible layout
- Fix problem of simultaneous move TGeo drawings and canvas in flexible layout
- Significant performance improvements in 3D drawings - TGeo/TH2/TH3
- Implement TGeoPara, TGeoGtra, TGeoXtru and TGeoEltu shapes
- Optimize (reduce vertices number) for others TGeo shapes
- Correct rotation/translation/scaling of TGeo nodes
- Workaround for axis reflection (not directly supported in three.js)
- Support array of objects in I/O (like in TAxis3D)
- Correct reading of multi-dim arrays like Double_t fXY[8][2];
- Provide canvas toolbar for actions like savepng or unzoom
- Implement JSROOT.resize() function to let resize drawing after changes in page layout
- Fix error with title display/update
- Introduce object inspector - one could browse object members of any class
- Let draw sub-items from TCanvas list of primitives like sub-pad or TLatex
- Provide possibility to save drawn SVG canvas as PNG
- TGraph drawing optimization - limit number of drawn points
- Implement painter for TPolyMarker3D
- Improve drawing and update of TMultiGraph
- Reorganize 3D drawing of TH2/TH3 histograms, allow to mix 2D and 3D display together
- Support overlay of 3D graphic over SVG canvas (used for IE)
- Fix problems and improve flex(ible) layout
- New TGeo classes support:
- browsing through volumes hierarchy
- changing visibility flags
- drawing of selected volumes
- New 'flex' layout:
- create frames like in Multi Document Interface
- one could move/resize/minimize/maximize such frames
- Significant (factor 4) I/O performance improvement:
- use ArrayBuffer class in HTTP requests instead of String
- use native arrays (like Int32Array) for array data members
- highly optimize streamer infos handling
- TH2 drawing optimization:
- if there are too many non-empty bins, combine them together
- when zoom-in, all original bins will be displayed separately
- let draw big TH2 histogram faster than in 1 sec
- optimization can be disabled by providing '&optimize=0' in URL
- TF1 drawing optimization:
- function 'compiled' only once
- Reorganize scripts structure:
- move all math functions to JSRootMath.js
- TH2, TF1, THStack and TMultiGraph painters moved into JSRootPainter.more.js script
- reduce size of scripts required for default functionality
- Update all basic libraries:
- d3.js - v3.5.9,
- jquery.js - v2.1.4,
- jquery-ui.js - v1.11.4,
- three.js - r73
- Implement ROOT6-like color palettes:
- all palettes in range 51...112 are implemented
- by default palette 57 is used
- one could change default palette with '&palette=111' in URL
- or palette can be specified in draw option like '&opt=colz,pal77'
- Support non-equidistant bins for TH1/TH2 objects.
- Display entries count from histo.fEntries member, only when not set use computed value
- Support italic and bold text when used with MathJax
- Improve TF1 drawing - support exp function in TFormula, fix errors with logx scale, enable zoom-in, (re)calculate function points when zooming
- Support several columns in TLegend
- Introduce context menus for x/y axis, add some items similar to native ROOT menus
- Introduce context menu for TPaveStats, let switch single elements in the box
- Enable usage of all context menus on touch devices
- Implement JSROOT.Math.Prob function, provides probability value in stat box
- Introduce context menu for color palette (z axis)
- Implement col0 and col0z draw option for TH2 histograms, similar to ROOT6
- Let use HTML element pointer in JSROOT.draw function like: JSROOT.draw(document.getElementsByTagName("div")[0], obj, "hist"); Normally unique identifier was used before, which is not required any longer. Of course, old functionality with element identifier will work as well.
- TreePlayer can also be used for trees, which not yet read from the file. Requires appropriate changes in TRootSniffer class.
- Fix error in I/O with members like:
Double_t *fArr; //[fN]
- Introduce JSROOT.OpenFile function. It loads I/O functionality automatically, therefore can be used directly after loading JSRootCore.js script
- Same is done with JSROOT.draw function. It is defined in the JSRootCore.js and can be used directly. Makes usage of JSROOT easier
- Introduce JSRootPainter.more.js script, where painters for auxiliary classes will be implemented.
- Implement painter for TEllipse, TLine, TArrow classes
- Fix several problems with markers drawing; implement plus, asterisk, mult symbols.
- Implement custom layout, which allows to configure user-defined layout for displayed objects
- Fix errors with scaling of axis labels.
- Support also Y axis with custom labels like: http://jsroot.gsi.de/dev/?nobrowser&file=../files/atlas.root&item=LEDShapeHeightCorr_Gain0;1&opt=col
-
Support of X axis with custom labels like: http://jsroot.gsi.de/dev/?nobrowser&json=../files/hist_xlabels.json
-
Extend functionality of JSROOT.addDrawFunc() function. One could register type-specific
make_request
andafter_request
functions;icon
,prereq
,script
,monitor
properties. This let add more custom elements to the generic gui, implemented with JSROOT.HierarchyPainter -
Provide full support of require.js. One could load now JSRootCore.js script like:
<script type="text/javascript" src="require.js" data-main="scripts/JSRootCore.js"></script>After this several modules are defined and can be used with syntax like:
require(['JSRootPainter'], function(jsroot) { /any user code/});
Also inside JSROOT require.js used to load all dependencies.
- Try to provide workaround for websites where require.js already loaded. This makes problem by direct loading of jquery and jquery-ui
- Provide workaround for older version of jquery-ui
- Prompt for input of command arguments
- After command execution one could automatically reload hierarchy (_hreload property) or update view of displayed object (_update_item property)
- Use HiearchyPainter for implementing draw.htm. This let us handle all different kinds of extra attributes in central place
- Fix problem in tabs layout - new tab should be add to direct child
- When drawing several tabs, activate frame before drawing - only then real frame size will be set
- Fix problem with GetBBox - it only can be used for visible elements in mozilla.
- Support drawing of fit parameters in stat box, use (as far as possible) stat and fit format for statistic display
- Implement 'g' formatting kind for stat box output - one need to checks significant digits when producing output.
- Support new draw options for TGraph: 'C', 'B1', '0', '2', '3', '4', '[]'
- Primary support for STL containers in IO part. Allows to read ROOT6 TF1.
- Full support of TGraphBentErrors
- Support objects drawing from JSON files in default user interface, including monitoring. One could open file from link like: https://root.cern.ch/js/dev/?json=demo/canvas_tf1.json
- Introduce JSROOT.FFormat function to convert numeric values into string according format like 6.4g or 5.7e. Used for statistic display.
- Fix error in vertical text alignment
- Many improvements in TPaletteAxis drawing - draw label, avoid too large ticks.
- Fix error with col drawing - bin with maximum value got wrong color
- Test for existing jquery.js, jquery-ui.js and d3.js libraries, reuse when provided
- Fix several I/O problems; now one could read files, produced in Geant4
- Implement 'e2' drawing option for TH1 class, use by default 'e' option when TH1 has non-empty fSumw2
- Reuse statistic from histogram itself, when no axis selection done
- Support log/lin z scale for color drawing
- Implement interactive z-scale selection on TPaletteAxis
- Allow to redraw item with other draw options (before one should clear drawings)
- Several improvements in THttpServer user interface - repair hierarchy reload, hide unsupported context menu entries, status line update
- Support usage of minimized versions of .js and .css files. Minimized scripts used by default on web servers.
- Implement JSROOT.extend instead of jQuery.extend, reduce usage of jquery.js in core JSROOT classes
- Implement main graphics without jquery at all,
such mode used in
nobrowser
mode. - Provide optional latex drawing with MathJax SVG.
TMathText always drawn with MathJax,
other classes require
mathjax
option in URL - Improve drawing of different text classes, correctly handle their alignment and scaling, special handling for IE
- Fix error with time axes - time offset was not correctly interpreted
- Use d3.time.scale for display of time scales
- Within JSRootCore.js script URL one could specify JSROOT functionality to be loaded: '2d', '3d', 'io', 'load', 'onload'. Old method with JSROOT.AssertPrerequisites will also work.
- With THttpServer JSROOT now provides simple control functionality. One could publish commands and execute them from the browser
- One could open several ROOT files simultaneously
- Add 'simple' layout - drawing uses full space on the right side
- Allow to open ROOT files in online session (via url parameter)
- One could monitor simultaneously objects from server and root files
- Implement 'autocol' draw option - when superimposing histograms, their line colors will be automatically assigned
- Implement 'nostat' draw option - disabled stat drawing
- Using 'same' identifier in item name, one can easily draw or superimpose
similar items from different files. Could be used in URL like:
...&files=[file1.root,file2.root]&items=[file1.root/hpx, file2.root/_same_]
...&files=[file1.root,file2.root]&item=file1.root/hpx+file2.root/_same_
Main limitation - file names should have similar length. - When 'autozoom' specified in draw options, histogram zoomed into non-empty content. Same command available via context menu.
- Item of 'Text' kind can be created. It is displayed as plain text in the browser. If property 'mathjax' specified, MathJax.js library will be loaded and used for rendering. See httpcontrol.C macro for example.
- When using foreignObject, provide workaround for absolute positioning problem in Chrome/Safari, see http://bit.ly/1wjqCQ9
- Support JSON objects embedding in html pages, produced by THttpServer
- For small resize of canvas use autoscale functionality of SVG. Only when relative changes too large, redraw complete canvas again.
- Use touch-punch.min.js to process touch events with jquery-ui
- Even when several TH1/TGraph/TF1 objects with fill attribute overlap each other, one able to get tooltip for underlying objects
- Use jquery-ui menu for context menu
- From context menu one could select several options for drawing
- Provide user interface for executing TTree::Draw on THttpServer
- 3D graphic (three.js) works only with IE11
- Correctly show tooltips in case of overlapped objects
- Implement JSROOT.Create() method to create supported in JavaScript ROOT classes like TH1 or TGraph
- Fix problem with JSROOT.draw in HTML element with zero width (display:none)
- Provide possibility to load user scripts with JSROOT.BuildSimpleGUI and JSROOT.AssertPrerequisites, also with main index.htm
- Support of TCutG drawing
- Implement hierarchy display (former dtree) with jQuery
- Fix several problems in drawing optimization
- Implement dragging objects from hierarchy browser into existing canvas to superimpose several objects
- Implement col2 and col3 draw options, using html5 canvas
- Support 'p' and 'p0' draw options for TH1 class
- Better font size and position in pave stats
- Resize/move of element only inside correspondent pad
- Adjust of frame size when Y-axis exceed pad limits
- Correct values in tooltip for THStack
- Exclude drawing of markers from TGraph outside visible range
- Drawing of canvas without TFrame object
- Many other small bug fixes and improvements, thanks to Maximilian Dietrich
- Add "shortcut icon"
- Add demo of online THttpServer - shell script copies data from running httpserver.C macro on Apache webserver
- Evaluate 'monitoring' parameter for online server like: http://localhost:8080/?monitoring=1000 Parameter defines how often displayed objects should be updated.
- Implement 'opt' and 'opts' URL parameters for main page.
- Show progress with scripts loading in the browser window
- When one appends "+" to the filename, its content read completely with first I/O operation.
- Implement JS custom streamer for TCanvas, restore aspect ratio when drawing
- Major redesign of drawing classes. Resize and update of TCanvas are implemented. All major draw functions working with HTML element id as first argument.
- Extract 3D drawings into separate JSRoot3DPainter.js script
- Use newest three.min.js (r68) for 3D drawings, solves problem with Firefox.
- Introduce generic list of draw functions for all supported classes.
- Add possibility to 'expand' normal objects in the hierarchy browser. For instance, this gives access to single elements of canvas, when whole canvas cannot be drawn.
- Correct usage of colors map, provided with TCanvas.
- Introduce JSROOT.redraw() function which is capable to create or update object drawing.
- In main index.htm page browser can be disabled (nobrowser parameter) and page can be used to display only specified items from the file
- Add support of TPolyMarker3D in binary I/O
- First try to handle resize of the browser, for the moment works only with collapsible layout
- Also first try to interactively move separation line between browser and drawing field.
- Small fix of minor ticks drawing on the axis
- Introduce display class for MDI drawing. Provide two implementations - 'collapsible' for old kind and 'tabs' for new kinds.
- Adjust size of color palette drawing when labels would take more place as provided.
- Add correct filling of statistic for TProfile, fix small problem with underflow/overflow bins.
- Provide way to select display kind ('collapsible', 'tabs') in the simple GUI.
- Implement 'grid' display, one could specify any number of division like 'grid 3x3' or 'grid 4x2'.
- MDI display object created at the moment when first draw is performed.
- Introduce painter class for TCanvas, support resize and update of canvas drawing
- Resize almost works for all layouts and all objects kinds.
- Implement JSROOT.GetUrlOption to extract options from document URL.
- Provide example fileitem.htm how read and display item from ROOT file.
- In default index.htm page one could specify 'file', 'layout', 'item' and 'items' parameters like: http://root.cern.ch/js/3.0/index.htm?file=../files/hsimple.root&layout=grid3x2&item=hpx;1
- Support direct reading of objects from sub-sub-directories.
- Introduce demo.htm, which demonstrates online usage of JSROOT.
- One could use demo.htm directly with THttpServer providing address like: http://localhost:8080/jsrootsys/demo/demo.htm?addr=../../Files/job1.root/hpx/root.json.gz&layout=3x3
- Also for online server process url options like 'item', 'items', 'layout'
- Possibility to generate URL, which reproduces opened page with layout and drawn items
- All communication between server and browser done with JSON format.
- Fix small error in dtree.js - one should always set last sibling (_ls) property while tree can be dynamically changed.
- In JSRootCore.js provide central function, which handles different kinds of XMLHttpRequest. Use only async requests, also when getting file header.
- Fully reorganize data management in file/tree/directory/collection hierarchical display. Now complete description collected in HPainter class and decoupled from visualization, performed with dTree.js.
- Remove all global variables from the code.
- Automatic scripts/style loading handled via JSROOT.loadScript() function. One can specify arbitrary scripts list, which asynchronously loaded by browser.
- Method to build simple GUI changed and more simplified :). The example in index.htm. While loadScript and AssertPrerequisites functions moved to JSROOT, one can easily build many different kinds of GUIs, reusing provided JSRootCore.js functions.
- In example.htm also use AssertPrerequisites to load necessary scripts. This helps to keep code up-to-date even by big changes in JavaScript code.
- Provide monitoring of online THttpServer with similar interface as for ROOT files.
- Fix several errors in TKey Streamer, use member names as in ROOT itself.
- Keep the only version identifier JSROOT.version for JS code
- One can specify in JSROOT.AssertPrerequisites functionality which is required. One could specify '2d', 'io' (default) or '3d'.
- Use new AssertPrerequisites functionality to load only required functionality.
- When displaying single element, one could specify draw options and monitor property like:
http://localhost:8080/Files/job1.root/hpxpy/draw.htm?opt=col&monitor=2000
Such link is best possibility to integrate display into different HTML pages,
using
<iframe/>
tag like:<iframe src="http://localhost:8080/Files/job1.root/hpx/draw.htm"
style="width: 800px; height:600px"></iframe>
- Remove 'JSROOTIO.' prefix from _typename. Now real class name is used.
- Use in all scripts JSROOT as central 'namespace'
- Introduce context menu in 3D, use it for switch between 2D/3D modes
- Use own code to generate hierarchical structure in HTML, replace dtree.js which is extremely slow for complex hierarchies. Dramatically improve performance for structures with large (~1000) number of items.
- Deliver to the server title of the objects, display it as hint in the browser.
- Better handling of special characters in the hierarchies - allows to display symbols like ' or " in the file structure.
- Migration to d3.v3.js and jQuery v2.1.1
- Fix errors in filling of histogram statbox
- Possibility of move and resize of statbox, title, color palete
- Remove many (not all) global variables
- Example with direct usage of JSRootIO graphics
- Example of inserting ROOT graphics from THttpServer into
<iframe></iframe>
- This JSRootIO code together with THttpServer class included in ROOT repository
- Introduce JSROOT.TBuffer class, which plays similar role as TBuffer in native ROOT I/O. Simplifies I/O logic, reduce duplication of code in many places, fix errors. Main advantage - one could try to keep code synchronous with C++.
- Avoid objects cloning when object referenced several times.
- Treat special cases (collection, arrays) in one place. This is major advantage, while any new classes need to be implemented only once.
- Object representation, produced by JSRootIO is similar to objects, produced by TBufferJSON class. By this one can exchange I/O engine and use same JavaSctript graphic for display.
- More clear functions to display different elements of the file. In the future functions should be fully separated from I/O part and organized in similar way as online part.
- Eliminate usage of gFile pointer in the I/O part.
- Provide TBufferJSON::JsonWriteMember method. It allows to stream any selected data member of the class. Supported are: basic data types, arrays of basic data types, TString, TArray classes. Also any object as data member can be streamed.
- TRootSniffer do not creates sublevels for base classes