-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathChangelog.txt
3490 lines (2790 loc) · 158 KB
/
Changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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.
06.05.2024
1. First implementation of runtime plugin for ELDER analysis framework (by Michael Reese). Requires external elder installation.
May read data directly from MBS via stream server socket, or from list mode data files using the olmd plugin. [JAM]
2. Added new plugin OLMD for reading original formatted lmd files. In contrast to the mbs plugin, it will use internally the full MBS event api libraries,
like in Go4 framework. This allows to handle all lmd files that were written by MBS DAQ. [JAM]
20.12.2023
1. Fix mbs stream server transport. Command like `socat /dev/null TCP:localhost:6002` can harm server.
It establish connection and then immediately close socket. In some situations server transport get
socket failureis before all internal connections in DABC initialized. This leads to hanging of socket thread
and transport is disfunctional. Therefore assign socket addon only at very end of initialization.
In such case any error appeared in socket will be handled in situation where all DABC components alreay initialized.
28.07.2020
1. Add support of standalone sub-sub-event in hld print. Such sub-sub-event
does not have typical header and uses full data of sub-event, inheriting its ID
2. Introduce "MaxNumBuildEvt" parameter in HADAQ combiner module. DABC will be stopped
when specified number of events will be accumulated.
23.03.2020
1. Provide basic support of CTS header in hldprint, including builtin TDC
23.05.2019
1. Port of DABC code to modern Mac OS (excluding RFIO, IB verbs and threads affinity)
2. Remove shared-memory module from HADAQ plugin, fully decouple from EPICS
3. Declare as version 2.10.0
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:
<Application ConnTimeout="60"/>
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 <Run> 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 <Connection> 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:
<hadaqports1 value="[50000,50001,50002]"/>
<Module name="FirstLevel" class="hadaq::CombinerModule">
<NumInputs value="#${hadaqports1}"/>
<InputPort name="Input*" queue="10" url="nhadaq://host:${hadaqports1}#"/>
</Module>
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 <g>
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 <g> 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 <g> element - one for drawings, another for axis
6. Introduce three layers in the pad - for main, text and statistic
24.11.2014
1. Use <div> instead of <img> 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.