|
20 | 20 | let loader;
|
21 | 21 | let elements = {};
|
22 | 22 | let apiKey = null;
|
23 |
| - let timeout = null; |
| 23 | + let errTimeout = null; |
| 24 | + let tokenTimeot = null; |
24 | 25 | let bCreateLoader = false;
|
25 | 26 | let maxTokens = 4000;
|
26 | 27 | const isIE = checkInternetExplorer();
|
|
77 | 78 | };
|
78 | 79 |
|
79 | 80 | elements.reconfigure.onclick = function() {
|
80 |
| - if (timeout) { |
81 |
| - clearTimeout(timeout); |
82 |
| - timeout = null; |
| 81 | + if (errTimeout) { |
| 82 | + clearTimeout(errTimeout); |
| 83 | + errTimeout = null; |
83 | 84 | clearMainError();
|
84 | 85 | }
|
85 | 86 | localStorage.removeItem('OpenAiApiKey');
|
|
94 | 95 | elements.textArea.focus();
|
95 | 96 | };
|
96 | 97 |
|
97 |
| - elements.textArea.oninput = function() { |
| 98 | + elements.textArea.oninput = function(event) { |
98 | 99 | elements.textArea.classList.remove('error_border');
|
| 100 | + if (tokenTimeot) { |
| 101 | + clearTimeout(tokenTimeot); |
| 102 | + tokenTimeot = null; |
| 103 | + } |
| 104 | + tokenTimeot = setTimeout(function() { |
| 105 | + let text = event.target.value.trim(); |
| 106 | + let tokens = window.Asc.OpenAIEncode(text); |
| 107 | + elements.lbTokens.innerText = tokens.length; |
| 108 | + elements.lbModalTokens.innerText = tokens.length; |
| 109 | + checkLen(); |
| 110 | + }, 250); |
| 111 | + |
| 112 | + }; |
| 113 | + |
| 114 | + elements.divTokens.onmouseenter = function(e) { |
| 115 | + elements.modal.classList.remove('hidden'); |
| 116 | + }; |
| 117 | + |
| 118 | + elements.divTokens.onmouseleave = function(e) { |
| 119 | + elements.modal.classList.add('hidden'); |
99 | 120 | };
|
100 | 121 |
|
101 | 122 | elements.btnSubmit.onclick = function() {
|
|
104 | 125 | elements.textArea.classList.add('error_border');
|
105 | 126 | return;
|
106 | 127 | };
|
| 128 | + if (!elements.modalError.classList.contains('hidden')) { |
| 129 | + return; |
| 130 | + } |
107 | 131 | createLoader();
|
108 | 132 |
|
109 | 133 | fetch('https://api.openai.com/v1/completions', {
|
|
136 | 160 | .catch(function(error) {
|
137 | 161 | elements.mainError.classList.remove('hidden');
|
138 | 162 | elements.mainErrorLb.innerHTML = error.message;
|
139 |
| - if (timeout) { |
140 |
| - clearTimeout(timeout); |
141 |
| - timeout = null; |
| 163 | + if (errTimeout) { |
| 164 | + clearTimeout(errTimeout); |
| 165 | + errTimeout = null; |
142 | 166 | }
|
143 |
| - timeout = setTimeout(clearMainError, 10000); |
| 167 | + errTimeout = setTimeout(clearMainError, 10000); |
144 | 168 | console.error('Error:', error);
|
145 | 169 | }).finally(function(){
|
146 | 170 | destroyLoader();
|
|
167 | 191 | elements.keyError = document.getElementById('apiKeyError');
|
168 | 192 | elements.keyErrorLb = document.getElementById('lb_key_err');
|
169 | 193 | elements.keyErrorMes = document.getElementById('lb_key_err_mes');
|
| 194 | + elements.lbTokens = document.getElementById('lb_tokens'); |
| 195 | + elements.divTokens = document.getElementById('div_tokens'); |
| 196 | + elements.modal = document.getElementById('div_modal'); |
| 197 | + elements.lbModalTokens = document.getElementById('lb_modal_tokens'); |
| 198 | + elements.lbModalLen = document.getElementById('lb_modal_length'); |
| 199 | + elements.modalErrLen = document.getElementById('modal_err_len'); |
| 200 | + elements.modalError = document.getElementById('modal_error'); |
170 | 201 | };
|
171 | 202 |
|
172 | 203 | function initScrolls() {
|
|
196 | 227 |
|
197 | 228 | function onSlInput(e) {
|
198 | 229 | e.target.nextElementSibling.innerText = e.target.value;
|
| 230 | + if (e.target.id == elements.inpLenSl.id) { |
| 231 | + elements.lbModalLen.innerText = e.target.value; |
| 232 | + checkLen(); |
| 233 | + } |
199 | 234 | };
|
200 | 235 |
|
201 | 236 | function fetchModels() {
|
|
234 | 269 | let event = document.createEvent('Event');
|
235 | 270 | event.initEvent('input', true, true);
|
236 | 271 | elements.inpLenSl.dispatchEvent(event);
|
| 272 | + elements.modalErrLen.innerText = maxTokens; |
237 | 273 | });
|
238 | 274 |
|
239 | 275 | if ($('#sel_models').find('option[value=text-davinci-003]').length) {
|
|
321 | 357 | return rv !== -1;
|
322 | 358 | };
|
323 | 359 |
|
| 360 | + function checkLen() { |
| 361 | + let cur = new Number(elements.lbTokens.innerText); |
| 362 | + let maxLen = new Number(elements.inpLenSl.value); |
| 363 | + if (cur + maxLen > maxTokens) { |
| 364 | + elements.modalError.classList.remove('hidden'); |
| 365 | + elements.lbTokens.classList.add('lb_err'); |
| 366 | + } else { |
| 367 | + elements.modalError.classList.add('hidden'); |
| 368 | + elements.lbTokens.classList.remove('lb_err'); |
| 369 | + } |
| 370 | + }; |
| 371 | + |
324 | 372 | window.Asc.plugin.onTranslate = function() {
|
325 | 373 | if (bCreateLoader)
|
326 | 374 | createLoader();
|
|
0 commit comments