This is log of changes in the DABC project. It is the best (and sometimes the only) place to find information about current functionality of the framework. 22.10.2018 1. Provide log/err output for stream framework. This is attempt to get exact place of errors in data stream. 2. Provide -find arguments in hldprint to locate specific event 4.07.2018 1. Fix problem with auto buffers delivery in memory pool. It was stopped when number of buffers was not sufficient 25.06.2018 1. Control number of input and builder nodes from master. Set error state if some of nodes are missing 21.08.2018 1. Set thread name to be able monitor it in tools like htop 2. Provide possibility to store calibrations in extra location 20.06.2018 1. Implement implicit calibration mode for DABC. In this case calibration is started by the command from the control GUI and all hits are accumulated for calibration. 25.05.2018 1. Add connection timeout to Application configuration. Should be configured like: 24.05.2018 1. Change logic how stream plugin build - now it is done automatically when STREAMSYS is configured. To disable stream compilation, make nostream=1 should be used 2. Provide method to clear histograms in DabcProcMgr 3. Provide "oninit" parameter for StartRun command in BNET master. When URL like StartRun/execute?prefix=te&oninit=true is submitted, command check at least 3 cycle that same and not-empty list of builder nodes is presented. Only then it start execution of the command 23.05.2018 1. Enable "reduce" parameter for hadaq::UdpTransport. Reduce allowed amount of buffer which can be filled by transport. Should be between 0.1 and 1. 2. When "calibr=0" specified for UdpTransport, calibration module will only fill basic histograms 15.05.2018 1. Let configure parameter as recorded - all value changes will be automatically recorded. Before only ratemeter and info parameter were working this way 11.05.2018 1. Provide dummy mode for hld file output. It is created, but not writes any files. Required to dynamically stop/start preconfigured HLD outputs from BNet master 2. Implement run control from BNet master. One can start/stop run with changed prefix from the master - all event builder just change file name and keep all other config. 3. Provide "value.json" request to get value field of requested record. 4. Create "State" record for each BNet node, use it in control GUI 5. Implement automatic new file start when BNET master runs in control mode 4.05.2018 1. Introduce hadaq::BnetMasterModule for implementing central controller of HADES BNet application. It task will be monitor existing nodes, request regular statistc and probably, control data taking in bnet. 20.04.2018 1. Add SkipEmpty flag to hadaq::CombinerModule. If false, when false, subevents without raw data will not be skipped and inserted into final event. Default is true - empty subevents are dropped 2.03.2018 1. Fix race condition in mbs::ServerTransport. Appears when next client request processed before send-complition event. Now flag used to remember such extra state. 25.01.2018 1. Fix tiny problem with master-side Publisher 2. Switch in compilation with c++11, supported starting from gcc 4.8, let use more standard methods and containers 5.12.2017 1. Automatically recognize HUBs and TDCs in the hldprint. 2. Recognize rising/falling seuqence error and low ToT errors in hldprint 3. Let printout data only with errors 11.08.2017 1. Add "thrdstoptime" parameter. Can be specified in section for all threads or individually for each thread. Default is 5 seconds. 2. When processing Ctrl-C signal, do not reopen log file. Normally logfile flushed every 3 seconds by closing and opening it again. 11.05.2017 1. For hadaq::CombinerModule new parameter "HadesTriggerType" is introduced. It should be set to true in all HADES setup. By default it is false and means, that TRB3 readout with TRB3 trigger type is used. 2. Disbale buffers drops in setup with single readout 3.05.2017 1. New: ltsm plugin for storage interface, first version. Uses light tivoli storage manager software by Thomas Stibor and Joerg Beherendt (https://github.com/tstibor/ltsm) 2. Corrected mbs plugin lmd file to keep and use url options when opening a file. Required to test ltsm plugin with mbs random event generator. 9.03.2017 1. When UDP transport blocks, it starts read and discard single UDP packets. This seen as packets discarded due to formatting error. 2.12.2016 1. When create HADAQ UDP transport, use specified hostname to bind UDP socket with specified host address. Useful when many interfaces are exists. 29.11.2016 1. Improve timeout handling of commands - let wait 0.5 s more than actual timeout. This gives executing instance to correctly treat and issue timeout. 2. Let configure multiple connections in single XML element. With the "list" attribute one could specify several nodes or any other string arguments. 3. Let use #${varname} in config file. Replaced with counts of entries in the variable. Can be 0 (for empty variable), 1 for non-array and N for array of any elements. Main function - create required number of ports for provided list of services 4. Let use ${varname}# in config file. Replaced with appropriate element from `varname` array. Index of each element predefined by framework. Namely used for indexing input/output ports. Example of usage with hadaq: 28.11.2016 1. Use getnameinfo() to identify hostname which was bound with server socket. 2. For MBS servers reintroduce "mbss" and "mbst" protocols names for streame and transport servers. Now one can clearly set hostname which should be bind for both server kinds. If mbs:// is used, still hostname can determine protocol. 3. Application will be terminated if any module/transport/connection cannot be created. 4. When connecting output port with input port, change server/client assignment. Now output port will be server-side and await for connection. 5. In core socket classes call OnSocketError() also when coneection is closed. OnCloseConnection() method is obsolete. 25.11.2016 1. Improve server-side socket creation - hostname can be directly specified. 2. Let configure hostnname and port number used by socket device for connections. 3. Let reuse command channel socket for other socket connections. If SocketDevice does not require special port/hostname, one just use same interface as command channel for the connections 4. First working prototype of HADAQ BNET via network connections between sender and receivers. 24.11.2016 1. Introduce BNET modes in CombinerModule. This allows to implement two-level events building. On the first level groups of subevents will be produced (BNETsend = true). On the second level complete event from such groups will be build (BNETrecv = true). BNET sender can distribute groups over several builders. 23.11.2016 1. Let configure priority for module, module items and sockets. This allow to increase priority for important I/O events, which should be processed faster. 2. Introduce new UDP transport for HADAQ, which directly derived from dabc::Transport class. Main advantage compare to old - less events are required to handle transport. Increase priority of socket events. First tests shows much less lost rate comare to old implementation. 3. Provide option to discard HLD events if TAG is not matched in the subevents. One should provide CheckTag value="true" in XML file. Default is now true - config for HADES event builders should be adjusted. 21.11.2016 1. Introduce plugin for A1 DAQ (AQUA framework). Preliminary client-side code - server should be provoded by AQUA 27.09.2016 1. Implement module.json debug request. It is processed by any published module and returns number of input/output ports and fill state of input queues. Can be used as http://server:8090/Module/module.json 2. Implement transport.json debug request. Return elementary state of transport, assigned with module input or output port. Can be used as http://server:8090/Module/Input0/transport.json 25.01.2016 1. Extend hldprint functionality - print debug values with text info 2. Support tdc trailer, temperature and design id printing 16.11.2015 1. Provide start/stop ROOT file commands in stream::RunModule 2. Display run/file status 3. Correctly update TDC calibration progress 13.11.2015 1. First working version with root file store with stream output 2. First web-based GUI for calibration code running in stream framework via RunModule Reuse central components from interface for TdcCalibrationModule 12.11.2015 1. Introduce LocalWorker. It is minimalistic class to exchange funxtionality between plugins without introducing linker dependencies. Will be used to provide tree storage for the stream plugin in DABC 2. Introduce TreeStore in ROOT plugin. It is wrapper for use ROOT TTree functionality in other plugins. 3. When creating transport via factory, use Module as return pointer. This allows to just create arbitrary module when creating transport via url parameters. Such module automatically started when created 4. First try to create stream analysis as output transport. Idea to add TDC monitoring and optional ROOT output directly into DABC application 9.11.2015 1. Support function call from DabcProcMgr. 5.11.2015 1. In hldprint support new format of hit1 message for falling edge - one need to check possible epoch overflow due to shift correction. 3.11.2015 1. Add possibility to configure trigger type used for calibration. Can be specified in the TdcCalibrationModule or as "trig" parameter in URL string 2.11.2015 1. Let configure output queue size of hadaq::UdpTransport - it not always same as input queue size of combiner module. Only for UdpTransport queue size is criticial 30.10.2015 1. Introduce hadaq::SorterModule. It should sort subevents according trigger number. 2. SorterModule can be created when "resort" url option for UDP transport specified SorterModule can be combined (connected in chain) with TdcCalibrationModule. 29.10.2015 1. When making file input, once could specify "reduce" parameter in URL options. It let reduce buffer size, which will be filled by reading. Used in hadaq::HldInput and mbs::LmdInput 2. Support "reduce" parameter also in hadaq::UdpTransport. In the future let us reformat data within single buffer 3. Working version of recalibrate module - now one could convert HLD files, either replacing hit messages or introducing additional calibration messages. File increase in second case about 26%. 4. Support new message kind in hldprint 5. Introduce new buffer kind mbt_HadaqSubevents. Use it when reformat hadTU data. Only subevents are stored in such buffer. Reduces memory usage. 6. Support mbt_HadaqSubevents in combiner module 7. Provide information about mbs server in terminal module 27.10.2015 1. Add optional "resort" parameter for inputs of hadaq::CombinerModule. It indicates if combiner should try to resort events comming from TRB. May be helpful when TRB sends subevents not in order they appear or when network switch may change order of the packets. 23.10.2015 1. Introduce stream::RecalibrateModule to allow recalibrate HLD files one again. Here main problem - one should split HLD events on subevents and redistribute them over apporopriate TdcCalibrationModule's 25.09.2015 1. Replace gauge display with implementation from https://gist.github.com/tomerd/1499279 It is d3.js-based and like google gauge. 23.09.2015 1. Allow multiple hub ids in the hldprint. 2. Allow multiple TDC ids in the hldprint. 3. Let configure multiple HUBs in TdcCalibrationModule. 16.07.2015 1. Avoid usage of DABC.HierarchyPainter in js code. One could fully use standard JSROOT pages, just providing custom painter codes in dabc.js. Significantly simplifies code management, provides many new features in JSROOT. 2. Repair DABC.HTML kind, used for custom GUIs 10.07.2015 1. Provide icons for Start/Stop/Clear commands, let execute these ROOT-like commands from the browser. 9.07.2015 1. Provide example how stream analysis can be run as additional module in event builder process. Histograms can be accessed via http channel from web browser or go4 GUI. 2. Support ROOT-kind commands in hierarchy 3. Implement Start/Stop/Clear commands for DabcProcMgr, let control worker from Go4GUI 4. Implement Clear command for individual histograms in DabcProcMgr 8.07.2015 1. Allow to request statistic from the data transports. Implemented in file transports 2. Try to display file output information in the hadaq::TerminalModule 3. Add configurable "fileport" for terminal module 4. Introduce DataOutput::Write_Retry() to verify that object support "retry" option which could be configured for output port. If returns true, after timeout DataTransport tries to reinitialize input again. Provided in HldOutput 5. Introduce "blocking" parameter for the port. It defines that happens with the queue when it full - should port be blocked or one can send buffers into the queue, causing drop of data. Possible values are: "connected" - queue only blocks when both ports are connected (default) "disconnected" - queue only blocks when input port not connected "never" - queue never blocks, buffers can be lost "always" - queue is always blocks 6. Support custom histogram labels in JavaScript 7. For DABC histograms, used in stream framework, set _make_request and _after_request fields. This let use standard JSROOT requests scheme. 7.07.2015 1. Make slow-time mode by default while it does not work correctly on multi-core machines. Only for special applications fast timing is important. 2. Create stream plugin, where all stream-specific classes are collected. These are TdcCalibrationModule and runengine for stream framework. Plugin compiled only when with-stream=1 compile flag is enabled. 3. Allow to execute cmd.json requests on the hierarchy item. Syntax is: path/to/item/cmd.json?command=name_of_command Such call will produce command name HCMD_name_of_command, which can be processed in the producer inside ExecuteCommand method. Result should be returned as raw buffer 4. cmd.json method used to request mean/rms value for histograms, produced by DabcProcMgr. Requests looks like: http://localhost:8090/Stream/Run/HLD/HLD_EvSize/cmd.json?command=GetEntries http://localhost:8090/Stream/Run/HLD/HLD_EvSize/cmd.json?command=GetMean http://localhost:8090/Stream/Run/HLD/HLD_EvSize/cmd.json?command=GetRMS 6.07.2015 1. In dabc_root utility allow to skip empty histograms - with -skip-zero option 2. In dabc_root delete directory without histograms (when -skip-zero option specified) 3.07.2015 1. Add logger function for civetweb errors 2. Allow to specify http port as string - to be able bind with loopback address for instance 3. Introduce dabc_root utility to convert DABC files in ROOT. For the moment used to convert DABC histograms from stream framework. 29.06.2015 1. Provide in hadaq::TerminalModule "Data" record with most fields which could be interesting for outside application 2. When stopping hadaq::UdpTransport, notify addon component to correctly shutdown all correspondent components by Ctrl-C 22.05.2015 1. Implement POST requests in FastCGI, test with Go4 parameter editor 2. Implement debug mode in Civetweb 21.05.2015 1. Allow process POST requests with THttpServer 2. Use it in exe.bin requests to send object as arguments 20.05.2015 1. When using MBS prompter, allow to read status record (was disabled before) 2. Fix printout error with file statistic 3. Even when log channel disabled, provide entry in hierarchy 4. Introduce FileRate for MBS status record 5. Add possibility to enable/disable stat record reading 6. Also enable log channel when running with prompter 7. Adjust makefiles for ROOT6 once again 19.05.2015 1. Check if HTTP classes provided by ROOT 18.05.2015 1. Fix compilation problems when make debug=4 called 2. When printing hld events/subevents, show padding bytes (if any) 8.04.2015 1. nostat option should disable only TPaveStats drawings, other functions should be drawn 26.03.2015 1. When drawing text with rescaling, hide only text itself and not container. 2. When move/resize statbox or title, selection rect append to top svg:g container that during drawing update such rect not disappears. 3. Improve position calculation of such rect - especially when cursor get out of window 4. One could modify title of the top folder, it is set into h.json file and used and page title in the user interface 25.03.2015 1. For text drawing use 'dy' attribute to implement Y align. It can be specified in 'em' units. 2. Special handling for IE, where "dominant-baseline" = "middle" not work. 3. In TBufferJSON when float or double value equal to floor(value), than integer format is forced. Otherwise float conversion fails or is not optimal 4. When drawing TGraph or TH1, fMinimum/fMaximum could be used for scale selection and not as zooming - zooming always interactive. 19.03.2015 1. Revert usage of getBoundingClientRect() in SVG to define size. It takes into account size of top SVG element, which is artificial for the MathJax text drawings 12.03.2015 1. In collapsible and tabs layout drawing can be hidden. In such case client rect of correspondent divs returns 0. To avoid problem with SVG drawing, one should just hide SVG element in such case. Similar problems appears during resize. Both problems now fixed. 2. getBBox() for SVG elements makes problem for 'hidden' elements. Use getBoundingClientRect() instead - also returns required width and height 11.03.2015 1. Significant redesign of connection between ROOT and DABC application. Now any user-specific code should be placed in TRootSniffer (or derived) class. Thus root::Monitor class of DABC should be possible to use with any ROOT application, using THttpServer without need of specialization 2. Implement lasy load for objects drawing. One could specify function from some other script, which can be loaded and function (per name) invoked. 3. Provide WhenReady method for the painter class. It allows to invoke callback, when drawing is completed. Can be used for all JSROOT painters. 4. Via _drawfunc, _drawscript, _drawopt one could configure custom draw function for any other object. 10.03.2015 1. In TRootSniffer handle list of streamer infos as another kind of object. It is can be found via FindInHierarchy method and regularly converted into binary or json form. 5.03.2015 1. Adjust context menu position - do not get out of the window 2. Prevent monitoring of item where _player or _editor field specified. One also could specify '_no_monitor' property for each item 3. Implement both vertical and horizontal separators, one could use later for status field. 4.03.2015 1. First try of SVG output of MathJax. Produce SVG element extracted from MathJax output and and inserted in Canvas/Pad. 2. Provide correct alignment for MathJax output, test with FF/IE/Chrome 3.03.2015 1. In TPaveText correctly handle TLatex. 2. Draw label in pave text 3. Support TMathText, always use MathJax for it 4. Provide separate examples for TLatex 5. Implement rotate on 270 degree (y-axis) for the MathJax drawings 2.03.2015 1. When doing AssertPrerequisities, prevent loading same scripts twice. Second, third and more requests stored in the queue and processed when previous is completed. 2. Fast complete support of MathJax for Latex, 3. Check first three examples for TLatex 27.02.2015 1. When doing move and resize, do not react on right-mouse events. 2. Better middle-position for MathJax inside foreignObject 3. In CallBack allows to provide abstract pointer as this argument 4. In LegendPainter rescale text after drawing to simplify work with MathJax 5. Introduce generic functions, which allow to draw many text entries with normal text or MathJax and than rescale them together. 6. Apply new functionality of text drawing for TLegend, TPaveText, TPaveLabel, TText, TLatex, TAxis 7. Significantly simplify logic of move/resize, implement for TPaveLabel 8. All latex-decoding can now be implemented in central place. 26.02.2015 1. Move CreateDisplay and Tabs/Collapsible displays into jquery part 2. In CheckResize one could use element ids 3. Use DOM elements as frame handle in MDIDisplay 4. Separate jquery-dependent code from d3.js graphic. Now main 2-D graphic works without jquery and jquery-ui at all! 5. Implement nobrowser gui without jquery 6. When invoking callback after HTTP request, set this pointer on request itself. Can be used to keep request-specific information. 25.02.2015 1. Mark JSROOT as version 3.3, start new version 3.4 2. Support usage of minimized versions of .js and .css files. Minimized scripts used by default on web servers. 3. Use window.onload to initialize all scripts 4. Implement JSROOT.extend instead of jQuery.extend, reduce usage of jquery in core JSROOT classes 5. Fix problem in JSROOT - one could not combine window.onload in JSRootCore.js with body.onload initialization 6. Introduce JSRootPainter.jquery.js file, where all jquery-depended code of painters will be collected. First try with context menu 24.02.2015 1. Detect major browser kinds in JSROOT 2. Do not use foreignObjects in IE 3. Workaround for positioning problem of foreignObjects in Chrome/Safari 4. Very first try to draw latex with MathJax (#frac in legend first) 5. One can enable MathJax usage with mathjax url option. By default off. 20.02.2015 1. Once again fix problem with escape symbols in TRootSnifferStoreJson, TBufferJSON and dabc::Record 2. Let specify _layout item in httpcontrol.C, _drawitem and _drawopt could be arrays 3. Let display 'Text' item in draw.htm window too 4. Support 'load' property in 'Text' to load arbitrary html code inside 19.02.2015 1. When 'autozoom' specified in draw options, histogram zoomed into non-empty content. Same command available via context menu. 2. One could use _same_ also in different items 3. Publish in hadaq::TerminalModule general application state and generated debug output 4. One could create item of 'Text' kind, which will be displayed as plain text in the browser. 5. Use 'Text' kind in hadaq::TerminalModule for simple output 6. Introduce MathJax support - first in 'Text' item one should specify property 'mathjax' to true. 7. In droppable remove defualt-ui class - removes nasty coloring 8. In TRootSnifferStoreJson correctly handle all JSON escape symbols 18.02.2015 1. Let get object from online server even when item in hierarchy not exists 2. Integrate new RFIO version from Horst 17.02.2015 1. Support native histogram format of stream framework, only create histogram should be reimplemented 2. Fix in TRootSniffer (ignore fields) 3. Fix in TRootSniffer - ensure that class data build before using 16.02.2015 1. All extra options of online server analyzed in JSRootInterface.js 2. Let configure location of JSROOT in THttpServer, allows to use newest JSROOT features in the future 3. Provide THttpServer::SetDefaultPage and SetDrawPage methods 4. Provide THttpServer::SetIcon method 13.02.2015 1. Fix memory leak in TRootSniffer, consolidate usage of folders, objects, items and properties in the sniffer. 2. By default, use everywhere Objects folder (if path not starts with slash). 3. Avoid special meaning for "extra" folder, one can set "_more" property directly for each item 4. Resolve problem with keys of same name, but different class 5. Fix problem with setting fields for top item. Can be used in different custom application. For instance, autoload of files or start view 6. Use string buffer when TRootSniffer produces string as output 7. Implement get.json to request only fields of specified item. Just for fun also make analog get.xml 8. Implement several fields for top element, which are analyzed in the gui: serv->SetItemField("/","_loadfile","/currentdir/hcopy.root"); serv->SetItemField("/","_monitoring","2000"); serv->SetItemField("/","_drawitem","job1/Files/job1.root/hpxpy"); serv->SetItemField("/","_drawopt","colz"); One can specify file to load, monitoring parameter, item to display 12.02.2015 1. Add protection for logx/logy scales. Introduce special grx/gry function where value less than axis minimum treated specially 2. Automatically reconstruct file hierarchy when object from sub-subdirectory requested. When file monitoring enabled, just delete all buffered objects 3. Use JSROOT.CallBack everywhere when call-back optionally should be invoked 4. Fix problem when decoding draw options for histograms 5. Simplify logic how TRootSniffer scans hierarchy, do TDirectory/TKey handling in central place 6. In TRootSniffer change way how properties are set. It allows to set them not only for TFolder, but also for other registered objects 10.02.2015 1. By default, files content monitored in no-browser mode. Or when 'files_monitoring' url option specified 2. Correctly generate URL for reconstruct view in new window 3. Assign own icons for online session and ROOT files 4. After objects loaded from the file hierarchy is rebuild to show read subdirectories 5. With syntax item=file1.root/hpx+file2.root/hpx+file3.root/hpx allow to superimpose many histograms at once 6. Implement 'autocol' draw option - histogram line colors will be numbered automatically. Also 'nostat' draw options is implemented 7. One could use '_same_' identifier when superimposing several histograms. Than it will be replaced by item name from first drawn item 8. Correctly handle recursion when drawing and than dropping items 9.02.2015 1. Let load several ROOT files 2. Implement 'simple' layout - use right division completely for the display 3. When showing objects without browser still create HierarchyPainter with 'simple' display - avoid duplication of many functions 4. Eliminate BuildNoBrowserGUI, always use HierarchyPainter 5. Allow to open ROOT files in online session 6. Implement correct monitoring of data from ROOT files. 6.02.2015 1. Simplify command registration in THttpServer. It could be any line which can be processed with the gROOT->ProcessLine 2. Instead of simple callback function one also could invoke object methods, specifying "/Objects/hpx/->Reset()". Here string '/->' is principle. 3. Provide animation of command execution with buttons 4. Also allow to execute command with item click and via context menu, use everywhere color animation 5. Use '_hidden' attribute to hide hierarchy elements from default display 6. Each element could have '_icon' attribute, which is used in hierarchy display 7. Let register commands in any folders, hide StreamerInfo element 8. Remove custom zipping with root.bin request, it can be done with root.bin.gz request 9. Do not draw functions when 'same' option was used or kNoStats bit is set 10.Fix problem when parsing array in URL options 5.02.2015 1. With JSRootCore.js script location one could specify JSROOT functionality to be loaded: '2d', '3d', 'io'. Old method with JSROOT.AssertPrerequisites will also work. 2. One also could provide 'load' and 'onload' parameters in JSRootCore.js url. 3. Correctly account lost subevents in hadaq::CombinerModule 4. Add possibility to create 'hierarchy items' in TRootSniffer. They have similar meaning as dabc::Hierarchy class. Idea to represent commands and log messages in such items. 5. Provide possibility to register commands in TRootSniffer. If command marked with '_fastcmd' property, it appears as button in browser. 4.02.2015 1. Provide calibration status and progress for each TDC Show this information in web GUI 2. Provide information from calibration module in terminal output 3. Accumulate lost statistic for each data input 4. In hldprint provide possibility to show only events with tot less than specified 5. In hldprint show TDC time relative to channel 0 6. Correctly account dropped subevents for each input, show it in the TerminalModule 3.02.2015 1. Fix memory leak in TRootSniffer 2. Implement exe.bin to be able use tree draw from Go4 3. Fix problem with parsing hex constant with E inside 4. Improve TDC calibration module, provide more information to web GUI 30.01.2015 1. Use d3.time.scale for time display 2. Fix naming convention issue in ROOT classes 28.01.2015 1. Mark JSROOT as stable version 3.2 27.01.2015 1. Make h.xml format similar to h.xml?generic in ROOT. Use 'dabc' as top node name. 26.01.2015 1. Slightly change h.xml file format. Always code item name into _name attribute 2. Make similar changes in ROOT store. Original format remain, new format available with 'generic' attribute. 23.01.2015 1. Improve hadaq web control GUI. 2. In timing.h change signature of DateTime methods - all string conversion now returns std::string 3. Implement 'history' draw option, which is now available via context menu 4. In mbs::ServerTransport allow to use other kind of events. With special EventsInterator instance transport iterates over events in the buffer and automatically appends mbs event/subevent headers 5. Remove from default HADAQ readout application transmitter module 22.01.2015 1. Add support of mbs prompter to mbs::Monitor class. Only execution of normal MBS commands are supported. 2. One could put extra information in status record (like progress), which could be displayed in custom GUI. 3. In web gui for the hadaq::CombinerModule provide more information about calibration progress. With buttons allow fast show of most-important histogram. 4. Use progress information in hadaq::TrbProcessor to decide when autocalibration will be performed 21.01.2015 1. Allow to activate player also with simple mouse click. 2. Implement necessary parameters in the TdcCalibrationModule, some of them can be specified from port url. 3. Implement multiget.json?items=[]&... request in http::Server It allows to perform many get.json requests within one operation and reduces communication latency. 4. Preliminary use of multiget.json in HADAQ control GUI 20.01.2015 1. Introduce 'virtual' DABC histogram class, which will be used to represent histograms in the hierarchy classes. For the moment available only in the hadaq::TdcCalibrationModule 2. Support DABC histogram in JavaScript. At the moment when histogram requested, DABC record converted into JSROOT.TH1 class 3. Provide also emulation of TH2 class in DABC 19.01.2015 1. For all files inputs one could provide 'loop' parameter, which forces to read same file endless number of times. 2. Introduce hadaq::TdcCalibrationModule for automatic calibration of fine time stamp in the TDC data, use code from stream framework. Will be compiled only when make with-stream=1 called 3. In configuration for hadaq input one could activate tdc calibration, specifying "hadaq://host:10101?tdccal" option. Rest of calibration parameters can be specified in Input0TdcCal module itself. 4. Enable auto-calibration of TDC channels. 16.01.2015 1. Use exe.json.gz?compact=3 in TTreePlayer, update THttpServer docu 2. Add correct handling of '[' and ']' symbols in JSROOT and THttpServer, update docu concerning CORS access. 15.01.2015 1. Finalize TTreePlayer, update JSROOT docu 2. Introduce dummy hadaq::TdcCalibrationModule and provide possibility to instantiate it via transport configuration 14.01.2015 1. Implement exe.json request which allows to execute any object method and return result of execution in JSON format. Like: http://localhost:8080/Files/job1.root/ntuple/exe.json?method=GetTitle will return: "Demo ntuple" 2. Provide possibility for executing TTree::Draw. One could access object from gDirectory after command execution and return it as result 3. Implement TTreePlayer as TBasePainter 13.01.2015 1. Implement special handling of std::map class in TBufferJSON 12.01.2015 1. In context menu provides possibility to select options for drawing 2. Provide list of draw options also for online server 9.01.2015 1. Add to DABC.HierarchyPainter methods to update condition on other panels and draw condition on suitable histogram 2. Use jquery-ui menu for context menu 3. Disable auto-zoom when all points in histogram filled 8.01.2015 1. Integrate latest (non-official) version of TBufferJSON with TString and std::string support. Should also work without modification in TBuffer interface while all workaround are left. 2. Introduce extra version of TBufferJSON for ROOT between 534-20 and 534-23, still all kind of ROOT 6 is not yet supported in DABC 3. Provide _typename and _arraydim fields for object members 4. When TBufferJSON recognize storage of multidimensional array, it converts it into correspondent JSON multidimensional array 5. Even when several TH1/TGraph/TF1 objects with fill attribute overlap each other, one able to get tooltip for underlying objects. 6. Use RZip.h in TRootSniffer 7. In TRootSnifferStore some of the fields stored in native format (without quotes) Make appropriate changes in root::Monitor as well 6.01.2015 1. Better support of STL containers in TBufferJSON, also as base class 2. Simplify handling of base class in TBufferJSON 21.12.2014 1. More clear logic how special classes handled in TBufferJSON 2. All STL containers are presented as JSON arrays 3. Eliminate fN property from JS I/O - it is not exists in original ROOT classes 4. Exclude 'fN' from array in TBufferJSON 19.12.2014 1. In TBufferJSON write element name immediately (not in post-processing) 2. When writing objects arrays, only disable post-processing. 3. When use separator as jquery draggable, stop event propagation. 4. In TBufferJSON provide possibility to redirect current output. 12.12.2014 1. Remove unused HierarchyPainter.FindPainter method. 2. Add touch-punch.min.js to process touch events in jQuery-ui 11.12.2014 1. Use new draggable separator in dabc-specific main.htm 2. Provide possibility to create special div for status information 3. Eliminate usage of JSROOT.H() in JSRootInterface.js, hierarchy object remains also when reset button is pressed 4. Disable caching in http::Server 5. Completely eliminate usage of JSROOT.H() 6. Use central function to handle vertical separator 10.12.2014 1. Optimize file reading in JavaScript, use small header cache to read 1024 bytes of file data in advance 2. Reuse TDirectory streamer for TFile, eliminate unused TFile::ReadHeader method 3. When convert string to integer check that no symbols like ',' or '.' present. Otherwise sscanf will return integer part without error message. 4. If 'more' parameter specified in h.json query, it will be redirected to data source to provide maximal information about object. Analog to _more property. 5. Export _title for data member when scanning objects members. 9.12.2014 1. When redraw canvas or pad, correctly update viewbox and viewport of correspondent SVG elements. 2. Implement 'noselect' option to hide file-select elements in browser 3. Chrome has problem with binary files cashing - lets help him. Introduce extra stamp parameter in file requests to avoid cashing on the browser. 8.12.2014 1. Specify Cache-Control for most requests to the THttpServer, try to avoid cashing. 2. Implement separator between browser and drawing area with jQuery Draggable class 3. Fix grid layout problems (hide table borders, hide possible overflow) 4. Use preserveAspectRatio = none attribute of SVG canvas to scale content when window is resized. It is much faster than recreating complete drawing once again. If relative changes bigger than factor 2, redrawing will be performed anyway. 5.12.2014 1. Insert into draw.htm root.json request. Avoid additional requests when drawing object. 2. First try to specify "Cache-Control: max-age=3600", use for js and css files 3. Perform content zipping in civetweb/fastcgi threads, reduce load on main thread 4. For js/cs files specify optional zipping - when they are longer than 10K 5. One could specify any number of additional headers in reply 4.12.2014 1. In TBufferJSON try to write unstored data in _blob field, test with std::map 2. Start JSROOT version 3.2, fix display problem in css. 3. Implement integration of primary hierarchy in online.htm page, avoid extra h.json request at the beginning. 3.12.2014 1. Fix drawing of TH2 histogram - minimal bin should be draw when not zero 2. Support ADC printing in hldprint 3. 'Tag' JSROOT version 3.1, organize root.cern.ch/js directory 2.12.2014 1. Better support of STL classes in TBufferJSON 2. Correct handling of objects saving in TBufferJSON 3. Fix error with TCanvas update 1.12.2014 1. Also getFontDetails return object, which could be applied with .call(font.func) method to all selected by d3 nodes. 2. Preliminary fix in TBufferJSON concerning nested classes. 28.11.2014 1. Implement 'P' and 'P0' draw options for TH1 histogram 2. Put at one place generation of ROOT markers (decoding of TAttMarker) 3. When drawing TGraph, specify translate attribute for central 4. Correctly handle canvas color 5. Handle TAttFill with same method 6. Introduce grid_layer for axis grids 7. Introduce createAttLine for TAttLine class 8. Introduce createAttMarker for TAttMarker class 27.11.2014 1. Use similar optimize method for log and linear scale - distance between display points should not be far than 0.5 pixels 2. First simple drawing of 2D histogram with html5 canvas 3. Two different methods to draw color on canvas. col2 is pixel map, scaled to visible range while col3 is real drawing of each pixel as rectangle 4. One could specify default color method via 'col=N' parameter in URL. 5. Implement moving and resize of TLegend 26.11.2014 1. Improve range selection when using logy scale. One should use minimal non-zero value to get correct range 2. When doing draw optimization, search max and than min values in optimized range. 3. When doing draw optimization in logx scale, analyze pixel coordinates to detect interval where drawing could be optimized. 4. Provide interactive url parameter, one could switch options like tooltip or context menu or drga-and-drop functionality 5. In the item name one could use syntax item=item1+item2. In such case second item will be dropped on the first item and drawn with 'same' option 6. Use container in resize/move logic, avoid additional rect, simplify problem of additional rectangle 25.11.2014 1. Optimize dtree drawing - fix small errors, remove unused properties. Main aim - all dtree properties should be exported to hierarchy. Later server should be able to (re)define all these properties to affect drawings. 2. Remove last dtree style names, use only hierarchy to store tree properties. 3. First try to implement drag and drop, now only with TH1 histograms 4. Optimize text drawing - use pad coordinates only when really required 5. Introduce two layers in the frame element - one for drawings, another for axis 6. Introduce three layers in the pad - for main, text and statistic 24.11.2014 1. Use
instead of for building hierarchy. Solve problem with Chromium which always draws boundary around img without src. 2. For logarithmic scales try to find optimal minimum to represent histograms like in ROOT 3. Interpret logx/logy options when drawing histogram 4. Introduce plus_minus class to handle clicks on plus/minus sign correctly. 19.11.2014 1. Correctly locate $ROOTSYS/etc/http directory 2. First step in using jQuery in hierarchy browser, some functions not yet working. One could exclude multiple global ids in html, all differences between items now handled in click processing. No need for global JSROOT.H('root') element. 3. Trigger buttons and context menu in dtree also with jQuery 4. Minimize html code, generated for dtree - overall reduce by about 40%. For a moment significant amount of code is used by url to different small images. Should be optimized as well. 5. Replace major dtree icons with class definitions, further 10% reduction of html size 6. Remove all images from root/dabc, integrate in future all small icons in css files. 18.11.2014 1. Keep tracking which elements where drawn, provide possibility to iterate over all painters in all frames 2. Use TBasePainter for editors like param and cond editors, painter pointer is assigned to first child element in the frame 3. Allow to draw several items in the same frame, keep possibility to update all of them independently. 4. Use DABC.HierarchyPainter when drawing single element with draw.htm 5. Implement fancy workaround in condition painter to guess full histogram name 6. Clear interface for monitoring parameters in both JSROOT and DABC painter 17.11.2014 1. Account histogram statistic under conditions 2. Fill stat box for different conditions kinds 3. Detect DABC.source_dir location when dabc.js script is loaded 4. Load gauge scripts only when required 5. Detect JSROOT.source_dir location when JSRootCore.js script is loaded 14.11.2014 1. When drawing single element, load all additional scripts as specified 2. Export application state to hierarchy 3. Force export of ratemeter values into hierarchy. 4. Provide possibility to load user scripts with JSROOT.BuildSimpleGUI and JSROOT.AssertPrerequisites, also with main index.htm 5. Modify method how and when histogram statistic is calculated 13.11.2014 1. First draft of condition editor for go4. Load prepared html code and implement jquery-based guis 2. Support 'editor' option for conditions - painter automatically starts editor mode. 3. First dummy version of go4 parameter editor. 4. Provide CompleteOnline method to perform actions as loading of extra scripts before any HTML elements will be created 5. Move condition and parameter editor with JavaScript into go4 project 6. Check that same scripts tried load only once. 12.11.2014 1. In hierarchy fix error how history is provided - element with exact version number should not be delivered. 2. Add simple statbox drawing for condition 3. Fix drawing of zero-rate in dabc.js 4. Update JSROOT docu 11.11.2014 1. Make more flexible central index.htm in JSROOT. One could specify separately files list and path where files are. 'path' parameter also can be set in URL. 2. First implementation of Go4WinPainter class in JS 3. Implement TCutG painter in JSROOT 4. Use it for TGo4PolyCond painter 5. First try to draw condition statistic with TPaveStats 6. Introduce JSROOT.Create() method to create all supported ROOT classes, use it at all places where required 10.11.2014 1. Merge latest changes from Bertrand 2. Use direct element pointer when executing command via button click 3. Add filesdir as parameter in index.htm 4. Improve drawoptions.htm (no read files when only build minimal list) 7.11.2014 1. To avoid problem with CORS requests comment out "If-Modified-Since" header 2. Support of fast buttons in DABC server and web browser 3. Implement three commands in Go4 as fast buttons 4. Tag JSROOT as version 3, start 3.1 as developer version 6.11.2014 1. When drawing TGraph as number of markers, preselect only visible markers 2. Use polyline when drawing simple graph 3. Size of font in TLatex is adjusted like in ROOT - by min from pad width or height 4. Automatically shrink frame from left when axis labels does not fit into canvas 5. Recover frame position if there is enough place again. 6. When doing move or resize of title/statbox, limit it by pad boundaries. 7. Move pave stats and drag box to the front always 5.11.2014 1. Fix problem with TCanvas without TFrame 2. Adopt changes from Bertrand 3. Adjust drawing of moving rect of stat box, better placement of text is stat box 4. Use rounded point coordinates when drawing TGraph and 2D histograms 5. Remove unnecessary circle elements for tooltips when drawing TGraph with markers. Tooltips are specified for markers anyway. 6. When drawing TGraph as number of markers, filter out all markers from outside range. 4.11.2014 1. Fix problem with disable/enable of tooltip when selecting region 2. Fix warning in Firefox with "opacity" and "font-weight/style" 3. Implement drawing of title via TPaveText object (like in ROOT), solve problem with title resize 4. Fix problem when adjust font size to existing pave - one need to account empty spaces and font size is integer. 31.10.2014 1. In http::Server add possibility to configure locations of files. It lets possibility to use some default location like /go4sys or one could assign item file like go4_condeditor.htm to $go4sys/html/condeditor.htm. 2. Provide exe.txt method to execute any method of any registered object. 3. Provide in TRootSniffer possibility to redefine base object scan methods 4. In JavaScript handle extra possibility to start context menu 30.10.2014 1. Repair functionality of gosip GUI. 2. Add support of TPolyMarker3D in JavaScript I/O 29.10.2014 1. Fix problem with nobrowser and several items drawing 2. Process drawoptions when draw items from http server 3. Process immediately change of monitoring flag, do not submit next request for the object when previous not finished. 4. Support nobrowser option for online GUI. 24.10.2014 1. Fix problem with colz toggling 23.10.2014 1. In main index.htm page browser can be disabled (nobrowser parameter) and page can be used to display only specified items from the file 2. Also support layout parameter to display many file items 3. Use central page when display file items (fileitem.htm is obsolete now) 4. When redraw elements in the frame, do not delete container draw_g, but clean it. Solves problem with histogram update, when zoom rect goes below histogram 5. Fix problem with 2D X axis drawing when automatically shrink frame due to colz. 6. Prevent tooltip when doing zooming. 22.10.2014 1. Exclude zeros from TProfile drawing 2. 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. 3. Correctly use colors map, provided with TCanvas. 4. In TBufferJSON correctly process CheckObject method to enable store of colors map in the buffer. 5. Repair logic with canvas monitoring, implement monitoring of different text painters. 6. TPaveText drawing use .attr("xml:space","preserve") to preserve multiple spaces in text. 7. Introduce JSROOT.redraw() function which is capable to create or update object drawing. 21.10.2014 1. Fix problem with colz palette drawing from TCanvas. 2. Re-enable 3D drawing for 2D/3D histograms 3. Extract 3D drawings into separate JSRoot3DPainter.js script 4. Use newest three.mjs (r68) for 3D drawings, solves problem with Firefox. 5. Introduce generic list of draw functions for all supported classes. Makes simpler to add support for user-specific classes. 20.10.2014 1. Major redesign of JS painting code. 2. Painter class provided for every drawn object 3. As first argument of any draw function divid should be specified. 4. Clear organization of SVG containers for TCanvas/TPad, TFrame and each object 5. Clear assignment of painters lists to canvas/pad painters. 6. Now correct dynamic update and resize of canvas is possible (should be intensively tested). 7. Also simple way to cleanup drawings via jQuery empty() method. 15.10.2014 1. Tag current version as 2.7.0 2. Remove extra svg:g container when drawing bins - only svg is used. 3. When extracting parameters from URL string, automatically replace symbols like %20 into ' ' 14.10.2014 1. Create drawoptions.htm page, showing all supported options. 2. Decode options directly in JSROOT.HistPainter class. 3. Implement JS custom streamer for TCanvas, restore aspect ratio when drawing 4. Fix problem while clamp() excluded and log scale with negative values fails. 5. Optimize axis drawing, group related elements together in same element 13.10.2014 1. Introduce docu files for JSROOT 2. When one appends "+" to the filename, its content read completely with first I/O operation. 3. When drawing TCanvas/TPad on empty frame, scale it's height according original ratio. 9.10.2014 1. Remove clamp(true), when creating logx/logy scales. 8.10.2014 1. Remove node name from TRootSnifferStoreXml class, implement compact form. 2. When drawing 2D histograms with 'col' or 'colz' options, always scale palette on bins in selected range. 3. Show progress with scripts loading in the browser window 7.10.2014 1. Implement correct drawing of single DABC element. Like in JSROOT, one could use draw.htm for single element or main.htm for hierarchy display. 2. One can specify 'monitoring' and 'history' parameters for DABC pages like: http://localhost:8090/?monitoring=3000&history http://localhost:8090/FESA/Test/TestRate/draw.htm?monitoring=1000&history If specified as parameter, monitoring or history checkbox will be disabled. 3. Try to prevent access to the files below httpsys, jsrootsys, dabcsys directories 4. Evaluate 'monitoring' parameter for ROOT online server like: http://localhost:8080/?monitoring=1000. Parameter defines how often displayed objects should be updated. 5. Fix problem with zoom rectangle limits after frame resize. 6. Implement 'opt' and 'opts' URL parameters for main page. 6.10.2014 1. Several bugfixes in JSROOT. 2. Add "shortcut icon" for DABC and ROOT servers 3. Add demo of online THttpServer - shell script copies data from running httpserver.C macro on Apache webserver. 26.09.2014 1. Adjust dabc.js to the current JSROOT code, exclude DABC.Manager class completely. 2. Cleanup code in TBufferJSON - remove dummy class 3. Introduce THttpCallArg::CompressWithGzip() method, which can be used now outside THttpServer 4. Also in online server process url options like "item", "items", "layout" 5. Possibility to generate URL, which reproduces opened page with layout and drawn items 25.09.2014 1. Introduce demo.htm, which demonstrates online usage of JSROOT. 2. 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 24.09.2014 1. Provide JSROOT.RegisterForResize functions to unify method how window resize events handled in different scripts. 2. Implement JSROOT.GetUrlOption to extract options from document URL. 3. Provide example file.htm how read and display item from ROOT file. 4. Provide in context menu possibility to draw single element from the file. 5. Remove hsimple.htm, provide in index.htm possibility to specify 'file', 'layout', 'item' and 'items' via url options like: http://web-docs.gsi.de/~linev/js/3.0/index.htm?file=files/hsimple.root&item=hpx;1 6. Support direct reading of objects from subdirectories in JSROOT.TFile. 7. Adjust callback interface when reading files, fix several problems, support of arbitrary sub-sub-directory level when reading objects 23.09.2014 1. Introduce painter class for TCanvas, support resize and update of canvas drawing. 2. Move correspondent code into draw.htm, simplify it (no need for dummy hierarchy). 3. Process resize event in the draw.htm 4. Show wait cursor style while doing redraw of the picture 22.09.2014 1. Implement 'grid' display in ROOT JavaScript 2. One could specify 'grid 3x3' or 'grid 4x2'. Display object created at the moment when first draw is performed. 3. Correctly update content of TProfile object 19.09.2014 1. Correctly unregister worker from publisher - make it possible to register worker under same path again. Important when application shutdown and restarted again. 2. Remove application as direct parent of modules, devices and pools. 3. Introduce 'Transition' state. Use it to avoid situation that somebody (or Application iself) detect error while modules disappear while 'Running' state. 18.09.2014 1. Eliminate code division between dabc::ApplicationBase and dabc::Application Now generic functionality provided in dabc::Application class, user can extend it by sub-classing 2. Simplify logic behind state-machine in application. Now three states are defined - 'Halted', 'Ready' and 'Running'. There is only method called DoTransition(), where state could be changed. 3. There are several commands defined to switch between states. 4. Try to stop input/output transports at the suitable moment, when communication with correspondent i/o object is in stable state. For instance, one should not stop event processing when callback function is awaited. 17.09.2014 1. In the dabc::Transport class reduce maximal number of input/output loops per each port. This guarantee that after each data processing transport returns to the main loop, which enables faster command processing or shutdown. 16.09.2014 1. Adjust size of color palette drawing when labels would take more place as provided. 2. Add correct filling of statistic for TProfile 3. Provide way to select display kind ('collapsible', 'tabs') in the simple GUI. 15.09.2014 1. Add "halttime" parameter into configuration time. Defines maximal time which can be spend in the halt process. By default it is 0.7 s. 2. Introduce display class for MDI drawing. Provide two implementations - 'collapsible' for old kind and 'tabs' for new kinds. 11.09.2014 1. Implement resize functionality in ROOT JS. 2. Add interactively moving slider on the main page. 10.09.2014 1. In JS axis painter use actual number of ticks when drawing sub-ticks. 29.08.2014 1. In hadaq::CombinerModule make configurable time, when module allowed to drop all buffers. Required during HADES beamtime while pause between spills were longer than default 10 s. 20.08.2014 1. Move HADAQ terminal output into separate module. 2. Provide more statistic in the TerminalModule 3. Deliver to the server title of the objects, display it as hint in the browser. 4. Better handling of special characters in the hierarchies - allows to display symbols like ' or " in the file structure. 5. Provide key cycle number when scanning TDirectory, makes look and feel as existing ROOT browser. 19.08.2014 1. Generate HTML only for visible elements in the hierarchy tree. This increase dramatically performance of navigation in the big structures. 2. When toggle/update tree content, change whole line again and not single images or links. Reduces number of required ids, remove ids for images completely. 3. In hadaq::UdpTransport print content of problematic packet when 'debug' option is specified. 4. Implement TerminalMode for hadaq::CombinerModule. Reproduces output of old event builder. 18.08.2014 1. Support different ROOT versions in ROOT plugin. Due to incompatible changes in TBuffer class one requires separate versions for TBUfferJSON class. 2. Use own code to generate hierarchical structure in HTML, replace dtree.js which is extremely slow for complex hierarchies 15.08.2014 1. Move JSRootIO into root plugin - now ROOT JS code fully independent from DABC. 2. Remove 'JSROOTIO.' prefix from _typename. Now real class name is used. 3. Use in all scripts JSROOT as central 'namespace' 4. Introduce context menu in 3D, use it for switch between 2D/3D modes 5. Everywhere use own-designed context menu 14.08.2014 1. In hadaq plugin correctly account dropped data. Drop all data when at least one input gets some data. 2. Ensure that hadaq::Combiner parameters produce change events after 0.2 s. With default settings (1s) EPICS control time to time produced zero rates. 3. Implement Emulation mode in hadaq::Observer for debugging purposes. 4. In JS work with streamer infos as with normal TList, support streamer info display in online and offline mode, use 'fName' and 'fTitle' instead of 'name' and 'title' 5. Fix several errors in JS TKey streamer, use member names as in ROOT itself. 6. Load scripts for 3D graphic only when they required 7. Load scripts for I/O only when required, for ROOT/DABC online monitoring this reduces number of used js scripts from 10 to 5! 8. First working version of single element drawing in ROOT JS. First working version of context menu in ROOT HPainter. From now ROOT JS is fully independent from additional features of dabc.js 9. When displaying single element, one could specify draw options and monitor property. 13.08.2014 1. Remove old hierarchy display from dabc.js, use HPainter from JSROOT. 2. Remove binary-based requests with streamer infos from dabc.js. Only for very special cases user can use binary I/O directly, JSROOT.ReconstructObject shows how object can be reconstructed. 3. Remove master name from all ROOT hierarchies. 4. In hadaq plugin update netmem parameters with 0.2 sec period Drop all buffers and produce message when one input do not deliver data at all 12.08.2014 1. Use new JSROOT functionality in dabc.js. One loads necessary ROOT scripts automatically from the beginning. 2. Implement online hierarchy display for ROOT and DABC based on JSRootPainter.HPainter class. For DABC window management remains, for ROOT offline collapsible display reused. On the long run one could introduce many different window managers (collapsible, tabs, subpads), which could be easily exchanged with each other. 3. Online display for ROOT is independent now from dabc.js. Main functionality in HPainter, window management in JSRootInterface.js. 11.08.2014 1. Move scripts/styles loading into JSRootCore.js. One can specify any list of files for loading. 2. To construct simple GUI, one can use standard examples in JSRootInterface.js or provide own list of scripts to load. 3. Simplify and make more flexible method of simple GUI building 8.08.2014 1. Remove most global variables and functions from JSRootPainter.js 2. Handle color palette local in Hist2Dpainter 3. Remove most global variables in JavaScript, use appropriate classes for them. 7.08.2014 1. First working version of JSROOT.Painter.HPainter. It should decouple data manipulation from drawing. Later should be possible to change layout and design how single objects are drawn. At the moment ROOT file with sub-directories and TTree are working. 2. Support TList in HPainter 3. Fix small error in hist painter. 4. Support list of streamer infos in HPainter, also make example how to draw sinfo structure in other window. 5. Support slashes in the item names. 6. Remove old code with fixed dtree-based file display. Complete hierarchy of file keys and objects handled by HPainter class. dtree is just many alternatives how display can be implemented. 5.08.2014 1. Adjust makefile for ROOT v6. For the moment own TRootSniffer class will be used, later one can switch to the ROOT version. 2. Fix small error in dtree.js - one should always set last sibling (_ls) property while tree can be dynamically changed 3. First try to read ROOT file inside dabc.js. Idea to extract common functionality and avoid strong coupling of I/O and graphics as it is now in JSRootIO. 4. In JSRootCore.js make central function, which handles different kinds of XMLHttpRequest. Use for ROOT and DABC data reading. Use only async requests, also for file header requests. 5. Load JSRootCore.js and JSRootPainter.js automatically, no nasty timeout at the first draw. 4.08.2014 1. Merge HJsonStore and HXmlStore into same HStore class. 2. Implement dabc::Buffer and dabc::Reference as RecordFields. 3. Use new RecordFields capabilities in the dabc::Command Remove ugly reference-to-string conversion. 4. Minimal changes in hadaq plugin - debug output about events gap only when ExtraDebug is enabled 1.08.2014. 1. Remove old xml generation from hierarchy/history. HJsonStore and HXmlStore are mainline now. 2. Use HStore classes for all kinds of text storage. 3. Command transport between hosts implemented in binary form. 4. Remove old xml generation in Record/Command class. XML used directly only in reading of configuration 5. Process commands in root::Monitor, required by Go4 31.07.2014 1. Implement several levels of compressions when creating JSON. 2. Implement storage of hierarchy into JSON, including history. 3. By new JSON/XML storage do not use intermediate binary buffer. Data directly written into string output. For XML case it also eliminates intermediate XML structures. 4. Adjust TRootSnifferStoreJson to be compatible with DABC format. 5. Data exchange between server and client always performed in JSON. Always h.json for hierarchy and get.json for data are used. XML will be left just for historical reasons. Tested with DABC/ROOT/Go4. 30.07.2014 1. Introduce HStore class to store hierarchy structure in JSON/XML formats. Idea to make functionality comparable with TRootSnifferStore classes. Later both ROOT and DABC should work with json-based descriptions. 29.07.2014 1. Move/resize of statbox works smoothly now also during updates. 2. Provide move/resize capability for title and colz options. 28.07.2014 1. Improve layout of HTML page in GOSIP page, adjust sizes dynamically. 25.07.2014 1. First version of gosip GUI with reading and writing of registers. Many small layout problems need to be fixed. 2. Implement newline in json format, used in gosip data dump. 3. Implement all commands in GOSIP GUI 24.07.2014 1. Correct treatment of quotes and double quotes in RecordField. Important when convertiong to JSON representation 2. When publisher analyzes URL with arguments, it tries to convert each arguments to int or double first. Also each argument tested if it can be repersented as vector. Need to be able correctly receive commands with complex arguments via URL and to able respond with JSON. 3. Introduce gosip.js, put there most JavaScript code. 4. First version of gosip command, reading complete setup 23.07.2014 1. Introduce newest jquery-ui 1.11 for JSROOTIOm, also will be used for GOSIP gui 2. Implement in TRootSniffer compression for binary data, activated when "zipped" option specified in query. Used in communication with go4. 3. Implement correct conversion of record data into JSON. Use double qoutes. 4. Return result of command execution in JSON form. It makes easier to operate with complex data in command execution. 22.07.2014 1. Allow to read key objects from TFile in TRootSniffer 2. Fix min/max selection of TH1 histograms 3. Add possibility to redirect http request to specified directory. 4. Use redirection to introduce custom GUI for the gosipcmd utility. 21.07.2014 1. When doing syslog, add for errors or for other messages 2. Suppress several errors messages 3. In ROOT sniffer scan list of keys 4. Introduce read-only flag in sniffer. Only if off, sniffer allowed to read objects and directories list from the files. 5. From dabc.js allow to read sub-directories content in TFile 6. Fix error in XML parser - processing of ' 18.07.2014 1. Fix errors in TH1/TH2 statistic calculations 2. Switch to newest jQuery 1.11.1, do not use 2.x while IE 6/7/8 not supported. 3. Switch to newest jQuery 2.1.1 - anyway IE 6/7/8 is not supported by JSRootIO 17.07.2014 1. Switch to d3 v3.4.10. Fix several problems with log scales. 2. Fix problems in statistic drawing for 2D histograms. 3. Allow move and resize of stat box 15.07.2014 1. Provide example how insert ROOT graphics in the