mirror of
https://github.com/Karaka-Management/oms-Editor.git
synced 2026-02-14 09:18:41 +00:00
Added tests for time recording impl.
This commit is contained in:
parent
b193737de9
commit
99687a2fee
|
|
@ -36,7 +36,12 @@ export class Editor {
|
||||||
let textarea = this.editor.getElementsByTagName('textarea')[0];
|
let textarea = this.editor.getElementsByTagName('textarea')[0];
|
||||||
|
|
||||||
const startPosition = textarea.selectionStart;
|
const startPosition = textarea.selectionStart;
|
||||||
const endPosition = textarea.selectionEnd;
|
let endPosition = textarea.selectionEnd;
|
||||||
|
let startOffset = 0;
|
||||||
|
let endOffset = 0;
|
||||||
|
let lines = [];
|
||||||
|
let linesLength = 0;
|
||||||
|
let end = '';
|
||||||
|
|
||||||
switch (e.dataset['editorButton']) {
|
switch (e.dataset['editorButton']) {
|
||||||
case 'undo':
|
case 'undo':
|
||||||
|
|
@ -46,39 +51,74 @@ export class Editor {
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'bold':
|
case 'bold':
|
||||||
|
startOffset = 2;
|
||||||
|
endOffset = 2;
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
+ '**' + textarea.value.slice(startPosition, endPosition) + '**'
|
+ '**' + textarea.value.slice(startPosition, endPosition) + '**'
|
||||||
+ textarea.value.slice(endPosition, textarea.value.length);
|
+ textarea.value.slice(endPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'italic':
|
case 'italic':
|
||||||
|
startOffset = 1;
|
||||||
|
endOffset = 1;
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
+ '*' + textarea.value.slice(startPosition, endPosition) + '*'
|
+ '*' + textarea.value.slice(startPosition, endPosition) + '*'
|
||||||
+ textarea.value.slice(endPosition, textarea.value.length);
|
+ textarea.value.slice(endPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'underline':
|
case 'underline':
|
||||||
|
startOffset = 2;
|
||||||
|
endOffset = 2;
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
+ '__' + textarea.value.slice(startPosition, endPosition) + '__'
|
+ '__' + textarea.value.slice(startPosition, endPosition) + '__'
|
||||||
+ textarea.value.slice(endPosition, textarea.value.length);
|
+ textarea.value.slice(endPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'strikethrough':
|
case 'strikethrough':
|
||||||
|
startOffset = 2;
|
||||||
|
endOffset = 2;
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
+ '~~' + textarea.value.slice(startPosition, endPosition) + '~~'
|
+ '~~' + textarea.value.slice(startPosition, endPosition) + '~~'
|
||||||
+ textarea.value.slice(endPosition, textarea.value.length);
|
+ textarea.value.slice(endPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'ulist':
|
case 'ulist':
|
||||||
textarea.value = textarea.value.slice(0, startPosition) + "\n"
|
lines = textarea.value.slice(startPosition, endPosition).split("\n");
|
||||||
+ ' * ' + textarea.value.slice(startPosition, endPosition)
|
linesLength = lines.length;
|
||||||
+ textarea.value.slice(endPosition, textarea.value.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";
|
||||||
|
}
|
||||||
|
|
||||||
|
endPosition = startPosition;
|
||||||
|
textarea.value += end;
|
||||||
break;
|
break;
|
||||||
case 'olist':
|
case 'olist':
|
||||||
textarea.value = textarea.value.slice(0, startPosition) + "\n"
|
lines = textarea.value.slice(startPosition, endPosition).split("\n");
|
||||||
+ ' 1. ' + textarea.value.slice(startPosition, endPosition)
|
linesLength = lines.length;
|
||||||
+ textarea.value.slice(endPosition, textarea.value.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";
|
||||||
|
}
|
||||||
|
|
||||||
|
endPosition = startPosition;
|
||||||
|
textarea.value += end;
|
||||||
break;
|
break;
|
||||||
case 'indent':
|
case 'indent':
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
lines = textarea.value.slice(startPosition, endPosition).split("\n");
|
||||||
+ ' ' + textarea.value.slice(startPosition, endPosition)
|
linesLength = lines.length;
|
||||||
+ textarea.value.slice(endPosition, textarea.value.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";
|
||||||
|
}
|
||||||
|
|
||||||
|
endPosition = startPosition;
|
||||||
|
textarea.value += end;
|
||||||
break;
|
break;
|
||||||
case 'table':
|
case 'table':
|
||||||
textarea.value = textarea.value.slice(0, startPosition) + "\n"
|
textarea.value = textarea.value.slice(0, startPosition) + "\n"
|
||||||
|
|
@ -90,6 +130,8 @@ export class Editor {
|
||||||
+ textarea.value.slice(startPosition, textarea.value.length);
|
+ textarea.value.slice(startPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'link':
|
case 'link':
|
||||||
|
startOffset = 1;
|
||||||
|
endOffset = 0;
|
||||||
let link = textarea.value.slice(startPosition, endPosition);
|
let link = textarea.value.slice(startPosition, endPosition);
|
||||||
|
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
|
|
@ -97,22 +139,24 @@ export class Editor {
|
||||||
+ textarea.value.slice(endPosition, textarea.value.length);
|
+ textarea.value.slice(endPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'code':
|
case 'code':
|
||||||
|
startOffset = 1;
|
||||||
|
endOffset = 1;
|
||||||
textarea.value = textarea.value.slice(0, startPosition)
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
+ '`' + textarea.value.slice(startPosition, endPosition) + '`'
|
+ '`' + textarea.value.slice(startPosition, endPosition) + '`'
|
||||||
+ textarea.value.slice(endPosition, textarea.value.length);
|
+ textarea.value.slice(endPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
case 'quote':
|
case 'quote':
|
||||||
textarea.value = textarea.value.slice(0, startPosition) + "\n"
|
startOffset = 2;
|
||||||
|
endOffset = 0;
|
||||||
|
textarea.value = textarea.value.slice(0, startPosition)
|
||||||
+ '> ' + textarea.value.slice(startPosition, textarea.value.length);
|
+ '> ' + textarea.value.slice(startPosition, textarea.value.length);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const cursorPosition = endPosition === startPosition ? endPosition + 2 : endPosition;
|
|
||||||
|
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
textarea.setSelectionRange(cursorPosition, cursorPosition);
|
textarea.setSelectionRange(startPosition + startOffset, endPosition + startOffset);
|
||||||
};
|
};
|
||||||
|
|
||||||
getSelectedText ()
|
getSelectedText ()
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,8 @@
|
||||||
name="<?= $this->renderName(); ?>"
|
name="<?= $this->renderName(); ?>"
|
||||||
form="<?= $this->renderForm(); ?>"
|
form="<?= $this->renderForm(); ?>"
|
||||||
data-tpl-text="<?= $this->renderTplText(); ?>"
|
data-tpl-text="<?= $this->renderTplText(); ?>"
|
||||||
data-tpl-value="<?= $this->renderTplValue(); ?>">
|
data-tpl-value="<?= $this->renderTplValue(); ?>"><?= $this->renderPlain(); ?></textarea>
|
||||||
<?= $this->renderPlain(); ?>
|
<input type="hidden" id="<?= $this->renderId(); ?>-parsed">
|
||||||
</textarea><input type="hidden" id="<?= $this->renderId(); ?>-parsed">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="radio" id="<?= $this->renderId(); ?>-c-tab-2" name="tabular-1">
|
<input type="radio" id="<?= $this->renderId(); ?>-c-tab-2" name="tabular-1">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user