<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Turns out the DataTables draw() function has a parameter for this:<br>
<br>
<tt> $list.draw(false);</tt><br>
<br>
→ <a class="moz-txt-link-freetext" href="https://datatables.net/reference/api/draw()">https://datatables.net/reference/api/draw()</a><br>
<br>
Change is pushed, please test.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<div class="moz-cite-prefix">Am 25.02.19 um 18:01 schrieb Michael
Balzer:<br>
</div>
<blockquote type="cite"
cite="mid:62df0c1c-d3d7-191d-7f8c-8e7a698131c1@expeedo.de">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
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"
moz-do-not-send="true">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" 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>
<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>
<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>