mime.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { Widget } from '@lumino/widgets';
  4. /**
  5. * The default mime type for the extension.
  6. */
  7. const MIME_TYPE = 'application/vnd.jupyterlab.certificate';
  8. /**
  9. * The class name added to the extension.
  10. */
  11. const CLASS_NAME = 'mimerenderer-certificate';
  12. /**
  13. * A widget for rendering certificate.
  14. */
  15. export class OutputWidget extends Widget {
  16. /**
  17. * Construct a new output widget.
  18. */
  19. constructor(options) {
  20. super();
  21. this._mimeType = options.mimeType;
  22. this.addClass(CLASS_NAME);
  23. }
  24. /**
  25. * Render certificate into this widget's node.
  26. */
  27. renderModel(model) {
  28. let data = model.data[this._mimeType];
  29. // this.node.textContent = JSON.stringify(data);
  30. let given = data['given'];
  31. let event = data['event'];
  32. this.node.innerHTML = `
  33. <div class="certificate">
  34. <div class="paper">
  35. <div class="title">Certificate</div>
  36. <div class="text">${given}</div>
  37. <div class="text">For mastery of JupyterLab</div>
  38. <div class="text">${event}</div>
  39. </div>
  40. <div class="medal"></div>
  41. <div class="ribbon ribbon1"></div>
  42. <div class="ribbon ribbon2"></div>
  43. </div>
  44. `;
  45. return Promise.resolve();
  46. }
  47. }
  48. /**
  49. * A mime renderer factory for certificate data.
  50. */
  51. export const rendererFactory = {
  52. safe: true,
  53. mimeTypes: [MIME_TYPE],
  54. createRenderer: options => new OutputWidget(options)
  55. };
  56. /**
  57. * Extension definition.
  58. */
  59. const extension = {
  60. id: 'certificate-extension:plugin',
  61. rendererFactory,
  62. rank: 0,
  63. dataType: 'json',
  64. fileTypes: [
  65. {
  66. name: 'certificate',
  67. mimeTypes: [MIME_TYPE],
  68. extensions: ['.cert']
  69. }
  70. ],
  71. documentWidgetFactoryOptions: {
  72. name: 'Certificate',
  73. primaryFileType: 'certificate',
  74. fileTypes: ['certificate'],
  75. defaultFor: ['certificate']
  76. }
  77. };
  78. export default extension;