pdf.jade 6.6 KB

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