Extends the Chrome Developer Tools, adding a new Network Panel in the Developer Tools window with better searching and response previews. https://leviolson.com/posts/chrome-ext-better-network-panel
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

248 lines
12 KiB

4 years ago
  1. <html ng-app="BNPChrome" ng-csp="">
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="vendor/assets/stylesheets/jquery.resizableColumns.css">
  4. <link rel="stylesheet" type="text/css" href="vendor/assets/stylesheets/style.css">
  5. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/lib/codemirror.css">
  6. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/theme/3024-day.css">
  7. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/theme/base16-light.css">
  8. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/theme/elegant.css">
  9. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/theme/neat.css">
  10. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/theme/material.css">
  11. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/theme/material-ocean.css">
  12. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/addon/dialog/dialog.css">
  13. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/addon/search/matchesonscrollbar.css">
  14. <link rel="stylesheet" type="text/css" href="vendor/assets/codemirror/addon/fold/foldgutter.css">
  15. <link rel="stylesheet" type="text/css" href="assets/stylesheets/panel.css">
  16. <script src="vendor/assets/javascripts/jquery-2.2.4.min.js"></script>
  17. <script src="vendor/assets/javascripts/jquery-ui-1.10.3.custom.min.js"></script>
  18. <script src="vendor/assets/javascripts/keymaster.min.js"></script>
  19. <script src="vendor/assets/javascripts/angular.min.js"></script>
  20. <script src="vendor/assets/javascripts/jquery.resizableColumns.min.js"></script>
  21. <script src="vendor/assets/javascripts/prettydiff.min.js"></script>
  22. <script src="vendor/assets/javascripts/rawinflate.js"></script>
  23. <script src="vendor/assets/codemirror/lib/codemirror.js"></script>
  24. <script src="vendor/assets/codemirror/mode/javascript/javascript.js"></script>
  25. <script src="vendor/assets/codemirror/addon/dialog/dialog.js"></script>
  26. <script src="vendor/assets/codemirror/addon/search/search.js"></script>
  27. <script src="vendor/assets/codemirror/addon/search/jump-to-line.js"></script>
  28. <script src="vendor/assets/codemirror/addon/search/searchcursor.js"></script>
  29. <script src="vendor/assets/codemirror/addon/scroll/annotatescrollbar.js"></script>
  30. <script src="vendor/assets/codemirror/addon/search/matchesonscrollbar.js"></script>
  31. <script src="vendor/assets/codemirror/addon/fold/foldcode.js"></script>
  32. <script src="vendor/assets/codemirror/addon/fold/foldgutter.js"></script>
  33. <script src="vendor/assets/codemirror/addon/fold/brace-fold.js"></script>
  34. <script src="vendor/assets/codemirror/addon/fold/indent-fold.js"></script>
  35. <script src="vendor/assets/javascripts/FileSaver.min.js"></script>
  36. <script src="assets/javascripts/app.js"></script>
  37. <script src="assets/javascripts/panel.js"></script>
  38. <script src="assets/javascripts/toolbar.js"></script>
  39. </head>
  40. <body>
  41. <div class="split-view" ng-controller='PanelController' ng-init="init('chrome-extension')">
  42. <div class="split-view-contents split-view-contents-requests">
  43. <div class="data-grid data-grid-requests">
  44. <table class="header" id="requests-header" resizable-columns data-resizable-columns-sync="#requests">
  45. <thead>
  46. <tr>
  47. <th class='request'>
  48. Path
  49. <input class="request-filter" ng-model="filter" placeholder="Filter" ng-change="filterRequests()" />
  50. <button ng-click="filter = 'apexremote'; filterRequests()">Apex</button>
  51. <button ng-click="filter = 'carts'; filterRequests()">CartsAPI</button>
  52. </th>
  53. <th class='apextype'>
  54. Apex Type
  55. </th>
  56. <th class='apexmethod'>
  57. Apex Method
  58. </th>
  59. <th class='method'>
  60. Method
  61. </th>
  62. <th class='status'>
  63. Status
  64. </th>
  65. <th class='time'>
  66. Time
  67. </th>
  68. </tr>
  69. </thead>
  70. </table>
  71. <div class="data-container">
  72. <table id="requests" resizable-columns data-resizable-columns-sync="#requests-header">
  73. <tr class="sizing">
  74. <td class='request'></td>
  75. <td class='apextype'></td>
  76. <td class='apexmethod'></td>
  77. <td class='method'></td>
  78. <td class='status'></td>
  79. <td class='time'></td>
  80. </tr>
  81. <tr class="data clickable" ng-repeat="request in filteredRequests | orderBy:'id'" ng-click="setActive(request.id)" ng-class="getClass(request.id)">
  82. <!-- scroll-to-new -->
  83. <td class='request {{getTrafficStyle(request)}}' title="{{request.request_url}}">{{request.request_url}}</td>
  84. <td class='apextype' title="{{request.request_apex_type}}">{{request.request_apex_type}}</td>
  85. <td class='apexmethod' title="{{request.request_apex_method}}">{{request.request_apex_method}}</td>
  86. <td class='method' title="{{request.request_method}}">{{request.request_method}}</td>
  87. <td class='status' title="{{request.response_status}}">{{request.response_status}}</td>
  88. <td class='time' title="{{request.time}}">{{ request.time / 1000 | number : 2 }} s</td>
  89. </tr>
  90. <tr class="filler">
  91. <td class='request'></td>
  92. <td class='apextype'></td>
  93. <td class='apexmethod'></td>
  94. <td class='method'></td>
  95. <td class='status'></td>
  96. <td class='time'></td>
  97. </tr>
  98. </table>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="split-view-contents split-view-contents-details">
  103. <div id="tabs" class="tabbed-pane">
  104. <div class="tabbed-pane-header">
  105. <div class="tabbed-pane-header-contents">
  106. <ul class="tabbed-pane-header-tabs">
  107. <li class="tabbed-pane-header-tab">
  108. <a href="#tab-code" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-code')">Preview</a>
  109. </li>
  110. <li class="tabbed-pane-header-tab">
  111. <a href="#tab-request" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-request')">Request</a>
  112. </li>
  113. <li class="tabbed-pane-header-tab">
  114. <a href="#tab-response" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-response')">Response</a>
  115. </li>
  116. </ul>
  117. </div>
  118. <div class="toolbar"></div>
  119. </div>
  120. <div class="tabbed-pane-content data-grid data-grid-details">
  121. <div id="tab-request">
  122. <table id="postData" ng-show="activePostData.length">
  123. <thead>
  124. <tr>
  125. <th colspan="2">Request POST Data</th>
  126. </tr>
  127. </thead>
  128. <tbody>
  129. <tr ng-repeat="param in activePostData">
  130. <td class="key">{{param.name}}</td>
  131. <td><pretty-print data="param.value"/></td>
  132. </tr>
  133. </tbody>
  134. </table>
  135. <table id="request-data" ng-show="activeRequest.length">
  136. <thead>
  137. <tr>
  138. <th colspan="2">Request Data</th>
  139. </tr>
  140. </thead>
  141. <tbody>
  142. <tr ng-repeat="param in activeRequest">
  143. <td class="key">{{param.name}}</td>
  144. <td class="value"><pretty-print data="param.value"/></td>
  145. </tr>
  146. </tbody>
  147. </table>
  148. <table id="headers" ng-show="activeHeaders.length">
  149. <thead>
  150. <tr>
  151. <th colspan="2">Request Headers</th>
  152. </tr>
  153. </thead>
  154. <tbody>
  155. <tr ng-repeat="param in activeHeaders">
  156. <td class="key">{{param.name}}</td>
  157. <td class="value"><pretty-print data="param.value"/></td>
  158. </tr>
  159. </tbody>
  160. </table>
  161. <table id="request-cookies" ng-show="activeResponseCookies.length">
  162. <thead>
  163. <tr>
  164. <th colspan="2">Request Cookies</th>
  165. </tr>
  166. </thead>
  167. <tbody>
  168. <tr ng-repeat="param in activeCookies">
  169. <td class="key">{{param.name}}</td>
  170. <td><pretty-print data="param.value"/></td>
  171. </tr>
  172. </tbody>
  173. </table>
  174. </div>
  175. <div id="tab-response">
  176. <table id="response-data" ng-show="activeResponseData.length">
  177. <thead>
  178. <tr>
  179. <th colspan="2">Response Data</th>
  180. </tr>
  181. </thead>
  182. <tbody>
  183. <tr ng-repeat="param in activeResponseData">
  184. <td class="key">{{param.name}}</td>
  185. <td class="value"><pretty-print data="param.value"/></td>
  186. </tr>
  187. </tbody>
  188. </table>
  189. <table id="response-headers" ng-show="activeResponseHeaders.length">
  190. <thead>
  191. <tr>
  192. <th colspan="2">Response Headers</th>
  193. </tr>
  194. </thead>
  195. <tbody>
  196. <tr ng-repeat="param in activeResponseHeaders">
  197. <td class="key">{{param.name}}</td>
  198. <td class="value"><pretty-print data="param.value"/></td>
  199. </tr>
  200. </tbody>
  201. </table>
  202. <table id="response-cookies" ng-show="activeResponseCookies.length">
  203. <thead>
  204. <tr>
  205. <th colspan="2">Response Cookies</th>
  206. </tr>
  207. </thead>
  208. <tbody>
  209. <tr ng-repeat="param in activeResponseCookies">
  210. <td class="key">{{param.name}}</td>
  211. <td><pretty-print data="param.value"/></td>
  212. </tr>
  213. </tbody>
  214. </table>
  215. </div>
  216. <div id="tab-code">
  217. <div id="tab-code-codemirror">
  218. </div>
  219. </div>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. </body>
  225. </html>