<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Mark,<br>
<br>
the stream update of an empty array "[]" is meant to be that way, so
the receiver gets a valid JSON array.<br>
<br>
I wasn't aware DataTables doesn't keep the user page when rows are
updated. IMO that should only happen when the table is cleared. If
it loses the page, it may also lose the sort order, page size and
filter -- did you observe that behaviour?<br>
<br>
I'm totally new to DataTables so need to dig for a solution.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
Am 25.02.19 um 14:18 schrieb Mark Webb-Johnson:<br>
<blockquote type="cite"
cite="mid:AF419AFA-3D55-43FD-9A46-7F6834C0DB9B@webb-johnson.net">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Michael,
<div class=""><br class="">
</div>
<div class="">Looks good:</div>
<div class=""><br class="">
</div>
<div class=""><img apple-inline="yes"
id="F62C1BA1-7BDA-455F-9717-AC117C56550D"
src="cid:608DA374-DC32-455F-8D09-6AF3375C0BF4" class=""
moz-do-not-send="true"></div>
<div class=""><br class="">
</div>
<div class="">I played a roadster crtd log back through it, using
a DBC to control the message multiplexing. No crashes.</div>
<div class=""><br class="">
</div>
<div class="">I then added this live:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding:
0px;" class="">
<div class="">
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">BO_ 836 TPMS: 8 TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_fl_p :
0|8@0+ (0.362976,0) [0|1000] "psi" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_fr_p :
16|8@0+ (0.362976,0) [0|1000] "psi" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_rl_p :
32|8@0+ (0.362976,0) [0|1000] "psi" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_rr_p :
48|8@0+ (0.362976,0) [0|1000] "psi" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_fl_t :
8|8@0+ (1,-40) [-40|100] "C" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_fr_t :
24|8@0+ (1,-40) [-40|100] "C" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_rl_t :
40|8@0+ (1,-40) [-40|100] "C" TPMS</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""> SG_ v_tp_rr_t :
56|8@0+ (1,-40) [-40|100] "C" TPMS</span></font></div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">And got this:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding:
0px;" class="">
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">key records ms last</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">can1/344 24 583 57 48 56
49 75 4d 76 4e | WHVIuMvN</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_fl_p: 31.5789
psi</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_fr_p: 31.2159
psi</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_rl_p: 42.4682
psi</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_rr_p: 42.8312
psi</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_fl_t: 32 C</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_fr_t: 33 C</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_rl_t: 37 C</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">dbc/v_tp_rr_t: 38 C</span></font></div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">That looks good.</div>
<div class=""><br class="">
</div>
<div class="">Only issue so far is that when I switch to page #2,
it immediately switches back to page #1. I guess it thinks there
is new data, but the link was idle at the time. </div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding:
0px;" class="">
<div class="">
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">D (2097680) notify:
Created entry type 'stream' subtype 'retools.status'
size 269 has 1 readers pending</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">D (2097680) notify:
Created entry type 'stream' subtype
'retools.list.update' size 3 has 1 readers pending</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">D (2098680) notify:
Created entry type 'stream' subtype 'retools.status'
size 269 has 1 readers pending</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">D (2098690) notify:
Created entry type 'stream' subtype
'retools.list.update' size 3 has 1 readers pending</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">D (2099680) notify:
Created entry type 'stream' subtype 'retools.status'
size 269 has 1 readers pending</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">D (2099680) notify:
Created entry type 'stream' subtype
'retools.list.update' size 3 has 1 readers pending</span></font></div>
</div>
</blockquote>
<div class="">
<div><br class="">
</div>
<div>It seems re_stream_changed always sends “[]”, even if no
changes. Easy to fix, but perhaps better to address in the
Javascript.</div>
<div><br class="">
</div>
<div>I’m going to continue with the live DBC editing commands
now. That is the pain point for using this in the real world
(as the current approach is onerous: (a) detaching the DBC
from the CAN bus, (b) switching to editor, (c) editing the
DBC, (d) switch to command and ‘dbc autoload’, then (e)
re-attaching the DBC to the CAN bus). It can, however, all be
done from the web interface. Also building up DBC files for
Tesla Roadster, to see just how much can be done in that
format. I think I also need to get my DBC implementation to
support strings.</div>
<div><br class="">
</div>
<div>Regards, Mark.</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 24 Feb 2019, at 9:38 PM, Michael Balzer
<<a href="mailto:dexter@expeedo.de" class=""
moz-do-not-send="true">dexter@expeedo.de</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" class="">
<div text="#000000" bgcolor="#FFFFFF" class=""> Mark,<br
class="">
<br class="">
the crash was no memory corruption, it was a race
condition in the RE init (the queue was created after
the task).<br class="">
<br class="">
DataTables integration and the first draft of the RE
tools web UI is now in the hub. It's already usable but
far from finished, so I didn't include it as a standard
page. Install "web/retools.htm" as a plugin to use &
work on it.<br class="">
<br class="">
The layout is following your draft, and I've added some
rules for small devices.<br class="">
<br class="">
I've added some control buttons and status output, the
table stream updates and a detail call on row clicks.
Btw: it may be better to send detail info to the browser
using the stream updates (for example in hidden
columns), so the browser doesn't need to request them.<br
class="">
<br class="">
The table is mostly standard DataTable, I've only
enabled the responsive plugin, that does dynamic hiding
& drilldown of columns. I've included most of the
plugins, so there are many additional options:<br
class="">
<ul class="">
<li class="">Included libraries:</li>
<ul class="">
<li class="">DataTables 1.10.18, Buttons 1.5.4,
Column visibility 1.5.4, ColReorder 1.5.0,
FixedColumns 3.2.5, FixedHeader 3.1.4, KeyTable
2.5.0, Responsive 2.2.2, RowGroup 1.1.0,
RowReorder 1.2.4, Scroller 1.5.0, Select 1.2.6</li>
</ul>
<li class="">see <a class="moz-txt-link-freetext"
href="https://datatables.net/extensions/index"
moz-do-not-send="true">https://datatables.net/extensions/index</a><br
class="">
</li>
</ul>
The web UI listens to stream updates for the table and
the text displays using this scheme:<br class="">
<ul class="">
<li class="">Subtype "retools/list/set" → replace list
by payload<br class="">
</li>
<li class="">Subtype "retools/list/update" →
update/extend list by payload</li>
<li class="">Subtype "retools/<boxid>" → set
payload as text content in box <boxid>, boxid
e.g. "status", "info" or "extra"<br class="">
</li>
</ul>
Example: notify raise text stream retools/extra "hi
there"<br class="">
<br class="">
Text boxes are currently <samp> with monospace
font & text to html conversion. If you'd like to
display HTML, replace "<tt class="">$('<div/>').text(msg.value).html()</tt>"
by just "<tt class="">msg.value</tt>" on line 175.<br
class="">
<br class="">
Table updates are sent as JSON arrays with HTML markup
for the changed/discovered highlighting. This currently
uses <b> & <u>, which are styled
accordingly. Command "re stream list" creates a message
with all rows (no highlighting), "re stream changed"
includes only changed rows (with highlighting).<br
class="">
<br class="">
I've added a first stream sender on the per second
ticker. That currently simply sends all changed rows and
could be optimized to only send those changed since the
last tx. It could also make sense to raise the update
frequency then.<br class="">
<br class="">
The status box monitors some "retools" events I
introduced, the stream ticker also updates the box -- if
the stream subscription & updating is going to be
permanent (as now), the event coupling can be removed.<br
class="">
<br class="">
Regards,<br class="">
Michael<br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Am 23.02.19 um 10:18
schrieb Michael Balzer:<br class="">
</div>
<blockquote type="cite"
cite="mid:28e770e9-49ee-925e-2c3c-50826519e43d@expeedo.de"
class="">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" class="">
Side note: starting the RE server from the web shell
currently consistently results in a crash from <tt
class="">xQueueReceive()</tt> that looks like our
"old friend", the memory corruption.<br class="">
<br class="">
Starting from the async console or ssh or via MP
works. No idea yet how that could make a difference
for xQueueReceive(), I'll assume it's the PSRAM bug
for now.<br class="">
<br class="">
<br class="">
<tt class="">D (38792) webcommand:
HttpCommandStream[0x3fa2c358] init:
handler=0x3fa2f6a0 command='re start'
verbosity=65535</tt><tt class=""><br class="">
</tt><tt class="">I (38812) webcommand:
HttpCommandStream[0x3fa2c358]: 1996204 bytes free,
executing: re start</tt><tt class=""><br class="">
</tt><b class=""><tt class="">assertion "res == coreID
|| res == portMUX_FREE_VAL" failed: file
"/home/balzer/esp/esp-idf/components/freertos/portmux_impl.inc.h",
line 105, function:
vPortCPUAcquireMutexIntsDisabledExtram</tt></b><tt
class=""><br class="">
</tt><tt class="">abort() was called at PC 0x40112f67
on core 1</tt><tt class=""><br class="">
</tt><tt class=""><br class="">
</tt><tt class="">Backtrace: 0x40091188:0x3ffea650
0x40091383:0x3ffea670 0x40112f67:0x3ffea690
0x40093ce3:0x3ffea6c0 0x40095ac0:0x3ffea6f0
0x4016c08a:0x3ffea730 0x4016c0c1:0x3ffea770</tt><tt
class=""><br class="">
</tt><tt class=""><br class="">
</tt><tt class="">Rebooting...</tt><tt class=""><br
class="">
</tt><br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Am 16.02.19 um 14:00
schrieb Mark Webb-Johnson:<br class="">
</div>
<blockquote type="cite"
cite="mid:3700E7C1-6156-467F-8977-EC7AB5F06FD8@webb-johnson.net"
class="">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8" class="">
<div dir="ltr" class="">Thanks, Michael.</div>
<div dir="ltr" class=""><br class="">
</div>
<div dir="ltr" class="">I can handle the RE side of
things - just haven’t done a lot of work in
JavaScript (too many people better at it than me
at my day job, so I leave it to them). I can also
probably extend it once the basics are working.</div>
<div dir="ltr" class=""><br class="">
</div>
<div dir="ltr" class="">Just need a basic UI
framework, and some way to push the data from RE.</div>
<div dir="ltr" class=""><br class="">
</div>
<div dir="ltr" class="">No hurry.</div>
<div dir="ltr" class=""><br class="">
</div>
<div dir="ltr" class="">Regards, Mark</div>
<div dir="ltr" class=""><br class="">
</div>
<div dir="ltr" class="">On 16 Feb 2019, at 8:43 PM,
Michael Balzer <<a
href="mailto:dexter@expeedo.de"
moz-do-not-send="true" class="">dexter@expeedo.de</a>>
wrote:<br class="">
<br class="">
</div>
<blockquote type="cite" class="">
<div dir="ltr" class="">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" class="">
Mark,<br class="">
<br class="">
I haven't seen the necessity for a complex
plugin just for table views up to now. Normally
it's pretty simple to make dynamic tables just
using HTML5 and jQuery. For example, see the
file selector widget I created. That uses a
table to display the file entries, it's dynamic,
sortable & responsive with just a few lines
of code.<br class="">
<br class="">
DataTables adds a lot of features and simplifies
manipulations of the data. I like the automatic
responsive drilldown shown here:<br class="">
<a class="moz-txt-link-freetext"
href="https://datatables.net/extensions/responsive/examples/styling/bootstrap.html"
moz-do-not-send="true">https://datatables.net/extensions/responsive/examples/styling/bootstrap.html</a><br
class="">
<br class="">
It's got some weight of course (about half of
the charts lib with just the most basic
extensions), so we would add it as an optional
asset. On a first look it will need some
customization for us, as it uses the glyphicons
for the bootstrap 3 variant, which we don't
include for size reasons.<br class="">
<br class="">
What do others think? And which of the
extensions should be included?<br class="">
<br class="">
Overall, the UI as drafted shouldn't be hard to
implement. I'll see if I can create a first
version, but probably won't have the time before
next weekend.<br class="">
<br class="">
Regards,<br class="">
Michael<br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Am 13.02.19 um
13:05 schrieb Mark Webb-Johnson:<br class="">
</div>
<blockquote type="cite"
cite="mid:6468ACDE-F656-41BC-A868-92985B5DE2B8@webb-johnson.net"
class="">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" class="">
<div class=""><br class="">
</div>
<div class="">Michael, this is probably for
you - but if anybody else can help please
do…</div>
<div class=""><br class="">
</div>
<div class="">I am trying to see how hard it
would be to do a web based interface to the
RETOOLS system. Presumably this would appear
in the menu as Tools / Reverse Engineering
(or some such abbreviation if that is too
long). The basic screen would look something
like this:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class="">
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">+----------------------------------------------------------------------------------------------------+</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">|
|</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| +----------+
+------+-------+------------------------------------+------+
+--------------------+ |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | hdr1 |
hdr2 | hdr3
| hdr4 | | |
|</span></font></div>
<font class="" face="Andale Mono"><span
style="font-size:
 12px;" class="">|
| |
+------+-------+------------------------------------+------+
| </span></font><span
style="font-family:


"Andale
 Mono"; font-size:
12px;" class=""> </span><span
style="font-family:
 "Andale

Mono"; font-size: 12px;" class=""> </span><span
style="font-size: 12px;

font-family:
 "Andale

Mono";" class=""> |</span><span
style="font-size: 12px;
 font-family:
"Andale
 Mono";" class=""> |</span></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class="">
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | Controls | | |
|
| | | Info | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | col1 |
col2 | col3
| col4 | | |
|</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| +----------+ | |
|
| | +--------------------+ |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | |
|
| | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| +----------+ | |
|
| | +--------------------+ |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | Status | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
| TABLE
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | Extra | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | | | |
|
| | | | |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| +----------+ | |
|
| | +--------------------+ |</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">| | |
|
| | |</span></font></div>
<font class="" face="Andale Mono"><span
style="font-size:
 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class=""><font
class="" face="Andale
 Mono"><span
style="font-size: 12px;" class="">|
| | |
| |
|</span></font></blockquote>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class="">
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">|
+------+-------+------------------------------------+------+
|</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">|
|</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">+----------------------------------------------------------------------------------------------------+</span></font></div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">The controls are just a set of
controls - things that bring up dialogs for
more information or perform actions. Like
start/stop RE, switch modes, manipulate DBC
files, etc. Left justified in the frame, and
perhaps 10% of the width. Height can
dynamically adjust with the text content.</div>
<div class=""><br class="">
</div>
<div class="">The Status, Info, and Extra
panes are just a dynamically updated text
panes. Main code needs to be able to send
text here and have it shown in the
appropriate pane. Right justified in the
frame and perhaps 30% of the width. Height
can dynamically adjust with the text
content.</div>
<div class=""><br class="">
</div>
<div class="">The TABLE is a table. Probably 5
columns by many rows (anywhere from 20 to
200 or so). Either paged, scrolling, or just
very tall. Paged is probably preferable.
Would need a simple mechanism to dynamically
add/update a row (identified by ‘key’ column
and in sorted order), presumably using the
web socket. Also need something to be able
to dynamically clear the entire table. The
RETOOLS code would use this to update the
table in realtime (presumably over a web
socket). It would be good if the table could
do things like search filtering of displayed
rows, column sorting, etc (all client side -
something like <a
href="http://datatables.net/" class=""
moz-do-not-send="true">datatables.net</a>).</div>
<div class=""><br class="">
</div>
<div class="">For example, look at this
output:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border:
none;

 padding:
 0px;" class="">
<div class="">
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">OVMS# re dbc list</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">key
records ms last</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">can1/100:0081
2 22000 01 02 03 04 05 |
.....</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class="">can1/101
1 44000 01 02 03 04
| ....</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class=""> dbc/DI_Signal1: 129 km</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class=""> dbc/DI_Signal2: 1 km</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class=""> dbc/DI_Signal3: 130 kWh</span></font></div>
<div class=""><font class="" face="Andale
Mono"><span style="font-size: 12px;"
class=""> dbc/DI_Signal4: 122
Degrees</span></font></div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">The idea is to be able to show
the key, records, ms, last, and ascii dump
in the main table. Then, clicking on a row
would show the statistics for that message
in the Info pane, and DBC signals in the
Extra pane.</div>
<div class=""><br class="">
</div>
<div class="">I can handle the RETOOLS side,
but the javascript is beyond me. I also had
a look at the ovms web server framework, but
it doesn’t seem to be able to do the table
part (yet)?</div>
<div class=""><br class="">
</div>
<div class="">Any idea how complex this is?</div>
<div class=""><br class="">
</div>
<div class="">Regards, Mark.</div>
<div class=""><br class="">
</div>
<br class="">
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br class="">
<pre class="moz-signature" cols="160">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
</div>
</blockquote>
<blockquote type="cite" class="">
<div dir="ltr" class=""><span class="">_______________________________________________</span><br
class="">
<span class="">OvmsDev mailing list</span><br
class="">
<span class=""><a
href="mailto:OvmsDev@lists.openvehicles.com"
moz-do-not-send="true" class="">OvmsDev@lists.openvehicles.com</a></span><br
class="">
<span class=""><a
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
moz-do-not-send="true" class="">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></span><br
class="">
</div>
</blockquote>
<br class="">
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br class="">
<pre class="moz-signature" cols="160">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
<br class="">
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br class="">
<pre class="moz-signature" cols="160">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
</div>
_______________________________________________<br
class="">
OvmsDev mailing list<br class="">
<a href="mailto:OvmsDev@lists.openvehicles.com" class=""
moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br
class="">
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
class="">
</div>
</blockquote>
</div>
<br class="">
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="160">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
</body>
</html>