edit.html 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  6. <link type="text/css" rel="stylesheet" href="../node_modules/simplemde/dist/simplemde.min.css"/>
  7. <link type="text/css" rel="stylesheet" href="css/material-icons.css"/>
  8. <link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/>
  9. <link type="text/css" rel="stylesheet" href="css/style.min.css" media="screen,projection"/>
  10. <link type="text/css" rel="stylesheet" href="css/google-code-prettify/desert.css"/>
  11. <title>Electronotes</title>
  12. </head>
  13. <body>
  14. <!-- Navbar -->
  15. <div id="navbar" class="navbar-fixed">
  16. <nav>
  17. <div class="nav-wrapper">
  18. <span class="brand-logo mleft-1">Note de <span data-bind="username"></span></span>
  19. <ul class="right hide-on-med-and-down">
  20. <li><a href="https://www.electronjs.org" target="_blank">Electron JS</a></li>
  21. <li><a href="https://gitlab.univ-artois.fr/arthur_brandao/conf-electron" target="_blank">Git Repository</a></li>
  22. <li><a href="reset.html">Reset</a></li>
  23. </ul>
  24. </div>
  25. </nav>
  26. </div>
  27. <!-- Main content -->
  28. <main>
  29. <div class="container">
  30. <div class="row mtop-5">
  31. <div class="col s6 left-align">
  32. <a href="index.html" class="modal-close waves-effect waves-light btn-large blue"><i class="large material-icons left">keyboard_backspace</i> Retour</a>
  33. </div>
  34. <div class="col s6 right-align">
  35. <button class="btn-floating btn-large waves-effect waves-light blue tooltipped" data-position="left" data-tooltip="Sauvegarder" onclick="validCard()"><i class="large material-icons">save</i></button>
  36. </div>
  37. </div>
  38. <div class="row">
  39. <div class="col s12 m6 offset-m3 input-field">
  40. <i class="material-icons prefix">title</i>
  41. <input id="title" type="text" class="validate">
  42. <label for="title">Titre</label>
  43. </div>
  44. </div>
  45. <div class="row">
  46. <textarea></textarea>
  47. </div>
  48. </div>
  49. </main>
  50. <script type="text/javascript" src="../node_modules/jquery/dist/jquery.min.js"></script>
  51. <script type="text/javascript" src="../node_modules/simplemde/dist/simplemde.min.js"></script>
  52. <script type="text/javascript" src="../node_modules/marked/marked.min.js"></script>
  53. <script type="text/javascript" src="../node_modules/dompurify/dist/purify.min.js"></script>
  54. <script type="text/javascript" src="js/materialize.min.js"></script>
  55. <script type="text/javascript" src="js/google-code-prettify/prettify.js"></script>
  56. <script type="text/javascript" src="js/script.js"></script>
  57. <script type="text/javascript" src="js/binder.js"></script>
  58. <script type="text/javascript">
  59. const GET = parseURLParameter();
  60. let mdEditor;
  61. $(document).ready(() => {
  62. // Set up data and print
  63. scope = binder({
  64. username: localStorage.username ? localStorage.username : 'Utilisateur'
  65. });
  66. // Load tooltip
  67. const tooltip = M.Tooltip.init(document.querySelectorAll('.tooltipped'))[0];
  68. // Load markdown editor
  69. mdEditor = loadMarkdownEditor();
  70. // Load data if update
  71. if (GET.id) {
  72. loadData().then(data => {
  73. $('#title').val(data[GET.id].title);
  74. mdEditor.value(data[GET.id].content);
  75. M.updateTextFields();
  76. });
  77. document.title = 'Electronotes - Modification';
  78. } else {
  79. document.title = 'Electronotes - Création';
  80. }
  81. });
  82. function loadMarkdownEditor() {
  83. return new SimpleMDE({
  84. placeholder: 'Écrire ici ...',
  85. spellChecker: false,
  86. toolbar: [
  87. 'bold', 'italic', 'heading', '|',
  88. 'code', 'quote', 'unordered-list', 'ordered-list', '|',
  89. 'link', 'image', 'table', '|',
  90. 'preview', 'guide'
  91. ],
  92. previewRender: (md) => {
  93. setTimeout(() => {PR.prettyPrint();}, 250);
  94. return md.toHTML();
  95. }
  96. });
  97. }
  98. function validCard() {
  99. if ($('#title').val().trim() === '') {
  100. M.toast({
  101. html: 'Le titre est vide',
  102. classes: 'red'
  103. });
  104. } else if (mdEditor.value().trim() === '') {
  105. M.toast({
  106. html: 'Le contenu est vide',
  107. classes: 'red'
  108. });
  109. } else {
  110. saveCard();
  111. }
  112. }
  113. function saveCard() {
  114. let id;
  115. // Update
  116. if (GET.id) {
  117. id = GET.id;
  118. }
  119. // Create
  120. else {
  121. id = uniqId();
  122. const list = JSON.parse(localStorage.list);
  123. list.push(id);
  124. localStorage.setItem('list', JSON.stringify(list));
  125. }
  126. // Set object
  127. const data = {
  128. id: id,
  129. title: $('#title').val(),
  130. content: mdEditor.value()
  131. }
  132. // Save
  133. localStorage.setItem(id, JSON.stringify(data));
  134. // Go back to main page
  135. document.location = 'index.html';
  136. }
  137. </script>
  138. </body>
  139. </html>