Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Service award progress
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local navbar = require('Module:Navbar')._navbar local mm = require('Module:Math') local p = {} local function stripToNil(text) -- If text is a string, return its trimmed content, or nil if empty. -- Otherwise return text (which may, for example, be nil). if type(text) == 'string' then text = text:match('(%S.-)%s*$') end return text end local function progressBar(current, total) local percentDone = mm._round(current / total * 100, 1) local leftBar = '' local rightBar = '' if percentDone >= 100 then leftBar = 100 rightBar = 0 else leftBar = current / total * 100 rightBar = (100-current) / total * 100 end local progBarText = '<div style="width:75%; margin:auto; text-align:center;">' .. '<p><span style="font-size: 120%;"><b>' .. percentDone .. '%</b></span> completed</p>' .. '<p style="border:1px solid #c8ccd1; padding:1px; overflow:hidden;">' .. '<span style="width: ' .. leftBar .. '%; height: 2px; background:#00af32; float:left;"> </span>' .. '<span style="width: ' .. rightBar .. '%; height: 2px; background:#eaecf0; float:left;"> </span>' .. '</p></div>' return progBarText end local levelNames = { '[[Wikipedia:Service awards#Ultimate Vanguard Editor (or Cardinal Gom, the August Togneme of the Encyclopedia)|Ultimate Vanguard Editor]]', '[[Wikipedia:Service awards#Senior Vanguard Editor (or Supreme Gom, the Most Exalted Togneme of the Encyclopedia)|Senior Vanguard Editor]]', '[[Wikipedia:Service awards#Vanguard Editor (or Lord Gom, the Highest Togneme of the Encyclopedia)|Vanguard Editor]]', '[[Wikipedia:Service awards#Grandmaster Editor First-Class (or Lord High Togneme Laureate)|Grandmaster Editor First-Class]]', '[[Wikipedia:Service awards#Grandmaster Editor (or Lord High Togneme Vicarus)|Grandmaster Editor]]', '[[Wikipedia:Service awards#Master Editor IV (or Looshpah Laureate of the Encyclopedia)|Master Editor IV]]', '[[Wikipedia:Service awards#Master Editor III (or Most Plusquamperfect Looshpah Laureate)|Master Editor III]]', '[[Wikipedia:Service awards#Master Editor II (or Auspicious Looshpah)|Master Editor II]]', '[[Wikipedia:Service awards#Master Editor (or Illustrious Looshpah)|Master Editor]]', '[[Wikipedia:Service awards#Senior Editor III (or Labutnum of the Encyclopedia)|Senior Editor III]]', '[[Wikipedia:Service awards#Senior Editor II (or Most Pluperfect Labutnum)|Senior Editor II]]', '[[Wikipedia:Service awards#Senior Editor (or Labutnum)|Senior Editor]]', '[[Wikipedia:Service awards#Veteran Editor IV (or Tutnum of the Encyclopedia)|Veteran Editor IV]]', '[[Wikipedia:Service awards#Veteran Editor III (or Most Perfect Tutnum)|Veteran Editor III]]', '[[Wikipedia:Service awards#Veteran Editor II (or Grand Tutnum)|Veteran Editor II]]', '[[Wikipedia:Service awards#Veteran Editor (or Tutnum)|Veteran Editor]]', '[[Wikipedia:Service awards#Experienced Editor (or Grognard Mirabilaire)|Experienced Editor]]', '[[Wikipedia:Service awards#Yeoman Editor (or Grognard Extraordinaire)|Yeoman Editor, level 4]]', '[[Wikipedia:Service awards#Yeoman Editor (or Grognard Extraordinaire)|Yeoman Editor, level 3]]', '[[Wikipedia:Service awards#Yeoman Editor (or Grognard Extraordinaire)|Yeoman Editor, level 2]]', '[[Wikipedia:Service awards#Yeoman Editor (or Grognard Extraordinaire)|Yeoman Editor]]', '[[Wikipedia:Service awards#Journeyman Editor (or Grognard)|Journeyman Editor, level 4]]', '[[Wikipedia:Service awards#Journeyman Editor (or Grognard)|Journeyman Editor, level 3]]', '[[Wikipedia:Service awards#Journeyman Editor (or Grognard)|Journeyman Editor, level 2]]', '[[Wikipedia:Service awards#Journeyman Editor (or Grognard)|Journeyman Editor]]', '[[Wikipedia:Service awards#Apprentice Editor (or Novato)|Apprentice Editor, level 4]]', '[[Wikipedia:Service awards#Apprentice Editor (or Novato)|Apprentice Editor, level 3]]', '[[Wikipedia:Service awards#Apprentice Editor (or Novato)|Apprentice Editor, level 2]]', '[[Wikipedia:Service awards#Apprentice Editor (or Novato)|Apprentice Editor]]', '[[Wikipedia:Service awards#Novice Editor (or Burba)|Novice Editor, level 4]]', '[[Wikipedia:Service awards#Novice Editor (or Burba)|Novice Editor, level 3]]', '[[Wikipedia:Service awards#Novice Editor (or Burba)|Novice Editor, level 2]]', '[[Wikipedia:Service awards#Novice Editor (or Burba)|Novice Editor]]', '[[Wikipedia:Service awards#Registered Editor (or Signator)|Registered Editor, level 4]]', '[[Wikipedia:Service awards#Registered Editor (or Signator)|Registered Editor, level 3]]', '[[Wikipedia:Service awards#Registered Editor (or Signator)|Registered Editor, level 2]]', '[[Wikipedia:Service awards#Registered Editor (or Signator)|Registered Editor]]', 'Wikipedian', } local levelTime = { 7305, 6574.5, 5844, 5113.5, 4383, 3652.4, 2922, 2556.7, 2191.5, 1826.2, 1643.6, 1461, 1278.4, 1095.7, 913.1, 730.5, 547.9, 501.75, 456.25, 410.75, 365.25, 319.1, 273.6, 228.1, 182.6, 160.3, 137.3, 114.3, 91.3, 75.5, 60.5, 45.5, 30.5, 24, 16, 8, 1, 0, } local levelEdits = { 175000, 150000, 132000, 114000, 96000, 78000, 60000, 51000, 42000, 33000, 28500, 24000, 20000, 16000, 12000, 8000, 6000, 5500, 5000, 4500, 4000, 3500, 3000, 2500, 2000, 1750, 1500, 1250, 1000, 800, 600, 400, 200, 150, 100, 50, 1, 0, } function p.serviceLevel(args) --Inputs local editorTime = tonumber(stripToNil(args.editorTime)) local edits = tonumber(stripToNil(args.edits)) local styleoverride = stripToNil(args.styleoverride) local genderoverride = stripToNil(args.genderoverride) local url = stripToNil(args.url) -- Other Variables local timeLevel = '' -- Level associated with time local editLevel = '' -- Level associated with edits local userLevel = '' -- Full name of current user level local lowEdits = '' -- Minimum number of edits for current user level local lowTime = '' -- Minimum amount of time for current user level local highEdits = '' -- Max number of edits for current user level local highTime = '' -- Max amount of time for current user level local nextLevel = '' -- Full name of next user level local fullMessage = '<div style="' -- Output seed local topLevel = false local needsEdits = false local needsTime = false local needsBoth = false local displayall = false if stripToNil(args.displayall) == 'yes' then displayall = true end -- Find "level" of editor based on time for x = 1, 38, 1 do if editorTime >= levelTime[x] then timeLevel = x break end end -- Fine "level" of editor based on edits for y = 1, 38, 1 do if edits >= levelEdits[y] then editLevel = y break end end -- Set user level and the next level up if timeLevel == editLevel then if timeLevel == 1 then userLevel = levelNames[1] topLevel = true else userLevel = levelNames[editLevel] nextLevel = levelNames[editLevel-1] lowEdits = levelEdits[editLevel] highEdits = levelEdits[editLevel-1] lowTime = levelTime[editLevel] highTime = levelTime[editLevel-1] needsBoth = true end elseif timeLevel < editLevel then userLevel = levelNames[editLevel] nextLevel = levelNames[editLevel-1] lowEdits = levelEdits[editLevel] highEdits = levelEdits[editLevel-1] lowTime = levelTime[editLevel] highTime = levelTime[editLevel-1] needsEdits = true else userLevel = levelNames[timeLevel] nextLevel = levelNames[timeLevel-1] lowEdits = levelEdits[timeLevel] highEdits = levelEdits[timeLevel-1] lowTime = levelTime[timeLevel] highTime = levelTime[timeLevel-1] needsTime = true end -- Build notice -- First paragraph fullMessage = fullMessage .. styleoverride .. '">' .. navbar({"Template:Service award progress",style="float:right",mini=1}) .. 'Currently, this editor has earned the <b>' .. userLevel .. '</b> service award.<br><br>' if topLevel then fullMessage = fullMessage .. '<div>This is the highest level achievable by an editor!</div>' else fullMessage = fullMessage .. '<div>To get to the next level, ' .. nextLevel .. ', ' .. genderoverride .. ' to meet the ' if needsBoth then fullMessage = fullMessage .. '<b>editing</b> and the <b>time</b> requirement.</div>' elseif needsEdits then fullMessage = fullMessage .. '<b>editing</b> requirement.</div>' else fullMessage = fullMessage .. '<b>time</b> requirement.</div>' end -- Second paragra / progress bars if displayall or needsBoth or needsEdits then fullMessage = fullMessage .. 'Progress towards the next level (by edits): [ ' .. '<span class="plainlinks">[' .. url .. ' ' .. (edits - lowEdits) .. ']</span> / ' .. (highEdits - lowEdits) .. ' ]' fullMessage = fullMessage .. progressBar(edits - lowEdits, highEdits - lowEdits) end if displayall or needsBoth or needsTime then fullMessage = fullMessage .. 'Progress towards the next level (by time): [ ' .. (editorTime - lowTime) .. ' days / ' .. (highTime - lowTime) .. ' days ]' fullMessage = fullMessage .. progressBar(editorTime - lowTime, highTime - lowTime) end fullMessage = fullMessage .. '</div>' end return fullMessage end function p.main(frame) return p.serviceLevel(frame.args) end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Template:Sandbox other
(
edit
)
Template:T
(
edit
)
Module:Arguments
(
edit
)
Module:Message box
(
edit
)
Module:Message box/configuration
(
edit
)
Module:Message box/ombox.css
(
edit
)
Module:Service award progress/doc
(
edit
)
Module:String
(
edit
)
Module:Yesno
(
edit
)