<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;&#xA;&#xA; padding:&#xA; 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:&#xA; 12px;" class="">|
                                |          |
                                 +------+-------+------------------------------------+------+
                                 |     </span></font><span
                              style="font-family:&#xA;&#xA;
                              "Andale&#xA; Mono"; font-size:
                              12px;" class="">         </span><span
                              style="font-family:&#xA; "Andale&#xA;
                              Mono"; font-size: 12px;" class=""> </span><span
                              style="font-size: 12px;&#xA;
                              font-family:&#xA; "Andale&#xA;
                              Mono";" class="">     |</span><span
                              style="font-size: 12px;&#xA; font-family:
                              "Andale&#xA; Mono";" class=""> |</span></blockquote>
                          <blockquote style="margin: 0 0 0 40px; border:
                            none;&#xA;&#xA; padding:&#xA; 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:&#xA; 12px;" class="">|
                                              |      |       |          
                                                         |      |       
                                                 |</span></font></blockquote>
                          <blockquote style="margin: 0 0 0 40px; border:
                            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:
                            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:
                            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:
                            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:
                            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:
                            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:
                            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:
                            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:
                            none;&#xA;&#xA; padding:&#xA; 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;&#xA;&#xA; padding:&#xA; 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>