diff --git a/public/index.html b/public/index.html index 6f0d40dcc..c885111e1 100644 --- a/public/index.html +++ b/public/index.html @@ -6010,6 +6010,7 @@
+ @@ -6017,6 +6018,7 @@
+ diff --git a/public/scripts/logit-bias.js b/public/scripts/logit-bias.js index 2b9d67bdc..f1061def4 100644 --- a/public/scripts/logit-bias.js +++ b/public/scripts/logit-bias.js @@ -1,6 +1,6 @@ import { saveSettingsDebounced } from '../script.js'; import { getTextTokens } from './tokenizers.js'; -import { uuidv4 } from './utils.js'; +import { getSortableDelay, uuidv4 } from './utils.js'; export const BIAS_CACHE = new Map(); @@ -16,7 +16,8 @@ export function displayLogitBias(logitBias, containerSelector) { return; } - $(containerSelector).find('.logit_bias_list').empty(); + const list = $(containerSelector).find('.logit_bias_list'); + list.empty(); for (const entry of logitBias) { if (entry) { @@ -24,6 +25,27 @@ export function displayLogitBias(logitBias, containerSelector) { } } + // Check if a sortable instance exists + if (list.sortable('instance') !== undefined) { + // Destroy the instance + list.sortable('destroy'); + } + + // Make the list sortable + list.sortable({ + delay: getSortableDelay(), + handle: '.drag-handle', + stop: function () { + const order = []; + list.children().each(function () { + order.unshift($(this).data('id')); + }); + logitBias.sort((a, b) => order.indexOf(a.id) - order.indexOf(b.id)); + console.log('Logit bias reordered:', logitBias); + saveSettingsDebounced(); + }, + }); + BIAS_CACHE.delete(containerSelector); } diff --git a/public/scripts/openai.js b/public/scripts/openai.js index 914d6d24a..98b81d050 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -3465,7 +3465,8 @@ function onLogitBiasPresetChange() { } oai_settings.bias_preset_selected = value; - $('.openai_logit_bias_list').empty(); + const list = $('.openai_logit_bias_list'); + list.empty(); for (const entry of preset) { if (entry) { @@ -3473,6 +3474,27 @@ function onLogitBiasPresetChange() { } } + // Check if a sortable instance exists + if (list.sortable('instance') !== undefined) { + // Destroy the instance + list.sortable('destroy'); + } + + // Make the list sortable + list.sortable({ + delay: getSortableDelay(), + handle: '.drag-handle', + stop: function () { + const order = []; + list.children().each(function () { + order.unshift(parseInt($(this).data('id'))); + }); + preset.sort((a, b) => order.indexOf(preset.indexOf(a)) - order.indexOf(preset.indexOf(b))); + console.log('Logit bias reordered:', preset); + saveSettingsDebounced(); + }, + }); + biasCache = undefined; saveSettingsDebounced(); }