index.ejs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  5. <meta name="robots" content="NONE,NOARCHIVE" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <title><%= htmlWebpackPlugin.options.title || 'Sentry Dev'%></title>
  8. <script>
  9. function __sentryMark(name) {
  10. if (!window.performance || typeof window.performance.mark !== 'function') { return; }
  11. window.performance.mark(name);
  12. }
  13. __sentryMark('head-start');
  14. </script>
  15. <script type="text/javascript">
  16. try {
  17. var reg = new RegExp(/\/organizations\/(.+?(?=(\/|$)))(\/|$)/, 'i');
  18. var organization = window.location.pathname;
  19. var slug = organization.match(reg)[1];
  20. var preloadPromises = { orgSlug: slug };
  21. function promiseRequest(url) {
  22. return new Promise(function (resolve, reject) {
  23. var xhr = new XMLHttpRequest();
  24. xhr.open('GET', url);
  25. xhr.onload = function () {
  26. try {
  27. this.status >= 200 && this.status < 300
  28. ? resolve([JSON.parse(xhr.response), this.statusText, xhr])
  29. : reject([this.status, this.statusText]);
  30. } catch(e) {
  31. reject();
  32. }
  33. };
  34. xhr.onerror = function () {
  35. reject([this.status, this.statusText]);
  36. };
  37. xhr.send();
  38. });
  39. }
  40. function makeUrl(suffix) {
  41. return '/api/0/organizations/' + slug + suffix;
  42. }
  43. window.__sentry_preload = preloadPromises;
  44. if (slug !== 'new') {
  45. preloadPromises.organization = promiseRequest(makeUrl('/?detailed=0'));
  46. preloadPromises.projects = promiseRequest(makeUrl('/projects/?all_projects=1&collapse=latestDeploys'));
  47. preloadPromises.teams = promiseRequest(makeUrl('/teams/'));
  48. }
  49. } catch(_) {}
  50. </script>
  51. </head>
  52. <body>
  53. <% if (htmlWebpackPlugin.options.unsupportedBrowser) { %>
  54. <style>.unsupported-browser { display: none; }</style>
  55. <div class="unsupported-browser">
  56. Sorry, your browser is not supported. Please upgrade to
  57. the latest version or switch your browser to use this site.
  58. See <a href="http://outdatedbrowser.com/">outdatedbrowser.com</a>
  59. for options.
  60. </div>
  61. <% } %>
  62. <div id="blk_router">
  63. <div class="loading triangle">
  64. <div class="loading-mask"></div>
  65. <div class="loading-indicator" data-test-id="loading-indicator">
  66. <img src="<%=require('sentry-images/sentry-loader.svg')%>" />
  67. </div>
  68. <div class="loading-message">
  69. <p>Please wait while we load an obnoxious amount of JavaScript.</p>
  70. <p>
  71. <small>You may need to disable adblocking extensions to load Sentry.</small>
  72. </p>
  73. </div>
  74. </div>
  75. </div>
  76. <% if (htmlWebpackPlugin.options.window) { %>
  77. <script>
  78. <% for (var varName in htmlWebpackPlugin.options.window) { %>
  79. window['<%=varName%>'] = <%= JSON.stringify(htmlWebpackPlugin.options.window[varName]) %>;
  80. <% } %>
  81. </script>
  82. <% } %>
  83. </body>
  84. </html>