4 new revisions:

Revision: 04786c69f4cf
Author:   Jussi Malinen
Date:     Mon Jun  6 05:18:28 2011
Log:      tabs for details - only styles, no functionality at this point
http://code.google.com/p/robotframework/source/detail?r=04786c69f4cf

Revision: 86d67f08860d
Author:   Jussi Malinen
Date:     Mon Jun  6 06:13:29 2011
Log:      tabs functionality
http://code.google.com/p/robotframework/source/detail?r=86d67f08860d

Revision: ba05aff33cbb
Author:   Jussi Malinen
Date:     Mon Jun  6 06:30:40 2011
Log:      update hashes on drop down selections. also reordered functions
http://code.google.com/p/robotframework/source/detail?r=ba05aff33cbb

Revision: 22409acdce42
Author:   Jussi Malinen
Date:     Mon Jun  6 06:47:14 2011
Log:      tab style tweaking
http://code.google.com/p/robotframework/source/detail?r=22409acdce42

==============================================================================
Revision: 04786c69f4cf
Author:   Jussi Malinen
Date:     Mon Jun  6 05:18:28 2011
Log:      tabs for details - only styles, no functionality at this point
http://code.google.com/p/robotframework/source/detail?r=04786c69f4cf

Modified:
 /src/robot/webcontent/report.html

=======================================
--- /src/robot/webcontent/report.html   Mon Jun  6 04:01:04 2011
+++ /src/robot/webcontent/report.html   Mon Jun  6 05:18:28 2011
@@ -90,6 +90,33 @@
     padding: 2px 4px;
     white-space: pre-wrap;
   }
+  /* Tabs - adapted from http://www.htmldog.com/articles/tabs */
+  #detail_tabs {
+    list-style: none;
+    padding: 0;
+    margin: 0px 1px;
+  }
+  #detail_tabs li {
+    display: inline;
+    background: #C6C6C6;
+    border: 1px solid black;
+    border-bottom-width: 0;
+    margin: 0 0.5em 0 0;
+    padding-top: 0.1em;
+  }
+  #detail_tabs li:hover {
+    background: yellow;
+  }
+  #detail_tabs li a {
+    color: black;
+    text-decoration: none;
+    font-weight: bold;
+    padding: 0 1em;
+  }
+  #detail_tabs #detail_tabs_selected {
+    padding-bottom: 1px;
+    background: white;
+  }
 </style>
 <style media="all" type="text/css">
   /* Generic styles */
@@ -599,6 +626,11 @@

 <script type="text/html" id="details_header">
   <h2 id="${linkTarget}">Test Details</h2>
+  <ul id="detail_tabs">
+    <li><a href="#">Totals</a></li>
+    <li id="detail_tabs_selected"><a href="#">Tags</a></li>
+    <li><a href="#">Suites</a></li>
+  </ul>
   <table class="details" id="details_header">
     <tr>
       <th>Name:</th>

==============================================================================
Revision: 86d67f08860d
Author:   Jussi Malinen
Date:     Mon Jun  6 06:13:29 2011
Log:      tabs functionality
http://code.google.com/p/robotframework/source/detail?r=86d67f08860d

Modified:
 /src/robot/webcontent/report.html

=======================================
--- /src/robot/webcontent/report.html   Mon Jun  6 05:18:28 2011
+++ /src/robot/webcontent/report.html   Mon Jun  6 06:13:29 2011
@@ -113,7 +113,7 @@
     font-weight: bold;
     padding: 0 1em;
   }
-  #detail_tabs #detail_tabs_selected {
+  #detail_tabs .tab_selected {
     padding-bottom: 1px;
     background: white;
   }
@@ -338,9 +338,10 @@
     addHeader();
     addSummary(topsuite);
     addStatistics();
-    renderDetailsHeader("no_selection");
-    if(window.location.hash !== "") {
+    if (window.location.hash) {
         showDetailsByHash();
+    } else {
+        renderTotalSelector("no_selection");
     }
 });

@@ -348,15 +349,44 @@
$.tmpl(window.templates.summaryTable, topsuite).insertAfter($('#header_div'));
 }

-function renderDetailsHeader(linkTarget) {
-    var tagstats = window.testdata.statistics().tag;
-    var suitestats = window.testdata.statistics().suite;
- $.tmpl(window.templates.detailsHeader, {tags: tagstats, suites: suitestats, linkTarget: linkTarget}).appendTo('#test_details_container');
+function showTotalsTab() {
+    renderTotalSelector('totals');
+}
+
+function showTagsTab() {
+    renderTagsSelector('tags');
+}
+
+function showSuitesTab() {
+    renderSuiteSelector('suites');
+}
+
+function renderTotalSelector(linkTarget) {
+    $('#test_details_container').empty();
+    var args = {linkTarget: linkTarget, totals_tab_status: 'tab_selected'};
+ $.tmpl(window.templates.detailsHeader, args).appendTo('#test_details_container'); + $.tmpl(window.templates.totalDetailsSelector).appendTo('#test_details_container');
+}
+
+function renderTagsSelector(linkTarget) {
+    $('#test_details_container').empty();
+    var args = {linkTarget: linkTarget, tags_tab_status: 'tab_selected'};
+    var tagstats = {tags: window.testdata.statistics().tag};
+ $.tmpl(window.templates.detailsHeader, args).appendTo('#test_details_container'); + $.tmpl(window.templates.tagDetailsSelector, tagstats).appendTo('#test_details_container');
+}
+
+function renderSuiteSelector(linkTarget) {
+    $('#test_details_container').empty();
+    var args = {linkTarget: linkTarget, suites_tab_status: 'tab_selected'};
+    var suitestats = {suites: window.testdata.statistics().suite};
+ $.tmpl(window.templates.detailsHeader, args).appendTo('#test_details_container'); + $.tmpl(window.templates.suiteDetailsSelector, suitestats).appendTo('#test_details_container');
 }

 function tagDetailSelected(name) {
     if (name == "") return;
-    refreshDetailsHeader("tag_"+name);
+    renderTagsSelector("tag_"+name);
     var alltags = window.testdata.statistics().tag;
     var tag = findTagByName(name, alltags);
     renderDetailsByTag(tag);
@@ -365,22 +395,17 @@

 function suiteDetailSelected(name) {
     if (name == "") return;
-    refreshDetailsHeader("suite_"+name);
+    renderSuiteSelector("suite_"+name);
     renderDetailsBySuite(name);
     ensureSuiteDetailsAreVisible(name);
 }

 function totalDetailSelected(type) {
     if (type == "") return;
-    refreshDetailsHeader("total_"+type);
+    renderTotalSelector("total_"+type);
     renderTotalDetails(type);
     ensureTotalDetailsAreVisible(type);
 }
-
-function refreshDetailsHeader(linkTarget) {
-    $('#test_details_container').empty();
-    renderDetailsHeader(linkTarget);
-}

 function renderDetailsByTag(tag) {
     var tests = getTestsHavingTag(tag);
@@ -427,6 +452,7 @@
 }

 function showDetailsByHash() {
+    // TODO: cleanup
     hash = window.location.hash.substring(1);
     if(hash.indexOf("suite_")==0){
         suite = hash.substring("suite_".length);
@@ -440,6 +466,15 @@
         type = hash.substring("total_".length);
         totalDetailSelected(type)
     }
+    else if(hash=='totals'){
+        showTotalsTab();
+    }
+    else if(hash=='tags'){
+        showTagsTab();
+    }
+    else if(hash=='suites'){
+        showSuitesTab();
+    }
     window.location.hash = window.location.hash.substring(1);
 }

@@ -504,6 +539,9 @@
         noTagsRow: $('#no_tags_row').template(),
         testDetailsRow: $('#report_test_details_row').template(),
         detailsHeader: $('#details_header').template(),
+        totalDetailsSelector: $('#total_details_selector').template(),
+        tagDetailsSelector: $('#tag_details_selector').template(),
+        suiteDetailsSelector: $('#suite_details_selector').template(),
         tagDetails: $('#tag_details').template(),
         suiteDetails: $('#suite_details').template(),
         totalDetails: $('#total_details').template(),
@@ -627,12 +665,30 @@
 <script type="text/html" id="details_header">
   <h2 id="${linkTarget}">Test Details</h2>
   <ul id="detail_tabs">
-    <li><a href="#">Totals</a></li>
-    <li id="detail_tabs_selected"><a href="#">Tags</a></li>
-    <li><a href="#">Suites</a></li>
+ <li class="${totals_tab_status}"><a href="#totals" onclick="showTotalsTab();">Totals</a></li> + <li class="${tags_tab_status}"><a href="#tags" onclick="showTagsTab();">Tags</a></li> + <li class="${suites_tab_status}"><a href="#suites" onclick="showSuitesTab();">Suites</a></li>
   </ul>
+</script>
+
+<script  type="text/html" id="total_details_selector">
   <table class="details" id="details_header">
     <tr>
+      <th>Name:</th>
+      <td>
+ <select id="total_detail_selector" onchange="totalDetailSelected(this.options[this.selectedIndex].value);">
+          <option value="">Select see to totals...</option>
+              <option value="All Tests">All tests</option>
+              <option value="Critical Tests">Critical tests</option>
+        </select>
+      </td>
+    </tr>
+  </table>
+</script>
+
+<script  type="text/html" id="tag_details_selector">
+  <table class="details" id="details_header">
+    <tr>
       <th>Name:</th>
       <td>
<select id="tag_detail_selector" onchange="tagDetailSelected(this.options[this.selectedIndex].value);">
@@ -641,16 +697,21 @@
<option value="${$value.label}">${$value.label} ${$value.shownInfo}</option>
             {{/each}}
         </select>
+      </td>
+    </tr>
+  </table>
+</script>
+
+<script  type="text/html" id="suite_details_selector">
+  <table class="details" id="details_header">
+    <tr>
+      <th>Name:</th>
+      <td>
<select id="suite_detail_selector" onchange="suiteDetailSelected(this.options[this.selectedIndex].value);">
           <option value="">Select suite...</option>
             {{each suites}}
<option value="${$value.fullname}">${$value.fullname}</option>
             {{/each}}
-        </select>
- <select id="total_detail_selector" onchange="totalDetailSelected(this.options[this.selectedIndex].value);">
-          <option value="">Select see to totals...</option>
-              <option value="All Tests">All tests</option>
-              <option value="Critical Tests">Critical tests</option>
         </select>
       </td>
     </tr>

==============================================================================
Revision: ba05aff33cbb
Author:   Jussi Malinen
Date:     Mon Jun  6 06:30:40 2011
Log:      update hashes on drop down selections. also reordered functions
http://code.google.com/p/robotframework/source/detail?r=ba05aff33cbb

Modified:
 /src/robot/webcontent/report.html

=======================================
--- /src/robot/webcontent/report.html   Mon Jun  6 06:13:29 2011
+++ /src/robot/webcontent/report.html   Mon Jun  6 06:30:40 2011
@@ -383,6 +383,13 @@
$.tmpl(window.templates.detailsHeader, args).appendTo('#test_details_container'); $.tmpl(window.templates.suiteDetailsSelector, suitestats).appendTo('#test_details_container');
 }
+
+function totalDetailSelected(type) {
+    if (type == "") return;
+    renderTotalSelector("total_"+type);
+    renderTotalDetails(type);
+    ensureTotalDetailsAreVisible(type);
+}

 function tagDetailSelected(name) {
     if (name == "") return;
@@ -400,11 +407,9 @@
     ensureSuiteDetailsAreVisible(name);
 }

-function totalDetailSelected(type) {
-    if (type == "") return;
-    renderTotalSelector("total_"+type);
-    renderTotalDetails(type);
-    ensureTotalDetailsAreVisible(type);
+function renderTotalDetails(type) {
+ $.tmpl(window.templates.totalDetails, {type:type}).appendTo('#details_header');
+    drawTestDetailsTable(getTotalTests(type));
 }

 function renderDetailsByTag(tag) {
@@ -421,27 +426,25 @@
$.tmpl(window.templates.suiteDetails, suite).appendTo('#details_header');
     drawTestDetailsTable(suite.allTests())
 }
-
-function renderTotalDetails(type) {
- $.tmpl(window.templates.totalDetails, {type:type}).appendTo('#details_header');
-    drawTestDetailsTable(getTotalTests(type));
-}

 function drawTestDetailsTable(tests) {
$.tmpl(window.templates.testDetailsTable).appendTo('#test_details_container'); $.tmpl(window.templates.testDetailsRow, tests).appendTo('#tests_detail_table');
 }
+
+function ensureTotalDetailsAreVisible(type) {
+    document.getElementById('total_detail_selector').value = type;
+    window.location.hash = 'total_'+type
+}

 function ensureTagDetailsAreVisible(name) {
     document.getElementById('tag_detail_selector').value = name;
+    window.location.hash = 'tag_'+name;
 }

 function ensureSuiteDetailsAreVisible(name) {
     document.getElementById('suite_detail_selector').value = name;
-}
-
-function ensureTotalDetailsAreVisible(type) {
-    document.getElementById('total_detail_selector').value = type;
+    window.location.hash = 'suite_'+name;
 }

 function findTagByName(name, tags) {
@@ -453,7 +456,7 @@

 function showDetailsByHash() {
     // TODO: cleanup
-    hash = window.location.hash.substring(1);
+    hash = decodeURI(window.location.hash.substring(1));
     if(hash.indexOf("suite_")==0){
         suite = hash.substring("suite_".length);
         suiteDetailSelected(suite)
@@ -678,8 +681,8 @@
       <td>
<select id="total_detail_selector" onchange="totalDetailSelected(this.options[this.selectedIndex].value);">
           <option value="">Select see to totals...</option>
-              <option value="All Tests">All tests</option>
-              <option value="Critical Tests">Critical tests</option>
+              <option value="All Tests">All Tests</option>
+              <option value="Critical Tests">Critical Tests</option>
         </select>
       </td>
     </tr>

==============================================================================
Revision: 22409acdce42
Author:   Jussi Malinen
Date:     Mon Jun  6 06:47:14 2011
Log:      tab style tweaking
http://code.google.com/p/robotframework/source/detail?r=22409acdce42

Modified:
 /src/robot/webcontent/report.html

=======================================
--- /src/robot/webcontent/report.html   Mon Jun  6 06:30:40 2011
+++ /src/robot/webcontent/report.html   Mon Jun  6 06:47:14 2011
@@ -94,7 +94,7 @@
   #detail_tabs {
     list-style: none;
     padding: 0;
-    margin: 0px 1px;
+    margin: 0px 1em;
   }
   #detail_tabs li {
     display: inline;
@@ -103,6 +103,7 @@
     border-bottom-width: 0;
     margin: 0 0.5em 0 0;
     padding-top: 0.1em;
+    border-radius: 3px 3px 0 0;
   }
   #detail_tabs li:hover {
     background: yellow;
@@ -113,10 +114,13 @@
     font-weight: bold;
     padding: 0 1em;
   }
-  #detail_tabs .tab_selected {
+  #detail_tabs li.tab_selected {
     padding-bottom: 1px;
     background: white;
   }
+  #detail_tabs li.tab_selected:hover {
+    background: white;
+  }
 </style>
 <style media="all" type="text/css">
   /* Generic styles */

Reply via email to