Mercurial > public > sg101
diff gcalendar/static/js/gcalendar.js @ 1094:110bbc78a482
GCalendar V3 conversion in progress.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 29 May 2016 23:09:23 -0500 |
parents | ee87ea74d46b |
children | d9cd3180c12c |
line wrap: on
line diff
--- a/gcalendar/static/js/gcalendar.js Wed May 11 22:00:44 2016 -0500 +++ b/gcalendar/static/js/gcalendar.js Sun May 29 23:09:23 2016 -0500 @@ -1,3 +1,46 @@ +function editorReplaceText(textArea, i, j, newText) { + textArea.value = textArea.value.substring(0, i) + newText + + textArea.value.substring(j); +} + +function editorWrapSelection(textArea, wrapText) { + if (wrapText.length == 0) return; + var i = textArea.selectionStart; + var j = textArea.selectionEnd; + if (i == j) return; + var selection = textArea.value.substring(i, j); + var newText = wrapText + selection + wrapText; + editorReplaceText(textArea, i, j, newText); + textArea.focus(); + textArea.setSelectionRange(i, j + 2 * wrapText.length); +} + +function editorPrependLines(textArea, s) { + if (s.length == 0) return; + var i = textArea.selectionStart; + var j = textArea.selectionEnd; + var newText = s; + var selection = textArea.value.substring(i, j); + newText += selection.replace(/\n/gm, '\n' + s); + editorReplaceText(textArea, i, j, newText); +} + +function editorLink(textArea) { + var i = textArea.selectionStart; + var j = textArea.selectionEnd; + var url = window.prompt("Please enter a URL:", "http://"); + if (!url) return; + var link; + if (i == j) { + link = '[Link](' + url + ')'; + } else { + var selection = textArea.value.substring(i, j); + link = '[' + selection + '](' + url + ')'; + } + editorReplaceText(textArea, i, j, link); + textArea.focus(); +} + $(document).ready(function() { $('#id_start_date').datepicker({constrainInput: true, dateFormat: 'mm/dd/yy', @@ -19,15 +62,73 @@ } } }); - if ($('#id_all_day:checked').length) - { - $('#id_start_time').hide(); - $('#id_end_time').hide(); - $('#id_tz_stuff').hide(); + if ($('#id_all_day:checked').length) { + $('.all-day-hide').hide(); } $('#id_all_day').click(function () { - $('#id_start_time').toggle(); - $('#id_end_time').toggle(); - $('#id_tz_stuff').toggle(); - }); + $('.all-day-hide').toggle(); + }); + + var editorPanel = $('#editor-panel textarea'); + var previewPanel = $('#preview-panel'); + previewPanel.css('height', editorPanel.css('height')); + var observer = new MutationObserver(function(mutations) { + if (previewPanel.is(':visible')) { + alert(editorPanel[0].value); + $.ajax({ + url: '/comments/markdown/v3/', + method: 'POST', + data: {'data': editorPanel[0].value}, + dataType: 'html', + success: function(data, textStatus) { + alert(data); + previewPanel.html(data); + }, + error: function (xhr, textStatus, ex) { + alert('Oops, an error occurred: ' + xhr.statusText + ' - ' + + xhr.responseText); + } + }); + } + }); + var target = document.getElementById('preview-panel'); + observer.observe(target, {attributes: true}); + + // Editor stuff + $('.v3-editor').each(function (index) { + var $this = $(this); + var textArea = $this.find('textarea')[0]; + $this.find('.editor-bold').click(function () { + editorWrapSelection(textArea, '**'); + return false; + }); + $this.find('.editor-italic').click(function () { + editorWrapSelection(textArea, '_'); + return false; + }); + $this.find('.editor-strike').click(function () { + editorWrapSelection(textArea, '---'); + return false; + }); + $this.find('.editor-link').click(function () { + editorLink(textArea); + return false; + }); + $this.find('.editor-quote').click(function () { + editorPrependLines(textArea, '> '); + return false; + }); + $this.find('.editor-code').click(function () { + editorPrependLines(textArea, ' '); + return false; + }); + $this.find('.editor-bullet').click(function () { + editorPrependLines(textArea, '* '); + return false; + }); + $this.find('.editor-number').click(function () { + editorPrependLines(textArea, '1. '); + return false; + }); + }); });