Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Swpb/NPVIC chart new
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!
p = {} function julian(date_string) jdate = mw.getCurrentFrame():getParent():expandTemplate{ title = 'MDY to Julian', args = { date_string } } return jdate end function year(jdate) year = mw.getCurrentFrame():getParent():expandTemplate{ title = 'JULIANDAY.YEAR', args = { jdate } } return year end function historic_EVs(state, year) historic_EVs = tonumber(mw.getCurrentFrame():getParent():expandTemplate{ title = 'USHRseats', args = { state, year } }) + 2 return historic_EVs end --Plots bar segments function p.bars(frame) local height = frame.args['height'] or 450 local max_tot = frame.args['max_tot'] local updated = frame.args['updated'] local parent = mw.getCurrentFrame():getParent() running_dates = { julian('1/1/2011'), julian('1/1/2021') } running_EVs = { 0, 0 } -- for index,date in pairs(running_dates) do -- running_totals[index] = 0 -- end local i = 1 local bars = '' local totals = {} while parent:expandTemplate{ title = 'component' , args = { frame.args[i] , 1 } }~='' do state = parent:expandTemplate{ title = 'component' , args = { frame.args[i] , 1 } } join1 = julian( parent:expandTemplate{ title = 'component' , args = { frame.args[i] , 'start' } } ) drop1 = julian( parent:expandTemplate{ title = 'component' , args = { frame.args[i] , 'end' } } ) join2 = julian( parent:expandTemplate{ title = 'component' , args = { frame.args[i] , 'start2' } } ) drop2 = julian( parent:expandTemplate{ title = 'component' , args = { frame.args[i] , 'end2' } } ) state_dates = {join1, drop1, join2, drop2} state_ismember = {1, 0, 1, 0} state_EVs = {} for index,state_date in pairs(state_dates) do state_EVs[index] = 0 end if state=='DC' then state_EVs[1] = 3 state_EVs[3] = 3 else state_EVs[1] = historic_EVs(state, year(join1)) state_EVs[3] = historic_EVs(state, year(join2)) end for running_index,running_date in pairs(running_dates) do for state_index,state_date in pairs(state_dates) do if running_date > state_dates[state_index] and not running_date > state_dates[state_index+1] then table.insert( state_dates, state_index+1, running_date) if state_ismember[state_index]==1 then table.insert( state_EVs, state_index+1, historic_EVs(state,running_date) ) table.insert( state_ismember, state_index+1, 1) else table.insert( state_EVs, state_index+1, 0) table.insert( state_ismember, state_index+1, 0) end end end end running_dates = state_dates for index,running_date in pairs(running_dates) do end -- Update running_EVs array bars = bars .. parent:expandTemplate{ title = 'User:Swpb/sandbox9' , args = { size = height, max_tot = max_tot, updated = updated, new_tot = totals[i], frame.args[i] } } end i = i+1 return bars end -- if i<num_items then -- if mw.ustring.match(state,'MD') then -- totals[i] = EVs -- else -- totals[i] = (totals[i-1] or 0) + EVs -- end -- end -- for each date in dates: date_EV_pairs([date]) = USHRseats(date)+2 (when a member); = 0 (when not a member) -- multiply a binary array of joined status by an array of EV values on those dates -- start1_EVs = parent:expandTemplate{ title = 'USHRseats', args = { state, mw.ustring.sub(start, -4) } } -- end1_EVs = parent:expandTemplate{ title = 'USHRseats', args = { state, mw.ustring.sub(end1, -4) } } -- start2_EVs = parent:expandTemplate{ title = 'USHRseats', args = { state, mw.ustring.sub(start2, -4) } } -- end2_EVs = parent:expandTemplate{ title = 'USHRseats', args = { state, mw.ustring.sub(end2, -4) } } -- Generate table of dates and EVs, and insert Census and other change dates -- Add any new change dates (events other than start1) and expand running_totals table -- Sort dates and totals and send to bars template --Given a timespan from Jan 1, 2006 to a given end date "updated">, calculates the percentage of time elapsed as of a given intermediate date "date". function p.percent(frame) local parent = mw.getCurrentFrame():getParent() local date = parent:expandTemplate{ title = 'MDY to Julian', frame.args['date']} local updated = parent:expandTemplate{ title = 'MDY to Julian', frame.args['updated']} local start = parent:expandTemplate{ title = 'MDY to Julian', '1/1/2006' } percent = 100 * (date - start)/(updated - start) return percent end --Draws interior gray bars on odd years function p.stripes(frame) local parent = mw.getCurrentFrame():getParent() local updated = frame.args['updated'] local year_updated = parent:expandTemplate{ title = 'str rightc', args = {updated, 4} } local stripes = '' for year = 2006, year_updated, 2 do stripes = stripes .. '<div style="display: inline-block; position: absolute;' .. 'left: {{NPVIC chart/percent| date=1/1/' .. year .. '}} | updated=' .. updated .. ' }}%;' .. 'right: {{max|0|{{#expr: 100-{{NPVIC chart/percent| date=12/31/' .. year .. ' | updated=' .. updated .. ' }} }} }}%;' .. 'bottom: 0%;' .. 'top: 0%;' .. 'background-color: #F9F9F9;"></div>' end return stripes 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)
Template used on this page:
Module:Sandbox/Swpb/NPVIC chart new/doc
(
edit
)