pdf.jade 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. div.full-size.pdf(ng-controller="PdfController")
  2. .toolbar.toolbar-tall
  3. a.btn.btn-info(
  4. href,
  5. ng-disabled="pdf.compiling",
  6. ng-click="recompile()"
  7. )
  8. i.fa.fa-refresh(
  9. ng-class="{'fa-spin': pdf.compiling }"
  10. )
  11. |   
  12. span(ng-show="!pdf.compiling") #{translate("recompile")}
  13. span(ng-show="pdf.compiling") #{translate("compiling")}...
  14. a.log-btn(
  15. href
  16. ng-click="toggleLogs()"
  17. ng-class="{ 'active': (pdf.view == 'logs' || pdf.failure) && !pdf.error && !pdf.timeout && !pdf.uncompiled }"
  18. tooltip="#{translate('logs_and_output_files')}"
  19. tooltip-placement="bottom"
  20. )
  21. i.fa.fa-file-text-o
  22. span.label(
  23. ng-show="pdf.logEntries.warnings.length + pdf.logEntries.errors.length > 0"
  24. ng-class="{\
  25. 'label-warning': pdf.logEntries.errors.length == 0,\
  26. 'label-danger': pdf.logEntries.errors.length > 0\
  27. }"
  28. ) {{ pdf.logEntries.errors.length + pdf.logEntries.warnings.length }}
  29. a(
  30. ng-href="{{pdf.url}}"
  31. target="_blank"
  32. ng-if="pdf.url"
  33. tooltip="#{translate('download_pdf')}"
  34. tooltip-placement="bottom"
  35. )
  36. i.fa.fa-download
  37. .toolbar-right
  38. a(
  39. href,
  40. ng-click="switchToFlatLayout()"
  41. ng-show="ui.pdfLayout == 'sideBySide'"
  42. tooltip="#{translate('full_screen')}"
  43. tooltip-placement="bottom"
  44. tooltip-append-to-body="true"
  45. )
  46. i.full-screen
  47. a(
  48. href,
  49. ng-click="switchToSideBySideLayout()"
  50. ng-show="ui.pdfLayout == 'flat'"
  51. tooltip="#{translate('split_screen')}"
  52. tooltip-placement="bottom"
  53. tooltip-append-to-body="true"
  54. )
  55. i.split-screen
  56. i.split-screen
  57. .pdf-viewer(ng-show="pdf.url && pdf.view == 'pdf' && !pdf.failure && !pdf.timeout && !pdf.error")
  58. - // user.featureSwitches = {} // override
  59. - var usePdfNG = user.featureSwitches && user.featureSwitches.pdfng;
  60. if !usePdfNG
  61. div(
  62. pdfjs
  63. ng-if="settings.pdfViewer == 'pdfjs'"
  64. pdf-src="pdf.url"
  65. key="{{ project_id }}"
  66. resize-on="layout:main:resize,layout:pdf:resize"
  67. highlights="pdf.highlights"
  68. position="pdf.position"
  69. dbl-click-callback="syncToCode"
  70. )
  71. else
  72. div(
  73. pdfng
  74. ng-if="settings.pdfViewer == 'pdfjs'"
  75. pdf-src="pdf.url"
  76. key="{{ project_id }}"
  77. resize-on="layout:main:resize,layout:pdf:resize"
  78. highlights="pdf.highlights"
  79. position="pdf.position"
  80. dbl-click-callback="syncToCode"
  81. )
  82. iframe(
  83. ng-src="{{ pdf.url }}"
  84. ng-if="settings.pdfViewer == 'native'"
  85. )
  86. .pdf-uncompiled(ng-show="pdf.uncompiled && !pdf.compiling")
  87. |  
  88. i.fa.fa-level-up.fa-flip-horizontal.fa-2x
  89. |   #{translate('click_here_to_preview_pdf')}
  90. .pdf-errors(ng-show="pdf.timedout || pdf.error")
  91. .alert.alert-danger(ng-show="pdf.error")
  92. strong #{translate("server_error")}
  93. span #{translate("somthing_went_wrong_compiling")}
  94. .alert.alert-danger(ng-show="pdf.timedout")
  95. p
  96. strong #{translate("timedout")}.
  97. span #{translate("proj_timed_out_reason")}
  98. p
  99. a.text-info(href="https://www.sharelatex.com/learn/Debugging_Compilation_timeout_errors", target="_blank")
  100. | #{translate("learn_how_to_make_documents_compile_quickly")}
  101. .alert.alert-success(ng-show="pdf.timedout && !hasPremiumCompile")
  102. p
  103. strong #{translate("upgrade_for_faster_compiles")}
  104. p #{translate("free_accounts_have_timeout_upgrade_to_increase")}
  105. p
  106. a.btn.btn-info(
  107. href
  108. ng-click="hello('compile-timeout')"
  109. ) #{translate("start_free_trial")}
  110. .pdf-errors(ng-show="pdf.projectTooLarge")
  111. .alert.alert-danger
  112. strong #{translate("project_too_large")}
  113. span #{translate("project_too_large_please_reduce")}
  114. .pdf-logs(ng-show="(pdf.view == 'logs' || pdf.failure) && !pdf.error && !pdf.timeout && !pdf.uncompiled")
  115. .alert.alert-success(ng-show="pdf.logEntries.all.length == 0")
  116. | #{translate("no_errors_good_job")}
  117. .alert.alert-danger(ng-show="pdf.failure")
  118. strong #{translate("compile_error")}.
  119. span #{translate("generic_failed_compile_message")}.
  120. div(ng-repeat="entry in pdf.logEntries.all", ng-controller="PdfLogEntryController")
  121. .alert(
  122. ng-class="{\
  123. 'alert-danger': entry.level == 'error',\
  124. 'alert-warning': entry.level == 'warning',\
  125. 'alert-info': entry.level == 'typesetting'\
  126. }"
  127. ng-click="openInEditor(entry)"
  128. )
  129. span.line-no
  130. span(ng-show="entry.file") {{ entry.file }}
  131. span(ng-show="entry.line") , line {{ entry.line }}
  132. p.entry-message(ng-show="entry.message") {{ entry.message }}
  133. p.entry-content(ng-show="entry.content") {{ entry.content }}
  134. p
  135. .pull-right
  136. a.btn.btn-default.btn-sm(
  137. href,
  138. tooltip="#{translate('clear_cached_files')}",
  139. tooltip-placement="top",
  140. tooltip-append-to-body="true",
  141. ng-click="openClearCacheModal()"
  142. )
  143. i.fa.fa-trash-o
  144. |  
  145. div.dropdown(style="display: inline-block;")
  146. a.btn.btn-default.btn-sm(
  147. href
  148. dropdown-toggle
  149. )
  150. | !{translate("other_logs_and_files")}
  151. span.caret
  152. ul.dropdown-menu.dropdown-menu-right
  153. li(ng-repeat="file in pdf.outputFiles")
  154. a(
  155. href="/project/{{project_id}}/output/{{file.path}}"
  156. target="_blank"
  157. ng-click="openOutputFile(file)"
  158. ) {{ file.name }}
  159. a.btn.btn-info.btn-sm(href, ng-click="toggleRawLog()")
  160. span(ng-show="!pdf.showRawLog") #{translate("view_raw_logs")}
  161. span(ng-show="pdf.showRawLog") #{translate("hide_raw_logs")}
  162. pre(ng-bind="pdf.rawLog", ng-show="pdf.showRawLog")
  163. script(type='text/ng-template', id='clearCacheModalTemplate')
  164. .modal-header
  165. h3 #{translate("clear_cache")}?
  166. .modal-body
  167. p #{translate("clear_cache_explanation")}
  168. p #{translate("clear_cache_is_safe")}
  169. .modal-footer
  170. button.btn.btn-default(
  171. ng-click="cancel()"
  172. ng-disabled="state.inflight"
  173. ) #{translate("cancel")}
  174. button.btn.btn-info(
  175. ng-click="clear()"
  176. ng-disabled="state.inflight"
  177. )
  178. span(ng-show="!state.inflight") #{translate("clear_cache")}
  179. span(ng-show="state.inflight") #{translate("clearing")}...