mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2026-05-01 15:20:33 +00:00
112 lines
4.6 KiB
JavaScript
112 lines
4.6 KiB
JavaScript
|
|
function request_textpreview_update() {
|
|
if (!$('body').hasClass('preview-text-enabled')) {
|
|
console.error("Preview text was requested but body tag was not setup")
|
|
return
|
|
}
|
|
|
|
const data = {};
|
|
$('textarea:visible, input:visible').each(function () {
|
|
const $element = $(this); // Cache the jQuery object for the current element
|
|
const name = $element.attr('name'); // Get the name attribute of the element
|
|
data[name] = $element.is(':checkbox') ? ($element.is(':checked') ? $element.val() : false) : $element.val();
|
|
});
|
|
|
|
// llm_intent lives in a separate (potentially hidden) tab — include it explicitly
|
|
const $llmIntent = $('textarea[name="llm_intent"]');
|
|
if ($llmIntent.length) {
|
|
data['llm_intent'] = $llmIntent.val();
|
|
}
|
|
|
|
$('body').toggleClass('spinner-active', 1);
|
|
$('#llm-preview-result').hide();
|
|
|
|
$.abortiveSingularAjax({
|
|
type: "POST",
|
|
url: preview_text_edit_filters_url,
|
|
data: data,
|
|
namespace: 'watchEdit'
|
|
}).done(function (data) {
|
|
console.debug(data['duration'])
|
|
$('#filters-and-triggers #text-preview-before-inner').text(data['before_filter']);
|
|
$('#filters-and-triggers #text-preview-inner')
|
|
.text(data['after_filter'])
|
|
.highlightLines([
|
|
{
|
|
'color': 'var(--highlight-trigger-text-bg-color)',
|
|
'lines': data['trigger_line_numbers'],
|
|
'title': "Triggers a change if this text appears, AND something changed in the document."
|
|
},
|
|
{
|
|
'color': 'var(--highlight-ignored-text-bg-color)',
|
|
'lines': data['ignore_line_numbers'],
|
|
'title': "Ignored for calculating changes, but still shown."
|
|
},
|
|
{
|
|
'color': 'var(--highlight-blocked-text-bg-color)',
|
|
'lines': data['blocked_line_numbers'],
|
|
'title': "No change-detection will occur because this text exists."
|
|
}
|
|
])
|
|
|
|
// LLM preview extraction result
|
|
const $llmResult = $('#llm-preview-result');
|
|
if ($llmResult.length && data['llm_evaluation']) {
|
|
const ev = data['llm_evaluation'];
|
|
const found = ev['found'];
|
|
$llmResult.attr('data-found', found ? '1' : '0');
|
|
$llmResult.find('.llm-preview-verdict').text(
|
|
found ? '✓ Would trigger a change' : '✗ Would not trigger a change'
|
|
);
|
|
$llmResult.find('.llm-preview-answer').text(ev['answer'] || '');
|
|
$llmResult.show();
|
|
} else if ($llmResult.length) {
|
|
$llmResult.hide();
|
|
}
|
|
}).fail(function (error) {
|
|
if (error.statusText === 'abort') {
|
|
console.log('Request was aborted due to a new request being fired.');
|
|
} else {
|
|
$('#filters-and-triggers #text-preview-inner').text('There was an error communicating with the server.');
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
$('#notification-setting-reset-to-default').click(function (e) {
|
|
$('#notification_title').val('');
|
|
$('#notification_body').val('');
|
|
$('#notification_format').val('System default');
|
|
$('#notification_urls').val('');
|
|
$('#notification_muted_none').prop('checked', true); // in the case of a ternary field
|
|
e.preventDefault();
|
|
});
|
|
$("#notification-token-toggle").click(function (e) {
|
|
e.preventDefault();
|
|
$('#notification-tokens-info').toggle();
|
|
});
|
|
|
|
toggleOpacity('#time_between_check_use_default', '#time-check-widget-wrapper, #time-between-check-schedule', false);
|
|
|
|
|
|
const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
|
|
$("#text-preview-inner").css('max-height', (vh - 300) + "px");
|
|
$("#text-preview-before-inner").css('max-height', (vh - 300) + "px");
|
|
|
|
$("#activate-text-preview").click(function (e) {
|
|
$('body').toggleClass('preview-text-enabled')
|
|
request_textpreview_update();
|
|
const method = $('body').hasClass('preview-text-enabled') ? 'on' : 'off';
|
|
$('#filters-and-triggers textarea')[method]('blur', request_textpreview_update.throttle(1000));
|
|
$('#filters-and-triggers input')[method]('change', request_textpreview_update.throttle(1000));
|
|
$("#filters-and-triggers-tab")[method]('click', request_textpreview_update.throttle(1000));
|
|
});
|
|
$('.minitabs-wrapper').miniTabs({
|
|
"Content after filters": "#text-preview-inner",
|
|
"Content raw/before filters": "#text-preview-before-inner"
|
|
});
|
|
});
|
|
|