Content deleted Content added
Polygnotus (talk | contribs) ←Created page with '// Wikipedia User Edit Count Checker for common.js // Gets edit counts for users with maxlag support, HTTP error handling, exponential backoff retry, deduplication // Uses OOUI for modern interface async function checkUserEditCounts() { showEditCountDialog(); } function showEditCountDialog() { // Create input field for usernames const inputField = new OO.ui.MultilineTextInputWidget({ placeholder: 'Enter usernames (one per line)\nSuppor...' |
Polygnotus (talk | contribs) No edit summary |
||
(12 intermediate revisions by the same user not shown) | |||
Line 54:
});
// Create simple layout without FieldLayout wrappers
const fieldsetLayout = new OO.ui.FieldsetLayout({
label: 'User Edit Count Checker',
items: [
new OO.ui.
new OO.ui.Widget({ content: [new
new OO.ui.
new OO.ui.Widget({ content: [new
new OO.ui.
new
})
new OO.ui.FieldLayout(outputField, {▼
label: 'Results:',▼
align: 'top'▼
}),▼
}),▼
{▼
label: 'Actions:',▼
align: 'top'▼
}▼
)▼
]
});
// Create a proper dialog class
function EditCountDialog(config) {
const dialog = new OO.ui.Dialog({▼
EditCountDialog.parent.call(this, config);
size: 'large',▼
classes: ['editcount-dialog']▼
OO.inheritClass(EditCountDialog, OO.ui.Dialog);
▲ });
EditCountDialog.static.name = 'editCountDialog';
EditCountDialog.static.title = 'User Edit Count Checker';
EditCountDialog.static.size = 'large';
this.content = new OO.ui.PanelLayout({
padded: true,
Line 102 ⟶ 92:
};
return
.next(function() {
inputField.focus();
});
};
EditCountDialog.prototype.getActionProcess = function(action) {
if (action === 'close') {
this.close({ action: action });
return EditCountDialog.parent.prototype.getActionProcess.call(this, action);
};
EditCountDialog.static.actions = [
flags: ['safe', 'close']
}
];
▲ classes: ['editcount-dialog']
});
// Button event handlers
Line 142 ⟶ 153:
const windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
windowManager.addWindows(
// Open dialog
windowManager.openWindow(
}
Line 172 ⟶ 183:
checkButton.setLabel('Checking...');
const
const errors = [];
Line 188 ⟶ 199:
try {
const editCount = await getUserEditCount(userInfo.username);
original: userInfo.original,
username: userInfo.username,
console.log(`✓ ${userInfo.username}: ${editCount.toLocaleString()} edits`);
} catch (error) {
console.error(`Failed to get edit count for ${userInfo.username}:`, error);
original: userInfo.original,
username: userInfo.username,
errors.push(userInfo.username);
}
Line 201 ⟶ 221:
}
}
// Sort by edit count (highest first)
userResults.sort((a, b) => b.editCount - a.editCount);
// Update UI with completion
Line 209 ⟶ 232:
copyButton.setDisabled(false);
// Display results (just usernames, but ordered by edit count)
const sortedUsernames = userResults.map(result => result.original);
outputField.setValue(
console.log("\n=== EDIT COUNT RESULTS (sorted by edit count) ===");
if (result.error) {
console.log(`${result.original}: ERROR`);
} else {
console.log(`${result.original}: ${result.editCount.toLocaleString()} edits`);
}
});
if (errors.length > 0) {
Line 396 ⟶ 426:
.editcount-dialog .oo-ui-window-body {
font-family: sans-serif;
height: 680px !important;
}
.editcount-dialog .oo-ui-window-frame {
height: 680px !important;
}
.editcount-input textarea,
|