| 1931 | 1931 | } |
| 1932 | 1932 | }); |
| 1933 | 1933 | |
| 1934 | + $('#world_apply_custom_sorting').off('click').on('click', async () => { |
| 1935 | + const entryCount = Object.keys(data.entries).length; |
| 1936 | + const moreThan100 = entryCount > 100; |
| 1937 | + |
| 1938 | + let content = '<span>Apply your custom sorting to the "Order" field. The Order values will go down from the chosen number.</span>'; |
| 1939 | + if (moreThan100) { |
| 1940 | + content += `<div class="m-t-1"><i class="fa-solid fa-triangle-exclamation" style="color: #FFD43B;"></i> More than 100 entries in this world. You have to choose a number higher than that to work.<br />(Usual default: 100)<br />Minimum: ${entryCount}</div>`; |
| 1941 | + } |
| 1942 | + |
| 1943 | + const result = await Popup.show.input('Apply Custom Sorting', content, moreThan100 ? '' : '100', { okButton: 'Apply', cancelButton: 'Cancel' }); |
| 1944 | + if (!result) return; |
| 1945 | + |
| 1946 | + const start = Number(result); |
| 1947 | + if (isNaN(start) || start < 0) { |
| 1948 | + toastr.error('Invalid number: ' + result, 'Apply Custom Sorting'); |
| 1949 | + return; |
| 1950 | + } |
| 1951 | + if (start < entryCount) { |
| 1952 | + toastr.warning('The number must be higher than the total entry count: ' + entryCount, 'Apply Custom Sorting'); |
| 1953 | + return; |
| 1954 | + } |
| 1955 | + |
| 1956 | + let counter = 0; |
| 1957 | + for (const entry of Object.values(data.entries)) { |
| 1958 | + const newOrder = start - (entry.displayIndex ?? 0); |
| 1959 | + if (entry.order === newOrder) continue; |
| 1960 | + |
| 1961 | + entry.order = newOrder; |
| 1962 | + setOriginalDataValue(data, entry.order, 'order', entry.order); |
| 1963 | + counter++; |
| 1964 | + } |
| 1965 | + |
| 1966 | + if (counter > 0) { |
| 1967 | + toastr.info(`Updated ${counter} Order values`, 'Apply Custom Sorting'); |
| 1968 | + await saveWorldInfo(name, data, true); |
| 1969 | + updateEditor(navigation_option.previous); |
| 1970 | + } else { |
| 1971 | + toastr.info('All values up to date', 'Apply Custom Sorting'); |
| 1972 | + } |
| 1973 | + }); |
| 1974 | + |
| 1934 | 1975 | $('#world_popup_export').off('click').on('click', () => { |
| 1935 | 1976 | if (name && data) { |
| 1936 | 1977 | const jsonValue = JSON.stringify(data); |