Consolidated ASP Classic MVC framework from best components
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

395 lignes
11KB

  1. <%
  2. Class ASPUnitUIModern
  3. Public Sub Render(ByRef objRunner) %>
  4. <html>
  5. <head>
  6. <title>ASPUnit</title>
  7. <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
  8. <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet">
  9. <link href='//fonts.googleapis.com/css?family=Open+Sans:400,600,700' rel='stylesheet' type='text/css'>
  10. <style type="text/css">
  11. body {
  12. background-color: #ECF0F1;
  13. padding-top: 280px;
  14. font-family: 'Open Sans', sans-serif;
  15. -webkit-font-smoothing: antialiased;
  16. }
  17. h1, h2, h3, h4, h5, h6 {
  18. font-family: 'Open Sans', sans-serif;
  19. }
  20. a {
  21. color: #95a5a6;
  22. transition: all 0.25s;
  23. }
  24. a:hover {
  25. color: #fff;
  26. text-decoration: none;
  27. }
  28. .project-name {
  29. color: #fff !important;
  30. }
  31. #footer .project-name {
  32. margin-top: 0;
  33. margin-bottom: 0;
  34. }
  35. #container {
  36. position: relative;
  37. height: auto;
  38. min-height: 100%;
  39. }
  40. #header {
  41. color: #ecf0f1;
  42. background-color: #13202c;
  43. transition: all 0.5s;
  44. position: fixed;
  45. left: 0;
  46. right: 0;
  47. top: 0;
  48. z-index: 1000;
  49. text-shadow: 0px 2px 1px #000;
  50. }
  51. #header a {
  52. color: #ecf0f1;
  53. }
  54. #header a:active {
  55. position: relative;
  56. top: 1px;
  57. text-shadow: 0px 1px 1px #000;
  58. }
  59. #header.affix {
  60. padding-top: 0;
  61. padding-bottom: 0.2em;
  62. }
  63. #main {
  64. padding-bottom: 12em;
  65. }
  66. #footer {
  67. position: absolute;
  68. bottom: 0;
  69. width: 100%;
  70. padding-top: 2em;
  71. padding-bottom: 2em;
  72. margin-top: 4em;
  73. color: #95a5a6;
  74. background-color: #13202c;
  75. }
  76. .progress-loading {
  77. box-shadow: 0 2px 6px RGBA(0,0,0,0.25);
  78. border-bottom: 2px #444 solid;
  79. border-radius: 0 0 2px 2px;
  80. }
  81. .pages-overview {
  82. position: relative;
  83. }
  84. .pages-status {
  85. display: inline-block;
  86. }
  87. .pages-options {
  88. display: inline-block;
  89. position: absolute;
  90. right: 0;
  91. }
  92. .page-report .page-overview {
  93. color: #7F8C8D;
  94. }
  95. .page-report .page-overview small {
  96. color: #95A5A6;
  97. }
  98. .page-module {
  99. margin-bottom: 1em;
  100. box-shadow: 0 2px 6px RGBA(0,0,0,0.25);
  101. }
  102. .page-module .page-module-header {
  103. color: #fff;
  104. padding: 1em 2em;
  105. }
  106. .page-module-pass .page-module-header {
  107. background-color: #2ECC71;
  108. border: 1px #27AE60 solid;
  109. }
  110. .page-module-fail .page-module-header {
  111. background-color: #E74C3C;
  112. border: 1px #C0392B solid;
  113. }
  114. .page-module-name {
  115. font-weight: bold;
  116. margin: 0;
  117. }
  118. .page-module-tests {
  119. border-left: 1px #95A5A6 solid;
  120. border-right: 1px #95A5A6 solid;
  121. border-bottom: 3px #95A5A6 solid;
  122. border-radius: 0 0 3px 3px;
  123. }
  124. .page-module-test {
  125. padding: 0.8em 2em;
  126. background-color: #fff;
  127. margin-bottom: 1px;
  128. position: relative;
  129. }
  130. .page-module-test-icon {
  131. position: absolute;
  132. top: 0.5em;
  133. left: -11px;
  134. color: #fff;
  135. width: 22px;
  136. height: 22px;
  137. padding: 3px 4px;
  138. border-radius: 11px;
  139. }
  140. .page-module-test-icon-pass {
  141. box-shadow: 0 3px 0 #27AE60, 0 6px 3px RGBA(0,0,0,0.25);
  142. background-color: #2ECC71;
  143. }
  144. .page-module-test-icon-fail {
  145. box-shadow: 0 3px 0 #C0392B, 0 6px 3px RGBA(0,0,0,0.25);
  146. background-color: #E74C3C;
  147. }
  148. .page-module-test-name {
  149. font-weight: bold;
  150. }
  151. .page-module-test-fail .page-module-test-name, .page-module-test-fail .page-module-test-description {
  152. color: #C0392B;
  153. }
  154. @media (max-width: 768px) {
  155. body {
  156. padding-top: 260px;
  157. }
  158. #main {
  159. padding-bottom: 15em;
  160. }
  161. .pages-options {
  162. display: inline-block;
  163. position: relative;
  164. }
  165. }
  166. </style>
  167. </head>
  168. <body>
  169. <div id="container">
  170. <div id="header" class="jumbotron" data-spy="affix" data-offset-top="10">
  171. <div class="container">
  172. <h1 class="project-name"><strong>ASP</strong>Unit</h1>
  173. <div class="pages-overview">
  174. <div class="pages-status"></div>
  175. <div class="pages-options">
  176. <div class="pages-option-passed-tests">
  177. <a href="#" class="action-hide-passed"><i class="glyphicon glyphicon-remove-sign"></i> Hide Passed Tests</a>
  178. </div>
  179. </div>
  180. <div class="progress progress-striped progress-loading">
  181. <div class="progress-bar progress-bar-success" role="progressbar"></div>
  182. <div class="progress-bar progress-bar-danger" role="progressbar"></div>
  183. </div>
  184. <div class="alert alert-danger progress-error" style="display: none;"></div>
  185. </div>
  186. </div>
  187. </div>
  188. <div id="main">
  189. <div class="page-reports"></div>
  190. </div>
  191. <div id="footer">
  192. <div class="container">
  193. <div class="row">
  194. <div class="col-md-12">
  195. <h3 class="project-name"><strong>ASP</strong>Unit</h3>
  196. </div>
  197. </div>
  198. <div class="row">
  199. <div class="col-md-4">
  200. Classic ASP Unit Testing Library<br />
  201. </div>
  202. <div class="col-md-4">
  203. <ul class="list-unstyled">
  204. <li><a href="https://github.com/rpeterclark/aspunit/"><i class="icon-github"></i> GitHub Project</a></li>
  205. <li><a href="https://github.com/rpeterclark/aspunit/wiki/"><i class="icon-book"></i> Documentation</a></li>
  206. <li><a href="https://github.com/rpeterclark/aspunit/issues/"><i class="icon-bug"></i> Issues</a></li>
  207. </ul>
  208. </div>
  209. <div class="col-md-4">
  210. MIT Licensed
  211. </div>
  212. </div>
  213. </div>
  214. </div>
  215. </div>
  216. <script id="page-status-template" type="text/x-handlebars-template">
  217. {{pageNumber}} of {{pageCount}} pages tested, {{passCount}} of {{testCount}} tests passed
  218. </script>
  219. <script id="page-report-template" type="text/x-handlebars-template">
  220. <div class="page-report container">
  221. <div class="page-overview">
  222. <h3>{{page}} <small>{{passCount}} of {{testCount}} tests passed</small></h3>
  223. </div>
  224. {{#each modules}}
  225. <div class="page-module page-module-{{#if passed}}pass{{else}}fail{{/if}}">
  226. <div class="page-module-header">
  227. <h4 class="page-module-name">{{name}}</h4>
  228. {{passCount}} of {{testCount}} tests passed, {{failCount}} failed, completed in {{duration}} milliseconds
  229. </div>
  230. <div class="page-module-tests">
  231. {{#each tests}}
  232. <div class="page-module-test page-module-test-{{#if passed}}pass{{else}}fail{{/if}}">
  233. {{#if passed}}
  234. <i class="page-module-test-icon page-module-test-icon-pass glyphicon glyphicon-ok"></i>
  235. {{else}}
  236. <i class="page-module-test-icon page-module-test-icon-fail glyphicon glyphicon-remove"></i>
  237. {{/if}}
  238. <span class="page-module-test-name">{{name}}:</span>
  239. <span class="page-module-test-description">{{description}}</span>
  240. </div>
  241. {{/each}}
  242. </div>
  243. </div>
  244. {{/each}}
  245. </div>
  246. </script>
  247. <script id="page-error-template" type="text/x-handlebars-template">
  248. <div class="page-report container">
  249. <div class="page-module page-module-fail">
  250. <div class="page-module-header">
  251. <h4 class="page-module-name">{{page}}</h4>
  252. </div>
  253. <div class="page-module-tests">
  254. <div class="page-module-test page-module-test-fail">
  255. <i class="page-module-test-icon page-module-test-icon-fail glyphicon glyphicon-remove"></i>
  256. <span class="page-module-test-name">{{error}}{{#if description}}:{{/if}}</span>
  257. <span class="page-module-test-description">{{description}}</span>
  258. </div>
  259. </div>
  260. </div>
  261. </div>
  262. </div>
  263. </script>
  264. <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  265. <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
  266. <script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.min.js"></script>
  267. <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/js/bootstrap.min.js"></script>
  268. <%= objRunner.RenderJSLib() %>
  269. <script>
  270. $(function() {
  271. var successCount = 0;
  272. var pageReportsContainer = $('.page-reports');
  273. var pageReportTemplate = Handlebars.compile($('#page-report-template').html());
  274. var pageErrorTemplate = Handlebars.compile($('#page-error-template').html());
  275. var pageStatusContainer = $('.pages-status');
  276. var pageStatusTemplate = Handlebars.compile($('#page-status-template').html());
  277. var pageReportsProgress = $('.progress-loading');
  278. var progressError = $('.progress-error');
  279. ASPUnit.onStart(function() {
  280. pageReportsProgress.addClass('active');
  281. });
  282. ASPUnit.onPageSuccess(function(details) {
  283. successCount++;
  284. $(pageReportTemplate(details)).appendTo(pageReportsContainer).hide().fadeIn();
  285. });
  286. ASPUnit.onPageFail(function(details) {
  287. $(pageErrorTemplate(details)).appendTo(pageReportsContainer);
  288. });
  289. ASPUnit.onPageFinish(function(details) {
  290. var status = $.extend(details.status, {pageNumber: (details.status.pageIndex + 1)});
  291. pageStatusContainer.html(pageStatusTemplate(status));
  292. var progressPct = (status.pageNumber / status.pageCount);
  293. var passPct = (status.passCount / status.testCount) * (successCount / status.pageNumber);
  294. var failPct = (1 - passPct);
  295. pageReportsProgress.find('.progress-bar-success').css({"width": ((passPct * 100) * progressPct) + "%"})
  296. pageReportsProgress.find('.progress-bar-danger').css({"width": ((failPct * 100) * progressPct) + "%"})
  297. });
  298. ASPUnit.onFinish(function() {
  299. pageReportsProgress.removeClass('active');
  300. });
  301. $(document).on('click', '.action-hide-passed', function(e) {
  302. e.preventDefault();
  303. var $el = $(e.target);
  304. if ($el.hasClass('active')) {
  305. $el.removeClass('active').html('<i class="glyphicon glyphicon-remove-sign"></i> Hide Passed Tests</a>');
  306. showPassedTests();
  307. } else {
  308. $el.addClass('active').html('<i class="glyphicon glyphicon-ok-sign"></i> Show Passed Tests</a>');
  309. hidePassedTests();
  310. }
  311. });
  312. function hidePassedTests() {
  313. $('.page-report').each(function() {
  314. if ($(this).find('.page-module-test-fail').length > 0) {
  315. $(this).find('.page-module-pass').addClass('hidden');
  316. $(this).find('.page-module-test-pass').addClass('hidden');
  317. } else {
  318. $(this).addClass('hidden');
  319. }
  320. });
  321. }
  322. function showPassedTests() {
  323. $('.hidden').removeClass('hidden');
  324. }
  325. });
  326. </script>
  327. <%= objRunner.RenderJSInit() %>
  328. </body>
  329. </html> <%
  330. End Sub
  331. End Class
  332. %>

Powered by TurnKey Linux.