Jump to content
Panguna nga menu
Panguna nga menu
move to sidebar
tagoa
Tabok-tabok
Unang Panid
Tubaan
Mga bag-ong giusab
Bisan unsang panid
Tabang
Pangita
Pangitaa
Appearance
Mga donasyon
Paghimo og akawnt
Sulod
Personal nga galamiton
Mga donasyon
Contribute
Paghimo og akawnt
Sulod
Pages for logged out editors
learn more
Panghisgot-hisgot alang niining IP
Nagausab sa
Module:Storm categories/demo
Idugang ang mga pinulongan
Module
Panaghisgot-hisgot
English
Basaha
Usba ang wikitext
Tan-awa ang kaagi
Mga galamiton
Mga galamiton
move to sidebar
tagoa
Actions
Basaha
Usba ang wikitext
Tan-awa ang kaagi
Heneral
Unsay mga misumpay dinhi
Mga may kalabotang kausaban
Pagsumiter og payl
Impormasyon kabahin sa panid
Pagkuha og pinamubo nga URL
Download QR code
Appearance
move to sidebar
tagoa
Pahimangno:
Wala ka mailhi sa balayan. Ang imong
IP adress
makita sa publiko kon mohimo ka og mga pag-usab. Kon
mo-
log in
ka o
mohimo og akawnt
, ang imong mga pag-usab ingalan sa imong
username
, lakip na ang uban pang kaayohan.
Pagkontra sa
spam
.
Ayaw</stong> ni sudli!
-- -- This module handles demonstration and list of possible values for all storm -- category templates! Please test this module on [[Module:Storm categories/demo/doc]] -- before publishing to avoid errros. Thank you! -- local colorRatio = require("Module:Color contrast")._ratio local TableTools = require("Module:TableTools") local stormcats = require("Module:Storm categories") local cats = require("Module:Storm categories/categories").cats local colors = require("Module:Storm categories/colors").colors local icons = require("Module:Storm categories/icons").icons local p = {} local customKeys = {} for k, v in pairs(colors) do table.insert(customKeys, k) end for k, v in pairs(icons) do table.insert(customKeys, k) end TableTools.removeDuplicates(customKeys) function tableEmpty(_table) for k, v in pairs(_table) do return false end return true end --- Generates and renderds the demo table. -- @param frame The Scribunto frame. function p.demo(frame) local plain = (frame.args["plain"] or frame:getParent().args["plain"] or "") ~= "" local verbose = (frame.args["verbose"] or frame:getParent().args["verbose"] or "") ~= "" local legend = setmetatable({}, { refgroupname = "" }) local errors = setmetatable({}, { refgroupname = "E" }) local warnings = setmetatable({}, { refgroupname = "W" }) --- Builds the entire reflist -- @param _group The group to build for. Uses `legend` by default. function buildReflist(_group) group = _group or legend return frame:expandTemplate{ title = 'reflist', args = { group = getmetatable(group)["refgroupname"] } } end --- Returns a single <ref> tag containing the legend provided and -- attaches the note definition to the list of notes. -- @param details The details of the legend. -- @param _group The group to write in. Uses `legend` by default. function createLegend(details, _group) hash = string.sub(mw.hash.hashValue("md5", details), 0, 8) group = _group or legend if group[hash] == nil then group[hash] = plain and "" or frame:extensionTag{ -- <ref name="hash">details</ref> name = 'ref', content = mw.ustring.gsub(details, "%[%[File:([^%|]+)[^%]]*%]%]", "[[:File:%1]]"), args = { name = hash, group = getmetatable(group)["refgroupname"] } } end -- <ref name="hash"/> return plain and "" or frame:extensionTag{ name = 'ref', args = { name = hash, group = getmetatable(group)["refgroupname"] } } end --- Checks for color contrast issues and tags accordingly. -- Returns the refernce tag, so this should be used in conjunction with an -- HTML node's :wikitext function. function contrastCheck(color) local catColorBlackRatio = colorRatio({ "#" .. color, "black" }) local catColorLinkRatio = colorRatio({ "#" .. color, "#0645ad" }) local catColorVisitedLinkRatio = colorRatio({ "#" .. color, "#0b0080" }) local finalWikitext = "" if catColorBlackRatio == "?" or catColorLinkRatio == "?" or catColorVisitedLinkRatio == "?" then finalWikitext = finalWikitext .. createLegend("This color must be a hexadecimal color.", errors) else if catColorBlackRatio < 4.5 then finalWikitext = finalWikitext .. createLegend("This color has [[MOS:COLOR|contrast issues]] with black (not WCAG 2.0 AA-compatible). It will be unusable on all infoboxes and storm season summaries.", errors) end if catColorLinkRatio < 4.5 then finalWikitext = finalWikitext .. createLegend("This color has [[MOS:COLOR|contrast issues]] with links (not WCAG 2.0 AA-compatible). It should not be used in conjunction with a link.", warnings) end if catColorVisitedLinkRatio < 4.5 then finalWikitext = finalWikitext .. createLegend("This color has [[MOS:COLOR|contrast issues]] with visited links (not WCAG 2.0 AA-compatible with #0b0080). It should not be used in conjunction with a visited link.", warnings) end if actualCat == "c0c0c0" and cat[sortkey] ~= 0 then finalWikitext = finalWikitext .. createLegend("This category is using a color reserved specifically for the \"unknown\" category.", warnings) end end return finalWikitext end function colorInfo(color, verbose, extra) local catColorBlackRatio = colorRatio({ "#" .. color, "black" }) local catColorLinkRatio = colorRatio({ "#" .. color, "#0645ad" }) local catColorVisitedLinkRatio = colorRatio({ "#" .. color, "#0b0080" }) local nc = tostring(mw.html.create("abbr") :wikitext("NC") :attr("title", "Does not satisfy the minimum WCAG 2.1 compliance level for color contrast (AA)") ); local aa = tostring(mw.html.create("abbr") :wikitext("AA") :attr("title", "WCAG 2.1 Level AA: Acceptable compliance") ); local aaa = tostring(mw.html.create("abbr") :wikitext("AAA") :attr("title", "WCAG 2.1 Level AAA: Optimal compliance") ); function contrastLevel(contrast) return contrast >= 7 and aaa or (contrast >= 4.5 and aa or nc) end return mw.html.create("td") :attr("data-sort-value", math.min(catColorBlackRatio)) :wikitext( "#" .. color .. (extra or "") .. contrastCheck(color) .. (verbose and ("<br/>" .. tostring( mw.html.create("abbr") :attr("title", "Contrast to black") :wikitext("CTB") ) .. ": " .. string.format("%.2f", catColorBlackRatio) .. " (" .. contrastLevel(catColorBlackRatio) .. ")<br/>" .. tostring( mw.html.create("abbr") :attr("title", "Contrast to links") :wikitext("CTL") ) .. ": " .. string.format("%.2f", catColorLinkRatio) .. " (" .. contrastLevel(catColorLinkRatio) .. ")<br/>" .. tostring( mw.html.create("abbr") :attr("title", "Contrast to visited links") :wikitext("CTVL") ) .. ": " .. string.format("%.2f", catColorVisitedLinkRatio) .. " (" .. contrastLevel(catColorVisitedLinkRatio) .. ")") or "") ) end local categoryTable = mw.html.create("table") :addClass("wikitable") :addClass("sortable") :attr("style", "width: 100%") categoryTable :node( mw.html.create("tr") :node(mw.html.create("th"):wikitext("Icon") :attr("class", "unsortable") :attr("rowspan", "2") :css("width", "0")) :node(mw.html.create("th"):wikitext("ID") :attr("rowspan", "2")) :node(mw.html.create("th"):wikitext("Name") :attr("colspan", "2")) :node(mw.html.create("th"):wikitext("Color") :attr("rowspan", "2") :attr("colspan", "2")) :node(mw.html.create("th"):wikitext("Sortkey") :attr("colspan", "2")) ):node( mw.html.create("tr") :node(mw.html.create("th"):wikitext("Basin")) :node(mw.html.create("th"):wikitext("Name")) :node(mw.html.create("th"):wikitext("Basin")) :node(mw.html.create("th"):wikitext("Sortkey") :attr("data-sort-type", "number")) ) for name, cat in TableTools.sortedPairs(cats) do local rows = { mw.html.create("tr") } local row = rows[1] local actualIcon = stormcats._icon(name) local icon = mw.html.create("td") :wikitext(actualIcon) if cat["icon"] ~= nil and actualIcon ~= cat["icon"] then icon:wikitext( createLegend("Overriden from original icon (" .. cat["icon"] .. ")") ) end local id = mw.html.create("td") :wikitext(name) local actualColor = stormcats._color(name) local colorPreview = mw.html.create("td") :attr("style", "background-color: #" .. actualColor .. "; padding: 0; width: 1.8em") local color = colorInfo( actualColor, verbose, actualColor ~= cat["color"] and createLegend( "Overriden from original color ({{color box|#" .. cat["color"] .. "}} #" .. cat["color"] .. ")" ) or "" ):css("width", "0"):css("white-space", "nowrap") local sortkeyCategory = mw.html.create("td") :attr("data-sort-value", cat["sortkey"]) local sortkey = mw.html.create("td") :attr("data-sort-value", cat["sortkey"]) :wikitext(cat["sortkey"]) if cat["sortkey"] < 0 then sortkeyCategory:wikitext("Invalid") elseif cat["sortkey"] < 20000 then sortkeyCategory:wikitext("Global") elseif cat["sortkey"] < 30000 then sortkeyCategory:wikitext("Historical") elseif cat["sortkey"] < 40000 then sortkeyCategory:wikitext("SWIO") elseif cat["sortkey"] < 50000 then sortkeyCategory:wikitext("Aus/Fiji") elseif cat["sortkey"] < 60000 then sortkeyCategory:wikitext("NIO") elseif cat["sortkey"] < 80000 then sortkeyCategory:wikitext("WPAC") elseif cat["sortkey"] < 90000 then sortkeyCategory:wikitext("Atl/EPac/SAtl") elseif cat["sortkey"] < 100000 then sortkeyCategory:attr("style", "color: gray") sortkeyCategory:wikitext("''Global''") else sortkeyCategory:wikitext("Invalid") end if type(cat["name"]) == "string" then local name = mw.html.create("td") :attr("colspan", "2") :wikitext(cat["name"]) row:node(icon) row:node(id) row:node(name) else local nameTableLength = TableTools.size(cat["name"]) icon:attr("rowspan", nameTableLength) id:attr("rowspan", nameTableLength) colorPreview:attr("rowspan", nameTableLength) color:attr("rowspan", nameTableLength) sortkeyCategory:attr("rowspan", nameTableLength) sortkey:attr("rowspan", nameTableLength) row:node(icon) row:node(id) local firstDone = false for key, basinName in TableTools.sortedPairs(cat["name"]) do if firstDone then local nameRow = mw.html.create("tr") nameRow :node(mw.html.create("td"):wikitext(key)) :node(mw.html.create("td"):wikitext(basinName)) table.insert(rows, nameRow) else firstDone = true row :node(mw.html.create("td"):wikitext(key)) :node(mw.html.create("td"):wikitext(basinName)) end end end row:node(colorPreview) row:node(color) row:node(sortkeyCategory) row:node(sortkey) for _, _row in TableTools.sortedPairs(rows) do categoryTable:node(_row) end end for name, _ in TableTools.sortedPairs(TableTools.listToSet(customKeys)) do if cats[name] == nil then local row = mw.html.create("tr") local icon = stormcats._icon(name, true) row :node(mw.html.create("td") :wikitext( icon ~= nil and icon or "''<span style=\"color:gray\">N/A</span>''" )) :node(mw.html.create("td"):wikitext(name)) local color = stormcats._color(name, true) -- Add more conditions eventually if color ~= nil then row :node(mw.html.create("td") :attr("colspan", "2") :wikitext("''<span style=\"color:gray\">not available</span>''")) :node(mw.html.create("td") :attr("style", "background-color: #" .. color .. "; padding: 0; width: 1.8em")) :node(colorInfo(color, verbose)) :css("width", "0") :css("white-space", "nowrap") :node(mw.html.create("td") :attr("colspan", "2") :wikitext("''<span style=\"color:gray\">not available</span>''")) else row :node(mw.html.create("td") :attr("colspan", "6") :wikitext("''<span style=\"color:gray\">not available</span>''")) end categoryTable:node(row) end end out = "" if not plain and not tableEmpty(errors) then out = out .. tostring(mw.html.create("h4"):wikitext("Error")) .. tostring(mw.html.create("p"):wikitext("This table contains errors than need to be addressed immediately, as it may cause errors on a large amount of pages.")) .. buildReflist(errors) end if not plain and not tableEmpty(legend) then out = out .. tostring(mw.html.create("h4"):wikitext("Legend")) .. buildReflist(legend) end out = out .. tostring(categoryTable) if not plain and not tableEmpty(warnings) then out = out .. tostring(mw.html.create("h4"):wikitext("Warnings")) .. tostring(mw.html.create("p"):wikitext("This table contains warnings than should be addressed. Please note that some warnings cannot be fully addressed without changes that would require consensus.")) .. buildReflist(warnings) end return mw.text.trim(out) end return p
Mubong sugid
Pinaagi sa pagtipig sa mga pagbag-o, miuyon ka sa
Terms of Use
, ug dili mabakwi nga miuyon ka nga ipagawas ang imong kontribusyon ubos sa
org/licenses/by-sa/4.0/ CC BY-SA 4.0 License
ug ang
GFDL
. Miuyon ka nga usa ka hyperlink o Ang URL igo nga pagpaila ubos sa lisensya sa Creative Commons.
I-way bili
Tabang sa pag-usab
(maabli sa laing window)
Preview page with this template
Wikidata entities used in this page
Module:Storm categories/demo
: Sitelink, Description: en
Ang plantilya nga gigagamit niining panid:
Module:Storm categories/demo/doc
(
usba
)
Pangita
Pangitaa
Nagausab sa
Module:Storm categories/demo
Idugang ang mga pinulongan
Pagdugang og topiko