more tests and some fixes

This commit is contained in:
Dennis Eichhorn 2024-04-24 03:20:46 +00:00
parent b030d7fd55
commit e5bf0b2f1f
3 changed files with 42 additions and 35 deletions

View File

@ -13,10 +13,15 @@ on:
- cron: '0 0 1,15 * *'
jobs:
general_module_workflow:
general_module_workflow_php:
uses: Karaka-Management/Karaka/.github/workflows/php_template.yml@develop
secrets:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_PAT: ${{ secrets.GH_PAT }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
general_module_workflow_js:
uses: Karaka-Management/Karaka/.github/workflows/js_template.yml@develop
secrets:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_PAT: ${{ secrets.GH_PAT }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

View File

@ -7,6 +7,7 @@ Autoloader.defineNamespace('omsApp.Modules');
* @feature Create immediate text preview similar to a rich text editor or Typora
* https://github.com/Karaka-Management/oms-Editor/issues/4
*/
/* global omsApp */
omsApp.Modules.Editor = class {
constructor (app)
{
@ -16,8 +17,8 @@ omsApp.Modules.Editor = class {
bind (id)
{
const e = typeof id === 'undefined' ? document.getElementsByClassName('m-editor') : [id],
length = e.length;
const e = typeof id === 'undefined' ? document.getElementsByClassName('m-editor') : [id];
const length = e.length;
for (let i = 0; i < length; ++i) {
this.bindElement(e[i].id);

View File

@ -35,22 +35,22 @@ export class Editor {
this.editorContent.addEventListener('input', function () {
editorPreview.innerHTML = self.markdown.makeHtml(self.editorContent.value);
})
});
};
toolsButton (e, event)
{
let textarea = this.editor.getElementsByTagName('textarea')[0];
const textarea = this.editor.getElementsByTagName('textarea')[0];
const startPosition = textarea.selectionStart;
let endPosition = textarea.selectionEnd;
let startOffset = 0;
let endOffset = 0;
// let endOffset = 0;
let lines = [];
let linesLength = 0;
let end = '';
switch (e.dataset['editorButton']) {
switch (e.dataset.editorButton) {
case 'undo':
break;
@ -59,102 +59,103 @@ export class Editor {
break;
case 'bold':
startOffset = 2;
endOffset = 2;
// endOffset = 2;
textarea.value = textarea.value.slice(0, startPosition)
+ '**' + textarea.value.slice(startPosition, endPosition) + '**'
+ textarea.value.slice(endPosition, textarea.value.length);
break;
case 'italic':
startOffset = 1;
endOffset = 1;
// endOffset = 1;
textarea.value = textarea.value.slice(0, startPosition)
+ '*' + textarea.value.slice(startPosition, endPosition) + '*'
+ textarea.value.slice(endPosition, textarea.value.length);
break;
case 'underline':
startOffset = 2;
endOffset = 2;
// endOffset = 2;
textarea.value = textarea.value.slice(0, startPosition)
+ '__' + textarea.value.slice(startPosition, endPosition) + '__'
+ textarea.value.slice(endPosition, textarea.value.length);
break;
case 'strikethrough':
startOffset = 2;
endOffset = 2;
// endOffset = 2;
textarea.value = textarea.value.slice(0, startPosition)
+ '~~' + textarea.value.slice(startPosition, endPosition) + '~~'
+ textarea.value.slice(endPosition, textarea.value.length);
break;
case 'ulist':
lines = textarea.value.slice(startPosition, endPosition).split("\n");
lines = textarea.value.slice(startPosition, endPosition).split('\n');
linesLength = lines.length;
textarea.value = textarea.value.slice(0, startPosition);
end = textarea.value.slice(endPosition, textarea.value.length);
for (let i = 0; i < linesLength; ++i) {
textarea.value += ' * ' + lines[i] + "\n";
textarea.value += ' * ' + lines[i] + '\n';
}
endPosition = startPosition;
textarea.value += end;
break;
case 'olist':
lines = textarea.value.slice(startPosition, endPosition).split("\n");
lines = textarea.value.slice(startPosition, endPosition).split('\n');
linesLength = lines.length;
textarea.value = textarea.value.slice(0, startPosition);
end = textarea.value.slice(endPosition, textarea.value.length);
for (let i = 0; i < linesLength; ++i) {
textarea.value += ' ' + (i + 1) + '. ' + lines[i] + "\n";
textarea.value += ' ' + (i + 1) + '. ' + lines[i] + '\n';
}
endPosition = startPosition;
textarea.value += end;
break;
case 'indent':
lines = textarea.value.slice(startPosition, endPosition).split("\n");
lines = textarea.value.slice(startPosition, endPosition).split('\n');
linesLength = lines.length;
textarea.value = textarea.value.slice(0, startPosition);
end = textarea.value.slice(endPosition, textarea.value.length);
for (let i = 0; i < linesLength; ++i) {
textarea.value += ' ' + lines[i] + "\n";
textarea.value += ' ' + lines[i] + '\n';
}
endPosition = startPosition;
textarea.value += end;
break;
case 'table':
textarea.value = textarea.value.slice(0, startPosition) + "\n"
+ '| Tables | Are | Cool |' + "\n"
+ '| ------------- |:-----------------:| -----:|' + "\n"
+ '| col 3 is | right - aligned | $1600 |' + "\n"
+ '| col 2 is | centered | $12 |' + "\n"
+ '| zebra stripes | are neat | $1 |' + "\n"
textarea.value = textarea.value.slice(0, startPosition) + '\n'
+ '| Tables | Are | Cool |' + '\n'
+ '| ------------- |:-----------------:| -----:|' + '\n'
+ '| col 3 is | right - aligned | $1600 |' + '\n'
+ '| col 2 is | centered | $12 |' + '\n'
+ '| zebra stripes | are neat | $1 |' + '\n'
+ textarea.value.slice(startPosition, textarea.value.length);
break;
case 'link':
case 'link': {
startOffset = 1;
endOffset = 0;
let link = textarea.value.slice(startPosition, endPosition);
// endOffset = 0;
const link = textarea.value.slice(startPosition, endPosition);
textarea.value = textarea.value.slice(0, startPosition)
+ ((link.startsWith('http') || link.startsWith('www')) ? '[' + link + ']' : '[' + link + '](https://www.website.com "' + link + '")')
+ textarea.value.slice(endPosition, textarea.value.length);
break;
}
case 'code':
startOffset = 1;
endOffset = 1;
// endOffset = 1;
textarea.value = textarea.value.slice(0, startPosition)
+ '`' + textarea.value.slice(startPosition, endPosition) + '`'
+ textarea.value.slice(endPosition, textarea.value.length);
break;
case 'quote':
startOffset = 2;
endOffset = 0;
// endOffset = 0;
textarea.value = textarea.value.slice(0, startPosition)
+ '> ' + textarea.value.slice(startPosition, textarea.value.length);
break;