Fix apply WI sorting to order field - Fix using wrong values because of displayIndex - Expand it to take any current sorting, not just the "custom" one

ad65fbc1fce2f76514a7817ced438f72ebb6a906

Wolfsblvt <wolfsblvt@gmail.com>

2 files changed, +17 -13Ignore whitespace
public/index.html+2 -2
@@ -3662,8 +3662,8 @@
3662 <div id="OpenAllWIEntries" class="menu_button fa-solid fa-expand" title="Open all Entries" data-i18n="[title]Open all Entries"></div>3662 <div id="OpenAllWIEntries" class="menu_button fa-solid fa-expand" title="Open all Entries" data-i18n="[title]Open all Entries"></div>
3663 <div id="CloseAllWIEntries" class="menu_button fa-solid fa-compress" title="Close all Entries" data-i18n="[title]Close all Entries"></div>3663 <div id="CloseAllWIEntries" class="menu_button fa-solid fa-compress" title="Close all Entries" data-i18n="[title]Close all Entries"></div>
3664 <div id="world_popup_new" class="menu_button fa-solid fa-plus" title="New Entry" data-i18n="[title]New Entry"></div>3664 <div id="world_popup_new" class="menu_button fa-solid fa-plus" title="New Entry" data-i18n="[title]New Entry"></div>
3665 <div id="world_backfill_memos" class="menu_button fa-solid fa-notes-medical" title="Fill empty Memo/Titles with Keywords" data-i18n="[title]Fill empty Memo/Titles with Keywords"></div><div id="world_apply_custom_sorting" class="menu_button fa-solid fa-solid fa-arrow-down-9-1"3665 <div id="world_backfill_memos" class="menu_button fa-solid fa-notes-medical" title="Fill empty Memo/Titles with Keywords" data-i18n="[title]Fill empty Memo/Titles with Keywords"></div>
3666 title="Apply custom sorting as Order" data-i18n="[title]Apply custom sorting as Order"></div>3666 <div id="world_apply_current_sorting" class="menu_button fa-solid fa-solid fa-arrow-down-9-1" title="Apply current sorting as Order" data-i18n="[title]Apply current sorting as Order"></div>
3667 <div id="world_import_button" class="menu_button fa-solid fa-file-import" title="Import World Info" data-i18n="[title]Import World Info"></div>3667 <div id="world_import_button" class="menu_button fa-solid fa-file-import" title="Import World Info" data-i18n="[title]Import World Info"></div>
3668 <div id="world_popup_export" class="menu_button fa-solid fa-file-export" title="Export World Info" data-i18n="[title]Export World Info"></div>3668 <div id="world_popup_export" class="menu_button fa-solid fa-file-export" title="Export World Info" data-i18n="[title]Export World Info"></div>
3669 <div id="world_duplicate" class="menu_button fa-solid fa-paste" title="Duplicate World Info" data-i18n="[title]Duplicate World Info"></div>3669 <div id="world_duplicate" class="menu_button fa-solid fa-paste" title="Duplicate World Info" data-i18n="[title]Duplicate World Info"></div>
public/scripts/world-info.js+15 -11
@@ -1939,39 +1939,43 @@ function displayWorldEntries(name, data, navigation = navigation_option.none, fl
1939 }1939 }
1940 });1940 });
19411941
1942 $('#world_apply_custom_sorting').off('click').on('click', async () => {1942 $('#world_apply_current_sorting').off('click').on('click', async () => {
1943 const entryCount = Object.keys(data.entries).length;1943 const entryCount = Object.keys(data.entries).length;
1944 const moreThan100 = entryCount > 100;1944 const moreThan100 = entryCount > 100;
19451945
1946 let content = '<span>Apply your custom sorting to the "Order" field. The Order values will go down from the chosen number.</span>';1946 let content = '<span>Apply your current sorting to the "Order" field. The Order values will go down from the chosen number.</span>';
1947 if (moreThan100) {1947 if (moreThan100) {
1948 content += `<div class="m-t-1"><i class="fa-solid fa-triangle-exclamation" style="color: #FFD43B;"></i> More than 100 entries in this world. If you don't choose a number higher than that, the lower entries will default to 0.<br />(Usual default: 100)<br />Minimum: ${entryCount}</div>`;1948 content += `<div class="m-t-1"><i class="fa-solid fa-triangle-exclamation" style="color: #FFD43B;"></i> More than 100 entries in this world. If you don't choose a number higher than that, the lower entries will default to 0.<br />(Usual default: 100)<br />Minimum: ${entryCount}</div>`;
1949 }1949 }
19501950
1951 const result = await Popup.show.input('Apply Custom Sorting', content, '100', { okButton: 'Apply', cancelButton: 'Cancel' });1951 const result = await Popup.show.input('Apply Current Sorting', content, '100', { okButton: 'Apply', cancelButton: 'Cancel' });
1952 if (!result) return;1952 if (!result) return;
19531953
1954 const start = Number(result);1954 const start = Number(result);
1955 if (isNaN(start) || start < 0) {1955 if (isNaN(start) || start < 0) {
1956 toastr.error('Invalid number: ' + result, 'Apply Custom Sorting');1956 toastr.error('Invalid number: ' + result, 'Apply Current Sorting');
1957 return;1957 return;
1958 }1958 }
1959 if (start < entryCount) {1959 if (start < entryCount) {
1960 toastr.warning('A number lower than the entry count has been chosen. All entries below that will default to 0.', 'Apply Custom Sorting');1960 toastr.warning('A number lower than the entry count has been chosen. All entries below that will default to 0.', 'Apply Current Sorting');
1961 }1961 }
19621962
1963 let counter = 0;1963 // We need to sort the entries here, as the data source isn't sorted
1964 for (const entry of Object.values(data.entries)) {1964 const entries = Object.values(data.entries);
1965 const newOrder = Math.max(start - (entry.displayIndex ?? 0), 0);1965 sortEntries(entries);
1966
1967 let updated = 0, current = start;
1968 for (const entry of entries) {
1969 const newOrder = Math.max(current--, 0);
1966 if (entry.order === newOrder) continue;1970 if (entry.order === newOrder) continue;
19671971
1968 entry.order = newOrder;1972 entry.order = newOrder;
1969 setOriginalDataValue(data, entry.order, 'order', entry.order);1973 setOriginalDataValue(data, entry.order, 'order', entry.order);
1970 counter++;1974 updated++;
1971 }1975 }
19721976
1973 if (counter > 0) {1977 if (updated > 0) {
1974 toastr.info(`Updated ${counter} Order values`, 'Apply Custom Sorting');1978 toastr.info(`Updated ${updated} Order values`, 'Apply Custom Sorting');
1975 await saveWorldInfo(name, data, true);1979 await saveWorldInfo(name, data, true);
1976 updateEditor(navigation_option.previous);1980 updateEditor(navigation_option.previous);
1977 } else {1981 } else {