<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:&#xA; 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:&#xA; 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:&#xA; 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:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class="">
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">+----------------------------------------------------------------------------------------------------+</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                                                       
                                                                       
                                                               |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    +----------+
                                     +------+-------+------------------------------------+------+
                                     +--------------------+ |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  | hdr1 |  hdr2 |      
                                               hdr3              | hdr4
                                    |  |                    | |</span></font></div>
                              <font class="" face="Andale Mono"><span
                                  style="font-size:&#xA; 12px;" class="">|
                                  |          |
                                   +------+-------+------------------------------------+------+
                                   |     </span></font><span
                                style="font-family:&#xA;&#xA;&#xA;
                                "Andale&#xA; Mono";
                                font-size:&#xA; 12px;" class="">       
                                 </span><span style="font-family:&#xA;
                                "Andale&#xA;&#xA; Mono";
                                font-size: 12px;" class=""> </span><span
                                style="font-size: 12px;&#xA;&#xA;
                                font-family:&#xA; "Andale&#xA;&#xA;
                                Mono";" class="">     |</span><span
                                style="font-size: 12px;&#xA;
                                font-family:&#xA; "Andale&#xA;
                                Mono";" class=""> |</span></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class="">
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    | Controls |  |      |       |      
                                                                 |    
                                     |  |        Info        | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  | col1 |  col2 |      
                                               col3              | col4
                                    |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    +----------+  |      |       |      
                                                                 |    
                                     |  +--------------------+ |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                                  |      |       |      
                                                                 |    
                                     |                         |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    +----------+  |      |       |      
                                                                 |    
                                     |  +--------------------+ |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |  Status  |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                          TABLE                  |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |        Extra       | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |     
                                    |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    |          |  |      |       |      
                                                                 |    
                                     |  |                    | |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                    +----------+  |      |       |      
                                                                 |    
                                     |  +--------------------+ |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                                  |      |       |      
                                                                 |    
                                     |                         |</span></font></div>
                              <font class="" face="Andale Mono"><span
                                  style="font-size:&#xA; 12px;" class="">|
                                                |      |       |        
                                                             |      |   
                                                       |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class=""><font class=""
                                face="Andale&#xA; Mono"><span
                                  style="font-size: 12px;" class="">|  
                                              |      |       |          
                                                           |      |     
                                                     |</span></font></blockquote>
                            <blockquote style="margin: 0 0 0 40px;
                              border:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class="">
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                                 
+------+-------+------------------------------------+------+            
                                                |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; Mono"><span
                                    style="font-size: 12px;" class="">|
                                                                       
                                                                       
                                                               |</span></font></div>
                              <div class=""><font class=""
                                  face="Andale&#xA; 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:&#xA; none;&#xA;&#xA; padding:&#xA;
                              0px;" class="">
                              <div class="">
                                <div class=""><font class=""
                                    face="Andale&#xA; Mono"><span
                                      style="font-size: 12px;" class="">OVMS#
                                      re dbc list</span></font></div>
                                <div class=""><font class=""
                                    face="Andale&#xA; Mono"><span
                                      style="font-size: 12px;" class="">key
                                                          records     ms
                                      last</span></font></div>
                                <div class=""><font class=""
                                    face="Andale&#xA; 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&#xA; Mono"><span
                                      style="font-size: 12px;" class="">can1/101
                                                           1  44000 01
                                      02 03 04             | ....</span></font></div>
                                <div class=""><font class=""
                                    face="Andale&#xA; Mono"><span
                                      style="font-size: 12px;" class=""> 
                                      dbc/DI_Signal1: 129 km</span></font></div>
                                <div class=""><font class=""
                                    face="Andale&#xA; Mono"><span
                                      style="font-size: 12px;" class=""> 
                                      dbc/DI_Signal2: 1 km</span></font></div>
                                <div class=""><font class=""
                                    face="Andale&#xA; Mono"><span
                                      style="font-size: 12px;" class=""> 
                                      dbc/DI_Signal3: 130 kWh</span></font></div>
                                <div class=""><font class=""
                                    face="Andale&#xA; 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>