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.

272 lines
13 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
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-response" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-response')">
  109. <span ng-show="showOriginal">Raw</span>
  110. <span ng-hide="showOriginal">Formatted</span>
  111. Response</a>
  112. </li>
  113. <li class="tabbed-pane-header-tab">
  114. <a href="#tab-request" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-request')">
  115. <span ng-show="showOriginal">Raw</span>
  116. <span ng-hide="showOriginal">Formatted</span>
  117. Request</a>
  118. </li>
  119. <li class="tabbed-pane-header-tab">
  120. <a href="#tab-request-stats" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-request-stats')">Request</a>
  121. </li>
  122. <li class="tabbed-pane-header-tab">
  123. <a href="#tab-response-stats" class="tabbed-pane-header-tab-title" ng-click="selectDetailTab('tab-response-stats')">Response</a>
  124. </li>
  125. </ul>
  126. </div>
  127. <div class="toolbar"></div>
  128. </div>
  129. <div class="tabbed-pane-content data-grid data-grid-details">
  130. <div id="tab-request-stats">
  131. <table id="postData" ng-show="activePostData.length" title="Click to open Request preview tab">
  132. <thead>
  133. <tr>
  134. <th colspan="2">Request POST Data</th>
  135. </tr>
  136. </thead>
  137. <tbody>
  138. <tr ng-repeat="param in activePostData" ng-click="selectDetailTab('tab-request', true)">
  139. <td class="key">{{param.name}}</td>
  140. <td><pretty-print data="param.value"/></td>
  141. </tr>
  142. </tbody>
  143. </table>
  144. <table id="request-data" ng-show="activeRequest.length">
  145. <thead>
  146. <tr>
  147. <th colspan="2">Request Data</th>
  148. </tr>
  149. </thead>
  150. <tbody>
  151. <tr ng-repeat="param in activeRequest">
  152. <td class="key">{{param.name}}</td>
  153. <td class="value"><pretty-print data="param.value"/></td>
  154. </tr>
  155. </tbody>
  156. </table>
  157. <table id="headers" ng-show="activeHeaders.length">
  158. <thead>
  159. <tr>
  160. <th colspan="2">Request Headers</th>
  161. </tr>
  162. </thead>
  163. <tbody>
  164. <tr ng-repeat="param in activeHeaders">
  165. <td class="key">{{param.name}}</td>
  166. <td class="value"><pretty-print data="param.value"/></td>
  167. </tr>
  168. </tbody>
  169. </table>
  170. <table id="request-cookies" ng-show="activeResponseCookies.length">
  171. <thead>
  172. <tr>
  173. <th colspan="2">Request Cookies</th>
  174. </tr>
  175. </thead>
  176. <tbody>
  177. <tr ng-repeat="param in activeCookies">
  178. <td class="key">{{param.name}}</td>
  179. <td><pretty-print data="param.value"/></td>
  180. </tr>
  181. </tbody>
  182. </table>
  183. </div>
  184. <div id="tab-response-stats">
  185. <table id="response-data" ng-show="activeResponseData.length">
  186. <thead>
  187. <tr>
  188. <th colspan="2">Response Data</th>
  189. </tr>
  190. </thead>
  191. <tbody>
  192. <tr ng-repeat="param in activeResponseData">
  193. <td class="key">{{param.name}}</td>
  194. <td class="value"><pretty-print data="param.value"/></td>
  195. </tr>
  196. </tbody>
  197. </table>
  198. <table id="response-headers" ng-show="activeResponseHeaders.length">
  199. <thead>
  200. <tr>
  201. <th colspan="2">Response Headers</th>
  202. </tr>
  203. </thead>
  204. <tbody>
  205. <tr ng-repeat="param in activeResponseHeaders">
  206. <td class="key">{{param.name}}</td>
  207. <td class="value"><pretty-print data="param.value"/></td>
  208. </tr>
  209. </tbody>
  210. </table>
  211. <table id="response-cookies" ng-show="activeResponseCookies.length">
  212. <thead>
  213. <tr>
  214. <th colspan="2">Response Cookies</th>
  215. </tr>
  216. </thead>
  217. <tbody>
  218. <tr ng-repeat="param in activeResponseCookies">
  219. <td class="key">{{param.name}}</td>
  220. <td><pretty-print data="param.value"/></td>
  221. </tr>
  222. </tbody>
  223. </table>
  224. </div>
  225. <div id="tab-response">
  226. <div id="tab-response-codemirror">
  227. </div>
  228. </div>
  229. <div id="tab-request">
  230. <div id="tab-request-codemirror">
  231. </div>
  232. </div>
  233. <!-- <div id="tab-raw-res">
  234. <pre ng-show="activeCode">{{getPretty(activeCode)}}</pre>
  235. <pre ng-hide="activeCode">loading...</pre>
  236. </div>
  237. <div id="tab-raw-req">
  238. <pre ng-show="(activePostData | filter:{name:'text'}).length">{{activePostData | filter: {name:'text'} | json}}</pre>
  239. <pre ng-hide="(activePostData | filter:{name:'text'}).length">loading...</pre>
  240. </div> -->
  241. </div>
  242. </div>
  243. </div>
  244. </div>
  245. </body>
  246. </html>