• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:View/Quest"

From Kancolle Wiki
Jump to navigation Jump to search
m
Line 31: Line 31:
 
|
 
|
 
|${note}]=]
 
|${note}]=]
 +
 +
local table_row_alias = [=[|- id="${label}" class="q${letter}"
 +
|rowspan="1"|'''${label}'''
 +
|colspan="11"|See [[#${alias_of}|${alias_of}}].
 +
]=]
  
 
local function render(args, frame)
 
local function render(args, frame)
Line 41: Line 46:
 
     for i, q in ipairs(data) do
 
     for i, q in ipairs(data) do
 
       if (not filter[1] or not filter[2]) or (string.match(q[filter[2]], filter[1])) then
 
       if (not filter[1] or not filter[2]) or (string.match(q[filter[2]], filter[1])) then
        -- table.insert(result, _.format(table_row, q))
+
        if(q.alias_of) then
        table.insert(result, _.format(table_row, {
+
            table.insert(result, _.format(table_row_alias, {
          label = q.label,
+
                label = q.label,
          title = q.title,
+
                alias_of = q.alias_of
          title_en = q.title_en,
+
            }))
          detail_en = q.detail_en,
+
        else
          reward_fuel = q.reward_fuel,
+
            -- table.insert(result, _.format(table_row, q))
          reward_ammo = q.reward_ammo,
+
            table.insert(result, _.format(table_row, {
          reward_steel = q.reward_steel,
+
              label = q.label,
          reward_bauxite = q.reward_bauxite,
+
              title = q.title,
          reward_other = q.reward_other,
+
              title_en = q.title_en,
          note = q.note,
+
              detail_en = q.detail_en,
          letter = q.letter or q.label:sub(1, 1)
+
              reward_fuel = q.reward_fuel,
        }))
+
              reward_ammo = q.reward_ammo,
 +
              reward_steel = q.reward_steel,
 +
              reward_bauxite = q.reward_bauxite,
 +
              reward_other = q.reward_other,
 +
              note = q.note,
 +
              letter = q.letter or q.label:sub(1, 1)
 +
            }))
 +
        end
 
       end  
 
       end  
 
     end
 
     end

Revision as of 18:08, 12 November 2019

Documentation for this module may be created at Module:View/Quest/doc

local _ = require('Module:Core')
local Data = require('Module:Data')
local View = require('Module:View')

-- [[Category:Todo]]:
-- * Support render : Args -> UI tree in Module:View, currently Args -> String
-- * Module:View/Table for table UI tree construction

local table_header = [=[{|style="width:100%;text-align:center" cellspacing="0"
|style="width:4%"|ID
|style="width:35%"|Requirements
|style="width:0.5%"|
|style="width:20%"|[[File:Fuel.png|30px|link=Tutorial: FAQ#How do resources work in this game?]][[File:Ammunition.png|30px|link=Tutorial: FAQ#How do resources work in this game?]][[File:Steel.png|30px|link=Tutorial: FAQ#How do resources work in this game?]][[File:Bauxite.png|30px|link=Tutorial: FAQ#How do resources work in this game?]]
|style="width:0.5%"|
|style="width:20%"|Rewards
|style="width:0.5%"|
|style="width:30%"|Note<span style="float:right;margin-top:-2em">[[https://kancolle.fandom.com/wiki/Module:Data/Quest/${category}?action=edit Edit]]</span>
|-]=]

local table_footer = '|}'

local table_row = [=[|- id="${label}" class="q${letter}"
|rowspan="2"|'''${label}'''
|colspan="11"|'''<span lang="ja">${title}</span>'''<br>''${title_en}''
|- class="qd${letter}"
|${detail_en}
|
|${reward_fuel} / ${reward_ammo} / ${reward_steel} / ${reward_bauxite}
|
|''${reward_other}''
|
|${note}]=]

local table_row_alias = [=[|- id="${label}" class="q${letter}"
|rowspan="1"|'''${label}'''
|colspan="11"|See [[#${alias_of}|${alias_of}}].
]=]

local function render(args, frame)
  -- Filter term ([1] = pattern to match, [2] = data element to match)
  local filter = { (args.explicit['filterMatch'] or nil), (args.explicit['filterGroup'] or nil) }
  local result = {}
  for i, category in ipairs(args.explicit) do
    local data = Data.load('Quest', category)
    table.insert(result, _.format(table_header, { category = category }))
    for i, q in ipairs(data) do
      if (not filter[1] or not filter[2]) or (string.match(q[filter[2]], filter[1])) then
         if(q.alias_of) then
            table.insert(result, _.format(table_row_alias, {
                label = q.label,
                alias_of = q.alias_of
            }))
         else
            -- table.insert(result, _.format(table_row, q))
            table.insert(result, _.format(table_row, {
              label = q.label,
              title = q.title,
              title_en = q.title_en,
              detail_en = q.detail_en,
              reward_fuel = q.reward_fuel,
              reward_ammo = q.reward_ammo,
              reward_steel = q.reward_steel,
              reward_bauxite = q.reward_bauxite,
              reward_other = q.reward_other,
              note = q.note,
              letter = q.letter or q.label:sub(1, 1)
            }))
        end
      end 
    end
    table.insert(result, table_footer)
  end
  
  return frame:preprocess(_.join(result, '\n'))
end

return View(render)