JS-код ниже относится к гаджету: Гаджет проекта «Знаете ли вы» (править описание). Его использует около 1400 учётных записей.

После сохранения или недавних изменений очистите кэш браузера.

(function() {if (mw.config.get('wgTitle') !== 'Знаете ли вы/Подготовка следующего выпуска') return;var $button;var sorted = false;var anchor = $('#dyk-start');if (anchor.parent().is('p'))anchor = anchor.parent();var announces = anchor.nextAll('h3, .mw-heading3').map(function(index) {var orders = $(this).find('.dyk-status').map(function() {return $(this).attr('data-sort') || -Number.MAX_VALUE;}).get().map(parseFloat);orders.push(Number.MAX_VALUE); // for those who don't have status yetreturn {originalOrder: index,order: Math.min.apply(null, orders),anchor: this,isSelected: getContent(this).find('.dyk-check').length > 0};}).get();function getContent(h3) {return $(h3).add($(h3).nextUntil('.mw-heading3, .mw-heading2, h3, noscript, h2'))}function sort(getOrder) {var ordered = [];for(var i = 0; i < announces.length; i++) {var announce = announces[i];var order = getOrder(announce);var found = false;for(var j = ordered.length - 1; j >= 0; j--) {var o = ordered[j];if (getOrder(o) <= order) {found = true;if (j != ordered.length) {getContent(announce.anchor).insertAfter(getContent(ordered[j].anchor).last());}ordered.splice(j + 1, 0, announce);break;}}if (!found) {if (ordered.length) {getContent(announce.anchor).insertBefore(getContent(ordered[0].anchor).first());}ordered.splice(0, 0, announce);}}}function updateBackground() {announces.forEach(function(a) {var content = getContent(a.anchor);if (sorted) {if (a.isSelected) {content.addClass( 'dyk-nom-selected' );}} else {content.removeClass( 'dyk-nom-selected' );}});}function sortDyks(a) {return a.isSelected ? Number.MAX_VALUE : a.order;}function sortOriginal(a) {return a.originalOrder;}mw.loader.using( [ 'mediawiki.util', 'oojs-ui' ], () => {mw.util.addCSS( '.dyk-nom-selected { background-color: var(--background-color-interactive, #eaecf0); }' );$button = new OO.ui.ToggleButtonWidget( {label: 'Отсортировать',} );$button.on( 'change', ( val ) => {var f = val ? sortDyks : sortOriginal;sort(f);sorted = val;$button.setLabel( !sorted ? 'Отсортировать' : 'Отсортировано' );updateBackground();} );$button.$element.insertBefore( '#dyk-start' );} );})();