diff --git a/PyRIGS/tests/regions.py b/PyRIGS/tests/regions.py index 8caca5b3..75afbe81 100644 --- a/PyRIGS/tests/regions.py +++ b/PyRIGS/tests/regions.py @@ -120,10 +120,10 @@ class TextBox(Region): class SimpleMDETextArea(Region): @property def value(self): - return self.driver.execute_script("return document.querySelector('#' + arguments[0]).nextSibling.nextSibling.CodeMirror.getDoc().getValue();", self.root.get_attribute("id")) + return self.driver.execute_script("return document.querySelector('#' + arguments[0]).nextSibling.children[1].CodeMirror.getDoc().getValue();", self.root.get_attribute("id")) def set_value(self, value): - self.driver.execute_script("document.querySelector('#' + arguments[0]).nextSibling.nextSibling.CodeMirror.getDoc().setValue(arguments[1]);", self.root.get_attribute("id"), value) + self.driver.execute_script("document.querySelector('#' + arguments[0]).nextSibling.children[1].CodeMirror.getDoc().setValue(arguments[1]);", self.root.get_attribute("id"), value) class CheckBox(Region): @@ -145,7 +145,7 @@ class RadioSelect(Region): # Currently only works for yes/no radio selects value = "0" else: value = "1" - self.find_element(By.XPATH, "//label[@for='{}_{}']".format(self.root.get_attribute("id"), value)).click() + self.find_element(By.XPATH, f"//label[@for='{self.root.get_attribute('id')}_{value}']").click() @property def value(self): diff --git a/RIGS/templates/event_form.html b/RIGS/templates/event_form.html index 1afcdd4d..38242b1b 100644 --- a/RIGS/templates/event_form.html +++ b/RIGS/templates/event_form.html @@ -8,13 +8,13 @@ {% block css %} {{ block.super }} - + {% endblock %} {% block preload_js %} {{ block.super }} - + {% endblock %} {% block js %} diff --git a/RIGS/tests/pages.py b/RIGS/tests/pages.py index f588fd12..774a8362 100644 --- a/RIGS/tests/pages.py +++ b/RIGS/tests/pages.py @@ -145,11 +145,11 @@ class CreateEvent(FormPage): def add_person(self): self.find_element(*self._add_person_selector).click() - return regions.Modal(self, self.driver.find_element_by_id('modal')) + return regions.Modal(self, self.driver.find_element(By.ID, 'modal')) def add_event_item(self): self.find_element(*self._add_item_selector).click() - element = self.driver.find_element_by_id('itemModal') + element = self.driver.find_element(By.ID, 'itemModal') self.wait.until(EC.visibility_of(element)) return rigs_regions.ItemModal(self, element) diff --git a/assets/templates/asset_form.html b/assets/templates/asset_form.html index 3284cf2f..7496875b 100644 --- a/assets/templates/asset_form.html +++ b/assets/templates/asset_form.html @@ -5,13 +5,13 @@ {% block css %} {{ block.super }} - + {% endblock %} {% block preload_js %} {{ block.super }} - + {% endblock %} diff --git a/gulpfile.js b/gulpfile.js index 0633192b..9d770813 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -27,7 +27,7 @@ function styles(done) { 'node_modules/fullcalendar/main.css', 'node_modules/bootstrap-select/dist/css/bootstrap-select.css', 'node_modules/ajax-bootstrap-select/dist/css/ajax-bootstrap-select.css', - 'node_modules/simplemde/dist/simplemde.min.css' + 'node_modules/easymde/dist/easymde.min.css' ]) .pipe(sourcemaps.init()) .pipe(sass().on('error', sass.logError)) @@ -40,7 +40,7 @@ function styles(done) { function scripts() { const dest = 'pipeline/built_assets/js'; - const base_scripts = ["src.js", "util.js", "alert.js", "collapse.js", "dropdown.js", "modal.js", "konami.js", "marked.min.js"]; + const base_scripts = ["src.js", "util.js", "alert.js", "collapse.js", "dropdown.js", "modal.js", "konami.js"]; const bs_select = ["bootstrap-select.js", "ajax-bootstrap-select.js"] const interaction = ["html5sortable.min.js", "interaction.js"] const jpop = ["jquery.min.js", "popper.min.js"] @@ -56,14 +56,13 @@ function scripts() { 'node_modules/bootstrap/js/dist/modal.js', 'node_modules/bootstrap/js/dist/alert.js', - 'node_modules/marked/marked.min.js', 'node_modules/html5sortable/dist/html5sortable.min.js', 'node_modules/clipboard/dist/clipboard.min.js', 'node_modules/moment/moment.js', 'node_modules/fullcalendar/main.js', 'node_modules/bootstrap-select/dist/js/bootstrap-select.js', 'node_modules/ajax-bootstrap-select/dist/js/ajax-bootstrap-select.js', - 'node_modules/simplemde/dist/simplemde.min.js', + 'node_modules/easymde/dist/easymde.min.js', 'node_modules/konami/konami.js', 'pipeline/source_assets/js/**/*.js',]) .pipe(gulpif(function(file) { return base_scripts.includes(file.relative);}, con('base.js'))) diff --git a/package-lock.json b/package-lock.json index 7d9395e3..5e793942 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "bootstrap-select": "^1.13.17", "clipboard": "^2.0.8", "cssnano": "^5.0.13", + "easymde": "^2.16.1", "fullcalendar": "^5.10.1", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", @@ -29,12 +30,10 @@ "html5sortable": "^0.13.3", "jquery": "^3.6.0", "konami": "^1.6.3", - "marked": "^4.0.10", "moment": "^2.27.0", "node-sass": "^7.0.0", "popper.js": "^1.16.1", "postcss": "^8.4.5", - "simplemde": "^1.11.2", "uglify-js": "^3.14.5" }, "devDependencies": { @@ -256,6 +255,24 @@ "node": ">=10.13.0" } }, + "node_modules/@types/codemirror": { + "version": "5.60.5", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/@types/marked": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.1.tgz", + "integrity": "sha512-ZigEmCWdNUU7IjZEuQ/iaimYdDHWHfTe3kg8ORfKjyGYd9RWumPoOJRQXB0bO+XLkNwzCthW3wUIQtANaEZ1ag==" + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -266,6 +283,14 @@ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, + "node_modules/@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -2034,6 +2059,18 @@ "node": ">= 4.0.0" } }, + "node_modules/easymde": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.16.1.tgz", + "integrity": "sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g==", + "dependencies": { + "@types/codemirror": "^5.60.4", + "@types/marked": "^4.0.1", + "codemirror": "^5.63.1", + "codemirror-spell-checker": "1.1.2", + "marked": "^4.0.10" + } + }, "node_modules/eazy-logger": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", @@ -7332,16 +7369,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, - "node_modules/simplemde": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/simplemde/-/simplemde-1.11.2.tgz", - "integrity": "sha1-ojo12XjSxA7wfewAjJLwcNjggOM=", - "dependencies": { - "codemirror": "*", - "codemirror-spell-checker": "*", - "marked": "*" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -9127,6 +9154,24 @@ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" }, + "@types/codemirror": { + "version": "5.60.5", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "requires": { + "@types/tern": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "@types/marked": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.1.tgz", + "integrity": "sha512-ZigEmCWdNUU7IjZEuQ/iaimYdDHWHfTe3kg8ORfKjyGYd9RWumPoOJRQXB0bO+XLkNwzCthW3wUIQtANaEZ1ag==" + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -9137,6 +9182,14 @@ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, + "@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "requires": { + "@types/estree": "*" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -10565,6 +10618,18 @@ "lodash": "^4.17.10" } }, + "easymde": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.16.1.tgz", + "integrity": "sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g==", + "requires": { + "@types/codemirror": "^5.60.4", + "@types/marked": "^4.0.1", + "codemirror": "^5.63.1", + "codemirror-spell-checker": "1.1.2", + "marked": "^4.0.10" + } + }, "eazy-logger": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", @@ -14819,16 +14884,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, - "simplemde": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/simplemde/-/simplemde-1.11.2.tgz", - "integrity": "sha1-ojo12XjSxA7wfewAjJLwcNjggOM=", - "requires": { - "codemirror": "*", - "codemirror-spell-checker": "*", - "marked": "*" - } - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", diff --git a/package.json b/package.json index 2cac6975..a2fc4772 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "bootstrap-select": "^1.13.17", "clipboard": "^2.0.8", "cssnano": "^5.0.13", + "easymde": "^2.16.1", "fullcalendar": "^5.10.1", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", @@ -26,12 +27,10 @@ "html5sortable": "^0.13.3", "jquery": "^3.6.0", "konami": "^1.6.3", - "marked": "^4.0.10", "moment": "^2.27.0", "node-sass": "^7.0.0", "popper.js": "^1.16.1", "postcss": "^8.4.5", - "simplemde": "^1.11.2", "uglify-js": "^3.14.5" }, "devDependencies": { diff --git a/pipeline/source_assets/js/interaction.js b/pipeline/source_assets/js/interaction.js index c4fe7740..308fe5af 100644 --- a/pipeline/source_assets/js/interaction.js +++ b/pipeline/source_assets/js/interaction.js @@ -1,7 +1,3 @@ -marked.setOptions({ - breaks: true, -}) - function setupItemTable(items_json) { objectitems = JSON.parse(items_json) $.each(objectitems, function (key, val) { @@ -37,7 +33,8 @@ function updatePrices() { } function setupMDE(selector) { - editor = new SimpleMDE({ + editor = new EasyMDE({ + autoDownloadFontAwesome: false, element: $(selector)[0], forceSync: true, toolbar: ["bold", "italic", "strikethrough", "|", "unordered-list", "ordered-list", "|", "link", "|", "preview", "guide"], @@ -120,7 +117,7 @@ $('body').on('submit', '#item-form', function (e) { // update the table $row = $('#item-' + pk); $row.find('.name').html(escapeHtml(fields.name)); - $row.find('.description').html(marked(fields.description)); + $row.find('.description').html(fields.description); $row.find('.cost').html(parseFloat(fields.cost).toFixed(2)); $row.find('.quantity').html(fields.quantity); diff --git a/pipeline/source_assets/scss/dark_screen.scss b/pipeline/source_assets/scss/dark_screen.scss index 73f15b8e..0398e92a 100644 --- a/pipeline/source_assets/scss/dark_screen.scss +++ b/pipeline/source_assets/scss/dark_screen.scss @@ -123,7 +123,7 @@ color: $gray-100; } input:-webkit-autofill, - input:-webkit-autofill:hover, + input:-webkit-autofill:hover, input:-webkit-autofill:focus, textarea:-webkit-autofill, textarea:-webkit-autofill:hover, @@ -145,7 +145,7 @@ .editor-toolbar > a.active { background: $info !important; } - .cm-s-paper { + .cm-s-easymde { color: white; background-color: $darktheme; border-color: #bbb;