basic.tpl 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. {%- extends 'display_priority.tpl' -%}
  2. {% from 'celltags.tpl' import celltags %}
  3. {% block codecell %}
  4. <div class="cell border-box-sizing code_cell rendered{{ celltags(cell) }}">
  5. {{ super() }}
  6. </div>
  7. {%- endblock codecell %}
  8. {% block input_group -%}
  9. <div class="input">
  10. {{ super() }}
  11. </div>
  12. {% endblock input_group %}
  13. {% block output_group %}
  14. <div class="output_wrapper">
  15. <div class="output">
  16. {{ super() }}
  17. </div>
  18. </div>
  19. {% endblock output_group %}
  20. {% block in_prompt -%}
  21. <div class="prompt input_prompt">
  22. {%- if cell.execution_count is defined -%}
  23. In&nbsp;[{{ cell.execution_count|replace(None, "&nbsp;") }}]:
  24. {%- else -%}
  25. In&nbsp;[&nbsp;]:
  26. {%- endif -%}
  27. </div>
  28. {%- endblock in_prompt %}
  29. {% block empty_in_prompt -%}
  30. <div class="prompt input_prompt">
  31. </div>
  32. {%- endblock empty_in_prompt %}
  33. {#
  34. output_prompt doesn't do anything in HTML,
  35. because there is a prompt div in each output area (see output block)
  36. #}
  37. {% block output_prompt %}
  38. {% endblock output_prompt %}
  39. {% block input %}
  40. <div class="inner_cell">
  41. <div class="input_area">
  42. {{ cell.source | highlight_code(metadata=cell.metadata) }}
  43. </div>
  44. </div>
  45. {%- endblock input %}
  46. {% block output_area_prompt %}
  47. {%- if output.output_type == 'execute_result' -%}
  48. <div class="prompt output_prompt">
  49. {%- if cell.execution_count is defined -%}
  50. Out[{{ cell.execution_count|replace(None, "&nbsp;") }}]:
  51. {%- else -%}
  52. Out[&nbsp;]:
  53. {%- endif -%}
  54. {%- else -%}
  55. <div class="prompt">
  56. {%- endif -%}
  57. </div>
  58. {% endblock output_area_prompt %}
  59. {% block output %}
  60. <div class="output_area">
  61. {% if resources.global_content_filter.include_output_prompt %}
  62. {{ self.output_area_prompt() }}
  63. {% endif %}
  64. {{ super() }}
  65. </div>
  66. {% endblock output %}
  67. {% block markdowncell scoped %}
  68. <div class="cell border-box-sizing text_cell rendered{{ celltags(cell) }}">
  69. {%- if resources.global_content_filter.include_input_prompt-%}
  70. {{ self.empty_in_prompt() }}
  71. {%- endif -%}
  72. <div class="inner_cell">
  73. <div class="text_cell_render border-box-sizing rendered_html">
  74. {{ cell.source | markdown2html | strip_files_prefix }}
  75. </div>
  76. </div>
  77. </div>
  78. {%- endblock markdowncell %}
  79. {% block unknowncell scoped %}
  80. unknown type {{ cell.type }}
  81. {% endblock unknowncell %}
  82. {% block execute_result -%}
  83. {%- set extra_class="output_execute_result" -%}
  84. {% block data_priority scoped %}
  85. {{ super() }}
  86. {% endblock data_priority %}
  87. {%- set extra_class="" -%}
  88. {%- endblock execute_result %}
  89. {% block stream_stdout -%}
  90. <div class="output_subarea output_stream output_stdout output_text">
  91. <pre>
  92. {{- output.text | ansi2html -}}
  93. </pre>
  94. </div>
  95. {%- endblock stream_stdout %}
  96. {% block stream_stderr -%}
  97. <div class="output_subarea output_stream output_stderr output_text">
  98. <pre>
  99. {{- output.text | ansi2html -}}
  100. </pre>
  101. </div>
  102. {%- endblock stream_stderr %}
  103. {% block data_svg scoped -%}
  104. <div class="output_svg output_subarea {{ extra_class }}">
  105. {%- if output.svg_filename %}
  106. <img src="{{ output.svg_filename | posix_path }}">
  107. {%- else %}
  108. {{ output.data['image/svg+xml'] }}
  109. {%- endif %}
  110. </div>
  111. {%- endblock data_svg %}
  112. {% block data_html scoped -%}
  113. <div class="output_html rendered_html output_subarea {{ extra_class }}">
  114. {{ output.data['text/html'] }}
  115. </div>
  116. {%- endblock data_html %}
  117. {% block data_markdown scoped -%}
  118. <div class="output_markdown rendered_html output_subarea {{ extra_class }}">
  119. {{ output.data['text/markdown'] | markdown2html }}
  120. </div>
  121. {%- endblock data_markdown %}
  122. {% block data_png scoped %}
  123. <div class="output_png output_subarea {{ extra_class }}">
  124. {%- if 'image/png' in output.metadata.get('filenames', {}) %}
  125. <img src="{{ output.metadata.filenames['image/png'] | posix_path }}"
  126. {%- else %}
  127. <img src="data:image/png;base64,{{ output.data['image/png'] }}"
  128. {%- endif %}
  129. {%- set width=output | get_metadata('width', 'image/png') -%}
  130. {%- if width is not none %}
  131. width={{ width }}
  132. {%- endif %}
  133. {%- set height=output | get_metadata('height', 'image/png') -%}
  134. {%- if height is not none %}
  135. height={{ height }}
  136. {%- endif %}
  137. {%- if output | get_metadata('unconfined', 'image/png') %}
  138. class="unconfined"
  139. {%- endif %}
  140. {%- set alttext=(output | get_metadata('alt', 'image/png')) or (cell | get_metadata('alt')) -%}
  141. {%- if alttext is not none %}
  142. alt="{{ alttext }}"
  143. {%- endif %}
  144. >
  145. </div>
  146. {%- endblock data_png %}
  147. {% block data_jpg scoped %}
  148. <div class="output_jpeg output_subarea {{ extra_class }}">
  149. {%- if 'image/jpeg' in output.metadata.get('filenames', {}) %}
  150. <img src="{{ output.metadata.filenames['image/jpeg'] | posix_path }}"
  151. {%- else %}
  152. <img src="data:image/jpeg;base64,{{ output.data['image/jpeg'] }}"
  153. {%- endif %}
  154. {%- set width=output | get_metadata('width', 'image/jpeg') -%}
  155. {%- if width is not none %}
  156. width={{ width }}
  157. {%- endif %}
  158. {%- set height=output | get_metadata('height', 'image/jpeg') -%}
  159. {%- if height is not none %}
  160. height={{ height }}
  161. {%- endif %}
  162. {%- if output | get_metadata('unconfined', 'image/jpeg') %}
  163. class="unconfined"
  164. {%- endif %}
  165. {%- set alttext=(output | get_metadata('alt', 'image/jpeg')) or (cell | get_metadata('alt')) -%}
  166. {%- if alttext is not none %}
  167. alt="{{ alttext }}"
  168. {%- endif %}
  169. >
  170. </div>
  171. {%- endblock data_jpg %}
  172. {% block data_latex scoped %}
  173. <div class="output_latex output_subarea {{ extra_class }}">
  174. {{ output.data['text/latex'] }}
  175. </div>
  176. {%- endblock data_latex %}
  177. {% block error -%}
  178. <div class="output_subarea output_text output_error">
  179. <pre>
  180. {{- super() -}}
  181. </pre>
  182. </div>
  183. {%- endblock error %}
  184. {%- block traceback_line %}
  185. {{ line | ansi2html }}
  186. {%- endblock traceback_line %}
  187. {%- block data_text scoped %}
  188. <div class="output_text output_subarea {{ extra_class }}">
  189. <pre>
  190. {{- output.data['text/plain'] | ansi2html -}}
  191. </pre>
  192. </div>
  193. {%- endblock -%}
  194. {%- block data_javascript scoped %}
  195. {% set div_id = uuid4() %}
  196. <div id="{{ div_id }}"></div>
  197. <div class="output_subarea output_javascript {{ extra_class }}">
  198. <script type="text/javascript">
  199. var element = $('#{{ div_id }}');
  200. {{ output.data['application/javascript'] }}
  201. </script>
  202. </div>
  203. {%- endblock -%}
  204. {%- block data_widget_state scoped %}
  205. {% set div_id = uuid4() %}
  206. {% set datatype_list = output.data | filter_data_type %}
  207. {% set datatype = datatype_list[0]%}
  208. <div id="{{ div_id }}"></div>
  209. <div class="output_subarea output_widget_state {{ extra_class }}">
  210. <script type="text/javascript">
  211. var element = $('#{{ div_id }}');
  212. </script>
  213. <script type="{{ datatype }}">
  214. {{ output.data[datatype] | json_dumps }}
  215. </script>
  216. </div>
  217. {%- endblock data_widget_state -%}
  218. {%- block data_widget_view scoped %}
  219. {% set div_id = uuid4() %}
  220. {% set datatype_list = output.data | filter_data_type %}
  221. {% set datatype = datatype_list[0]%}
  222. <div id="{{ div_id }}"></div>
  223. <div class="output_subarea output_widget_view {{ extra_class }}">
  224. <script type="text/javascript">
  225. var element = $('#{{ div_id }}');
  226. </script>
  227. <script type="{{ datatype }}">
  228. {{ output.data[datatype] | json_dumps }}
  229. </script>
  230. </div>
  231. {%- endblock data_widget_view -%}
  232. {%- block footer %}
  233. {% set mimetype = 'application/vnd.jupyter.widget-state+json'%}
  234. {% if mimetype in nb.metadata.get("widgets",{})%}
  235. <script type="{{ mimetype }}">
  236. {{ nb.metadata.widgets[mimetype] | json_dumps }}
  237. </script>
  238. {% endif %}
  239. {{ super() }}
  240. {%- endblock footer-%}