Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/aimogen-pro/scripts/comparison.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + "use strict";
2 + jQuery(document).ready(function ($)
3 + {
4 + function aiomaticLoading(btn) {
5 + btn.attr('disabled', 'disabled');
6 + btn.after('<span class="loading-indicator"></span>');
7 + }
8 + function aiomaticRmLoading(btn) {
9 + btn.removeAttr('disabled');
10 + btn.next('.loading-indicator').remove();
11 + }
12 + $(document).on('click', '.aiomatic-comparison-cancel', function (e){
13 + let id = $(e.currentTarget).attr('data-id');
14 + let item = $(e.currentTarget).closest('.aiomatic-comparison-item');
15 + window['aiomatic_comparison_'+id].abort();
16 + let btn = item.find('.aiomatic-comparison-submit');
17 + aiomaticRmLoading(btn);
18 + item.find('.aiomatic-comparison-space').hide();
19 + $(e.currentTarget).hide();
20 + aiomaticCompareResult();
21 + });
22 + $(document).on('click','.aiomatic-comparison-close', function (e){
23 + $(e.currentTarget).closest('.aiomatic-comparison-item').remove();
24 + aiomaticCompareResult();
25 + });
26 + function aiomaticCompareResult(){
27 + let max_tokens = 0;
28 + let max_words = 0;
29 + let min_cost = 0;
30 + let min_duration = 0;
31 + let el_tokens = false;
32 + let el_words = false;
33 + let el_cost =false;
34 + let el_duration = false;
35 + $('.aiomatic-comparison-result').each(function (idx, item){
36 + let duration = parseFloat($(item).attr('data-duration'));
37 + let words = parseFloat($(item).attr('data-words'));
38 + let cost = parseFloat($(item).attr('data-cost'))
39 + let tokens = parseFloat($(item).attr('data-tokens'));
40 + if(tokens > max_tokens){
41 + max_tokens = tokens;
42 + el_tokens = item;
43 + }
44 + if((min_cost > 0 && cost < min_cost) || min_cost === 0){
45 + min_cost = cost;
46 + el_cost = item;
47 + }
48 + if((min_duration > 0 && duration < min_duration) || min_duration === 0){
49 + min_duration = duration;
50 + el_duration = item;
51 + }
52 + if((max_words > 0 && words > max_words) || max_words === 0){
53 + max_words = words;
54 + el_words = item;
55 + }
56 + });
57 + $('.aiomatic-comparison-result').each(function (idx, item){
58 + $(item).find('.aiomatic-comparison-cost').removeClass('aiomatic-good');
59 + $(item).find('.aiomatic-comparison-words').removeClass('aiomatic-good');
60 + $(item).find('.aiomatic-comparison-tokens').removeClass('aiomatic-good');
61 + $(item).find('.aiomatic-comparison-duration').removeClass('aiomatic-good');
62 + $(item).find('.aiomatic-comparison-tokens').addClass('aiomatic-not-good');
63 + $(item).find('.aiomatic-comparison-words').addClass('aiomatic-not-good');
64 + $(item).find('.aiomatic-comparison-duration').addClass('aiomatic-not-good');
65 + $(item).find('.aiomatic-comparison-cost').addClass('aiomatic-not-good');
66 + });
67 + if(el_tokens){
68 + $(el_tokens).find('.aiomatic-comparison-tokens').removeClass('aiomatic-not-good');
69 + $(el_tokens).find('.aiomatic-comparison-tokens').addClass('aiomatic-good');
70 + }
71 + if(el_words){
72 + $(el_words).find('.aiomatic-comparison-words').removeClass('aiomatic-not-good');
73 + $(el_words).find('.aiomatic-comparison-words').addClass('aiomatic-good');
74 + }
75 + if(el_cost){
76 + $(el_cost).find('.aiomatic-comparison-cost').removeClass('aiomatic-not-good');
77 + $(el_cost).find('.aiomatic-comparison-cost').addClass('aiomatic-good');
78 + }
79 + if(el_duration){
80 + $(el_duration).find('.aiomatic-comparison-duration').removeClass('aiomatic-not-good');
81 + $(el_duration).find('.aiomatic-comparison-duration').addClass('aiomatic-good');
82 + }
83 +
84 + }
85 + $(document).on('change','.aiomatic-comparison-select-prompt', function (e){
86 + let sel = $(e.currentTarget);
87 + let value = sel.val();
88 + let form = sel.closest('.aiomatic-comparison-form');
89 + let textarea = form.find('textarea[name=prompt]');
90 + textarea.val(value);
91 + textarea.trigger('input');
92 + });
93 + $(document).on('input', 'textarea[name="prompt"]', function () {
94 + const maxLength = 128000;
95 + const length = $(this).val().length;
96 + $(this).next('.character-counter').text(length + "/" + maxLength);
97 + if (length > maxLength) {
98 + $(this).next('.character-counter').css("color", "red");
99 + } else {
100 + $(this).next('.character-counter').css("color", "inherit");
101 + }
102 + });
103 +
104 + $(document).on('click', '.advanced-settings-toggle', function () {
105 + $(this).next('.advanced-settings').slideToggle();
106 + $(this).text($(this).text() === 'Show Advanced Settings' ? 'Hide Advanced Settings' : 'Show Advanced Settings');
107 + });
108 +
109 + for (let i = 0; i < 2; i++) {
110 + let html = $('.aiomatic-comparison-default').html();
111 + html = html.replace('[ID]', i);
112 + $('.comparison_tool').append(html);
113 + if(i == 1)
114 + {
115 + $('.comparison_tool').append('<div class="aiomatic-comparison-add"><span class="dashicons dashicons-plus-alt"></span>' + aiomatic_completition_ajax_object_comparison.add_comparison + '</div>' );
116 + }
117 + }
118 +
119 + $(document).on('click', '.aiomatic-comparison-add', function () {
120 + $(this).before($('.aiomatic-comparison-default').html());
121 + });
122 +
123 + $(document).on('submit', '.aiomatic-comparison-form', function (e) {
124 + e.preventDefault();
125 + const btn = $(this).find('.aiomatic-comparison-submit');
126 + aiomaticLoading(btn);
127 + aiomaticRmLoading(btn);
128 + });
129 +
130 + $(document).on('submit','.aiomatic-comparison-form', function (e){
131 + e.preventDefault();
132 + let startTime = new Date();
133 + let form = $(e.currentTarget);
134 + let item = form.closest('.aiomatic-comparison-item');
135 + item.removeClass('aiomatic-comparison-result')
136 + let temperature = parseFloat(form.find('input[name=temperature]').val());
137 + let top_p = parseFloat(form.find('input[name=top_p]').val());
138 + let frequency_penalty = parseFloat(form.find('input[name=frequency_penalty]').val());
139 + let presence_penalty = parseFloat(form.find('input[name=presence_penalty]').val());
140 + let prompt = form.find('textarea[name=prompt]').val();
141 + let model;
142 +
143 + let provider = $('.aiomatic-mb-10').data('provider');
144 +
145 + if (provider === 'Azure') {
146 + model = form.find('input[name=model]').val();
147 + } else {
148 + model = form.find('select[name=model]').val();
149 + }
150 +
151 + let has_error = false;
152 + let btn = form.find('.aiomatic-comparison-submit');
153 + if(prompt === ''){
154 + has_error = 'Please enter Prompt';
155 + }
156 +
157 + if(!has_error && (temperature > 2 || temperature < 0)){
158 + has_error = aiomatic_completition_ajax_object_comparison.valid_temp;
159 + }
160 + if(!has_error && (top_p > 1 || top_p < 0)){
161 + has_error = aiomatic_completition_ajax_object_comparison.valid_topp;
162 + }
163 + if(!has_error && (frequency_penalty > 2 || frequency_penalty < 0)){
164 + has_error = aiomatic_completition_ajax_object_comparison.valid_frequency;
165 + }
166 + if(!has_error && (presence_penalty > 2 || presence_penalty < -2)){
167 + has_error = aiomatic_completition_ajax_object_comparison.valid_presense;
168 + }
169 + if(!has_error){
170 + let randomID = Math.ceil(Math.random() * 10000);
171 + item.find('.aiomatic-comparison-cancel').show();
172 + item.find('.aiomatic-comparison-space').show();
173 + item.find('.aiomatic-comparison-cancel').attr('data-id', randomID);
174 + $('.aiomatic-comparison-item').each(function (idx, itemx){
175 + $(itemx).find('.aiomatic-comparison-cost').removeClass('aiomatic-good');
176 + $(itemx).find('.aiomatic-comparison-words').removeClass('aiomatic-good');
177 + $(itemx).find('.aiomatic-comparison-tokens').removeClass('aiomatic-good');
178 + $(itemx).find('.aiomatic-comparison-duration').removeClass('aiomatic-good');
179 + $(itemx).find('.aiomatic-comparison-tokens').removeClass('aiomatic-not-good');
180 + $(itemx).find('.aiomatic-comparison-words').removeClass('aiomatic-not-good');
181 + $(itemx).find('.aiomatic-comparison-duration').removeClass('aiomatic-not-good');
182 + $(itemx).find('.aiomatic-comparison-cost').removeClass('aiomatic-not-good');
183 + });
184 + $(item).find('.aiomatic-comparison-cost').empty();
185 + $(item).find('.aiomatic-comparison-words').empty();
186 + $(item).find('.aiomatic-comparison-tokens').empty();
187 + $(item).find('.aiomatic-comparison-duration').empty();
188 + window['aiomatic_comparison_' + randomID] = $.ajax({
189 + url: aiomatic_completition_ajax_object_comparison.ajax_url,
190 + data: form.serialize(),
191 + dataType: 'JSON',
192 + type:'POST',
193 + beforeSend: function (res){
194 + aiomaticLoading(btn)
195 + },
196 + success: function (res){
197 + aiomaticRmLoading(btn);
198 + item.find('.aiomatic-comparison-cancel').hide();
199 + item.find('.aiomatic-comparison-space').hide();
200 + if(res.status === 'success'){
201 + let endTime = new Date();
202 + let timeDiff = (endTime - startTime) / 1000;
203 + let text = res.text;
204 + text = text.replace(/\\/g,'');
205 + form.find('.aiomatic-comparison-output').val(text);
206 + form.find('.aiomatic-comparison-tokens').html(res.tokens);
207 + form.find('.aiomatic-comparison-cost').html('$' + parseFloat(res.cost).toFixed(5));
208 + form.find('.aiomatic-comparison-words').html(res.words);
209 + form.find('.aiomatic-comparison-duration').html(timeDiff.toFixed(2) + ' seconds');
210 + item.addClass('aiomatic-comparison-result');
211 + item.attr('data-tokens',res.tokens);
212 + item.attr('data-cost',res.cost);
213 + item.attr('data-words',res.words);
214 + item.attr('data-duration',timeDiff);
215 + aiomaticCompareResult();
216 + }
217 + else{
218 + form.find('.aiomatic-comparison-output').val(res.msg);
219 + aiomaticCompareResult();
220 + }
221 + }
222 + })
223 + }
224 + else{
225 + alert(has_error);
226 + }
227 + });
228 + });