docs: function renderList(list, theme) {
  
  
      var txtDiv = document.createElement("table");
      txtDiv.className = 'table table-condensed table-bordered table-hover-' + theme;
      //bootstrapInterface.info(txtDiv.className);
  
      /**
       * Header
       */
      var tHead = addEle(txtDiv, 'thead');
      var tHeadRow = addEle(tHead, 'tr');
      for (j = 1; j < list.model.attributes.length; j++) { // skip id (0))
        var hAttribute = list.model.attributes[j];
        if (hAttribute.hidden == undefined)
          addEle(tHeadRow, 'th').innerHTML = hAttribute.label;
      }
  
      /**
       * Now each row in list
       */
      var gotData = list.moveFirst();
      var tBody = addEle(txtDiv, 'tbody');
      while (gotData) {
        var tBodyRow = addEle(tBody, 'tr');
        var idAttribute = list.model.attributes[0];
        $(tBodyRow).data("id", list.get(idAttribute.name));
        $(tBodyRow).click(function (e) {
          // bootstrapInterface.dispatch(new Request({type: 'Command', command: action}));
          // bootstrapInterface.info('you picked #' + $(e.currentTarget).data("id"));
          if (list.pickKludge)
            list.pickKludge($(e.currentTarget).data("id")); // too shitty balls
          e.preventDefault();
        });
  
        for (j = 1; j < list.model.attributes.length; j++) { // skip id (0))
          var dAttribute = list.model.attributes[j];
          if (dAttribute.hidden == undefined) {
            var dValue = list.get(dAttribute.name);
            switch (dAttribute.type) {
              case 'Date':
                //console.log('dValue=' + dValue);
                // addEle(tBodyRow, 'td').innerHTML = left(dValue.toISOString(), 10);
                // addEle(tBodyRow, 'td').innerHTML = dValue.toString(); // todo use moment.js
                if (dValue)
                  addEle(tBodyRow, 'td').innerHTML = left(dValue.toISOString(), 10);
                else
                  addEle(tBodyRow, 'td').innerHTML = '&nbsp;';
                break;
              case 'Boolean':
                if (dValue)
                  addEle(tBodyRow, 'td').innerHTML = '<i class="fa fa-check-square-o"></i>';
                else
                  addEle(tBodyRow, 'td').innerHTML = '<i class="fa fa-square-o"></i>';
                break;
              default:
                if (dValue && dValue.name) // todo instanceof Attribute.ModelID did not work so kludge here
                  addEle(tBodyRow, 'td').innerHTML = dValue.name;
                else
                  addEle(tBodyRow, 'td').innerHTML = dValue;
            }
          }
        }
        gotData = list.moveNext();
      }
      panel.panelForm.appendChild(txtDiv);
  
    }